@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.
- package/.stylelintcache +1 -0
- package/README.md +59 -0
- package/biome.jsonc +8 -0
- package/build.log +55 -0
- package/data/node-popularity.json +3998 -0
- package/dist/assets/AddDataTableModal-UINkk54_.js +1555 -0
- package/dist/assets/AgentEditorModal-CVww87TJ.js +358 -0
- package/dist/assets/Alert-Dy86dyOr.js +102 -0
- package/dist/assets/AnimatedSpinner-DmPN4poP.js +15 -0
- package/dist/assets/AnnotationTagsDropdown.ee-BJ7N9lek.js +71 -0
- package/dist/assets/AuthView-D2LWHrMp.js +106 -0
- package/dist/assets/BottomMenu-CIQiK_dJ.js +532 -0
- package/dist/assets/CalendarDate-DgQUMbNo.js +875 -0
- package/dist/assets/ChangePasswordView-Z6tUkw0u.js +133 -0
- package/dist/assets/ChatAgentAvatar-50YBnv3N.js +67 -0
- package/dist/assets/ChatFile-xZxmc2nV.js +146 -0
- package/dist/assets/ChatLayout-CTE_5SiM.js +96 -0
- package/dist/assets/ChatPersonalAgentsView-BGpHk03K.js +149 -0
- package/dist/assets/ChatSidebar-BkVwIypC.js +528 -0
- package/dist/assets/ChatView-BbbdeU9x.js +1559 -0
- package/dist/assets/ChatWorkflowAgentsView-BtunOxlC.js +116 -0
- package/dist/assets/CollectionParameter-BdcPG1lu.js +52 -0
- package/dist/assets/CommitMonoVariable-ytizKI8U.woff2 +0 -0
- package/dist/assets/CommunityNodeUpdateInfo-C37kca4W.js +273 -0
- package/dist/assets/CopyInput-DDZVu2iU.js +74 -0
- package/dist/assets/CredentialIcon-8YdTTFZ1.js +80 -0
- package/dist/assets/CredentialPicker-DWtj314o.js +293 -0
- package/dist/assets/CredentialSelectorModal-DTW2fKh0.js +138 -0
- package/dist/assets/CredentialsView-BjUchcCu.js +480 -0
- package/dist/assets/DataTableActions-DpAkoxg_.js +95 -0
- package/dist/assets/DataTableDetailsView-Coq7zdW5.js +41922 -0
- package/dist/assets/DataTableView-Cs-BIkzw.js +293 -0
- package/dist/assets/DemoFooter-Cga3jvi-.js +65 -0
- package/dist/assets/Draggable-vfvXl9Sp.js +105 -0
- package/dist/assets/EmptySharedSectionActionBox-DOXZtTCv.js +36 -0
- package/dist/assets/EnterpriseEdition.ee-D_rCFexM.js +15 -0
- package/dist/assets/EntityNotFound-3dhTRWsE.js +85 -0
- package/dist/assets/EntityUnAuthorised-ChJYZakE.js +66 -0
- package/dist/assets/ErrorView-zT9cX76a.js +61 -0
- package/dist/assets/EvaluationsRootView-C-OVWYnY.js +523 -0
- package/dist/assets/EvaluationsView-CJwJTruc.js +469 -0
- package/dist/assets/ExecutionsTime-DEQiyozR.js +573 -0
- package/dist/assets/ExecutionsView-Bd5Oh8TH.js +791 -0
- package/dist/assets/ExternalSecretsProviderConnectionSwitch.ee-C7Ih-uRo.js +191 -0
- package/dist/assets/FixedCollectionParameter-CYuTDW9t.js +496 -0
- package/dist/assets/ForgotMyPasswordView-Bs_L9P27.js +102 -0
- package/dist/assets/InsightsChartAverageRuntime-Bp3VA8_7.js +62 -0
- package/dist/assets/InsightsChartFailed-KPaNWoEr.js +52 -0
- package/dist/assets/InsightsChartFailureRate-DE6kE3FM.js +54 -0
- package/dist/assets/InsightsChartTimeSaved-auABNZlc.js +68 -0
- package/dist/assets/InsightsChartTotal-BKzYRKE7.js +56 -0
- package/dist/assets/InsightsDashboard-JWx4W6Db.js +473 -0
- package/dist/assets/InsightsPaywall-C8zLLKe8.js +63 -0
- package/dist/assets/InsightsSummary-cmN1lHDm.js +210 -0
- package/dist/assets/InsightsTableWorkflows-CqcC3IbQ.js +203 -0
- package/dist/assets/InterVariable-DiVDrmQJ.woff2 +0 -0
- package/dist/assets/InterVariable-Italic-FCBEiFp6.woff2 +0 -0
- package/dist/assets/ItemsRenderer-DC8WVyMv.js +922 -0
- package/dist/assets/KeyboardShortcutTooltip-D8PAK5JP.js +31 -0
- package/dist/assets/LogsPanel-BR06u9RK.js +52 -0
- package/dist/assets/LogsPanel-C-_acMHp.js +2325 -0
- package/dist/assets/MCPConnectWorkflowsModal-3g8_iUa4.js +303 -0
- package/dist/assets/MainHeader-DiQc1edn.js +2153 -0
- package/dist/assets/MainSidebar-CoPGG5Ea.js +804 -0
- package/dist/assets/MigrationRuleDetail-BAxk1Pvl.js +295 -0
- package/dist/assets/MigrationRules-IW9lZMpE.js +285 -0
- package/dist/assets/Modal-CIzXlZdZ.js +204 -0
- package/dist/assets/ModelByIdSelectorModal-DLvBjzJO.js +115 -0
- package/dist/assets/NDVEmptyState-33UoX00I.js +19743 -0
- package/dist/assets/NodeCreation-BNzbSWSB.js +240 -0
- package/dist/assets/NodeCreator-BftgCKx7.js +1288 -0
- package/dist/assets/NodeDetailsView-CsoQCpcF.js +1075 -0
- package/dist/assets/NodeDetailsViewV2-C_wNQR_3.js +981 -0
- package/dist/assets/NodeIcon-B9VW6tX6.js +87 -0
- package/dist/assets/NodeSettings-ZwVip6VR.js +1872 -0
- package/dist/assets/NodeView-D4WUEvLB.js +2452 -0
- package/dist/assets/OAuthConsentView-DlrUqZbT.js +230 -0
- package/dist/assets/PageViewLayout-NT1KPFgy.js +12 -0
- package/dist/assets/ParameterInputList-sG2nz-Jo.js +38091 -0
- package/dist/assets/PrebuiltAgentTemplatesView-Csi5U8dc.js +154 -0
- package/dist/assets/ProjectBreadcrumb-C_XiY7sc.js +98 -0
- package/dist/assets/ProjectCardBadge-t_hs7vzx.js +209 -0
- package/dist/assets/ProjectHeader-Dq5Ihb26.js +549 -0
- package/dist/assets/ProjectIcon-DY8gGuHX.js +64 -0
- package/dist/assets/ProjectRoleView-Du-KTrAC.js +435 -0
- package/dist/assets/ProjectRolesView-DjxM_y4u.js +239 -0
- package/dist/assets/ProjectSettings-C6kWuV21.js +966 -0
- package/dist/assets/ProjectSharing-CVUgNWAY.js +262 -0
- package/dist/assets/ProjectVariables-CJlAo3dv.js +467 -0
- package/dist/assets/ProviderSettingsModal-BUFC2ZLv.js +307 -0
- package/dist/assets/PushConnectionTracker-DPBnGV0v.js +27 -0
- package/dist/assets/ResolversView-3BdkvvYA.js +209 -0
- package/dist/assets/ResourceFiltersDropdown-dgyXpcEX.js +159 -0
- package/dist/assets/ResourcesListLayout-qBLtomK6.js +631 -0
- package/dist/assets/RunDataHtml-BrW0OQra.js +7 -0
- package/dist/assets/RunDataHtml-Cleia4Cj.js +40 -0
- package/dist/assets/RunDataJson-uxkrhYRK.js +227 -0
- package/dist/assets/RunDataJsonActions-DkPk7E8d.js +5007 -0
- package/dist/assets/RunDataParsedAiContent-CtPRjig-.js +26 -0
- package/dist/assets/RunDataParsedAiContent-WAuqLQ5M.js +192 -0
- package/dist/assets/RunDataSearch-YBWUr93C.js +141 -0
- package/dist/assets/RunDataTable-DcXaBynW.js +631 -0
- package/dist/assets/SamlOnboarding-BTdQ_hr3.js +78 -0
- package/dist/assets/SaveButton-D5sQSxIk.js +89 -0
- package/dist/assets/SelectedItemsInfo-BHZ-NvF5.js +58 -0
- package/dist/assets/SettingsApiView-IfZTMXx1.js +313 -0
- package/dist/assets/SettingsChatHubView-gWh2X6vX.js +285 -0
- package/dist/assets/SettingsCommunityNodesView-D8VQtpGY.js +349 -0
- package/dist/assets/SettingsExternalSecrets-CpMc7mkW.js +233 -0
- package/dist/assets/SettingsLdapView-CU5a2MAy.js +2553 -0
- package/dist/assets/SettingsLogStreamingView-uojTe-oX.js +375 -0
- package/dist/assets/SettingsMCPView-B5Swp1C_.js +1214 -0
- package/dist/assets/SettingsPersonalView-Cr3aGood.js +402 -0
- package/dist/assets/SettingsSourceControl-DXOvFDEY.js +547 -0
- package/dist/assets/SettingsSso-27MfU1HV.js +1032 -0
- package/dist/assets/SettingsUsageAndPlan-DqIO-G46.js +419 -0
- package/dist/assets/SettingsUsersView-DfHB4_Kh.js +833 -0
- package/dist/assets/SettingsView-C4sA7Uny.js +90 -0
- package/dist/assets/SetupTemplateFormStep-BmiSzZin.js +258 -0
- package/dist/assets/SetupView-VORZ-L_u.js +112 -0
- package/dist/assets/SetupWorkflowCredentialsButton-DTmkOAW5.js +73 -0
- package/dist/assets/SetupWorkflowFromTemplateView-B9NupdJE.js +286 -0
- package/dist/assets/SeverityTag-CX1qTTNA.js +45 -0
- package/dist/assets/SigninView-D9_Pm16j.js +358 -0
- package/dist/assets/SignoutView-BFsjEAGz.js +19 -0
- package/dist/assets/SignupView-Am4ot0QZ.js +137 -0
- package/dist/assets/SkeletonAgentCard-C5TL-h8F.js +191 -0
- package/dist/assets/TagsDropdown-Bvx_Hd6Q.js +230 -0
- package/dist/assets/TemplateCard-CyQ1GuVz.js +105 -0
- package/dist/assets/TemplateDetails-CZRusTxE.js +124 -0
- package/dist/assets/TemplateList-DKvbwuiY.js +333 -0
- package/dist/assets/TemplatesCollectionView-D8dxU8By.js +184 -0
- package/dist/assets/TemplatesSearchView-CebC_GLs.js +1230 -0
- package/dist/assets/TemplatesView-025CcmIY.js +57 -0
- package/dist/assets/TemplatesWorkflowView-C2JfwJAn.js +170 -0
- package/dist/assets/TestRunDetailView-Ck78TTWO.js +395 -0
- package/dist/assets/TextWithHighlights-BxumwGnv.js +57 -0
- package/dist/assets/TimeAgo-C6EN4lCs.js +123 -0
- package/dist/assets/ToolsSelectorModal-8QJoUvRL.js +368 -0
- package/dist/assets/TriggerPanel-B6pacLkk.js +1225 -0
- package/dist/assets/VirtualSchema-B3zGe_8b.js +2402 -0
- package/dist/assets/VirtualSchema-Dkh0Cu5z.js +37 -0
- package/dist/assets/VueMarkdown-CQqJL9vK.js +28 -0
- package/dist/assets/WorkerView-Caznsljo.js +563 -0
- package/dist/assets/WorkflowActivationErrorMessage-CGrfPi9O.js +17 -0
- package/dist/assets/WorkflowActivator-BINnz0f7.js +362 -0
- package/dist/assets/WorkflowExecutionsInfoAccordion-Dg37yEfT.js +166 -0
- package/dist/assets/WorkflowExecutionsLandingPage-V2wdubhK.js +93 -0
- package/dist/assets/WorkflowExecutionsPreview-DdJaqYV6.js +616 -0
- package/dist/assets/WorkflowExecutionsView-DV8ySTfn.js +808 -0
- package/dist/assets/WorkflowHistory-GtaBMzIM.js +973 -0
- package/dist/assets/WorkflowLocation-CQ9Sq-2y.js +164 -0
- package/dist/assets/WorkflowOnboardingView-C49gt0Jr.js +61 -0
- package/dist/assets/WorkflowPreview-CXdvv4Nq.js +186 -0
- package/dist/assets/WorkflowTagsDropdown-QwbICWjN.js +71 -0
- package/dist/assets/WorkflowsView-B-MWIECO.js +3253 -0
- package/dist/assets/_MapCache-CcdIl4Ae.js +363 -0
- package/dist/assets/_baseOrderBy-N8Be_6z6.js +2989 -0
- package/dist/assets/_initCloneObject-viQQyT6o.js +80 -0
- package/dist/assets/_plugin-vue_export-helper-BwBpWJRZ.js +6 -0
- package/dist/assets/aiTemplatesStarterCollection.store-nL9nePkK.js +656 -0
- package/dist/assets/apiKeys.store-BhOFmP2j.js +51 -0
- package/dist/assets/assistant.store-CNywgN4S.js +518 -0
- package/dist/assets/auth.eventBus-CWXS0Qp7.js +5 -0
- package/dist/assets/banners.store-CGEcBTDn.js +195 -0
- package/dist/assets/builder.store-Czk2ipDE.js +31417 -0
- package/dist/assets/buttons.esm-yintpW2E.js +364 -0
- package/dist/assets/chart-CNvyywtJ.js +10958 -0
- package/dist/assets/chartjs.utils-BAE52Cv9.js +155 -0
- package/dist/assets/chat.store-290YeyrQ.js +865 -0
- package/dist/assets/chatPanel.store-NDaawEZL.js +118 -0
- package/dist/assets/chunk-6z4oVpB-.js +36 -0
- package/dist/assets/col-Cmt4cmuS.js +158 -0
- package/dist/assets/constants-C8OH4tTq.js +106256 -0
- package/dist/assets/constants-DMrsrpD7.js +32 -0
- package/dist/assets/core-B9gt_4yk.js +4 -0
- package/dist/assets/core-CP5FY4aX.js +1202 -0
- package/dist/assets/core-CRbPymLT.js +9741 -0
- package/dist/assets/dataTable.store-DmipQsol.js +207 -0
- package/dist/assets/date-picker-2IDsBs2n.js +4115 -0
- package/dist/assets/dateFormatter-ik4-9_9r.js +33 -0
- package/dist/assets/dateformat-hG8NERse.js +181 -0
- package/dist/assets/dialog-lMho1TD8.js +425 -0
- package/dist/assets/dist-Cw46Is-h.js +151 -0
- package/dist/assets/doppler-B__k0MeW.webp +0 -0
- package/dist/assets/element-icons-B-tDfklg.woff +0 -0
- package/dist/assets/element-icons-_lZGOqcG.ttf +0 -0
- package/dist/assets/empty-BuGRxzl4.js +2210 -0
- package/dist/assets/en-CF30SCh2.js +95 -0
- package/dist/assets/en-DyO2pPiC.js +2 -0
- package/dist/assets/es-BkUFJVtD.js +43338 -0
- package/dist/assets/evaluation.constants-GYAwmJnh.js +284 -0
- package/dist/assets/executions.store-B9uRYwgv.js +205 -0
- package/dist/assets/exports-Crx_gvt_.js +1799 -0
- package/dist/assets/externalSecrets.ee.store-BJh4a_6G.js +118 -0
- package/dist/assets/fileUtils-CRWqOQje.js +20 -0
- package/dist/assets/folders.store-yAFj-5Vl.js +235 -0
- package/dist/assets/get-BcEmeOxn.js +2781 -0
- package/dist/assets/index-SL8542zQ.js +28372 -0
- package/dist/assets/insights.constants-BkJCYJTL.js +55 -0
- package/dist/assets/insights.store-BFc3kDUo.js +61 -0
- package/dist/assets/insights.utils-CcLXdrrz.js +77 -0
- package/dist/assets/isEmpty-C3XXoHqJ.js +35216 -0
- package/dist/assets/languageModules-9LyndCqU.js +13862 -0
- package/dist/assets/logStreaming.store-IZhWe_VK.js +190 -0
- package/dist/assets/mcp.constants-_Jcn7fPq.js +10 -0
- package/dist/assets/mcp.store-B9yfcAN9.js +116 -0
- package/dist/assets/merge-DhuTk1HM.js +564 -0
- package/dist/assets/nodeCreator.store-Bpnrwp2l.js +5444 -0
- package/dist/assets/nodeIcon-D6X-ENYt.js +102 -0
- package/dist/assets/nodeTransforms-RzcOM0v2.js +42 -0
- package/dist/assets/orderBy-Cu9F9DU_.js +15 -0
- package/dist/assets/path-browserify-RUt2u7iT.js +328 -0
- package/dist/assets/personalizedTemplatesV3.store-BGYp0YBN.js +334 -0
- package/dist/assets/pickBy-UI0Jt4wC.js +18 -0
- package/dist/assets/preload-helper-dyVz7ck7.js +59 -0
- package/dist/assets/radio-CSce3UT0.js +262 -0
- package/dist/assets/readyToRun.store-YEMvPUqo.js +626 -0
- package/dist/assets/readyToRunWorkflows.store-G3srgIze.js +1319 -0
- package/dist/assets/retry-BgHaYzbB.js +23 -0
- package/dist/assets/roles.store-CRf_zJTb.js +51 -0
- package/dist/assets/router-DNpzz3GH.js +2631 -0
- package/dist/assets/sanitize-html-CbW56HUN.js +10758 -0
- package/dist/assets/schemaPreview.store-DUgN1yVE.js +113 -0
- package/dist/assets/semver-Bk6DGseV.js +1306 -0
- package/dist/assets/smartDecimal-DAZl4HKA.js +6 -0
- package/dist/assets/sortByProperty-Cn7iGKYu.js +8 -0
- package/dist/assets/sourceControl.eventBus-D47xXSc_.js +3 -0
- package/dist/assets/sqlite3-DBpDb1lf.wasm +0 -0
- package/dist/assets/sqlite3-opfs-async-proxy-vVtmDGHX.js +461 -0
- package/dist/assets/sqlite3-worker1-bundler-friendly-DLarOZDL.js +9405 -0
- package/dist/assets/src-jviYSG25.js +55454 -0
- package/dist/assets/sso.store-DyApJwhx.js +139 -0
- package/dist/assets/style-E3CrYFV8.css +111829 -0
- package/dist/assets/table-we1DjFMV.js +3944 -0
- package/dist/assets/templateActions-bEDSARw2.js +65 -0
- package/dist/assets/templateTransforms-BHWiRbtR.js +43 -0
- package/dist/assets/truncate-C0KYt7i3.js +4176 -0
- package/dist/assets/typescript.worker-CYqLvLHh.js +152048 -0
- package/dist/assets/uniqBy-xDyuCRP0.js +10 -0
- package/dist/assets/usage.store-CU5J_nGm.js +100 -0
- package/dist/assets/useActions-B1JckIRj.js +255 -0
- package/dist/assets/useBeforeUnload-DiDkvI8p.js +40 -0
- package/dist/assets/useCanvasMapping-BXT7rGhC.js +12570 -0
- package/dist/assets/useCanvasOperations-8ULLtMkY.js +1765 -0
- package/dist/assets/useClipboard-DvjhVHqJ.js +39 -0
- package/dist/assets/useCommandBar-C4tLJbKt.js +2425 -0
- package/dist/assets/useCredentialResolvers-BKeFGJnY.js +78 -0
- package/dist/assets/useCustomAgent-DpILEt5e.js +471 -0
- package/dist/assets/useDebounce-Br5_1ug-.js +147 -0
- package/dist/assets/useExecutionData-M5iKsX6z.js +23 -0
- package/dist/assets/useExecutionDebugging-8azMzbnd.js +191 -0
- package/dist/assets/useExecutionHelpers-BgRRhpBM.js +91 -0
- package/dist/assets/useImportCurlCommand-CKiEmX5P.js +8891 -0
- package/dist/assets/useIntersectionObserver-BWMwOueh.js +33 -0
- package/dist/assets/useKeybindings-B2jfN6rd.js +62 -0
- package/dist/assets/useLogsTreeExpand-sZViUfdM.js +843 -0
- package/dist/assets/useMcp-DoMOIfqT.js +27 -0
- package/dist/assets/usePageRedirectionHelper-DjkznpX6.js +51 -0
- package/dist/assets/usePinnedData-BhZkqttf.js +203 -0
- package/dist/assets/usePushConnection-DMS-F_IW.js +513 -0
- package/dist/assets/useRecentResources-BVORr7eM.js +118 -0
- package/dist/assets/useRunWorkflow-LO7ffLp9.js +950 -0
- package/dist/assets/useSettingsItems-BhZXwMZn.js +144 -0
- package/dist/assets/useTelemetryContext-V6bv4YRq.js +34 -0
- package/dist/assets/useWorkflowActivate-DeSmDXjI.js +152 -0
- package/dist/assets/useWorkflowsCache-DtcEEAIR.js +179 -0
- package/dist/assets/userRoleProvisioning.store-kkSIdeTo.js +33 -0
- package/dist/assets/utils-DI7dLldp.js +54 -0
- package/dist/assets/versions.store-B1z2OrLE.js +191 -0
- package/dist/assets/vue-CydWIhxN.js +4378 -0
- package/dist/assets/vue-json-pretty-CsGX66mG.js +1130 -0
- package/dist/assets/vue.runtime.esm-bundler-tP5dCd7J.js +7325 -0
- package/dist/assets/xml-B_oj6Mle.js +2060 -0
- package/dist/favicon.ico +0 -0
- package/dist/index.html +157 -0
- package/dist/static/base-path.js +1 -0
- package/dist/static/community_package_tooltip_img.png +0 -0
- package/dist/static/data-mapping-gif.gif +0 -0
- package/dist/static/form-grey.svg +1 -0
- package/dist/static/google-auth/disabled.dark.png +0 -0
- package/dist/static/google-auth/disabled.png +0 -0
- package/dist/static/google-auth/focus.dark.png +0 -0
- package/dist/static/google-auth/focus.png +0 -0
- package/dist/static/google-auth/normal.dark.png +0 -0
- package/dist/static/google-auth/normal.png +0 -0
- package/dist/static/google-auth/pressed.dark.png +0 -0
- package/dist/static/google-auth/pressed.png +0 -0
- package/dist/static/n8n-logo.png +0 -0
- package/dist/static/og_image.png +0 -0
- package/dist/static/open-ai.svg +1 -0
- package/dist/static/openChat.png +0 -0
- package/dist/static/posthog.init.js +41 -0
- package/dist/static/prefers-color-scheme.css +5 -0
- package/dist/static/webhook-icon.svg +1 -0
- package/dist/tree-sitter-bash.wasm +0 -0
- package/dist/tree-sitter.wasm +0 -0
- package/eslint.config.mjs +59 -0
- package/index.html +45 -0
- package/index.js +0 -0
- package/package.json +147 -0
- package/postcss.config.cjs +6 -0
- package/scripts/fetch-node-popularity.mjs +102 -0
- package/stylelint.config.mjs +9 -0
- package/tailwind.config.js +8 -0
- package/tsconfig.json +36 -0
- package/vite/i18n-locales-hmr-helpers.ts +19 -0
- package/vite/source-map-js-shim.ts +1 -0
- package/vite/vite-plugin-node-popularity.mts +32 -0
- package/vite.config.mts +304 -0
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
import { C as computed, It as ref, _t as watch } from "./vue.runtime.esm-bundler-tP5dCd7J.js";
|
|
2
|
+
import { M as usePostHog, P as useWorkflowsStore, k as useTelemetry, l as useTemplatesStore, m as useCloudPlanStore, ms as useSettingsStore, wc as STORES } from "./builder.store-Czk2ipDE.js";
|
|
3
|
+
import { Ro as VIEWS, dc as PERSONALIZED_TEMPLATES_V3, gc as TEMPLATE_RECO_V2 } from "./constants-C8OH4tTq.js";
|
|
4
|
+
import { k as defineStore } from "./_baseOrderBy-N8Be_6z6.js";
|
|
5
|
+
const NODE_DATA = {
|
|
6
|
+
"@n8n/n8n-nodes-langchain.agent": {
|
|
7
|
+
starter: [
|
|
8
|
+
6270,
|
|
9
|
+
5462,
|
|
10
|
+
3100
|
|
11
|
+
],
|
|
12
|
+
popular: [
|
|
13
|
+
2465,
|
|
14
|
+
2326,
|
|
15
|
+
2006
|
|
16
|
+
],
|
|
17
|
+
youtube: [{
|
|
18
|
+
id: "4cQWJViybAQ",
|
|
19
|
+
title: "n8n Quick Start Tutorial: Build Your First Workflow [2025]",
|
|
20
|
+
description: "In this tutorial, @theflowgrammer walks you through the conceptual foundations you need to know to build powerful n8n workflows from scratch."
|
|
21
|
+
}, {
|
|
22
|
+
id: "77Z07QnLlB8",
|
|
23
|
+
title: "Building AI Agents: Prompt Engineering for Beginners [Part 3]",
|
|
24
|
+
description: "In Part 3 of our Building AI Agents series, we focus on the essentials of prompt engineering—specifically for single-task agents in n8n."
|
|
25
|
+
}]
|
|
26
|
+
},
|
|
27
|
+
"@n8n/n8n-nodes-langchain.openAi": {
|
|
28
|
+
starter: [
|
|
29
|
+
3100,
|
|
30
|
+
2722,
|
|
31
|
+
5462
|
|
32
|
+
],
|
|
33
|
+
popular: [
|
|
34
|
+
2462,
|
|
35
|
+
2783,
|
|
36
|
+
2187
|
|
37
|
+
],
|
|
38
|
+
youtube: [{
|
|
39
|
+
id: "4cQWJViybAQ",
|
|
40
|
+
title: "n8n Quick Start Tutorial: Build Your First Workflow [2025]",
|
|
41
|
+
description: "In this tutorial, @theflowgrammer walks you through the conceptual foundations you need to know to build powerful n8n workflows from scratch."
|
|
42
|
+
}, {
|
|
43
|
+
id: "77Z07QnLlB8",
|
|
44
|
+
title: "Building AI Agents: Prompt Engineering for Beginners [Part 3]",
|
|
45
|
+
description: "In Part 3 of our Building AI Agents series, we focus on the essentials of prompt engineering—specifically for single-task agents in n8n."
|
|
46
|
+
}]
|
|
47
|
+
},
|
|
48
|
+
"n8n-nodes-base.googleSheets": {
|
|
49
|
+
starter: [
|
|
50
|
+
2581,
|
|
51
|
+
5462,
|
|
52
|
+
1751
|
|
53
|
+
],
|
|
54
|
+
popular: [
|
|
55
|
+
5690,
|
|
56
|
+
2819,
|
|
57
|
+
6468
|
|
58
|
+
],
|
|
59
|
+
youtube: [{
|
|
60
|
+
id: "4cQWJViybAQ",
|
|
61
|
+
title: "n8n Quick Start Tutorial: Build Your First Workflow [2025]",
|
|
62
|
+
description: "In this tutorial, @theflowgrammer walks you through the conceptual foundations you need to know to build powerful n8n workflows from scratch."
|
|
63
|
+
}, {
|
|
64
|
+
id: "IJdt_Ds-gmc",
|
|
65
|
+
title: "OpenAI and Google Sheets integration: Automated workflows (+ 2 Free Templates)",
|
|
66
|
+
description: "In this video, we connect OpenAI and Google Sheets into two powerful workflows."
|
|
67
|
+
}]
|
|
68
|
+
},
|
|
69
|
+
"n8n-nodes-base.gmail": {
|
|
70
|
+
starter: [
|
|
71
|
+
1953,
|
|
72
|
+
6277,
|
|
73
|
+
2722
|
|
74
|
+
],
|
|
75
|
+
popular: [
|
|
76
|
+
3686,
|
|
77
|
+
3123,
|
|
78
|
+
3905
|
|
79
|
+
],
|
|
80
|
+
youtube: [{
|
|
81
|
+
id: "4cQWJViybAQ",
|
|
82
|
+
title: "n8n Quick Start Tutorial: Build Your First Workflow [2025]",
|
|
83
|
+
description: "In this tutorial, @theflowgrammer walks you through the conceptual foundations you need to know to build powerful n8n workflows from scratch."
|
|
84
|
+
}, {
|
|
85
|
+
id: "UnSKuFJPtyk",
|
|
86
|
+
title: "Build Your First AI Agent for Free with No Code (n8n + Google Gemini 2.5 Pro)",
|
|
87
|
+
description: "Learn how to build your own AI-powered email assistant with zero coding using n8n and Google Gemini. This step-by-step tutorial shows how to create an agent that can read, draft, and send emails on your behalf — all automatically."
|
|
88
|
+
}]
|
|
89
|
+
},
|
|
90
|
+
"n8n-nodes-base.httpRequest": {
|
|
91
|
+
starter: [
|
|
92
|
+
1748,
|
|
93
|
+
3858,
|
|
94
|
+
5171
|
|
95
|
+
],
|
|
96
|
+
popular: [
|
|
97
|
+
2035,
|
|
98
|
+
4110,
|
|
99
|
+
3100
|
|
100
|
+
],
|
|
101
|
+
youtube: [{
|
|
102
|
+
id: "4cQWJViybAQ",
|
|
103
|
+
title: "n8n Quick Start Tutorial: Build Your First Workflow [2025]",
|
|
104
|
+
description: "In this tutorial, @theflowgrammer walks you through the conceptual foundations you need to know to build powerful n8n workflows from scratch."
|
|
105
|
+
}, {
|
|
106
|
+
id: "tKwvqgVEBOU",
|
|
107
|
+
title: "n8n HTTP Request Node Made Simple: 10x Your Automations in 10 Minutes",
|
|
108
|
+
description: "The n8n HTTP Request node is the most powerful tool you're probably not using. Most n8n users stick to pre-built integrations because the HTTP Request node looks intimidating, but mastering n8n HTTP requests will literally 10x what you can automate."
|
|
109
|
+
}]
|
|
110
|
+
},
|
|
111
|
+
"@n8n/n8n-nodes-langchain.googleGemini": {
|
|
112
|
+
starter: [
|
|
113
|
+
6270,
|
|
114
|
+
4365,
|
|
115
|
+
3905
|
|
116
|
+
],
|
|
117
|
+
popular: [
|
|
118
|
+
5993,
|
|
119
|
+
2753,
|
|
120
|
+
2466
|
|
121
|
+
],
|
|
122
|
+
youtube: [{
|
|
123
|
+
id: "4cQWJViybAQ",
|
|
124
|
+
title: "n8n Quick Start Tutorial: Build Your First Workflow [2025]",
|
|
125
|
+
description: "In this tutorial, @theflowgrammer walks you through the conceptual foundations you need to know to build powerful n8n workflows from scratch."
|
|
126
|
+
}, {
|
|
127
|
+
id: "UnSKuFJPtyk",
|
|
128
|
+
title: "Build Your First AI Agent for Free with No Code (n8n + Google Gemini 2.5 Pro)",
|
|
129
|
+
description: "Learn how to build your own AI-powered email assistant with zero coding using n8n and Google Gemini. This step-by-step tutorial shows how to create an agent that can read, draft, and send emails on your behalf — all automatically."
|
|
130
|
+
}]
|
|
131
|
+
},
|
|
132
|
+
"n8n-nodes-base.googleDrive": {
|
|
133
|
+
starter: [
|
|
134
|
+
6611,
|
|
135
|
+
1960,
|
|
136
|
+
2782
|
|
137
|
+
],
|
|
138
|
+
popular: [
|
|
139
|
+
2753,
|
|
140
|
+
4767,
|
|
141
|
+
3135
|
|
142
|
+
],
|
|
143
|
+
youtube: [{
|
|
144
|
+
id: "4cQWJViybAQ",
|
|
145
|
+
title: "n8n Quick Start Tutorial: Build Your First Workflow [2025]",
|
|
146
|
+
description: "In this tutorial, @theflowgrammer walks you through the conceptual foundations you need to know to build powerful n8n workflows from scratch."
|
|
147
|
+
}, {
|
|
148
|
+
id: "vqZTpKGh_jU",
|
|
149
|
+
title: "I Automated My Entire Google Drive With n8n – It Organizes Itself",
|
|
150
|
+
description: "In this video, learn how to use n8n to automatically organize your Google Drive files From organizing files to streamlining tasks, discover smart ways to boost productivity in just minutes!"
|
|
151
|
+
}]
|
|
152
|
+
},
|
|
153
|
+
"n8n-nodes-base.telegram": {
|
|
154
|
+
starter: [
|
|
155
|
+
2462,
|
|
156
|
+
2114,
|
|
157
|
+
4365
|
|
158
|
+
],
|
|
159
|
+
popular: [
|
|
160
|
+
3654,
|
|
161
|
+
2783,
|
|
162
|
+
3686
|
|
163
|
+
],
|
|
164
|
+
youtube: [{
|
|
165
|
+
id: "4cQWJViybAQ",
|
|
166
|
+
title: "n8n Quick Start Tutorial: Build Your First Workflow [2025]",
|
|
167
|
+
description: "In this tutorial, @theflowgrammer walks you through the conceptual foundations you need to know to build powerful n8n workflows from scratch."
|
|
168
|
+
}, {
|
|
169
|
+
id: "ODdRXozldPw",
|
|
170
|
+
title: "How to build a Telegram AI bot with n8n – Step-by-step tutorial",
|
|
171
|
+
description: "In this video, we’ll guide you through the workflow that integrates with Telegram to create an AI-powered chatbot. It uses OpenAI's Chat Model and Dall-E 3 to understand and respond to user messages, correct errors, and generate and send images based on user queries."
|
|
172
|
+
}]
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
var PREDEFINED_NODES = Object.keys(NODE_DATA);
|
|
176
|
+
const usePersonalizedTemplatesV2Store = defineStore(STORES.EXPERIMENT_TEMPLATE_RECO_V2, () => {
|
|
177
|
+
const telemetry = useTelemetry();
|
|
178
|
+
const posthogStore = usePostHog();
|
|
179
|
+
const cloudPlanStore = useCloudPlanStore();
|
|
180
|
+
const templatesStore = useTemplatesStore();
|
|
181
|
+
const isFeatureEnabled = () => {
|
|
182
|
+
return posthogStore.getVariant(TEMPLATE_RECO_V2.name) === TEMPLATE_RECO_V2.variant && cloudPlanStore.userIsTrialing;
|
|
183
|
+
};
|
|
184
|
+
function getNodeData(nodeId) {
|
|
185
|
+
if (nodeId in NODE_DATA) return NODE_DATA[nodeId];
|
|
186
|
+
return {
|
|
187
|
+
starter: [],
|
|
188
|
+
popular: [],
|
|
189
|
+
youtube: []
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
async function getTemplateData(templateId) {
|
|
193
|
+
return await templatesStore.fetchTemplateById(templateId.toString());
|
|
194
|
+
}
|
|
195
|
+
function getTemplateRoute(id) {
|
|
196
|
+
return {
|
|
197
|
+
name: VIEWS.TEMPLATE,
|
|
198
|
+
params: { id }
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
const nodes = computed(() => {
|
|
202
|
+
const selectedApps = cloudPlanStore.selectedApps;
|
|
203
|
+
if (!selectedApps?.length) return [];
|
|
204
|
+
return PREDEFINED_NODES.filter((nodeName) => selectedApps.includes(nodeName)).slice(0, 3);
|
|
205
|
+
});
|
|
206
|
+
function trackMinicardClick(tool) {
|
|
207
|
+
telemetry.track("User clicked on node minicard", { tool });
|
|
208
|
+
}
|
|
209
|
+
function trackModalTabView(tool) {
|
|
210
|
+
telemetry.track("User visited template recommendation modal tab", { tool });
|
|
211
|
+
}
|
|
212
|
+
function trackTemplateTileClick(templateId) {
|
|
213
|
+
telemetry.track("User clicked on template recommendation tile", { templateId });
|
|
214
|
+
}
|
|
215
|
+
function trackVideoClick(name) {
|
|
216
|
+
telemetry.track("User clicked on template recommendation video", { name });
|
|
217
|
+
}
|
|
218
|
+
function trackSeeMoreClick(type) {
|
|
219
|
+
telemetry.track("User clicked on template recommendation see more", { type });
|
|
220
|
+
}
|
|
221
|
+
return {
|
|
222
|
+
isFeatureEnabled,
|
|
223
|
+
getNodeData,
|
|
224
|
+
getTemplateData,
|
|
225
|
+
nodes,
|
|
226
|
+
getTemplateRoute,
|
|
227
|
+
trackMinicardClick,
|
|
228
|
+
trackModalTabView,
|
|
229
|
+
trackTemplateTileClick,
|
|
230
|
+
trackVideoClick,
|
|
231
|
+
trackSeeMoreClick
|
|
232
|
+
};
|
|
233
|
+
});
|
|
234
|
+
const usePersonalizedTemplatesV3Store = defineStore(STORES.PERSONALIZED_TEMPLATES_V3, () => {
|
|
235
|
+
const telemetry = useTelemetry();
|
|
236
|
+
const posthogStore = usePostHog();
|
|
237
|
+
const cloudPlanStore = useCloudPlanStore();
|
|
238
|
+
const settingsStore = useSettingsStore();
|
|
239
|
+
const templatesStore = useTemplatesStore();
|
|
240
|
+
const workflowsStore = useWorkflowsStore();
|
|
241
|
+
const INTERACTION_STORAGE_KEY = "n8n-personalizedTemplatesV3-hasInteracted";
|
|
242
|
+
const hasInteractedWithTemplateRecommendations = ref(localStorage.getItem(INTERACTION_STORAGE_KEY) === "true");
|
|
243
|
+
const isFeatureEnabled = () => {
|
|
244
|
+
const isLocalhost = window.location.hostname === "localhost";
|
|
245
|
+
return posthogStore.getVariant(PERSONALIZED_TEMPLATES_V3.name) === PERSONALIZED_TEMPLATES_V3.variant && (isLocalhost || cloudPlanStore.userIsTrialing);
|
|
246
|
+
};
|
|
247
|
+
const hasChosenHubSpot = computed(() => {
|
|
248
|
+
const selectedApps = cloudPlanStore.selectedApps;
|
|
249
|
+
if (!selectedApps?.length) return false;
|
|
250
|
+
return selectedApps.includes("n8n-nodes-base.hubspot") || selectedApps.includes("n8n-nodes-base.hubspotTrigger");
|
|
251
|
+
});
|
|
252
|
+
const shouldShowTemplateTooltip = computed(() => {
|
|
253
|
+
const allWorkflows = workflowsStore.allWorkflows;
|
|
254
|
+
return isFeatureEnabled() && hasChosenHubSpot.value && allWorkflows.length > 0 && !hasInteractedWithTemplateRecommendations.value;
|
|
255
|
+
});
|
|
256
|
+
function getHubSpotData() {
|
|
257
|
+
return { templates: [
|
|
258
|
+
8966,
|
|
259
|
+
8967,
|
|
260
|
+
8968,
|
|
261
|
+
8969,
|
|
262
|
+
8970,
|
|
263
|
+
8971
|
|
264
|
+
] };
|
|
265
|
+
}
|
|
266
|
+
async function getTemplateData(templateId) {
|
|
267
|
+
return await templatesStore.fetchTemplateById(templateId.toString());
|
|
268
|
+
}
|
|
269
|
+
function getTemplateRoute(id) {
|
|
270
|
+
return {
|
|
271
|
+
name: VIEWS.TEMPLATE,
|
|
272
|
+
params: { id }
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
function trackPersonalizationCardClick() {
|
|
276
|
+
telemetry.track("User clicked on personalization card");
|
|
277
|
+
}
|
|
278
|
+
function trackPersonalizationModalView() {
|
|
279
|
+
telemetry.track("User viewed personalization modal");
|
|
280
|
+
}
|
|
281
|
+
function trackPersonalizationTooltipView() {
|
|
282
|
+
telemetry.track("User viewed personalization tooltip");
|
|
283
|
+
}
|
|
284
|
+
function trackPersonalizationTooltipDismiss() {
|
|
285
|
+
telemetry.track("User dismissed personalization tooltip");
|
|
286
|
+
}
|
|
287
|
+
function trackTemplateClickFromModal(templateId) {
|
|
288
|
+
telemetry.track("User clicked on template from modal", { templateId });
|
|
289
|
+
}
|
|
290
|
+
function trackTemplatesRepoClickFromModal() {
|
|
291
|
+
telemetry.track("User clicked on templates repo from modal");
|
|
292
|
+
}
|
|
293
|
+
function markTemplateRecommendationInteraction() {
|
|
294
|
+
hasInteractedWithTemplateRecommendations.value = true;
|
|
295
|
+
localStorage.setItem(INTERACTION_STORAGE_KEY, "true");
|
|
296
|
+
}
|
|
297
|
+
const trackExperimentParticipation = async () => {
|
|
298
|
+
if (settingsStore.isCloudDeployment && !cloudPlanStore.state.initialized) try {
|
|
299
|
+
await cloudPlanStore.initialize();
|
|
300
|
+
} catch (error) {
|
|
301
|
+
console.warn("Could not load cloud plan data for experiment tracking:", error);
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
if (!hasChosenHubSpot.value) return;
|
|
305
|
+
const variant = posthogStore.getVariant(PERSONALIZED_TEMPLATES_V3.name);
|
|
306
|
+
if (variant) telemetry.track("User is part of experiment", {
|
|
307
|
+
name: PERSONALIZED_TEMPLATES_V3.name,
|
|
308
|
+
variant
|
|
309
|
+
});
|
|
310
|
+
};
|
|
311
|
+
let hasTrackedExperiment = false;
|
|
312
|
+
watch(hasChosenHubSpot, (hasHubSpot) => {
|
|
313
|
+
if (hasHubSpot && !hasTrackedExperiment) {
|
|
314
|
+
hasTrackedExperiment = true;
|
|
315
|
+
trackExperimentParticipation();
|
|
316
|
+
}
|
|
317
|
+
}, { immediate: true });
|
|
318
|
+
return {
|
|
319
|
+
isFeatureEnabled,
|
|
320
|
+
hasChosenHubSpot,
|
|
321
|
+
shouldShowTemplateTooltip,
|
|
322
|
+
getHubSpotData,
|
|
323
|
+
getTemplateData,
|
|
324
|
+
getTemplateRoute,
|
|
325
|
+
trackPersonalizationCardClick,
|
|
326
|
+
trackPersonalizationModalView,
|
|
327
|
+
trackPersonalizationTooltipView,
|
|
328
|
+
trackPersonalizationTooltipDismiss,
|
|
329
|
+
trackTemplateClickFromModal,
|
|
330
|
+
trackTemplatesRepoClickFromModal,
|
|
331
|
+
markTemplateRecommendationInteraction
|
|
332
|
+
};
|
|
333
|
+
});
|
|
334
|
+
export { usePersonalizedTemplatesV2Store as n, usePersonalizedTemplatesV3Store as t };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { t as __commonJSMin } from "./chunk-6z4oVpB-.js";
|
|
2
|
+
import { o as require__arrayMap } from "./get-BcEmeOxn.js";
|
|
3
|
+
import { _i as require__baseIteratee, bi as require__getAllKeysIn, si as require__basePickBy } from "./constants-C8OH4tTq.js";
|
|
4
|
+
var require_pickBy = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
5
|
+
var arrayMap = require__arrayMap(), baseIteratee = require__baseIteratee(), basePickBy = require__basePickBy(), getAllKeysIn = require__getAllKeysIn();
|
|
6
|
+
function pickBy(object, predicate) {
|
|
7
|
+
if (object == null) return {};
|
|
8
|
+
var props = arrayMap(getAllKeysIn(object), function(prop) {
|
|
9
|
+
return [prop];
|
|
10
|
+
});
|
|
11
|
+
predicate = baseIteratee(predicate);
|
|
12
|
+
return basePickBy(object, props, function(value, path) {
|
|
13
|
+
return predicate(value, path[0]);
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
module.exports = pickBy;
|
|
17
|
+
}));
|
|
18
|
+
export { require_pickBy as t };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
var scriptRel = "modulepreload";
|
|
2
|
+
var assetsURL = function(dep, importerUrl) {
|
|
3
|
+
return new URL(dep, importerUrl).href;
|
|
4
|
+
};
|
|
5
|
+
var seen = {};
|
|
6
|
+
const __vitePreload = function preload(baseModule, deps, importerUrl) {
|
|
7
|
+
let promise = Promise.resolve();
|
|
8
|
+
if (deps && deps.length > 0) {
|
|
9
|
+
const links = document.getElementsByTagName("link");
|
|
10
|
+
const cspNonceMeta = document.querySelector("meta[property=csp-nonce]");
|
|
11
|
+
const cspNonce = cspNonceMeta?.nonce || cspNonceMeta?.getAttribute("nonce");
|
|
12
|
+
function allSettled(promises$2) {
|
|
13
|
+
return Promise.all(promises$2.map((p) => Promise.resolve(p).then((value$1) => ({
|
|
14
|
+
status: "fulfilled",
|
|
15
|
+
value: value$1
|
|
16
|
+
}), (reason) => ({
|
|
17
|
+
status: "rejected",
|
|
18
|
+
reason
|
|
19
|
+
}))));
|
|
20
|
+
}
|
|
21
|
+
promise = allSettled(deps.map((dep) => {
|
|
22
|
+
dep = assetsURL(dep, importerUrl);
|
|
23
|
+
if (dep in seen) return;
|
|
24
|
+
seen[dep] = true;
|
|
25
|
+
const isCss = dep.endsWith(".css");
|
|
26
|
+
const cssSelector = isCss ? "[rel=\"stylesheet\"]" : "";
|
|
27
|
+
if (!!importerUrl) for (let i$1 = links.length - 1; i$1 >= 0; i$1--) {
|
|
28
|
+
const link$1 = links[i$1];
|
|
29
|
+
if (link$1.href === dep && (!isCss || link$1.rel === "stylesheet")) return;
|
|
30
|
+
}
|
|
31
|
+
else if (document.querySelector(`link[href="${dep}"]${cssSelector}`)) return;
|
|
32
|
+
const link = document.createElement("link");
|
|
33
|
+
link.rel = isCss ? "stylesheet" : scriptRel;
|
|
34
|
+
if (!isCss) link.as = "script";
|
|
35
|
+
link.crossOrigin = "";
|
|
36
|
+
link.href = dep;
|
|
37
|
+
if (cspNonce) link.setAttribute("nonce", cspNonce);
|
|
38
|
+
document.head.appendChild(link);
|
|
39
|
+
if (isCss) return new Promise((res, rej) => {
|
|
40
|
+
link.addEventListener("load", res);
|
|
41
|
+
link.addEventListener("error", () => rej(/* @__PURE__ */ new Error(`Unable to preload CSS for ${dep}`)));
|
|
42
|
+
});
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
45
|
+
function handlePreloadError(err$2) {
|
|
46
|
+
const e$1 = new Event("vite:preloadError", { cancelable: true });
|
|
47
|
+
e$1.payload = err$2;
|
|
48
|
+
window.dispatchEvent(e$1);
|
|
49
|
+
if (!e$1.defaultPrevented) throw err$2;
|
|
50
|
+
}
|
|
51
|
+
return promise.then((res) => {
|
|
52
|
+
for (const item of res || []) {
|
|
53
|
+
if (item.status !== "rejected") continue;
|
|
54
|
+
handlePreloadError(item.reason);
|
|
55
|
+
}
|
|
56
|
+
return baseModule().catch(handlePreloadError);
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
export { __vitePreload as t };
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
import { C as computed, Cn as toDisplayString, D as createElementBlock, G as nextTick, Gt as unref, Ht as toRefs, It as ref, P as defineComponent, Pt as reactive, Z as onMounted, _t as watch, at as renderSlot, bn as normalizeStyle, d as vModelRadio, et as openBlock, h as withModifiers, j as createTextVNode, jt as isRef, mn as isString, nt as provide, tn as init_shared_esm_bundler, vn as normalizeClass, w as createBaseVNode, xt as withDirectives, z as inject } from "./vue.runtime.esm-bundler-tP5dCd7J.js";
|
|
2
|
+
import { $ as buildProps, At as debugWarn, C as useSizeProp, It as isBoolean, K as withNoopInstall, T as useId, V as UPDATE_MODEL_EVENT, W as withInstall, g as useFormSize, h as useFormDisabled, k as useNamespace, m as useFormItemInputId, p as useFormItem, y as _export_sfc, z as CHANGE_EVENT, zt as isNumber } from "./truncate-C0KYt7i3.js";
|
|
3
|
+
init_shared_esm_bundler();
|
|
4
|
+
var radioPropsBase = buildProps({
|
|
5
|
+
size: useSizeProp,
|
|
6
|
+
disabled: Boolean,
|
|
7
|
+
label: {
|
|
8
|
+
type: [
|
|
9
|
+
String,
|
|
10
|
+
Number,
|
|
11
|
+
Boolean
|
|
12
|
+
],
|
|
13
|
+
default: ""
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
var radioProps = buildProps({
|
|
17
|
+
...radioPropsBase,
|
|
18
|
+
modelValue: {
|
|
19
|
+
type: [
|
|
20
|
+
String,
|
|
21
|
+
Number,
|
|
22
|
+
Boolean
|
|
23
|
+
],
|
|
24
|
+
default: ""
|
|
25
|
+
},
|
|
26
|
+
name: {
|
|
27
|
+
type: String,
|
|
28
|
+
default: ""
|
|
29
|
+
},
|
|
30
|
+
border: Boolean
|
|
31
|
+
});
|
|
32
|
+
var radioEmits = {
|
|
33
|
+
[UPDATE_MODEL_EVENT]: (val) => isString(val) || isNumber(val) || isBoolean(val),
|
|
34
|
+
[CHANGE_EVENT]: (val) => isString(val) || isNumber(val) || isBoolean(val)
|
|
35
|
+
};
|
|
36
|
+
var radioGroupKey = Symbol("radioGroupKey");
|
|
37
|
+
var useRadio = (props, emit) => {
|
|
38
|
+
const radioRef = ref();
|
|
39
|
+
const radioGroup = inject(radioGroupKey, void 0);
|
|
40
|
+
const isGroup = computed(() => !!radioGroup);
|
|
41
|
+
const modelValue = computed({
|
|
42
|
+
get() {
|
|
43
|
+
return isGroup.value ? radioGroup.modelValue : props.modelValue;
|
|
44
|
+
},
|
|
45
|
+
set(val) {
|
|
46
|
+
if (isGroup.value) radioGroup.changeEvent(val);
|
|
47
|
+
else emit && emit("update:modelValue", val);
|
|
48
|
+
radioRef.value.checked = props.modelValue === props.label;
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
const size = useFormSize(computed(() => radioGroup == null ? void 0 : radioGroup.size));
|
|
52
|
+
const disabled = useFormDisabled(computed(() => radioGroup == null ? void 0 : radioGroup.disabled));
|
|
53
|
+
return {
|
|
54
|
+
radioRef,
|
|
55
|
+
isGroup,
|
|
56
|
+
radioGroup,
|
|
57
|
+
focus: ref(false),
|
|
58
|
+
size,
|
|
59
|
+
disabled,
|
|
60
|
+
tabIndex: computed(() => {
|
|
61
|
+
return disabled.value || isGroup.value && modelValue.value !== props.label ? -1 : 0;
|
|
62
|
+
}),
|
|
63
|
+
modelValue
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
var _hoisted_1$2 = [
|
|
67
|
+
"value",
|
|
68
|
+
"name",
|
|
69
|
+
"disabled"
|
|
70
|
+
];
|
|
71
|
+
var Radio = /* @__PURE__ */ _export_sfc(/* @__PURE__ */ defineComponent({
|
|
72
|
+
...defineComponent({ name: "ElRadio" }),
|
|
73
|
+
props: radioProps,
|
|
74
|
+
emits: radioEmits,
|
|
75
|
+
setup(__props, { emit }) {
|
|
76
|
+
const props = __props;
|
|
77
|
+
const ns = useNamespace("radio");
|
|
78
|
+
const { radioRef, radioGroup, focus, size, disabled, modelValue } = useRadio(props, emit);
|
|
79
|
+
function handleChange() {
|
|
80
|
+
nextTick(() => emit("change", modelValue.value));
|
|
81
|
+
}
|
|
82
|
+
return (_ctx, _cache) => {
|
|
83
|
+
var _a;
|
|
84
|
+
return openBlock(), createElementBlock("label", { class: normalizeClass([
|
|
85
|
+
unref(ns).b(),
|
|
86
|
+
unref(ns).is("disabled", unref(disabled)),
|
|
87
|
+
unref(ns).is("focus", unref(focus)),
|
|
88
|
+
unref(ns).is("bordered", _ctx.border),
|
|
89
|
+
unref(ns).is("checked", unref(modelValue) === _ctx.label),
|
|
90
|
+
unref(ns).m(unref(size))
|
|
91
|
+
]) }, [createBaseVNode("span", { class: normalizeClass([
|
|
92
|
+
unref(ns).e("input"),
|
|
93
|
+
unref(ns).is("disabled", unref(disabled)),
|
|
94
|
+
unref(ns).is("checked", unref(modelValue) === _ctx.label)
|
|
95
|
+
]) }, [withDirectives(createBaseVNode("input", {
|
|
96
|
+
ref_key: "radioRef",
|
|
97
|
+
ref: radioRef,
|
|
98
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(modelValue) ? modelValue.value = $event : null),
|
|
99
|
+
class: normalizeClass(unref(ns).e("original")),
|
|
100
|
+
value: _ctx.label,
|
|
101
|
+
name: _ctx.name || ((_a = unref(radioGroup)) == null ? void 0 : _a.name),
|
|
102
|
+
disabled: unref(disabled),
|
|
103
|
+
type: "radio",
|
|
104
|
+
onFocus: _cache[1] || (_cache[1] = ($event) => focus.value = true),
|
|
105
|
+
onBlur: _cache[2] || (_cache[2] = ($event) => focus.value = false),
|
|
106
|
+
onChange: handleChange,
|
|
107
|
+
onClick: _cache[3] || (_cache[3] = withModifiers(() => {}, ["stop"]))
|
|
108
|
+
}, null, 42, _hoisted_1$2), [[vModelRadio, unref(modelValue)]]), createBaseVNode("span", { class: normalizeClass(unref(ns).e("inner")) }, null, 2)], 2), createBaseVNode("span", {
|
|
109
|
+
class: normalizeClass(unref(ns).e("label")),
|
|
110
|
+
onKeydown: _cache[4] || (_cache[4] = withModifiers(() => {}, ["stop"]))
|
|
111
|
+
}, [renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(_ctx.label), 1)])], 34)], 2);
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
}), [["__file", "/home/runner/work/element-plus/element-plus/packages/components/radio/src/radio.vue"]]);
|
|
115
|
+
var radioButtonProps = buildProps({
|
|
116
|
+
...radioPropsBase,
|
|
117
|
+
name: {
|
|
118
|
+
type: String,
|
|
119
|
+
default: ""
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
var _hoisted_1$1 = [
|
|
123
|
+
"value",
|
|
124
|
+
"name",
|
|
125
|
+
"disabled"
|
|
126
|
+
];
|
|
127
|
+
var RadioButton = /* @__PURE__ */ _export_sfc(/* @__PURE__ */ defineComponent({
|
|
128
|
+
...defineComponent({ name: "ElRadioButton" }),
|
|
129
|
+
props: radioButtonProps,
|
|
130
|
+
setup(__props) {
|
|
131
|
+
const props = __props;
|
|
132
|
+
const ns = useNamespace("radio");
|
|
133
|
+
const { radioRef, focus, size, disabled, modelValue, radioGroup } = useRadio(props);
|
|
134
|
+
const activeStyle = computed(() => {
|
|
135
|
+
return {
|
|
136
|
+
backgroundColor: (radioGroup == null ? void 0 : radioGroup.fill) || "",
|
|
137
|
+
borderColor: (radioGroup == null ? void 0 : radioGroup.fill) || "",
|
|
138
|
+
boxShadow: (radioGroup == null ? void 0 : radioGroup.fill) ? `-1px 0 0 0 ${radioGroup.fill}` : "",
|
|
139
|
+
color: (radioGroup == null ? void 0 : radioGroup.textColor) || ""
|
|
140
|
+
};
|
|
141
|
+
});
|
|
142
|
+
return (_ctx, _cache) => {
|
|
143
|
+
var _a;
|
|
144
|
+
return openBlock(), createElementBlock("label", { class: normalizeClass([
|
|
145
|
+
unref(ns).b("button"),
|
|
146
|
+
unref(ns).is("active", unref(modelValue) === _ctx.label),
|
|
147
|
+
unref(ns).is("disabled", unref(disabled)),
|
|
148
|
+
unref(ns).is("focus", unref(focus)),
|
|
149
|
+
unref(ns).bm("button", unref(size))
|
|
150
|
+
]) }, [withDirectives(createBaseVNode("input", {
|
|
151
|
+
ref_key: "radioRef",
|
|
152
|
+
ref: radioRef,
|
|
153
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(modelValue) ? modelValue.value = $event : null),
|
|
154
|
+
class: normalizeClass(unref(ns).be("button", "original-radio")),
|
|
155
|
+
value: _ctx.label,
|
|
156
|
+
type: "radio",
|
|
157
|
+
name: _ctx.name || ((_a = unref(radioGroup)) == null ? void 0 : _a.name),
|
|
158
|
+
disabled: unref(disabled),
|
|
159
|
+
onFocus: _cache[1] || (_cache[1] = ($event) => focus.value = true),
|
|
160
|
+
onBlur: _cache[2] || (_cache[2] = ($event) => focus.value = false),
|
|
161
|
+
onClick: _cache[3] || (_cache[3] = withModifiers(() => {}, ["stop"]))
|
|
162
|
+
}, null, 42, _hoisted_1$1), [[vModelRadio, unref(modelValue)]]), createBaseVNode("span", {
|
|
163
|
+
class: normalizeClass(unref(ns).be("button", "inner")),
|
|
164
|
+
style: normalizeStyle(unref(modelValue) === _ctx.label ? unref(activeStyle) : {}),
|
|
165
|
+
onKeydown: _cache[4] || (_cache[4] = withModifiers(() => {}, ["stop"]))
|
|
166
|
+
}, [renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(_ctx.label), 1)])], 38)], 2);
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
}), [["__file", "/home/runner/work/element-plus/element-plus/packages/components/radio/src/radio-button.vue"]]);
|
|
170
|
+
var radioGroupProps = buildProps({
|
|
171
|
+
id: {
|
|
172
|
+
type: String,
|
|
173
|
+
default: void 0
|
|
174
|
+
},
|
|
175
|
+
size: useSizeProp,
|
|
176
|
+
disabled: Boolean,
|
|
177
|
+
modelValue: {
|
|
178
|
+
type: [
|
|
179
|
+
String,
|
|
180
|
+
Number,
|
|
181
|
+
Boolean
|
|
182
|
+
],
|
|
183
|
+
default: ""
|
|
184
|
+
},
|
|
185
|
+
fill: {
|
|
186
|
+
type: String,
|
|
187
|
+
default: ""
|
|
188
|
+
},
|
|
189
|
+
label: {
|
|
190
|
+
type: String,
|
|
191
|
+
default: void 0
|
|
192
|
+
},
|
|
193
|
+
textColor: {
|
|
194
|
+
type: String,
|
|
195
|
+
default: ""
|
|
196
|
+
},
|
|
197
|
+
name: {
|
|
198
|
+
type: String,
|
|
199
|
+
default: void 0
|
|
200
|
+
},
|
|
201
|
+
validateEvent: {
|
|
202
|
+
type: Boolean,
|
|
203
|
+
default: true
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
var radioGroupEmits = radioEmits;
|
|
207
|
+
var _hoisted_1 = [
|
|
208
|
+
"id",
|
|
209
|
+
"aria-label",
|
|
210
|
+
"aria-labelledby"
|
|
211
|
+
];
|
|
212
|
+
var RadioGroup = /* @__PURE__ */ _export_sfc(/* @__PURE__ */ defineComponent({
|
|
213
|
+
...defineComponent({ name: "ElRadioGroup" }),
|
|
214
|
+
props: radioGroupProps,
|
|
215
|
+
emits: radioGroupEmits,
|
|
216
|
+
setup(__props, { emit }) {
|
|
217
|
+
const props = __props;
|
|
218
|
+
const ns = useNamespace("radio");
|
|
219
|
+
const radioId = useId();
|
|
220
|
+
const radioGroupRef = ref();
|
|
221
|
+
const { formItem } = useFormItem();
|
|
222
|
+
const { inputId: groupId, isLabeledByFormItem } = useFormItemInputId(props, { formItemContext: formItem });
|
|
223
|
+
const changeEvent = (value) => {
|
|
224
|
+
emit(UPDATE_MODEL_EVENT, value);
|
|
225
|
+
nextTick(() => emit("change", value));
|
|
226
|
+
};
|
|
227
|
+
onMounted(() => {
|
|
228
|
+
const radios = radioGroupRef.value.querySelectorAll("[type=radio]");
|
|
229
|
+
const firstLabel = radios[0];
|
|
230
|
+
if (!Array.from(radios).some((radio) => radio.checked) && firstLabel) firstLabel.tabIndex = 0;
|
|
231
|
+
});
|
|
232
|
+
const name = computed(() => {
|
|
233
|
+
return props.name || radioId.value;
|
|
234
|
+
});
|
|
235
|
+
provide(radioGroupKey, reactive({
|
|
236
|
+
...toRefs(props),
|
|
237
|
+
changeEvent,
|
|
238
|
+
name
|
|
239
|
+
}));
|
|
240
|
+
watch(() => props.modelValue, () => {
|
|
241
|
+
if (props.validateEvent) formItem?.validate("change").catch((err) => debugWarn(err));
|
|
242
|
+
});
|
|
243
|
+
return (_ctx, _cache) => {
|
|
244
|
+
return openBlock(), createElementBlock("div", {
|
|
245
|
+
id: unref(groupId),
|
|
246
|
+
ref_key: "radioGroupRef",
|
|
247
|
+
ref: radioGroupRef,
|
|
248
|
+
class: normalizeClass(unref(ns).b("group")),
|
|
249
|
+
role: "radiogroup",
|
|
250
|
+
"aria-label": !unref(isLabeledByFormItem) ? _ctx.label || "radio-group" : void 0,
|
|
251
|
+
"aria-labelledby": unref(isLabeledByFormItem) ? unref(formItem).labelId : void 0
|
|
252
|
+
}, [renderSlot(_ctx.$slots, "default")], 10, _hoisted_1);
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
}), [["__file", "/home/runner/work/element-plus/element-plus/packages/components/radio/src/radio-group.vue"]]);
|
|
256
|
+
var ElRadio = withInstall(Radio, {
|
|
257
|
+
RadioButton,
|
|
258
|
+
RadioGroup
|
|
259
|
+
});
|
|
260
|
+
var ElRadioGroup = withNoopInstall(RadioGroup);
|
|
261
|
+
withNoopInstall(RadioButton);
|
|
262
|
+
export { ElRadioGroup as n, ElRadio as t };
|