comfyui-frontend-package 1.38.5__py3-none-any.whl → 1.38.6__py3-none-any.whl

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 (139) hide show
  1. comfyui_frontend_package/static/assets/{AboutPanel-CHse5rOA.js → AboutPanel-lkjGFasi.js} +2 -2
  2. comfyui_frontend_package/static/assets/{AboutPanel-CHse5rOA.js.map → AboutPanel-lkjGFasi.js.map} +1 -1
  3. comfyui_frontend_package/static/assets/{AudioPreviewPlayer-CAa8V66L.js → AudioPreviewPlayer-BxCSKPl9.js} +2 -2
  4. comfyui_frontend_package/static/assets/{AudioPreviewPlayer-CAa8V66L.js.map → AudioPreviewPlayer-BxCSKPl9.js.map} +1 -1
  5. comfyui_frontend_package/static/assets/AudioPreviewPlayer-CkxKvcVf.js +1 -0
  6. comfyui_frontend_package/static/assets/{BaseViewTemplate-DA6zfigT.js → BaseViewTemplate-CjODF2hh.js} +2 -2
  7. comfyui_frontend_package/static/assets/{BaseViewTemplate-DA6zfigT.js.map → BaseViewTemplate-CjODF2hh.js.map} +1 -1
  8. comfyui_frontend_package/static/assets/{CloudAuthTimeoutView-9OPBS1hE.js → CloudAuthTimeoutView-D-QkjPNh.js} +2 -2
  9. comfyui_frontend_package/static/assets/{CloudAuthTimeoutView-9OPBS1hE.js.map → CloudAuthTimeoutView-D-QkjPNh.js.map} +1 -1
  10. comfyui_frontend_package/static/assets/{CloudBadge-BnLiAHDN.js → CloudBadge-B4nmLus2.js} +2 -2
  11. comfyui_frontend_package/static/assets/{CloudBadge-BnLiAHDN.js.map → CloudBadge-B4nmLus2.js.map} +1 -1
  12. comfyui_frontend_package/static/assets/{CloudForgotPasswordView-BqDR_C7K.js → CloudForgotPasswordView-DOEV9hGr.js} +2 -2
  13. comfyui_frontend_package/static/assets/{CloudForgotPasswordView-BqDR_C7K.js.map → CloudForgotPasswordView-DOEV9hGr.js.map} +1 -1
  14. comfyui_frontend_package/static/assets/{CloudLayoutView-vTrrVUOY.js → CloudLayoutView-ShKH6rRV.js} +2 -2
  15. comfyui_frontend_package/static/assets/{CloudLayoutView-vTrrVUOY.js.map → CloudLayoutView-ShKH6rRV.js.map} +1 -1
  16. comfyui_frontend_package/static/assets/{CloudLoginView-T17euJly.js → CloudLoginView-C3Te42U9.js} +2 -2
  17. comfyui_frontend_package/static/assets/{CloudLoginView-T17euJly.js.map → CloudLoginView-C3Te42U9.js.map} +1 -1
  18. comfyui_frontend_package/static/assets/CloudRunButtonWrapper-Cub7EB34.js +3 -0
  19. comfyui_frontend_package/static/assets/{CloudRunButtonWrapper-hQc4BNkX.js.map → CloudRunButtonWrapper-Cub7EB34.js.map} +1 -1
  20. comfyui_frontend_package/static/assets/{CloudSignupView-vEDby5k3.js → CloudSignupView-X2oiL3ZR.js} +2 -2
  21. comfyui_frontend_package/static/assets/{CloudSignupView-vEDby5k3.js.map → CloudSignupView-X2oiL3ZR.js.map} +1 -1
  22. comfyui_frontend_package/static/assets/{CloudSubscriptionRedirectView-DPyO745g.js → CloudSubscriptionRedirectView-UjNv8emo.js} +2 -2
  23. comfyui_frontend_package/static/assets/{CloudSubscriptionRedirectView-DPyO745g.js.map → CloudSubscriptionRedirectView-UjNv8emo.js.map} +1 -1
  24. comfyui_frontend_package/static/assets/{CloudSurveyView-CBtTd9Ru.js → CloudSurveyView-IaiucCTP.js} +2 -2
  25. comfyui_frontend_package/static/assets/{CloudSurveyView-CBtTd9Ru.js.map → CloudSurveyView-IaiucCTP.js.map} +1 -1
  26. comfyui_frontend_package/static/assets/ComfyQueueButton-BppnHbrl.js +1 -0
  27. comfyui_frontend_package/static/assets/{ComfyQueueButton-MZrp7wYJ.js → ComfyQueueButton-HjSIKZKO.js} +2 -2
  28. comfyui_frontend_package/static/assets/{ComfyQueueButton-MZrp7wYJ.js.map → ComfyQueueButton-HjSIKZKO.js.map} +1 -1
  29. comfyui_frontend_package/static/assets/{ExtensionPanel-CrWVGUtg.js → ExtensionPanel-Bzb9QtKj.js} +2 -2
  30. comfyui_frontend_package/static/assets/{ExtensionPanel-CrWVGUtg.js.map → ExtensionPanel-Bzb9QtKj.js.map} +1 -1
  31. comfyui_frontend_package/static/assets/{GlobalToast-BiCmpIvO.js → GlobalToast-BSCvu6Hw.js} +2 -2
  32. comfyui_frontend_package/static/assets/{GlobalToast-BiCmpIvO.js.map → GlobalToast-BSCvu6Hw.js.map} +1 -1
  33. comfyui_frontend_package/static/assets/{GraphView-BCkpNGgz.js → GraphView-gYVCtm1V.js} +5 -5
  34. comfyui_frontend_package/static/assets/GraphView-gYVCtm1V.js.map +1 -0
  35. comfyui_frontend_package/static/assets/{KeybindingPanel-CAXL5TlV.js → KeybindingPanel-DF-bG4iO.js} +2 -2
  36. comfyui_frontend_package/static/assets/{KeybindingPanel-CAXL5TlV.js.map → KeybindingPanel-DF-bG4iO.js.map} +1 -1
  37. comfyui_frontend_package/static/assets/{LegacyCreditsPanel-6vR8koQy.js → LegacyCreditsPanel-D-CboO8k.js} +2 -2
  38. comfyui_frontend_package/static/assets/{LegacyCreditsPanel-6vR8koQy.js.map → LegacyCreditsPanel-D-CboO8k.js.map} +1 -1
  39. comfyui_frontend_package/static/assets/Load3D-c9UwgGoI.js +1 -0
  40. comfyui_frontend_package/static/assets/{Load3D-ei1BUF9O.js → Load3D-vYr8M3jJ.js} +2 -2
  41. comfyui_frontend_package/static/assets/{Load3D-ei1BUF9O.js.map → Load3D-vYr8M3jJ.js.map} +1 -1
  42. comfyui_frontend_package/static/assets/{PanelTemplate-BjN5XNg2.js → PanelTemplate-BJda9e5J.js} +2 -2
  43. comfyui_frontend_package/static/assets/{PanelTemplate-BjN5XNg2.js.map → PanelTemplate-BJda9e5J.js.map} +1 -1
  44. comfyui_frontend_package/static/assets/{ServerConfigPanel-CxovH9Qk.js → ServerConfigPanel-VsC6xlZJ.js} +2 -2
  45. comfyui_frontend_package/static/assets/{ServerConfigPanel-CxovH9Qk.js.map → ServerConfigPanel-VsC6xlZJ.js.map} +1 -1
  46. comfyui_frontend_package/static/assets/{SubscribeButton-CTOQRkfg.js → SubscribeButton-DZBycfCA.js} +2 -2
  47. comfyui_frontend_package/static/assets/{SubscribeButton-CTOQRkfg.js.map → SubscribeButton-DZBycfCA.js.map} +1 -1
  48. comfyui_frontend_package/static/assets/{SubscribeToRun-DnXzV8y0.js → SubscribeToRun-4YolxBOL.js} +2 -2
  49. comfyui_frontend_package/static/assets/{SubscribeToRun-DnXzV8y0.js.map → SubscribeToRun-4YolxBOL.js.map} +1 -1
  50. comfyui_frontend_package/static/assets/{SubscriptionPanel-D9uv7z8f.js → SubscriptionPanel-B6txX4Vm.js} +2 -2
  51. comfyui_frontend_package/static/assets/{SubscriptionPanel-D9uv7z8f.js.map → SubscriptionPanel-B6txX4Vm.js.map} +1 -1
  52. comfyui_frontend_package/static/assets/{SubscriptionRequiredDialogContent--VmT16oc.js → SubscriptionRequiredDialogContent-COEF2VQ_.js} +2 -2
  53. comfyui_frontend_package/static/assets/{SubscriptionRequiredDialogContent--VmT16oc.js.map → SubscriptionRequiredDialogContent-COEF2VQ_.js.map} +1 -1
  54. comfyui_frontend_package/static/assets/{UserCheckView-spD3LyMu.js → UserCheckView-x-fkcYzc.js} +2 -2
  55. comfyui_frontend_package/static/assets/{UserCheckView-spD3LyMu.js.map → UserCheckView-x-fkcYzc.js.map} +1 -1
  56. comfyui_frontend_package/static/assets/{UserPanel-Su6NtJ5q.js → UserPanel-7N9QknQj.js} +2 -2
  57. comfyui_frontend_package/static/assets/{UserPanel-Su6NtJ5q.js.map → UserPanel-7N9QknQj.js.map} +1 -1
  58. comfyui_frontend_package/static/assets/{UserSelectView-C5LBOPcv.js → UserSelectView-BYjOkfSa.js} +2 -2
  59. comfyui_frontend_package/static/assets/{UserSelectView-C5LBOPcv.js.map → UserSelectView-BYjOkfSa.js.map} +1 -1
  60. comfyui_frontend_package/static/assets/{ValueControlPopover-BdlDzT8l.js → ValueControlPopover-BPAa35QG.js} +2 -2
  61. comfyui_frontend_package/static/assets/{ValueControlPopover-BdlDzT8l.js.map → ValueControlPopover-BPAa35QG.js.map} +1 -1
  62. comfyui_frontend_package/static/assets/{WidgetAudioUI-BDZxDx_r.js → WidgetAudioUI-Dw-r3Ews.js} +2 -2
  63. comfyui_frontend_package/static/assets/{WidgetAudioUI-BDZxDx_r.js.map → WidgetAudioUI-Dw-r3Ews.js.map} +1 -1
  64. comfyui_frontend_package/static/assets/{WidgetImageCrop-CYRW7t2Q.js → WidgetImageCrop-kERy9g5I.js} +2 -2
  65. comfyui_frontend_package/static/assets/{WidgetImageCrop-CYRW7t2Q.js.map → WidgetImageCrop-kERy9g5I.js.map} +1 -1
  66. comfyui_frontend_package/static/assets/{WidgetInputNumber-BOKO36G3.js → WidgetInputNumber-BaClCNAC.js} +1 -1
  67. comfyui_frontend_package/static/assets/WidgetInputNumber-DU_D0Fzy.js +3 -0
  68. comfyui_frontend_package/static/assets/WidgetInputNumber-DU_D0Fzy.js.map +1 -0
  69. comfyui_frontend_package/static/assets/{WidgetLegacy-Bslv9wZZ.js → WidgetLegacy-B4nipUM9.js} +1 -1
  70. comfyui_frontend_package/static/assets/{WidgetRecordAudio-Bzy8PIzN.js → WidgetRecordAudio-Nk8dH238.js} +2 -2
  71. comfyui_frontend_package/static/assets/{WidgetRecordAudio-Bzy8PIzN.js.map → WidgetRecordAudio-Nk8dH238.js.map} +1 -1
  72. comfyui_frontend_package/static/assets/WidgetSelect-DzZPpO_-.js +1 -0
  73. comfyui_frontend_package/static/assets/{WidgetSelect-zgrFVzHH.js → WidgetSelect-nSQrk_hd.js} +2 -2
  74. comfyui_frontend_package/static/assets/{WidgetSelect-zgrFVzHH.js.map → WidgetSelect-nSQrk_hd.js.map} +1 -1
  75. comfyui_frontend_package/static/assets/{WidgetWithControl-Dh2FWOiA.js → WidgetWithControl-Da6zUB5e.js} +3 -3
  76. comfyui_frontend_package/static/assets/{WidgetWithControl-Dh2FWOiA.js.map → WidgetWithControl-Da6zUB5e.js.map} +1 -1
  77. comfyui_frontend_package/static/assets/{api-CUAc7rDA.js → api-Dwq2LQIW.js} +4 -4
  78. comfyui_frontend_package/static/assets/api-Dwq2LQIW.js.map +1 -0
  79. comfyui_frontend_package/static/assets/{audioService-DvndbCi2.js → audioService-DvVaKhuU.js} +2 -2
  80. comfyui_frontend_package/static/assets/{audioService-DvndbCi2.js.map → audioService-DvVaKhuU.js.map} +1 -1
  81. comfyui_frontend_package/static/assets/{audioUtils-DpjpcKbH.js → audioUtils-DD4rUYVZ.js} +2 -2
  82. comfyui_frontend_package/static/assets/{audioUtils-DpjpcKbH.js.map → audioUtils-DD4rUYVZ.js.map} +1 -1
  83. comfyui_frontend_package/static/assets/{auth-B8ZZ0KKQ.js → auth-B9axG-yZ.js} +2 -2
  84. comfyui_frontend_package/static/assets/{auth-B8ZZ0KKQ.js.map → auth-B9axG-yZ.js.map} +1 -1
  85. comfyui_frontend_package/static/assets/auth-D74DTev8.js +1 -0
  86. comfyui_frontend_package/static/assets/{cloudBadges-C1a7fBky.js → cloudBadges-D5mGJbRy.js} +2 -2
  87. comfyui_frontend_package/static/assets/{cloudBadges-C1a7fBky.js.map → cloudBadges-D5mGJbRy.js.map} +1 -1
  88. comfyui_frontend_package/static/assets/{cloudFeedbackTopbarButton-DR0T8sWG.js → cloudFeedbackTopbarButton-RZUssOmb.js} +2 -2
  89. comfyui_frontend_package/static/assets/{cloudFeedbackTopbarButton-DR0T8sWG.js.map → cloudFeedbackTopbarButton-RZUssOmb.js.map} +1 -1
  90. comfyui_frontend_package/static/assets/{cloudRemoteConfig-DhMjC5TB.js → cloudRemoteConfig-F9J0iGyF.js} +2 -2
  91. comfyui_frontend_package/static/assets/{cloudRemoteConfig-DhMjC5TB.js.map → cloudRemoteConfig-F9J0iGyF.js.map} +1 -1
  92. comfyui_frontend_package/static/assets/{cloudSessionCookie-Duxk6ux1.js → cloudSessionCookie-MEORlqtg.js} +2 -2
  93. comfyui_frontend_package/static/assets/{cloudSessionCookie-Duxk6ux1.js.map → cloudSessionCookie-MEORlqtg.js.map} +1 -1
  94. comfyui_frontend_package/static/assets/{cloudSubscription-B8l6B9Nx.js → cloudSubscription-CuWNXKVx.js} +2 -2
  95. comfyui_frontend_package/static/assets/{cloudSubscription-B8l6B9Nx.js.map → cloudSubscription-CuWNXKVx.js.map} +1 -1
  96. comfyui_frontend_package/static/assets/{core-DBfeqMDR.js → core-IYu8XAIx.js} +4 -4
  97. comfyui_frontend_package/static/assets/{core-DBfeqMDR.js.map → core-IYu8XAIx.js.map} +1 -1
  98. comfyui_frontend_package/static/assets/{dialogService-BZ1FmjZL.js → dialogService-YG0RH337.js} +9 -9
  99. comfyui_frontend_package/static/assets/{dialogService-BZ1FmjZL.js.map → dialogService-YG0RH337.js.map} +1 -1
  100. comfyui_frontend_package/static/assets/firebaseAuthStore-DnNaPbuZ.js +1 -0
  101. comfyui_frontend_package/static/assets/{graphHasMissingNodes-C79Wi51S.js → graphHasMissingNodes-BhD1N6zI.js} +2 -2
  102. comfyui_frontend_package/static/assets/{graphHasMissingNodes-C79Wi51S.js.map → graphHasMissingNodes-BhD1N6zI.js.map} +1 -1
  103. comfyui_frontend_package/static/assets/{index-CGxJFSof.js → index-BMy3twho.js} +3 -3
  104. comfyui_frontend_package/static/assets/{index-CGxJFSof.js.map → index-BMy3twho.js.map} +1 -1
  105. comfyui_frontend_package/static/assets/{index-DNpOhRra.css → index-KMO9qFHH.css} +1 -1
  106. comfyui_frontend_package/static/assets/{keybindingService-B88NjeAU.js → keybindingService-CBLPjYHI.js} +2 -2
  107. comfyui_frontend_package/static/assets/{keybindingService-B88NjeAU.js.map → keybindingService-CBLPjYHI.js.map} +1 -1
  108. comfyui_frontend_package/static/assets/{releaseStore-x0vHjxrw.js → releaseStore-DDOxzkVb.js} +2 -2
  109. comfyui_frontend_package/static/assets/{releaseStore-x0vHjxrw.js.map → releaseStore-DDOxzkVb.js.map} +1 -1
  110. comfyui_frontend_package/static/assets/releaseStore-iVkqunL8.js +1 -0
  111. comfyui_frontend_package/static/assets/{subscriptionCheckoutUtil-B_OvUP2T.js → subscriptionCheckoutUtil-DswSOreM.js} +2 -2
  112. comfyui_frontend_package/static/assets/{subscriptionCheckoutUtil-B_OvUP2T.js.map → subscriptionCheckoutUtil-DswSOreM.js.map} +1 -1
  113. comfyui_frontend_package/static/assets/{useCurrentUser-BJcn2Vgo.js → useCurrentUser-NdaCJzIK.js} +1 -1
  114. comfyui_frontend_package/static/assets/{useErrorHandling-CI8_F4yx.js → useErrorHandling-Cfa5N_7c.js} +2 -2
  115. comfyui_frontend_package/static/assets/{useErrorHandling-CI8_F4yx.js.map → useErrorHandling-Cfa5N_7c.js.map} +1 -1
  116. comfyui_frontend_package/static/assets/{useSubscriptionDialog-Chxkdny5.js → useSubscriptionDialog-792qfEJ2.js} +3 -3
  117. comfyui_frontend_package/static/assets/{useSubscriptionDialog-Chxkdny5.js.map → useSubscriptionDialog-792qfEJ2.js.map} +1 -1
  118. comfyui_frontend_package/static/assets/useSubscriptionDialog-B-eGeK3j.js +1 -0
  119. comfyui_frontend_package/static/assets/{userStore-BkgQPjq6.js → userStore-BAS9m9W6.js} +2 -2
  120. comfyui_frontend_package/static/assets/{userStore-BkgQPjq6.js.map → userStore-BAS9m9W6.js.map} +1 -1
  121. comfyui_frontend_package/static/assets/vendor-three-BFcUNSs9.js.map +1 -1
  122. comfyui_frontend_package/static/index.html +1 -1
  123. {comfyui_frontend_package-1.38.5.dist-info → comfyui_frontend_package-1.38.6.dist-info}/METADATA +1 -1
  124. {comfyui_frontend_package-1.38.5.dist-info → comfyui_frontend_package-1.38.6.dist-info}/RECORD +126 -126
  125. comfyui_frontend_package/static/assets/AudioPreviewPlayer-BoEdyGI_.js +0 -1
  126. comfyui_frontend_package/static/assets/CloudRunButtonWrapper-hQc4BNkX.js +0 -3
  127. comfyui_frontend_package/static/assets/ComfyQueueButton-BbQnRThI.js +0 -1
  128. comfyui_frontend_package/static/assets/GraphView-BCkpNGgz.js.map +0 -1
  129. comfyui_frontend_package/static/assets/Load3D-DHBmC_AU.js +0 -1
  130. comfyui_frontend_package/static/assets/WidgetInputNumber-DGKypM5j.js +0 -3
  131. comfyui_frontend_package/static/assets/WidgetInputNumber-DGKypM5j.js.map +0 -1
  132. comfyui_frontend_package/static/assets/WidgetSelect-DsJGH12l.js +0 -1
  133. comfyui_frontend_package/static/assets/api-CUAc7rDA.js.map +0 -1
  134. comfyui_frontend_package/static/assets/auth-D3RiiqZ8.js +0 -1
  135. comfyui_frontend_package/static/assets/firebaseAuthStore-CZgxeMyf.js +0 -1
  136. comfyui_frontend_package/static/assets/releaseStore-CubqSv5t.js +0 -1
  137. comfyui_frontend_package/static/assets/useSubscriptionDialog-BzMzio2H.js +0 -1
  138. {comfyui_frontend_package-1.38.5.dist-info → comfyui_frontend_package-1.38.6.dist-info}/WHEEL +0 -0
  139. {comfyui_frontend_package-1.38.5.dist-info → comfyui_frontend_package-1.38.6.dist-info}/top_level.txt +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"CloudLayoutView-vTrrVUOY.js","names":[],"sources":["../../src/platform/cloud/onboarding/assets/videos/thumbnail.png","../../src/platform/cloud/onboarding/assets/videos/video.mp4","../../../../../../../assets/images/comfy-cloud-logo.svg","../../src/platform/cloud/onboarding/components/CloudLogo.vue","../../src/platform/cloud/onboarding/components/CloudTemplateFooter.vue","../../src/platform/cloud/onboarding/components/CloudTemplateFooter.vue","../../src/platform/cloud/onboarding/components/CloudTemplate.vue","../../src/platform/cloud/onboarding/components/CloudTemplate.vue","../../src/platform/cloud/onboarding/components/CloudLayoutView.vue","../../src/platform/cloud/onboarding/components/CloudLayoutView.vue"],"sourcesContent":["export default \"__VITE_ASSET__cn7IAAGY294pWGc7MpElVg__\"","export default \"__VITE_ASSET__aLISaAY6NSiJFT$6GdtrfA__\"","export default \"__VITE_PUBLIC_ASSET__83449436__\"","<template>\n <div class=\"mx-auto flex h-[7%] max-h-[70px] w-5/6 items-end\">\n <img\n src=\"/assets/images/comfy-cloud-logo.svg\"\n :alt=\"$t('subscription.comfyCloudLogo')\"\n class=\"h-3/4 max-h-10 w-auto\"\n />\n </div>\n</template>\n","<template>\n <footer class=\"mx-auto flex h-[5%] max-h-[60px] w-5/6 items-start gap-2.5\">\n <a\n href=\"https://www.comfy.org/terms-of-service\"\n target=\"_blank\"\n class=\"cursor-pointer text-sm text-gray-600 no-underline\"\n >\n {{ t('auth.login.termsLink') }}\n </a>\n <a\n href=\"https://www.comfy.org/privacy-policy\"\n target=\"_blank\"\n class=\"cursor-pointer text-sm text-gray-600 no-underline\"\n >\n {{ t('auth.login.privacyLink') }}\n </a>\n <a\n href=\"https://support.comfy.org\"\n class=\"cursor-pointer text-sm text-gray-600 no-underline\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {{ t('cloudFooter_needHelp') }}\n </a>\n </footer>\n</template>\n\n<script setup lang=\"ts\">\nimport { useI18n } from 'vue-i18n'\n\nconst { t } = useI18n()\n</script>\n","<template>\n <footer class=\"mx-auto flex h-[5%] max-h-[60px] w-5/6 items-start gap-2.5\">\n <a\n href=\"https://www.comfy.org/terms-of-service\"\n target=\"_blank\"\n class=\"cursor-pointer text-sm text-gray-600 no-underline\"\n >\n {{ t('auth.login.termsLink') }}\n </a>\n <a\n href=\"https://www.comfy.org/privacy-policy\"\n target=\"_blank\"\n class=\"cursor-pointer text-sm text-gray-600 no-underline\"\n >\n {{ t('auth.login.privacyLink') }}\n </a>\n <a\n href=\"https://support.comfy.org\"\n class=\"cursor-pointer text-sm text-gray-600 no-underline\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {{ t('cloudFooter_needHelp') }}\n </a>\n </footer>\n</template>\n\n<script setup lang=\"ts\">\nimport { useI18n } from 'vue-i18n'\n\nconst { t } = useI18n()\n</script>\n","<template>\n <div class=\"flex\">\n <BaseViewTemplate dark class=\"flex-1\">\n <template #header>\n <CloudLogo />\n </template>\n <slot />\n <template #footer>\n <CloudTemplateFooter />\n </template>\n </BaseViewTemplate>\n <div class=\"relative hidden flex-1 overflow-hidden bg-black lg:block\">\n <!-- Video Background -->\n <video\n class=\"absolute inset-0 h-full w-full object-cover\"\n autoplay\n muted\n loop\n playsinline\n :poster=\"videoPoster\"\n >\n <source :src=\"videoSrc\" type=\"video/mp4\" />\n </video>\n\n <div class=\"absolute inset-0 h-full w-full bg-black/30\"></div>\n\n <!-- Optional Overlay for better visual -->\n <div\n class=\"absolute inset-0 flex items-center justify-center text-center text-white\"\n >\n <div>\n <h1 class=\"font-abcrom hero-title font-black uppercase italic\">\n {{ t('cloudStart_title') }}\n </h1>\n <p class=\"m-2 text-center text-xl text-white\">\n {{ t('cloudStart_desc') }}\n </p>\n <p class=\"m-0 text-center text-xl text-white\">\n {{ t('cloudStart_explain') }}\n </p>\n </div>\n </div>\n <div class=\"absolute inset-0 flex flex-col justify-end px-14 pb-[64px]\">\n <div class=\"flex items-center justify-end\">\n <div class=\"flex items-center gap-3\">\n <p class=\"text-md text-white\">\n {{ t('cloudStart_wantToRun') }}\n </p>\n <Button\n type=\"button\"\n class=\"h-10 bg-black font-bold text-white\"\n variant=\"secondary\"\n @click=\"handleDownloadClick\"\n >\n {{ t('cloudStart_download') }}\n </Button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Button from '@/components/ui/button/Button.vue'\nimport { t } from '@/i18n'\nimport videoPoster from '@/platform/cloud/onboarding/assets/videos/thumbnail.png'\nimport videoSrc from '@/platform/cloud/onboarding/assets/videos/video.mp4'\nimport CloudLogo from '@/platform/cloud/onboarding/components/CloudLogo.vue'\nimport CloudTemplateFooter from '@/platform/cloud/onboarding/components/CloudTemplateFooter.vue'\nimport BaseViewTemplate from '@/views/templates/BaseViewTemplate.vue'\n\nconst handleDownloadClick = () => {\n window.open('https://www.comfy.org/download', '_blank')\n}\n</script>\n<style>\n@import '../assets/css/fonts.css';\n</style>\n","<template>\n <div class=\"flex\">\n <BaseViewTemplate dark class=\"flex-1\">\n <template #header>\n <CloudLogo />\n </template>\n <slot />\n <template #footer>\n <CloudTemplateFooter />\n </template>\n </BaseViewTemplate>\n <div class=\"relative hidden flex-1 overflow-hidden bg-black lg:block\">\n <!-- Video Background -->\n <video\n class=\"absolute inset-0 h-full w-full object-cover\"\n autoplay\n muted\n loop\n playsinline\n :poster=\"videoPoster\"\n >\n <source :src=\"videoSrc\" type=\"video/mp4\" />\n </video>\n\n <div class=\"absolute inset-0 h-full w-full bg-black/30\"></div>\n\n <!-- Optional Overlay for better visual -->\n <div\n class=\"absolute inset-0 flex items-center justify-center text-center text-white\"\n >\n <div>\n <h1 class=\"font-abcrom hero-title font-black uppercase italic\">\n {{ t('cloudStart_title') }}\n </h1>\n <p class=\"m-2 text-center text-xl text-white\">\n {{ t('cloudStart_desc') }}\n </p>\n <p class=\"m-0 text-center text-xl text-white\">\n {{ t('cloudStart_explain') }}\n </p>\n </div>\n </div>\n <div class=\"absolute inset-0 flex flex-col justify-end px-14 pb-[64px]\">\n <div class=\"flex items-center justify-end\">\n <div class=\"flex items-center gap-3\">\n <p class=\"text-md text-white\">\n {{ t('cloudStart_wantToRun') }}\n </p>\n <Button\n type=\"button\"\n class=\"h-10 bg-black font-bold text-white\"\n variant=\"secondary\"\n @click=\"handleDownloadClick\"\n >\n {{ t('cloudStart_download') }}\n </Button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Button from '@/components/ui/button/Button.vue'\nimport { t } from '@/i18n'\nimport videoPoster from '@/platform/cloud/onboarding/assets/videos/thumbnail.png'\nimport videoSrc from '@/platform/cloud/onboarding/assets/videos/video.mp4'\nimport CloudLogo from '@/platform/cloud/onboarding/components/CloudLogo.vue'\nimport CloudTemplateFooter from '@/platform/cloud/onboarding/components/CloudTemplateFooter.vue'\nimport BaseViewTemplate from '@/views/templates/BaseViewTemplate.vue'\n\nconst handleDownloadClick = () => {\n window.open('https://www.comfy.org/download', '_blank')\n}\n</script>\n<style>\n@import '../assets/css/fonts.css';\n</style>\n","<template>\n <CloudTemplate>\n <!-- This will render the nested route components -->\n <RouterView />\n </CloudTemplate>\n <!-- Global Toast for displaying notifications -->\n <GlobalToast />\n</template>\n\n<script setup lang=\"ts\">\nimport { RouterView } from 'vue-router'\n\nimport GlobalToast from '@/components/toast/GlobalToast.vue'\n\nimport CloudTemplate from './CloudTemplate.vue'\n</script>\n","<template>\n <CloudTemplate>\n <!-- This will render the nested route components -->\n <RouterView />\n </CloudTemplate>\n <!-- Global Toast for displaying notifications -->\n <GlobalToast />\n</template>\n\n<script setup lang=\"ts\">\nimport { RouterView } from 'vue-router'\n\nimport GlobalToast from '@/components/toast/GlobalToast.vue'\n\nimport CloudTemplate from './CloudTemplate.vue'\n</script>\n"],"mappings":"43BAAA,IAAA,EAAe,GAAA,IAAA,IAAA,yBAAA,YAAA,GAAA,EAAA,KCAf,EAAe,GAAA,IAAA,IAAA,qBAAA,YAAA,GAAA,EAAA,KCAf,EAAe,GAAA,IAAA,IAAA,8BAAA,YAAA,GAAA,EAAA,aCCR,MAAM,kDAAA,IADb,CAAA,KAAA,6BACE,EAMM,MANN,EAMM,CALJ,EAIE,MAAA,CAHA,IAAA,EACC,IAAK,EAAA,GAAE,6BAAA,EACR,MAAM,gCALZ,CAAA,CAAA,CAAA,giBE8BA,KAAM,CAAE,EAAA,CAAA,EAAM,EAAA,uuBE0Cd,MAAM,EAAA,EAAA,IAA4B,CAChC,OAAO,KAAK,iCAAkC,QAAA,GAD1C"}
1
+ {"version":3,"file":"CloudLayoutView-ShKH6rRV.js","names":[],"sources":["../../src/platform/cloud/onboarding/assets/videos/thumbnail.png","../../src/platform/cloud/onboarding/assets/videos/video.mp4","../../../../../../../assets/images/comfy-cloud-logo.svg","../../src/platform/cloud/onboarding/components/CloudLogo.vue","../../src/platform/cloud/onboarding/components/CloudTemplateFooter.vue","../../src/platform/cloud/onboarding/components/CloudTemplateFooter.vue","../../src/platform/cloud/onboarding/components/CloudTemplate.vue","../../src/platform/cloud/onboarding/components/CloudTemplate.vue","../../src/platform/cloud/onboarding/components/CloudLayoutView.vue","../../src/platform/cloud/onboarding/components/CloudLayoutView.vue"],"sourcesContent":["export default \"__VITE_ASSET__cn7IAAGY294pWGc7MpElVg__\"","export default \"__VITE_ASSET__6kssa3xCT2YlMpIbbRNP$Q__\"","export default \"__VITE_PUBLIC_ASSET__83449436__\"","<template>\n <div class=\"mx-auto flex h-[7%] max-h-[70px] w-5/6 items-end\">\n <img\n src=\"/assets/images/comfy-cloud-logo.svg\"\n :alt=\"$t('subscription.comfyCloudLogo')\"\n class=\"h-3/4 max-h-10 w-auto\"\n />\n </div>\n</template>\n","<template>\n <footer class=\"mx-auto flex h-[5%] max-h-[60px] w-5/6 items-start gap-2.5\">\n <a\n href=\"https://www.comfy.org/terms-of-service\"\n target=\"_blank\"\n class=\"cursor-pointer text-sm text-gray-600 no-underline\"\n >\n {{ t('auth.login.termsLink') }}\n </a>\n <a\n href=\"https://www.comfy.org/privacy-policy\"\n target=\"_blank\"\n class=\"cursor-pointer text-sm text-gray-600 no-underline\"\n >\n {{ t('auth.login.privacyLink') }}\n </a>\n <a\n href=\"https://support.comfy.org\"\n class=\"cursor-pointer text-sm text-gray-600 no-underline\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {{ t('cloudFooter_needHelp') }}\n </a>\n </footer>\n</template>\n\n<script setup lang=\"ts\">\nimport { useI18n } from 'vue-i18n'\n\nconst { t } = useI18n()\n</script>\n","<template>\n <footer class=\"mx-auto flex h-[5%] max-h-[60px] w-5/6 items-start gap-2.5\">\n <a\n href=\"https://www.comfy.org/terms-of-service\"\n target=\"_blank\"\n class=\"cursor-pointer text-sm text-gray-600 no-underline\"\n >\n {{ t('auth.login.termsLink') }}\n </a>\n <a\n href=\"https://www.comfy.org/privacy-policy\"\n target=\"_blank\"\n class=\"cursor-pointer text-sm text-gray-600 no-underline\"\n >\n {{ t('auth.login.privacyLink') }}\n </a>\n <a\n href=\"https://support.comfy.org\"\n class=\"cursor-pointer text-sm text-gray-600 no-underline\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {{ t('cloudFooter_needHelp') }}\n </a>\n </footer>\n</template>\n\n<script setup lang=\"ts\">\nimport { useI18n } from 'vue-i18n'\n\nconst { t } = useI18n()\n</script>\n","<template>\n <div class=\"flex\">\n <BaseViewTemplate dark class=\"flex-1\">\n <template #header>\n <CloudLogo />\n </template>\n <slot />\n <template #footer>\n <CloudTemplateFooter />\n </template>\n </BaseViewTemplate>\n <div class=\"relative hidden flex-1 overflow-hidden bg-black lg:block\">\n <!-- Video Background -->\n <video\n class=\"absolute inset-0 h-full w-full object-cover\"\n autoplay\n muted\n loop\n playsinline\n :poster=\"videoPoster\"\n >\n <source :src=\"videoSrc\" type=\"video/mp4\" />\n </video>\n\n <div class=\"absolute inset-0 h-full w-full bg-black/30\"></div>\n\n <!-- Optional Overlay for better visual -->\n <div\n class=\"absolute inset-0 flex items-center justify-center text-center text-white\"\n >\n <div>\n <h1 class=\"font-abcrom hero-title font-black uppercase italic\">\n {{ t('cloudStart_title') }}\n </h1>\n <p class=\"m-2 text-center text-xl text-white\">\n {{ t('cloudStart_desc') }}\n </p>\n <p class=\"m-0 text-center text-xl text-white\">\n {{ t('cloudStart_explain') }}\n </p>\n </div>\n </div>\n <div class=\"absolute inset-0 flex flex-col justify-end px-14 pb-[64px]\">\n <div class=\"flex items-center justify-end\">\n <div class=\"flex items-center gap-3\">\n <p class=\"text-md text-white\">\n {{ t('cloudStart_wantToRun') }}\n </p>\n <Button\n type=\"button\"\n class=\"h-10 bg-black font-bold text-white\"\n variant=\"secondary\"\n @click=\"handleDownloadClick\"\n >\n {{ t('cloudStart_download') }}\n </Button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Button from '@/components/ui/button/Button.vue'\nimport { t } from '@/i18n'\nimport videoPoster from '@/platform/cloud/onboarding/assets/videos/thumbnail.png'\nimport videoSrc from '@/platform/cloud/onboarding/assets/videos/video.mp4'\nimport CloudLogo from '@/platform/cloud/onboarding/components/CloudLogo.vue'\nimport CloudTemplateFooter from '@/platform/cloud/onboarding/components/CloudTemplateFooter.vue'\nimport BaseViewTemplate from '@/views/templates/BaseViewTemplate.vue'\n\nconst handleDownloadClick = () => {\n window.open('https://www.comfy.org/download', '_blank')\n}\n</script>\n<style>\n@import '../assets/css/fonts.css';\n</style>\n","<template>\n <div class=\"flex\">\n <BaseViewTemplate dark class=\"flex-1\">\n <template #header>\n <CloudLogo />\n </template>\n <slot />\n <template #footer>\n <CloudTemplateFooter />\n </template>\n </BaseViewTemplate>\n <div class=\"relative hidden flex-1 overflow-hidden bg-black lg:block\">\n <!-- Video Background -->\n <video\n class=\"absolute inset-0 h-full w-full object-cover\"\n autoplay\n muted\n loop\n playsinline\n :poster=\"videoPoster\"\n >\n <source :src=\"videoSrc\" type=\"video/mp4\" />\n </video>\n\n <div class=\"absolute inset-0 h-full w-full bg-black/30\"></div>\n\n <!-- Optional Overlay for better visual -->\n <div\n class=\"absolute inset-0 flex items-center justify-center text-center text-white\"\n >\n <div>\n <h1 class=\"font-abcrom hero-title font-black uppercase italic\">\n {{ t('cloudStart_title') }}\n </h1>\n <p class=\"m-2 text-center text-xl text-white\">\n {{ t('cloudStart_desc') }}\n </p>\n <p class=\"m-0 text-center text-xl text-white\">\n {{ t('cloudStart_explain') }}\n </p>\n </div>\n </div>\n <div class=\"absolute inset-0 flex flex-col justify-end px-14 pb-[64px]\">\n <div class=\"flex items-center justify-end\">\n <div class=\"flex items-center gap-3\">\n <p class=\"text-md text-white\">\n {{ t('cloudStart_wantToRun') }}\n </p>\n <Button\n type=\"button\"\n class=\"h-10 bg-black font-bold text-white\"\n variant=\"secondary\"\n @click=\"handleDownloadClick\"\n >\n {{ t('cloudStart_download') }}\n </Button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Button from '@/components/ui/button/Button.vue'\nimport { t } from '@/i18n'\nimport videoPoster from '@/platform/cloud/onboarding/assets/videos/thumbnail.png'\nimport videoSrc from '@/platform/cloud/onboarding/assets/videos/video.mp4'\nimport CloudLogo from '@/platform/cloud/onboarding/components/CloudLogo.vue'\nimport CloudTemplateFooter from '@/platform/cloud/onboarding/components/CloudTemplateFooter.vue'\nimport BaseViewTemplate from '@/views/templates/BaseViewTemplate.vue'\n\nconst handleDownloadClick = () => {\n window.open('https://www.comfy.org/download', '_blank')\n}\n</script>\n<style>\n@import '../assets/css/fonts.css';\n</style>\n","<template>\n <CloudTemplate>\n <!-- This will render the nested route components -->\n <RouterView />\n </CloudTemplate>\n <!-- Global Toast for displaying notifications -->\n <GlobalToast />\n</template>\n\n<script setup lang=\"ts\">\nimport { RouterView } from 'vue-router'\n\nimport GlobalToast from '@/components/toast/GlobalToast.vue'\n\nimport CloudTemplate from './CloudTemplate.vue'\n</script>\n","<template>\n <CloudTemplate>\n <!-- This will render the nested route components -->\n <RouterView />\n </CloudTemplate>\n <!-- Global Toast for displaying notifications -->\n <GlobalToast />\n</template>\n\n<script setup lang=\"ts\">\nimport { RouterView } from 'vue-router'\n\nimport GlobalToast from '@/components/toast/GlobalToast.vue'\n\nimport CloudTemplate from './CloudTemplate.vue'\n</script>\n"],"mappings":"43BAAA,IAAA,EAAe,GAAA,IAAA,IAAA,yBAAA,YAAA,GAAA,EAAA,KCAf,EAAe,GAAA,IAAA,IAAA,qBAAA,YAAA,GAAA,EAAA,KCAf,EAAe,GAAA,IAAA,IAAA,8BAAA,YAAA,GAAA,EAAA,aCCR,MAAM,kDAAA,IADb,CAAA,KAAA,6BACE,EAMM,MANN,EAMM,CALJ,EAIE,MAAA,CAHA,IAAA,EACC,IAAK,EAAA,GAAE,6BAAA,EACR,MAAM,gCALZ,CAAA,CAAA,CAAA,giBE8BA,KAAM,CAAE,EAAA,CAAA,EAAM,EAAA,uuBE0Cd,MAAM,EAAA,EAAA,IAA4B,CAChC,OAAO,KAAK,iCAAkC,QAAA,GAD1C"}
@@ -1,3 +1,3 @@
1
- var E=Object.defineProperty;var c=(y,s)=>E(y,"name",{value:s,configurable:!0});import{X as F,Z as G,i as P,it as T,n as $,ut as I,w as z}from"./vendor-primevue-DcMRXJN3.js";import{$o as a,Ba as t,Do as n,Ha as x,Jo as e,Ka as l,Ua as b,Va as v,Xo as q,Ya as W,do as r,ho as A,qa as d,za as N,zo as R}from"./vendor-other-DlQF6V2E.js";import{c as U,n as V,s as j}from"./vendor-vue-D9IUuwPJ.js";import{It as D}from"./api-CUAc7rDA.js";import"./remoteConfig-CZcEXsZS.js";import"./colorUtil-CzxntCbX.js";import"./useErrorHandling-CI8_F4yx.js";import{t as k}from"./Button-Do2I1OAA.js";import"./PanelTemplate-BjN5XNg2.js";import{Mr as X,Vr as H,l as J}from"./dialogService-BZ1FmjZL.js";import{t as K}from"./_plugin-vue_export-helper-PHE0iSCb.js";import"./vendor-tiptap-_UqYL7N_.js";import"./vendor-xterm-BU_lcTPR.js";import"./vendor-three-BFcUNSs9.js";import"./markdownRendererUtil-DglHsU8t.js";import"./userStore-BkgQPjq6.js";import{t as M}from"./previousFullPath-DgVT6Vaj.js";var Y={class:"flex flex-col gap-2"},Z={key:0,class:"text-red-500"},O={class:"flex flex-col gap-2"},Q={class:"mb-2 flex items-center justify-between"},ee={class:"text-base font-medium opacity-80",for:"cloud-sign-in-password"},te={key:0,class:"text-red-500"},S="cloud-sign-in-email",ae=W({__name:"CloudSignInForm",props:{authError:{}},emits:["submit"],setup(y,{emit:s}){const g=H(),f=N(()=>g.loading),{t:o}=V(),w=s,p=c(u=>{u.valid&&w("submit",u.values)},"onSubmit");return(u,C)=>{const _=A("router-link");return r(),v(e(P),{class:"flex flex-col gap-6",resolver:e($)(e(J)),onSubmit:p},{default:n(i=>[t("div",Y,[t("label",{class:"mb-2 text-base font-medium opacity-80",for:S},a(e(o)("auth.login.emailLabel")),1),d(e(T),{id:S,autocomplete:"email",class:"h-10",name:"email",type:"text",placeholder:e(o)("auth.login.emailPlaceholder"),invalid:i.email?.invalid},null,8,["placeholder","invalid"]),i.email?.invalid?(r(),b("small",Z,a(i.email.error.message),1)):x("",!0)]),t("div",O,[t("div",Q,[t("label",ee,a(e(o)("auth.login.passwordLabel")),1)]),d(e(z),{"input-id":"cloud-sign-in-password","pt:pc-input-text:root:autocomplete":"current-password",name:"password",feedback:!1,"toggle-mask":"",placeholder:e(o)("auth.login.passwordPlaceholder"),class:q([{"p-invalid":i.password?.invalid},"h-10"]),fluid:""},null,8,["placeholder","class"]),i.password?.invalid?(r(),b("small",te,a(i.password.error.message),1)):x("",!0),d(_,{to:{name:"cloud-forgot-password"},class:"text-sm font-medium text-muted no-underline"},{default:n(()=>[l(a(e(o)("auth.login.forgotPassword")),1)]),_:1})]),u.authError?(r(),v(e(I),{key:0,severity:"error"},{default:n(()=>[l(a(u.authError),1)]),_:1})):x("",!0),f.value?(r(),v(e(G),{key:1,class:"h-8 w-8"})):(r(),v(k,{key:2,type:"submit",class:"mt-4 h-10 font-medium text-white",disabled:!i.valid},{default:n(()=>[l(a(e(o)("auth.login.loginButton")),1)]),_:2},1032,["disabled"]))]),_:1},8,["resolver"])}}}),se=K(ae,[["__scopeId","data-v-52efce83"]]),oe={class:"flex h-full items-center justify-center p-8"},ie={class:"max-w-screen p-2 lg:w-96"},le={class:"mt-6 mb-8 flex flex-col gap-4"},re={class:"my-0 text-xl leading-normal font-medium"},ne={class:"my-0 text-base"},ue={class:"text-muted"},ce={class:"text-muted"},de={class:"flex flex-col gap-6"},pe={class:"mt-5 text-sm text-gray-600"},me={href:"https://www.comfy.org/terms-of-service",target:"_blank",class:"cursor-pointer text-blue-400 no-underline"},he={href:"https://www.comfy.org/privacy-policy",target:"_blank",class:"cursor-pointer text-blue-400 no-underline"},ge=W({__name:"CloudLoginView",setup(y){const{t:s}=V(),g=U(),f=j(),o=X(),w=globalThis.isSecureContext,p=R(""),u=D(),C=c(async()=>{await g.push({name:"cloud-signup",query:f.query})},"navigateToSignup"),_=c(async()=>{u.add({severity:"success",summary:"Login Completed",life:2e3});const m=M(f.query);if(m){await g.replace(m);return}await g.push({name:"cloud-user-check"})},"onSuccess"),i=c(async()=>{p.value="",await o.signInWithGoogle()&&await _()},"signInWithGoogle"),L=c(async()=>{p.value="",await o.signInWithGithub()&&await _()},"signInWithGithub"),B=c(async m=>{p.value="",await o.signInWithEmail(m.email,m.password)&&await _()},"signInWithEmail");return(m,h)=>(r(),b("div",oe,[t("div",ie,[t("div",le,[t("h1",re,a(e(s)("auth.login.title")),1),t("p",ne,[t("span",ue,a(e(s)("auth.login.newUser")),1),t("span",{class:"ml-1 cursor-pointer text-blue-500",onClick:C},a(e(s)("auth.login.signUp")),1)])]),e(w)?x("",!0):(r(),v(e(I),{key:0,severity:"warn",class:"mb-4"},{default:n(()=>[l(a(e(s)("auth.login.insecureContextWarning")),1)]),_:1})),d(se,{"auth-error":p.value,onSubmit:B},null,8,["auth-error"]),d(e(F),{align:"center",layout:"horizontal",class:"my-8"},{default:n(()=>[t("span",ce,a(e(s)("auth.login.orContinueWith")),1)]),_:1}),t("div",de,[d(k,{type:"button",class:"h-10 bg-[#2d2e32]",variant:"secondary",onClick:i},{default:n(()=>[h[0]||(h[0]=t("i",{class:"pi pi-google mr-2"},null,-1)),l(" "+a(e(s)("auth.login.loginWithGoogle")),1)]),_:1}),d(k,{type:"button",class:"h-10 bg-[#2d2e32]",variant:"secondary",onClick:L},{default:n(()=>[h[1]||(h[1]=t("i",{class:"pi pi-github mr-2"},null,-1)),l(" "+a(e(s)("auth.login.loginWithGithub")),1)]),_:1})]),t("p",pe,[l(a(e(s)("auth.login.termsText"))+" ",1),t("a",me,a(e(s)("auth.login.termsLink")),1),l(" "+a(e(s)("auth.login.andText"))+" ",1),t("a",he,a(e(s)("auth.login.privacyLink")),1),h[2]||(h[2]=l(". "))])])]))}}),Pe=ge;export{Pe as default};
1
+ var E=Object.defineProperty;var c=(y,s)=>E(y,"name",{value:s,configurable:!0});import{X as F,Z as G,i as P,it as T,n as $,ut as I,w as z}from"./vendor-primevue-DcMRXJN3.js";import{$o as a,Ba as t,Do as n,Ha as x,Jo as e,Ka as l,Ua as b,Va as v,Xo as q,Ya as W,do as r,ho as A,qa as d,za as N,zo as R}from"./vendor-other-DlQF6V2E.js";import{c as U,n as V,s as j}from"./vendor-vue-D9IUuwPJ.js";import{It as D}from"./api-Dwq2LQIW.js";import"./remoteConfig-CZcEXsZS.js";import"./colorUtil-CzxntCbX.js";import"./useErrorHandling-Cfa5N_7c.js";import{t as k}from"./Button-Do2I1OAA.js";import"./PanelTemplate-BJda9e5J.js";import{Mr as X,Vr as H,l as J}from"./dialogService-YG0RH337.js";import{t as K}from"./_plugin-vue_export-helper-PHE0iSCb.js";import"./vendor-tiptap-_UqYL7N_.js";import"./vendor-xterm-BU_lcTPR.js";import"./vendor-three-BFcUNSs9.js";import"./markdownRendererUtil-DglHsU8t.js";import"./userStore-BAS9m9W6.js";import{t as M}from"./previousFullPath-DgVT6Vaj.js";var Y={class:"flex flex-col gap-2"},Z={key:0,class:"text-red-500"},O={class:"flex flex-col gap-2"},Q={class:"mb-2 flex items-center justify-between"},ee={class:"text-base font-medium opacity-80",for:"cloud-sign-in-password"},te={key:0,class:"text-red-500"},S="cloud-sign-in-email",ae=W({__name:"CloudSignInForm",props:{authError:{}},emits:["submit"],setup(y,{emit:s}){const g=H(),f=N(()=>g.loading),{t:o}=V(),w=s,p=c(u=>{u.valid&&w("submit",u.values)},"onSubmit");return(u,C)=>{const _=A("router-link");return r(),v(e(P),{class:"flex flex-col gap-6",resolver:e($)(e(J)),onSubmit:p},{default:n(i=>[t("div",Y,[t("label",{class:"mb-2 text-base font-medium opacity-80",for:S},a(e(o)("auth.login.emailLabel")),1),d(e(T),{id:S,autocomplete:"email",class:"h-10",name:"email",type:"text",placeholder:e(o)("auth.login.emailPlaceholder"),invalid:i.email?.invalid},null,8,["placeholder","invalid"]),i.email?.invalid?(r(),b("small",Z,a(i.email.error.message),1)):x("",!0)]),t("div",O,[t("div",Q,[t("label",ee,a(e(o)("auth.login.passwordLabel")),1)]),d(e(z),{"input-id":"cloud-sign-in-password","pt:pc-input-text:root:autocomplete":"current-password",name:"password",feedback:!1,"toggle-mask":"",placeholder:e(o)("auth.login.passwordPlaceholder"),class:q([{"p-invalid":i.password?.invalid},"h-10"]),fluid:""},null,8,["placeholder","class"]),i.password?.invalid?(r(),b("small",te,a(i.password.error.message),1)):x("",!0),d(_,{to:{name:"cloud-forgot-password"},class:"text-sm font-medium text-muted no-underline"},{default:n(()=>[l(a(e(o)("auth.login.forgotPassword")),1)]),_:1})]),u.authError?(r(),v(e(I),{key:0,severity:"error"},{default:n(()=>[l(a(u.authError),1)]),_:1})):x("",!0),f.value?(r(),v(e(G),{key:1,class:"h-8 w-8"})):(r(),v(k,{key:2,type:"submit",class:"mt-4 h-10 font-medium text-white",disabled:!i.valid},{default:n(()=>[l(a(e(o)("auth.login.loginButton")),1)]),_:2},1032,["disabled"]))]),_:1},8,["resolver"])}}}),se=K(ae,[["__scopeId","data-v-52efce83"]]),oe={class:"flex h-full items-center justify-center p-8"},ie={class:"max-w-screen p-2 lg:w-96"},le={class:"mt-6 mb-8 flex flex-col gap-4"},re={class:"my-0 text-xl leading-normal font-medium"},ne={class:"my-0 text-base"},ue={class:"text-muted"},ce={class:"text-muted"},de={class:"flex flex-col gap-6"},pe={class:"mt-5 text-sm text-gray-600"},me={href:"https://www.comfy.org/terms-of-service",target:"_blank",class:"cursor-pointer text-blue-400 no-underline"},he={href:"https://www.comfy.org/privacy-policy",target:"_blank",class:"cursor-pointer text-blue-400 no-underline"},ge=W({__name:"CloudLoginView",setup(y){const{t:s}=V(),g=U(),f=j(),o=X(),w=globalThis.isSecureContext,p=R(""),u=D(),C=c(async()=>{await g.push({name:"cloud-signup",query:f.query})},"navigateToSignup"),_=c(async()=>{u.add({severity:"success",summary:"Login Completed",life:2e3});const m=M(f.query);if(m){await g.replace(m);return}await g.push({name:"cloud-user-check"})},"onSuccess"),i=c(async()=>{p.value="",await o.signInWithGoogle()&&await _()},"signInWithGoogle"),L=c(async()=>{p.value="",await o.signInWithGithub()&&await _()},"signInWithGithub"),B=c(async m=>{p.value="",await o.signInWithEmail(m.email,m.password)&&await _()},"signInWithEmail");return(m,h)=>(r(),b("div",oe,[t("div",ie,[t("div",le,[t("h1",re,a(e(s)("auth.login.title")),1),t("p",ne,[t("span",ue,a(e(s)("auth.login.newUser")),1),t("span",{class:"ml-1 cursor-pointer text-blue-500",onClick:C},a(e(s)("auth.login.signUp")),1)])]),e(w)?x("",!0):(r(),v(e(I),{key:0,severity:"warn",class:"mb-4"},{default:n(()=>[l(a(e(s)("auth.login.insecureContextWarning")),1)]),_:1})),d(se,{"auth-error":p.value,onSubmit:B},null,8,["auth-error"]),d(e(F),{align:"center",layout:"horizontal",class:"my-8"},{default:n(()=>[t("span",ce,a(e(s)("auth.login.orContinueWith")),1)]),_:1}),t("div",de,[d(k,{type:"button",class:"h-10 bg-[#2d2e32]",variant:"secondary",onClick:i},{default:n(()=>[h[0]||(h[0]=t("i",{class:"pi pi-google mr-2"},null,-1)),l(" "+a(e(s)("auth.login.loginWithGoogle")),1)]),_:1}),d(k,{type:"button",class:"h-10 bg-[#2d2e32]",variant:"secondary",onClick:L},{default:n(()=>[h[1]||(h[1]=t("i",{class:"pi pi-github mr-2"},null,-1)),l(" "+a(e(s)("auth.login.loginWithGithub")),1)]),_:1})]),t("p",pe,[l(a(e(s)("auth.login.termsText"))+" ",1),t("a",me,a(e(s)("auth.login.termsLink")),1),l(" "+a(e(s)("auth.login.andText"))+" ",1),t("a",he,a(e(s)("auth.login.privacyLink")),1),h[2]||(h[2]=l(". "))])])]))}}),Pe=ge;export{Pe as default};
2
2
 
3
- //# sourceMappingURL=CloudLoginView-T17euJly.js.map
3
+ //# sourceMappingURL=CloudLoginView-C3Te42U9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CloudLoginView-T17euJly.js","names":[],"sources":["../../src/platform/cloud/onboarding/components/CloudSignInForm.vue","../../src/platform/cloud/onboarding/components/CloudSignInForm.vue","../../src/platform/cloud/onboarding/CloudLoginView.vue","../../src/platform/cloud/onboarding/CloudLoginView.vue"],"sourcesContent":["<template>\n <Form\n v-slot=\"$form\"\n class=\"flex flex-col gap-6\"\n :resolver=\"zodResolver(signInSchema)\"\n @submit=\"onSubmit\"\n >\n <!-- Email Field -->\n <div class=\"flex flex-col gap-2\">\n <label class=\"mb-2 text-base font-medium opacity-80\" :for=\"emailInputId\">\n {{ t('auth.login.emailLabel') }}\n </label>\n <InputText\n :id=\"emailInputId\"\n autocomplete=\"email\"\n class=\"h-10\"\n name=\"email\"\n type=\"text\"\n :placeholder=\"t('auth.login.emailPlaceholder')\"\n :invalid=\"$form.email?.invalid\"\n />\n <small v-if=\"$form.email?.invalid\" class=\"text-red-500\">{{\n $form.email.error.message\n }}</small>\n </div>\n\n <!-- Password Field -->\n <div class=\"flex flex-col gap-2\">\n <div class=\"mb-2 flex items-center justify-between\">\n <label\n class=\"text-base font-medium opacity-80\"\n for=\"cloud-sign-in-password\"\n >\n {{ t('auth.login.passwordLabel') }}\n </label>\n </div>\n <Password\n input-id=\"cloud-sign-in-password\"\n pt:pc-input-text:root:autocomplete=\"current-password\"\n name=\"password\"\n :feedback=\"false\"\n toggle-mask\n :placeholder=\"t('auth.login.passwordPlaceholder')\"\n :class=\"{ 'p-invalid': $form.password?.invalid }\"\n fluid\n class=\"h-10\"\n />\n <small v-if=\"$form.password?.invalid\" class=\"text-red-500\">{{\n $form.password.error.message\n }}</small>\n\n <router-link\n :to=\"{ name: 'cloud-forgot-password' }\"\n class=\"text-sm font-medium text-muted no-underline\"\n >\n {{ t('auth.login.forgotPassword') }}\n </router-link>\n </div>\n\n <!-- Auth Error Message -->\n <Message v-if=\"authError\" severity=\"error\">\n {{ authError }}\n </Message>\n\n <!-- Submit Button -->\n <ProgressSpinner v-if=\"loading\" class=\"h-8 w-8\" />\n <Button\n v-else\n type=\"submit\"\n class=\"mt-4 h-10 font-medium text-white\"\n :disabled=\"!$form.valid\"\n >\n {{ t('auth.login.loginButton') }}\n </Button>\n </Form>\n</template>\n\n<script setup lang=\"ts\">\nimport type { FormSubmitEvent } from '@primevue/forms'\nimport { Form } from '@primevue/forms'\nimport { zodResolver } from '@primevue/forms/resolvers/zod'\nimport InputText from 'primevue/inputtext'\nimport Message from 'primevue/message'\nimport Password from 'primevue/password'\nimport ProgressSpinner from 'primevue/progressspinner'\nimport { computed } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport Button from '@/components/ui/button/Button.vue'\nimport { signInSchema } from '@/schemas/signInSchema'\nimport type { SignInData } from '@/schemas/signInSchema'\nimport { useFirebaseAuthStore } from '@/stores/firebaseAuthStore'\n\nconst authStore = useFirebaseAuthStore()\nconst loading = computed(() => authStore.loading)\n\nconst { t } = useI18n()\n\ndefineProps<{\n authError?: string\n}>()\n\nconst emit = defineEmits<{\n submit: [values: SignInData]\n}>()\n\nconst emailInputId = 'cloud-sign-in-email'\n\nconst onSubmit = (event: FormSubmitEvent) => {\n if (event.valid) {\n emit('submit', event.values as SignInData)\n }\n}\n</script>\n<style scoped>\n:deep(.p-inputtext) {\n border: none !important;\n box-shadow: none !important;\n background: #2d2e32 !important;\n}\n\n:deep(.p-password input) {\n border: none !important;\n box-shadow: none !important;\n}\n:deep(.p-checkbox-checked .p-checkbox-box) {\n background-color: #f0ff41 !important;\n border-color: #f0ff41 !important;\n}\n</style>\n","<template>\n <Form\n v-slot=\"$form\"\n class=\"flex flex-col gap-6\"\n :resolver=\"zodResolver(signInSchema)\"\n @submit=\"onSubmit\"\n >\n <!-- Email Field -->\n <div class=\"flex flex-col gap-2\">\n <label class=\"mb-2 text-base font-medium opacity-80\" :for=\"emailInputId\">\n {{ t('auth.login.emailLabel') }}\n </label>\n <InputText\n :id=\"emailInputId\"\n autocomplete=\"email\"\n class=\"h-10\"\n name=\"email\"\n type=\"text\"\n :placeholder=\"t('auth.login.emailPlaceholder')\"\n :invalid=\"$form.email?.invalid\"\n />\n <small v-if=\"$form.email?.invalid\" class=\"text-red-500\">{{\n $form.email.error.message\n }}</small>\n </div>\n\n <!-- Password Field -->\n <div class=\"flex flex-col gap-2\">\n <div class=\"mb-2 flex items-center justify-between\">\n <label\n class=\"text-base font-medium opacity-80\"\n for=\"cloud-sign-in-password\"\n >\n {{ t('auth.login.passwordLabel') }}\n </label>\n </div>\n <Password\n input-id=\"cloud-sign-in-password\"\n pt:pc-input-text:root:autocomplete=\"current-password\"\n name=\"password\"\n :feedback=\"false\"\n toggle-mask\n :placeholder=\"t('auth.login.passwordPlaceholder')\"\n :class=\"{ 'p-invalid': $form.password?.invalid }\"\n fluid\n class=\"h-10\"\n />\n <small v-if=\"$form.password?.invalid\" class=\"text-red-500\">{{\n $form.password.error.message\n }}</small>\n\n <router-link\n :to=\"{ name: 'cloud-forgot-password' }\"\n class=\"text-sm font-medium text-muted no-underline\"\n >\n {{ t('auth.login.forgotPassword') }}\n </router-link>\n </div>\n\n <!-- Auth Error Message -->\n <Message v-if=\"authError\" severity=\"error\">\n {{ authError }}\n </Message>\n\n <!-- Submit Button -->\n <ProgressSpinner v-if=\"loading\" class=\"h-8 w-8\" />\n <Button\n v-else\n type=\"submit\"\n class=\"mt-4 h-10 font-medium text-white\"\n :disabled=\"!$form.valid\"\n >\n {{ t('auth.login.loginButton') }}\n </Button>\n </Form>\n</template>\n\n<script setup lang=\"ts\">\nimport type { FormSubmitEvent } from '@primevue/forms'\nimport { Form } from '@primevue/forms'\nimport { zodResolver } from '@primevue/forms/resolvers/zod'\nimport InputText from 'primevue/inputtext'\nimport Message from 'primevue/message'\nimport Password from 'primevue/password'\nimport ProgressSpinner from 'primevue/progressspinner'\nimport { computed } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport Button from '@/components/ui/button/Button.vue'\nimport { signInSchema } from '@/schemas/signInSchema'\nimport type { SignInData } from '@/schemas/signInSchema'\nimport { useFirebaseAuthStore } from '@/stores/firebaseAuthStore'\n\nconst authStore = useFirebaseAuthStore()\nconst loading = computed(() => authStore.loading)\n\nconst { t } = useI18n()\n\ndefineProps<{\n authError?: string\n}>()\n\nconst emit = defineEmits<{\n submit: [values: SignInData]\n}>()\n\nconst emailInputId = 'cloud-sign-in-email'\n\nconst onSubmit = (event: FormSubmitEvent) => {\n if (event.valid) {\n emit('submit', event.values as SignInData)\n }\n}\n</script>\n<style scoped>\n:deep(.p-inputtext) {\n border: none !important;\n box-shadow: none !important;\n background: #2d2e32 !important;\n}\n\n:deep(.p-password input) {\n border: none !important;\n box-shadow: none !important;\n}\n:deep(.p-checkbox-checked .p-checkbox-box) {\n background-color: #f0ff41 !important;\n border-color: #f0ff41 !important;\n}\n</style>\n","<template>\n <div class=\"flex h-full items-center justify-center p-8\">\n <div class=\"max-w-screen p-2 lg:w-96\">\n <!-- Header -->\n <div class=\"mt-6 mb-8 flex flex-col gap-4\">\n <h1 class=\"my-0 text-xl leading-normal font-medium\">\n {{ t('auth.login.title') }}\n </h1>\n <p class=\"my-0 text-base\">\n <span class=\"text-muted\">{{ t('auth.login.newUser') }}</span>\n <span\n class=\"ml-1 cursor-pointer text-blue-500\"\n @click=\"navigateToSignup\"\n >{{ t('auth.login.signUp') }}</span\n >\n </p>\n </div>\n\n <Message v-if=\"!isSecureContext\" severity=\"warn\" class=\"mb-4\">\n {{ t('auth.login.insecureContextWarning') }}\n </Message>\n\n <!-- Form -->\n <CloudSignInForm :auth-error=\"authError\" @submit=\"signInWithEmail\" />\n\n <!-- Divider -->\n <Divider align=\"center\" layout=\"horizontal\" class=\"my-8\">\n <span class=\"text-muted\">{{ t('auth.login.orContinueWith') }}</span>\n </Divider>\n\n <!-- Social Login Buttons -->\n <div class=\"flex flex-col gap-6\">\n <Button\n type=\"button\"\n class=\"h-10 bg-[#2d2e32]\"\n variant=\"secondary\"\n @click=\"signInWithGoogle\"\n >\n <i class=\"pi pi-google mr-2\"></i>\n {{ t('auth.login.loginWithGoogle') }}\n </Button>\n\n <Button\n type=\"button\"\n class=\"h-10 bg-[#2d2e32]\"\n variant=\"secondary\"\n @click=\"signInWithGithub\"\n >\n <i class=\"pi pi-github mr-2\"></i>\n {{ t('auth.login.loginWithGithub') }}\n </Button>\n </div>\n\n <!-- Terms & Contact -->\n <p class=\"mt-5 text-sm text-gray-600\">\n {{ t('auth.login.termsText') }}\n <a\n href=\"https://www.comfy.org/terms-of-service\"\n target=\"_blank\"\n class=\"cursor-pointer text-blue-400 no-underline\"\n >\n {{ t('auth.login.termsLink') }}\n </a>\n {{ t('auth.login.andText') }}\n <a\n href=\"https://www.comfy.org/privacy-policy\"\n target=\"_blank\"\n class=\"cursor-pointer text-blue-400 no-underline\"\n >\n {{ t('auth.login.privacyLink') }} </a\n >.\n </p>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Divider from 'primevue/divider'\nimport Message from 'primevue/message'\nimport { ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useRoute, useRouter } from 'vue-router'\n\nimport Button from '@/components/ui/button/Button.vue'\nimport { useFirebaseAuthActions } from '@/composables/auth/useFirebaseAuthActions'\nimport CloudSignInForm from '@/platform/cloud/onboarding/components/CloudSignInForm.vue'\nimport { getSafePreviousFullPath } from '@/platform/cloud/onboarding/utils/previousFullPath'\nimport { useToastStore } from '@/platform/updates/common/toastStore'\nimport type { SignInData } from '@/schemas/signInSchema'\n\nconst { t } = useI18n()\nconst router = useRouter()\nconst route = useRoute()\nconst authActions = useFirebaseAuthActions()\nconst isSecureContext = globalThis.isSecureContext\nconst authError = ref('')\nconst toastStore = useToastStore()\n\nconst navigateToSignup = async () => {\n await router.push({ name: 'cloud-signup', query: route.query })\n}\n\nconst onSuccess = async () => {\n toastStore.add({\n severity: 'success',\n summary: 'Login Completed',\n life: 2000\n })\n\n const previousFullPath = getSafePreviousFullPath(route.query)\n if (previousFullPath) {\n await router.replace(previousFullPath)\n return\n }\n\n await router.push({ name: 'cloud-user-check' })\n}\n\nconst signInWithGoogle = async () => {\n authError.value = ''\n if (await authActions.signInWithGoogle()) {\n await onSuccess()\n }\n}\n\nconst signInWithGithub = async () => {\n authError.value = ''\n if (await authActions.signInWithGithub()) {\n await onSuccess()\n }\n}\n\nconst signInWithEmail = async (values: SignInData) => {\n authError.value = ''\n if (await authActions.signInWithEmail(values.email, values.password)) {\n await onSuccess()\n }\n}\n</script>\n","<template>\n <div class=\"flex h-full items-center justify-center p-8\">\n <div class=\"max-w-screen p-2 lg:w-96\">\n <!-- Header -->\n <div class=\"mt-6 mb-8 flex flex-col gap-4\">\n <h1 class=\"my-0 text-xl leading-normal font-medium\">\n {{ t('auth.login.title') }}\n </h1>\n <p class=\"my-0 text-base\">\n <span class=\"text-muted\">{{ t('auth.login.newUser') }}</span>\n <span\n class=\"ml-1 cursor-pointer text-blue-500\"\n @click=\"navigateToSignup\"\n >{{ t('auth.login.signUp') }}</span\n >\n </p>\n </div>\n\n <Message v-if=\"!isSecureContext\" severity=\"warn\" class=\"mb-4\">\n {{ t('auth.login.insecureContextWarning') }}\n </Message>\n\n <!-- Form -->\n <CloudSignInForm :auth-error=\"authError\" @submit=\"signInWithEmail\" />\n\n <!-- Divider -->\n <Divider align=\"center\" layout=\"horizontal\" class=\"my-8\">\n <span class=\"text-muted\">{{ t('auth.login.orContinueWith') }}</span>\n </Divider>\n\n <!-- Social Login Buttons -->\n <div class=\"flex flex-col gap-6\">\n <Button\n type=\"button\"\n class=\"h-10 bg-[#2d2e32]\"\n variant=\"secondary\"\n @click=\"signInWithGoogle\"\n >\n <i class=\"pi pi-google mr-2\"></i>\n {{ t('auth.login.loginWithGoogle') }}\n </Button>\n\n <Button\n type=\"button\"\n class=\"h-10 bg-[#2d2e32]\"\n variant=\"secondary\"\n @click=\"signInWithGithub\"\n >\n <i class=\"pi pi-github mr-2\"></i>\n {{ t('auth.login.loginWithGithub') }}\n </Button>\n </div>\n\n <!-- Terms & Contact -->\n <p class=\"mt-5 text-sm text-gray-600\">\n {{ t('auth.login.termsText') }}\n <a\n href=\"https://www.comfy.org/terms-of-service\"\n target=\"_blank\"\n class=\"cursor-pointer text-blue-400 no-underline\"\n >\n {{ t('auth.login.termsLink') }}\n </a>\n {{ t('auth.login.andText') }}\n <a\n href=\"https://www.comfy.org/privacy-policy\"\n target=\"_blank\"\n class=\"cursor-pointer text-blue-400 no-underline\"\n >\n {{ t('auth.login.privacyLink') }} </a\n >.\n </p>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Divider from 'primevue/divider'\nimport Message from 'primevue/message'\nimport { ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useRoute, useRouter } from 'vue-router'\n\nimport Button from '@/components/ui/button/Button.vue'\nimport { useFirebaseAuthActions } from '@/composables/auth/useFirebaseAuthActions'\nimport CloudSignInForm from '@/platform/cloud/onboarding/components/CloudSignInForm.vue'\nimport { getSafePreviousFullPath } from '@/platform/cloud/onboarding/utils/previousFullPath'\nimport { useToastStore } from '@/platform/updates/common/toastStore'\nimport type { SignInData } from '@/schemas/signInSchema'\n\nconst { t } = useI18n()\nconst router = useRouter()\nconst route = useRoute()\nconst authActions = useFirebaseAuthActions()\nconst isSecureContext = globalThis.isSecureContext\nconst authError = ref('')\nconst toastStore = useToastStore()\n\nconst navigateToSignup = async () => {\n await router.push({ name: 'cloud-signup', query: route.query })\n}\n\nconst onSuccess = async () => {\n toastStore.add({\n severity: 'success',\n summary: 'Login Completed',\n life: 2000\n })\n\n const previousFullPath = getSafePreviousFullPath(route.query)\n if (previousFullPath) {\n await router.replace(previousFullPath)\n return\n }\n\n await router.push({ name: 'cloud-user-check' })\n}\n\nconst signInWithGoogle = async () => {\n authError.value = ''\n if (await authActions.signInWithGoogle()) {\n await onSuccess()\n }\n}\n\nconst signInWithGithub = async () => {\n authError.value = ''\n if (await authActions.signInWithGithub()) {\n await onSuccess()\n }\n}\n\nconst signInWithEmail = async (values: SignInData) => {\n authError.value = ''\n if (await authActions.signInWithEmail(values.email, values.password)) {\n await onSuccess()\n }\n}\n</script>\n"],"mappings":"2sCC0GM,EAAe,6GAbrB,MAAM,EAAY,EAAA,EACZ,EAAU,EAAA,IAAe,EAAU,OAAA,EAEnC,CAAE,EAAA,CAAA,EAAM,EAAA,EAMR,EAAO,EAMP,EAAA,EAAY,GAA2B,CACvC,EAAM,OACR,EAAK,SAAU,EAAM,MAAA,GAFnB,qkEElBN,KAAM,CAAE,EAAA,CAAA,EAAM,EAAA,EACR,EAAS,EAAA,EACT,EAAQ,EAAA,EACR,EAAc,EAAA,EACd,EAAkB,WAAW,gBAC7B,EAAY,EAAI,EAAA,EAChB,EAAa,EAAA,EAEb,EAAmB,EAAA,SAAY,CACnC,MAAM,EAAO,KAAK,CAAE,KAAM,eAAgB,MAAO,EAAM,MAAO,GADvC,oBAInB,EAAY,EAAA,SAAY,CAC5B,EAAW,IAAI,CACb,SAAU,UACV,QAAS,kBACT,KAAM,IACP,EAED,MAAM,EAAmB,EAAwB,EAAM,KAAA,EACvD,GAAI,EAAkB,CACpB,MAAM,EAAO,QAAQ,CAAA,EACrB,OAGF,MAAM,EAAO,KAAK,CAAE,KAAM,kBAAA,CAAoB,GAb9B,aAgBZ,EAAmB,EAAA,SAAY,CACnC,EAAU,MAAQ,GACd,MAAM,EAAY,iBAAA,GACpB,MAAM,EAAA,GAHe,oBAOnB,EAAmB,EAAA,SAAY,CACnC,EAAU,MAAQ,GACd,MAAM,EAAY,iBAAA,GACpB,MAAM,EAAA,GAHe,oBAOnB,EAAkB,EAAA,MAAO,GAAuB,CACpD,EAAU,MAAQ,GACd,MAAM,EAAY,gBAAgB,EAAO,MAAO,EAAO,QAAA,GACzD,MAAM,EAAA,GAHc"}
1
+ {"version":3,"file":"CloudLoginView-C3Te42U9.js","names":[],"sources":["../../src/platform/cloud/onboarding/components/CloudSignInForm.vue","../../src/platform/cloud/onboarding/components/CloudSignInForm.vue","../../src/platform/cloud/onboarding/CloudLoginView.vue","../../src/platform/cloud/onboarding/CloudLoginView.vue"],"sourcesContent":["<template>\n <Form\n v-slot=\"$form\"\n class=\"flex flex-col gap-6\"\n :resolver=\"zodResolver(signInSchema)\"\n @submit=\"onSubmit\"\n >\n <!-- Email Field -->\n <div class=\"flex flex-col gap-2\">\n <label class=\"mb-2 text-base font-medium opacity-80\" :for=\"emailInputId\">\n {{ t('auth.login.emailLabel') }}\n </label>\n <InputText\n :id=\"emailInputId\"\n autocomplete=\"email\"\n class=\"h-10\"\n name=\"email\"\n type=\"text\"\n :placeholder=\"t('auth.login.emailPlaceholder')\"\n :invalid=\"$form.email?.invalid\"\n />\n <small v-if=\"$form.email?.invalid\" class=\"text-red-500\">{{\n $form.email.error.message\n }}</small>\n </div>\n\n <!-- Password Field -->\n <div class=\"flex flex-col gap-2\">\n <div class=\"mb-2 flex items-center justify-between\">\n <label\n class=\"text-base font-medium opacity-80\"\n for=\"cloud-sign-in-password\"\n >\n {{ t('auth.login.passwordLabel') }}\n </label>\n </div>\n <Password\n input-id=\"cloud-sign-in-password\"\n pt:pc-input-text:root:autocomplete=\"current-password\"\n name=\"password\"\n :feedback=\"false\"\n toggle-mask\n :placeholder=\"t('auth.login.passwordPlaceholder')\"\n :class=\"{ 'p-invalid': $form.password?.invalid }\"\n fluid\n class=\"h-10\"\n />\n <small v-if=\"$form.password?.invalid\" class=\"text-red-500\">{{\n $form.password.error.message\n }}</small>\n\n <router-link\n :to=\"{ name: 'cloud-forgot-password' }\"\n class=\"text-sm font-medium text-muted no-underline\"\n >\n {{ t('auth.login.forgotPassword') }}\n </router-link>\n </div>\n\n <!-- Auth Error Message -->\n <Message v-if=\"authError\" severity=\"error\">\n {{ authError }}\n </Message>\n\n <!-- Submit Button -->\n <ProgressSpinner v-if=\"loading\" class=\"h-8 w-8\" />\n <Button\n v-else\n type=\"submit\"\n class=\"mt-4 h-10 font-medium text-white\"\n :disabled=\"!$form.valid\"\n >\n {{ t('auth.login.loginButton') }}\n </Button>\n </Form>\n</template>\n\n<script setup lang=\"ts\">\nimport type { FormSubmitEvent } from '@primevue/forms'\nimport { Form } from '@primevue/forms'\nimport { zodResolver } from '@primevue/forms/resolvers/zod'\nimport InputText from 'primevue/inputtext'\nimport Message from 'primevue/message'\nimport Password from 'primevue/password'\nimport ProgressSpinner from 'primevue/progressspinner'\nimport { computed } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport Button from '@/components/ui/button/Button.vue'\nimport { signInSchema } from '@/schemas/signInSchema'\nimport type { SignInData } from '@/schemas/signInSchema'\nimport { useFirebaseAuthStore } from '@/stores/firebaseAuthStore'\n\nconst authStore = useFirebaseAuthStore()\nconst loading = computed(() => authStore.loading)\n\nconst { t } = useI18n()\n\ndefineProps<{\n authError?: string\n}>()\n\nconst emit = defineEmits<{\n submit: [values: SignInData]\n}>()\n\nconst emailInputId = 'cloud-sign-in-email'\n\nconst onSubmit = (event: FormSubmitEvent) => {\n if (event.valid) {\n emit('submit', event.values as SignInData)\n }\n}\n</script>\n<style scoped>\n:deep(.p-inputtext) {\n border: none !important;\n box-shadow: none !important;\n background: #2d2e32 !important;\n}\n\n:deep(.p-password input) {\n border: none !important;\n box-shadow: none !important;\n}\n:deep(.p-checkbox-checked .p-checkbox-box) {\n background-color: #f0ff41 !important;\n border-color: #f0ff41 !important;\n}\n</style>\n","<template>\n <Form\n v-slot=\"$form\"\n class=\"flex flex-col gap-6\"\n :resolver=\"zodResolver(signInSchema)\"\n @submit=\"onSubmit\"\n >\n <!-- Email Field -->\n <div class=\"flex flex-col gap-2\">\n <label class=\"mb-2 text-base font-medium opacity-80\" :for=\"emailInputId\">\n {{ t('auth.login.emailLabel') }}\n </label>\n <InputText\n :id=\"emailInputId\"\n autocomplete=\"email\"\n class=\"h-10\"\n name=\"email\"\n type=\"text\"\n :placeholder=\"t('auth.login.emailPlaceholder')\"\n :invalid=\"$form.email?.invalid\"\n />\n <small v-if=\"$form.email?.invalid\" class=\"text-red-500\">{{\n $form.email.error.message\n }}</small>\n </div>\n\n <!-- Password Field -->\n <div class=\"flex flex-col gap-2\">\n <div class=\"mb-2 flex items-center justify-between\">\n <label\n class=\"text-base font-medium opacity-80\"\n for=\"cloud-sign-in-password\"\n >\n {{ t('auth.login.passwordLabel') }}\n </label>\n </div>\n <Password\n input-id=\"cloud-sign-in-password\"\n pt:pc-input-text:root:autocomplete=\"current-password\"\n name=\"password\"\n :feedback=\"false\"\n toggle-mask\n :placeholder=\"t('auth.login.passwordPlaceholder')\"\n :class=\"{ 'p-invalid': $form.password?.invalid }\"\n fluid\n class=\"h-10\"\n />\n <small v-if=\"$form.password?.invalid\" class=\"text-red-500\">{{\n $form.password.error.message\n }}</small>\n\n <router-link\n :to=\"{ name: 'cloud-forgot-password' }\"\n class=\"text-sm font-medium text-muted no-underline\"\n >\n {{ t('auth.login.forgotPassword') }}\n </router-link>\n </div>\n\n <!-- Auth Error Message -->\n <Message v-if=\"authError\" severity=\"error\">\n {{ authError }}\n </Message>\n\n <!-- Submit Button -->\n <ProgressSpinner v-if=\"loading\" class=\"h-8 w-8\" />\n <Button\n v-else\n type=\"submit\"\n class=\"mt-4 h-10 font-medium text-white\"\n :disabled=\"!$form.valid\"\n >\n {{ t('auth.login.loginButton') }}\n </Button>\n </Form>\n</template>\n\n<script setup lang=\"ts\">\nimport type { FormSubmitEvent } from '@primevue/forms'\nimport { Form } from '@primevue/forms'\nimport { zodResolver } from '@primevue/forms/resolvers/zod'\nimport InputText from 'primevue/inputtext'\nimport Message from 'primevue/message'\nimport Password from 'primevue/password'\nimport ProgressSpinner from 'primevue/progressspinner'\nimport { computed } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport Button from '@/components/ui/button/Button.vue'\nimport { signInSchema } from '@/schemas/signInSchema'\nimport type { SignInData } from '@/schemas/signInSchema'\nimport { useFirebaseAuthStore } from '@/stores/firebaseAuthStore'\n\nconst authStore = useFirebaseAuthStore()\nconst loading = computed(() => authStore.loading)\n\nconst { t } = useI18n()\n\ndefineProps<{\n authError?: string\n}>()\n\nconst emit = defineEmits<{\n submit: [values: SignInData]\n}>()\n\nconst emailInputId = 'cloud-sign-in-email'\n\nconst onSubmit = (event: FormSubmitEvent) => {\n if (event.valid) {\n emit('submit', event.values as SignInData)\n }\n}\n</script>\n<style scoped>\n:deep(.p-inputtext) {\n border: none !important;\n box-shadow: none !important;\n background: #2d2e32 !important;\n}\n\n:deep(.p-password input) {\n border: none !important;\n box-shadow: none !important;\n}\n:deep(.p-checkbox-checked .p-checkbox-box) {\n background-color: #f0ff41 !important;\n border-color: #f0ff41 !important;\n}\n</style>\n","<template>\n <div class=\"flex h-full items-center justify-center p-8\">\n <div class=\"max-w-screen p-2 lg:w-96\">\n <!-- Header -->\n <div class=\"mt-6 mb-8 flex flex-col gap-4\">\n <h1 class=\"my-0 text-xl leading-normal font-medium\">\n {{ t('auth.login.title') }}\n </h1>\n <p class=\"my-0 text-base\">\n <span class=\"text-muted\">{{ t('auth.login.newUser') }}</span>\n <span\n class=\"ml-1 cursor-pointer text-blue-500\"\n @click=\"navigateToSignup\"\n >{{ t('auth.login.signUp') }}</span\n >\n </p>\n </div>\n\n <Message v-if=\"!isSecureContext\" severity=\"warn\" class=\"mb-4\">\n {{ t('auth.login.insecureContextWarning') }}\n </Message>\n\n <!-- Form -->\n <CloudSignInForm :auth-error=\"authError\" @submit=\"signInWithEmail\" />\n\n <!-- Divider -->\n <Divider align=\"center\" layout=\"horizontal\" class=\"my-8\">\n <span class=\"text-muted\">{{ t('auth.login.orContinueWith') }}</span>\n </Divider>\n\n <!-- Social Login Buttons -->\n <div class=\"flex flex-col gap-6\">\n <Button\n type=\"button\"\n class=\"h-10 bg-[#2d2e32]\"\n variant=\"secondary\"\n @click=\"signInWithGoogle\"\n >\n <i class=\"pi pi-google mr-2\"></i>\n {{ t('auth.login.loginWithGoogle') }}\n </Button>\n\n <Button\n type=\"button\"\n class=\"h-10 bg-[#2d2e32]\"\n variant=\"secondary\"\n @click=\"signInWithGithub\"\n >\n <i class=\"pi pi-github mr-2\"></i>\n {{ t('auth.login.loginWithGithub') }}\n </Button>\n </div>\n\n <!-- Terms & Contact -->\n <p class=\"mt-5 text-sm text-gray-600\">\n {{ t('auth.login.termsText') }}\n <a\n href=\"https://www.comfy.org/terms-of-service\"\n target=\"_blank\"\n class=\"cursor-pointer text-blue-400 no-underline\"\n >\n {{ t('auth.login.termsLink') }}\n </a>\n {{ t('auth.login.andText') }}\n <a\n href=\"https://www.comfy.org/privacy-policy\"\n target=\"_blank\"\n class=\"cursor-pointer text-blue-400 no-underline\"\n >\n {{ t('auth.login.privacyLink') }} </a\n >.\n </p>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Divider from 'primevue/divider'\nimport Message from 'primevue/message'\nimport { ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useRoute, useRouter } from 'vue-router'\n\nimport Button from '@/components/ui/button/Button.vue'\nimport { useFirebaseAuthActions } from '@/composables/auth/useFirebaseAuthActions'\nimport CloudSignInForm from '@/platform/cloud/onboarding/components/CloudSignInForm.vue'\nimport { getSafePreviousFullPath } from '@/platform/cloud/onboarding/utils/previousFullPath'\nimport { useToastStore } from '@/platform/updates/common/toastStore'\nimport type { SignInData } from '@/schemas/signInSchema'\n\nconst { t } = useI18n()\nconst router = useRouter()\nconst route = useRoute()\nconst authActions = useFirebaseAuthActions()\nconst isSecureContext = globalThis.isSecureContext\nconst authError = ref('')\nconst toastStore = useToastStore()\n\nconst navigateToSignup = async () => {\n await router.push({ name: 'cloud-signup', query: route.query })\n}\n\nconst onSuccess = async () => {\n toastStore.add({\n severity: 'success',\n summary: 'Login Completed',\n life: 2000\n })\n\n const previousFullPath = getSafePreviousFullPath(route.query)\n if (previousFullPath) {\n await router.replace(previousFullPath)\n return\n }\n\n await router.push({ name: 'cloud-user-check' })\n}\n\nconst signInWithGoogle = async () => {\n authError.value = ''\n if (await authActions.signInWithGoogle()) {\n await onSuccess()\n }\n}\n\nconst signInWithGithub = async () => {\n authError.value = ''\n if (await authActions.signInWithGithub()) {\n await onSuccess()\n }\n}\n\nconst signInWithEmail = async (values: SignInData) => {\n authError.value = ''\n if (await authActions.signInWithEmail(values.email, values.password)) {\n await onSuccess()\n }\n}\n</script>\n","<template>\n <div class=\"flex h-full items-center justify-center p-8\">\n <div class=\"max-w-screen p-2 lg:w-96\">\n <!-- Header -->\n <div class=\"mt-6 mb-8 flex flex-col gap-4\">\n <h1 class=\"my-0 text-xl leading-normal font-medium\">\n {{ t('auth.login.title') }}\n </h1>\n <p class=\"my-0 text-base\">\n <span class=\"text-muted\">{{ t('auth.login.newUser') }}</span>\n <span\n class=\"ml-1 cursor-pointer text-blue-500\"\n @click=\"navigateToSignup\"\n >{{ t('auth.login.signUp') }}</span\n >\n </p>\n </div>\n\n <Message v-if=\"!isSecureContext\" severity=\"warn\" class=\"mb-4\">\n {{ t('auth.login.insecureContextWarning') }}\n </Message>\n\n <!-- Form -->\n <CloudSignInForm :auth-error=\"authError\" @submit=\"signInWithEmail\" />\n\n <!-- Divider -->\n <Divider align=\"center\" layout=\"horizontal\" class=\"my-8\">\n <span class=\"text-muted\">{{ t('auth.login.orContinueWith') }}</span>\n </Divider>\n\n <!-- Social Login Buttons -->\n <div class=\"flex flex-col gap-6\">\n <Button\n type=\"button\"\n class=\"h-10 bg-[#2d2e32]\"\n variant=\"secondary\"\n @click=\"signInWithGoogle\"\n >\n <i class=\"pi pi-google mr-2\"></i>\n {{ t('auth.login.loginWithGoogle') }}\n </Button>\n\n <Button\n type=\"button\"\n class=\"h-10 bg-[#2d2e32]\"\n variant=\"secondary\"\n @click=\"signInWithGithub\"\n >\n <i class=\"pi pi-github mr-2\"></i>\n {{ t('auth.login.loginWithGithub') }}\n </Button>\n </div>\n\n <!-- Terms & Contact -->\n <p class=\"mt-5 text-sm text-gray-600\">\n {{ t('auth.login.termsText') }}\n <a\n href=\"https://www.comfy.org/terms-of-service\"\n target=\"_blank\"\n class=\"cursor-pointer text-blue-400 no-underline\"\n >\n {{ t('auth.login.termsLink') }}\n </a>\n {{ t('auth.login.andText') }}\n <a\n href=\"https://www.comfy.org/privacy-policy\"\n target=\"_blank\"\n class=\"cursor-pointer text-blue-400 no-underline\"\n >\n {{ t('auth.login.privacyLink') }} </a\n >.\n </p>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Divider from 'primevue/divider'\nimport Message from 'primevue/message'\nimport { ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useRoute, useRouter } from 'vue-router'\n\nimport Button from '@/components/ui/button/Button.vue'\nimport { useFirebaseAuthActions } from '@/composables/auth/useFirebaseAuthActions'\nimport CloudSignInForm from '@/platform/cloud/onboarding/components/CloudSignInForm.vue'\nimport { getSafePreviousFullPath } from '@/platform/cloud/onboarding/utils/previousFullPath'\nimport { useToastStore } from '@/platform/updates/common/toastStore'\nimport type { SignInData } from '@/schemas/signInSchema'\n\nconst { t } = useI18n()\nconst router = useRouter()\nconst route = useRoute()\nconst authActions = useFirebaseAuthActions()\nconst isSecureContext = globalThis.isSecureContext\nconst authError = ref('')\nconst toastStore = useToastStore()\n\nconst navigateToSignup = async () => {\n await router.push({ name: 'cloud-signup', query: route.query })\n}\n\nconst onSuccess = async () => {\n toastStore.add({\n severity: 'success',\n summary: 'Login Completed',\n life: 2000\n })\n\n const previousFullPath = getSafePreviousFullPath(route.query)\n if (previousFullPath) {\n await router.replace(previousFullPath)\n return\n }\n\n await router.push({ name: 'cloud-user-check' })\n}\n\nconst signInWithGoogle = async () => {\n authError.value = ''\n if (await authActions.signInWithGoogle()) {\n await onSuccess()\n }\n}\n\nconst signInWithGithub = async () => {\n authError.value = ''\n if (await authActions.signInWithGithub()) {\n await onSuccess()\n }\n}\n\nconst signInWithEmail = async (values: SignInData) => {\n authError.value = ''\n if (await authActions.signInWithEmail(values.email, values.password)) {\n await onSuccess()\n }\n}\n</script>\n"],"mappings":"2sCC0GM,EAAe,6GAbrB,MAAM,EAAY,EAAA,EACZ,EAAU,EAAA,IAAe,EAAU,OAAA,EAEnC,CAAE,EAAA,CAAA,EAAM,EAAA,EAMR,EAAO,EAMP,EAAA,EAAY,GAA2B,CACvC,EAAM,OACR,EAAK,SAAU,EAAM,MAAA,GAFnB,qkEElBN,KAAM,CAAE,EAAA,CAAA,EAAM,EAAA,EACR,EAAS,EAAA,EACT,EAAQ,EAAA,EACR,EAAc,EAAA,EACd,EAAkB,WAAW,gBAC7B,EAAY,EAAI,EAAA,EAChB,EAAa,EAAA,EAEb,EAAmB,EAAA,SAAY,CACnC,MAAM,EAAO,KAAK,CAAE,KAAM,eAAgB,MAAO,EAAM,MAAO,GADvC,oBAInB,EAAY,EAAA,SAAY,CAC5B,EAAW,IAAI,CACb,SAAU,UACV,QAAS,kBACT,KAAM,IACP,EAED,MAAM,EAAmB,EAAwB,EAAM,KAAA,EACvD,GAAI,EAAkB,CACpB,MAAM,EAAO,QAAQ,CAAA,EACrB,OAGF,MAAM,EAAO,KAAK,CAAE,KAAM,kBAAA,CAAoB,GAb9B,aAgBZ,EAAmB,EAAA,SAAY,CACnC,EAAU,MAAQ,GACd,MAAM,EAAY,iBAAA,GACpB,MAAM,EAAA,GAHe,oBAOnB,EAAmB,EAAA,SAAY,CACnC,EAAU,MAAQ,GACd,MAAM,EAAY,iBAAA,GACpB,MAAM,EAAA,GAHe,oBAOnB,EAAkB,EAAA,MAAO,GAAuB,CACpD,EAAU,MAAQ,GACd,MAAM,EAAY,gBAAgB,EAAO,MAAO,EAAO,QAAA,GACzD,MAAM,EAAA,GAHc"}
@@ -0,0 +1,3 @@
1
+ import"./vendor-primevue-DcMRXJN3.js";import{Jo as r,Va as e,Ya as u,_o as p,do as a,za as i}from"./vendor-other-DlQF6V2E.js";import"./api-Dwq2LQIW.js";import"./remoteConfig-CZcEXsZS.js";import"./colorUtil-CzxntCbX.js";import"./useErrorHandling-Cfa5N_7c.js";import"./Button-Do2I1OAA.js";import"./PanelTemplate-BJda9e5J.js";import{Nr as m}from"./dialogService-YG0RH337.js";import"./vendor-tiptap-_UqYL7N_.js";import"./vendor-xterm-BU_lcTPR.js";import"./vendor-three-BFcUNSs9.js";import"./markdownRendererUtil-DglHsU8t.js";import"./userStore-BAS9m9W6.js";import{t as n}from"./ComfyQueueButton-HjSIKZKO.js";import{t as s}from"./SubscribeToRun-4YolxBOL.js";var _=u({__name:"CloudRunButtonWrapper",setup(c){const{isActiveSubscription:t}=m(),o=i(()=>t.value?n:s);return(l,f)=>(a(),e(p(o.value),{key:r(t)?"queue":"subscribe"}))}}),D=_;export{D as default};
2
+
3
+ //# sourceMappingURL=CloudRunButtonWrapper-Cub7EB34.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CloudRunButtonWrapper-hQc4BNkX.js","names":[],"sources":["../../src/components/actionbar/ComfyRunButton/CloudRunButtonWrapper.vue","../../src/components/actionbar/ComfyRunButton/CloudRunButtonWrapper.vue"],"sourcesContent":["<template>\n <component\n :is=\"currentButton\"\n :key=\"isActiveSubscription ? 'queue' : 'subscribe'\"\n />\n</template>\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nimport ComfyQueueButton from '@/components/actionbar/ComfyRunButton/ComfyQueueButton.vue'\nimport SubscribeToRunButton from '@/platform/cloud/subscription/components/SubscribeToRun.vue'\nimport { useSubscription } from '@/platform/cloud/subscription/composables/useSubscription'\n\nconst { isActiveSubscription } = useSubscription()\n\nconst currentButton = computed(() =>\n isActiveSubscription.value ? ComfyQueueButton : SubscribeToRunButton\n)\n</script>\n","<template>\n <component\n :is=\"currentButton\"\n :key=\"isActiveSubscription ? 'queue' : 'subscribe'\"\n />\n</template>\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nimport ComfyQueueButton from '@/components/actionbar/ComfyRunButton/ComfyQueueButton.vue'\nimport SubscribeToRunButton from '@/platform/cloud/subscription/components/SubscribeToRun.vue'\nimport { useSubscription } from '@/platform/cloud/subscription/composables/useSubscription'\n\nconst { isActiveSubscription } = useSubscription()\n\nconst currentButton = computed(() =>\n isActiveSubscription.value ? ComfyQueueButton : SubscribeToRunButton\n)\n</script>\n"],"mappings":"8rBCaA,KAAM,CAAE,qBAAA,CAAA,EAAyB,EAAA,EAE3B,EAAgB,EAAA,IACpB,EAAqB,MAAQ,EAAmB,CAAA"}
1
+ {"version":3,"file":"CloudRunButtonWrapper-Cub7EB34.js","names":[],"sources":["../../src/components/actionbar/ComfyRunButton/CloudRunButtonWrapper.vue","../../src/components/actionbar/ComfyRunButton/CloudRunButtonWrapper.vue"],"sourcesContent":["<template>\n <component\n :is=\"currentButton\"\n :key=\"isActiveSubscription ? 'queue' : 'subscribe'\"\n />\n</template>\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nimport ComfyQueueButton from '@/components/actionbar/ComfyRunButton/ComfyQueueButton.vue'\nimport SubscribeToRunButton from '@/platform/cloud/subscription/components/SubscribeToRun.vue'\nimport { useSubscription } from '@/platform/cloud/subscription/composables/useSubscription'\n\nconst { isActiveSubscription } = useSubscription()\n\nconst currentButton = computed(() =>\n isActiveSubscription.value ? ComfyQueueButton : SubscribeToRunButton\n)\n</script>\n","<template>\n <component\n :is=\"currentButton\"\n :key=\"isActiveSubscription ? 'queue' : 'subscribe'\"\n />\n</template>\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nimport ComfyQueueButton from '@/components/actionbar/ComfyRunButton/ComfyQueueButton.vue'\nimport SubscribeToRunButton from '@/platform/cloud/subscription/components/SubscribeToRun.vue'\nimport { useSubscription } from '@/platform/cloud/subscription/composables/useSubscription'\n\nconst { isActiveSubscription } = useSubscription()\n\nconst currentButton = computed(() =>\n isActiveSubscription.value ? ComfyQueueButton : SubscribeToRunButton\n)\n</script>\n"],"mappings":"8rBCaA,KAAM,CAAE,qBAAA,CAAA,EAAyB,EAAA,EAE3B,EAAgB,EAAA,IACpB,EAAqB,MAAQ,EAAmB,CAAA"}
@@ -1,3 +1,3 @@
1
- var T=Object.defineProperty;var n=(f,e)=>T(f,"name",{value:e,configurable:!0});import{X as V,ut as y}from"./vendor-primevue-DcMRXJN3.js";import{$o as s,Ba as a,Do as u,Ha as q,Jo as t,Ka as i,Ua as B,Va as g,Ya as G,co as U,do as c,qa as _,zo as x}from"./vendor-other-DlQF6V2E.js";import{c as L,n as A,s as E}from"./vendor-vue-D9IUuwPJ.js";import{It as F,Lt as N}from"./api-CUAc7rDA.js";import"./remoteConfig-CZcEXsZS.js";import"./colorUtil-CzxntCbX.js";import"./useErrorHandling-CI8_F4yx.js";import{t as b}from"./Button-Do2I1OAA.js";import"./PanelTemplate-BjN5XNg2.js";import{Mr as P,c as R,ft as z,u as D}from"./dialogService-BZ1FmjZL.js";import{t as H}from"./_plugin-vue_export-helper-PHE0iSCb.js";import"./vendor-tiptap-_UqYL7N_.js";import"./vendor-xterm-BU_lcTPR.js";import"./vendor-three-BFcUNSs9.js";import"./markdownRendererUtil-DglHsU8t.js";import"./userStore-BkgQPjq6.js";import{t as M}from"./previousFullPath-DgVT6Vaj.js";var $={class:"flex h-full items-center justify-center p-8"},j={class:"max-w-screen p-2 lg:w-96"},J={class:"mb-8 flex flex-col gap-4"},K={class:"my-0 text-xl leading-normal font-medium"},O={class:"my-0 text-base"},X={class:"text-muted"},Y={class:"text-muted"},Q={class:"flex flex-col gap-6"},Z={class:"mt-5 text-sm text-gray-600"},tt={href:"https://www.comfy.org/terms-of-service",target:"_blank",class:"cursor-pointer text-blue-400 no-underline"},et={href:"/privacy-policy",target:"_blank",class:"cursor-pointer text-blue-400 no-underline"},at={class:"mt-2"},st={href:"https://support.comfy.org",class:"cursor-pointer text-blue-400 no-underline",target:"_blank",rel:"noopener noreferrer"},it=G({__name:"CloudSignupView",setup(f){const{t:e}=A(),p=L(),m=E(),d=P(),w=globalThis.isSecureContext,l=x(""),v=x(!1),C=F(),k=n(async()=>{await p.push({name:"cloud-login",query:m.query})},"navigateToLogin"),h=n(async()=>{C.add({severity:"success",summary:"Sign up Completed",life:2e3});const r=M(m.query);if(r){await p.replace(r);return}await p.push({path:"/",query:m.query})},"onSuccess"),S=n(async()=>{l.value="",await d.signInWithGoogle()&&await h()},"signInWithGoogle"),W=n(async()=>{l.value="",await d.signInWithGithub()&&await h()},"signInWithGithub"),I=n(async r=>{l.value="",await d.signUpWithEmail(r.email,r.password)&&await h()},"signUpWithEmail");return U(async()=>{N&&z()?.trackSignupOpened(),v.value=await D()}),(r,o)=>(c(),B("div",$,[a("div",j,[a("div",J,[a("h1",K,s(t(e)("auth.signup.title")),1),a("p",O,[a("span",X,s(t(e)("auth.signup.alreadyHaveAccount")),1),a("span",{class:"ml-1 cursor-pointer text-blue-500",onClick:k},s(t(e)("auth.signup.signIn")),1)])]),t(w)?q("",!0):(c(),g(t(y),{key:0,severity:"warn",class:"mb-4"},{default:u(()=>[i(s(t(e)("auth.login.insecureContextWarning")),1)]),_:1})),v.value?(c(),g(t(y),{key:1,severity:"warn",class:"mb-4"},{default:u(()=>[i(s(t(e)("auth.signup.regionRestrictionChina")),1)]),_:1})):(c(),g(R,{key:2,"auth-error":l.value,onSubmit:I},null,8,["auth-error"])),_(t(V),{align:"center",layout:"horizontal",class:"my-8"},{default:u(()=>[a("span",Y,s(t(e)("auth.login.orContinueWith")),1)]),_:1}),a("div",Q,[_(b,{type:"button",class:"h-10 bg-[#2d2e32]",variant:"secondary",onClick:S},{default:u(()=>[o[0]||(o[0]=a("i",{class:"pi pi-google mr-2"},null,-1)),i(" "+s(t(e)("auth.signup.signUpWithGoogle")),1)]),_:1}),_(b,{type:"button",class:"h-10 bg-[#2d2e32]",variant:"secondary",onClick:W},{default:u(()=>[o[1]||(o[1]=a("i",{class:"pi pi-github mr-2"},null,-1)),i(" "+s(t(e)("auth.signup.signUpWithGithub")),1)]),_:1})]),a("div",Z,[i(s(t(e)("auth.login.termsText"))+" ",1),a("a",tt,s(t(e)("auth.login.termsLink")),1),i(" "+s(t(e)("auth.login.andText"))+" ",1),a("a",et,s(t(e)("auth.login.privacyLink")),1),o[3]||(o[3]=i(". ")),a("p",at,[i(s(t(e)("cloudWaitlist_questionsText"))+" ",1),a("a",st,s(t(e)("cloudWaitlist_contactLink")),1),o[2]||(o[2]=i(". "))])])])]))}}),Ct=H(it,[["__scopeId","data-v-89909ff5"]]);export{Ct as default};
1
+ var T=Object.defineProperty;var n=(f,e)=>T(f,"name",{value:e,configurable:!0});import{X as V,ut as y}from"./vendor-primevue-DcMRXJN3.js";import{$o as s,Ba as a,Do as u,Ha as q,Jo as t,Ka as i,Ua as B,Va as g,Ya as G,co as U,do as c,qa as _,zo as x}from"./vendor-other-DlQF6V2E.js";import{c as L,n as A,s as E}from"./vendor-vue-D9IUuwPJ.js";import{It as F,Lt as N}from"./api-Dwq2LQIW.js";import"./remoteConfig-CZcEXsZS.js";import"./colorUtil-CzxntCbX.js";import"./useErrorHandling-Cfa5N_7c.js";import{t as b}from"./Button-Do2I1OAA.js";import"./PanelTemplate-BJda9e5J.js";import{Mr as P,c as R,ft as z,u as D}from"./dialogService-YG0RH337.js";import{t as H}from"./_plugin-vue_export-helper-PHE0iSCb.js";import"./vendor-tiptap-_UqYL7N_.js";import"./vendor-xterm-BU_lcTPR.js";import"./vendor-three-BFcUNSs9.js";import"./markdownRendererUtil-DglHsU8t.js";import"./userStore-BAS9m9W6.js";import{t as M}from"./previousFullPath-DgVT6Vaj.js";var $={class:"flex h-full items-center justify-center p-8"},j={class:"max-w-screen p-2 lg:w-96"},J={class:"mb-8 flex flex-col gap-4"},K={class:"my-0 text-xl leading-normal font-medium"},O={class:"my-0 text-base"},X={class:"text-muted"},Y={class:"text-muted"},Q={class:"flex flex-col gap-6"},Z={class:"mt-5 text-sm text-gray-600"},tt={href:"https://www.comfy.org/terms-of-service",target:"_blank",class:"cursor-pointer text-blue-400 no-underline"},et={href:"/privacy-policy",target:"_blank",class:"cursor-pointer text-blue-400 no-underline"},at={class:"mt-2"},st={href:"https://support.comfy.org",class:"cursor-pointer text-blue-400 no-underline",target:"_blank",rel:"noopener noreferrer"},it=G({__name:"CloudSignupView",setup(f){const{t:e}=A(),p=L(),m=E(),d=P(),w=globalThis.isSecureContext,l=x(""),v=x(!1),C=F(),k=n(async()=>{await p.push({name:"cloud-login",query:m.query})},"navigateToLogin"),h=n(async()=>{C.add({severity:"success",summary:"Sign up Completed",life:2e3});const r=M(m.query);if(r){await p.replace(r);return}await p.push({path:"/",query:m.query})},"onSuccess"),S=n(async()=>{l.value="",await d.signInWithGoogle()&&await h()},"signInWithGoogle"),W=n(async()=>{l.value="",await d.signInWithGithub()&&await h()},"signInWithGithub"),I=n(async r=>{l.value="",await d.signUpWithEmail(r.email,r.password)&&await h()},"signUpWithEmail");return U(async()=>{N&&z()?.trackSignupOpened(),v.value=await D()}),(r,o)=>(c(),B("div",$,[a("div",j,[a("div",J,[a("h1",K,s(t(e)("auth.signup.title")),1),a("p",O,[a("span",X,s(t(e)("auth.signup.alreadyHaveAccount")),1),a("span",{class:"ml-1 cursor-pointer text-blue-500",onClick:k},s(t(e)("auth.signup.signIn")),1)])]),t(w)?q("",!0):(c(),g(t(y),{key:0,severity:"warn",class:"mb-4"},{default:u(()=>[i(s(t(e)("auth.login.insecureContextWarning")),1)]),_:1})),v.value?(c(),g(t(y),{key:1,severity:"warn",class:"mb-4"},{default:u(()=>[i(s(t(e)("auth.signup.regionRestrictionChina")),1)]),_:1})):(c(),g(R,{key:2,"auth-error":l.value,onSubmit:I},null,8,["auth-error"])),_(t(V),{align:"center",layout:"horizontal",class:"my-8"},{default:u(()=>[a("span",Y,s(t(e)("auth.login.orContinueWith")),1)]),_:1}),a("div",Q,[_(b,{type:"button",class:"h-10 bg-[#2d2e32]",variant:"secondary",onClick:S},{default:u(()=>[o[0]||(o[0]=a("i",{class:"pi pi-google mr-2"},null,-1)),i(" "+s(t(e)("auth.signup.signUpWithGoogle")),1)]),_:1}),_(b,{type:"button",class:"h-10 bg-[#2d2e32]",variant:"secondary",onClick:W},{default:u(()=>[o[1]||(o[1]=a("i",{class:"pi pi-github mr-2"},null,-1)),i(" "+s(t(e)("auth.signup.signUpWithGithub")),1)]),_:1})]),a("div",Z,[i(s(t(e)("auth.login.termsText"))+" ",1),a("a",tt,s(t(e)("auth.login.termsLink")),1),i(" "+s(t(e)("auth.login.andText"))+" ",1),a("a",et,s(t(e)("auth.login.privacyLink")),1),o[3]||(o[3]=i(". ")),a("p",at,[i(s(t(e)("cloudWaitlist_questionsText"))+" ",1),a("a",st,s(t(e)("cloudWaitlist_contactLink")),1),o[2]||(o[2]=i(". "))])])])]))}}),Ct=H(it,[["__scopeId","data-v-89909ff5"]]);export{Ct as default};
2
2
 
3
- //# sourceMappingURL=CloudSignupView-vEDby5k3.js.map
3
+ //# sourceMappingURL=CloudSignupView-X2oiL3ZR.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CloudSignupView-vEDby5k3.js","names":[],"sources":["../../src/platform/cloud/onboarding/CloudSignupView.vue","../../src/platform/cloud/onboarding/CloudSignupView.vue"],"sourcesContent":["<template>\n <div class=\"flex h-full items-center justify-center p-8\">\n <div class=\"max-w-screen p-2 lg:w-96\">\n <!-- Header -->\n <div class=\"mb-8 flex flex-col gap-4\">\n <h1 class=\"my-0 text-xl leading-normal font-medium\">\n {{ t('auth.signup.title') }}\n </h1>\n <p class=\"my-0 text-base\">\n <span class=\"text-muted\">{{\n t('auth.signup.alreadyHaveAccount')\n }}</span>\n <span\n class=\"ml-1 cursor-pointer text-blue-500\"\n @click=\"navigateToLogin\"\n >{{ t('auth.signup.signIn') }}</span\n >\n </p>\n </div>\n\n <Message v-if=\"!isSecureContext\" severity=\"warn\" class=\"mb-4\">\n {{ t('auth.login.insecureContextWarning') }}\n </Message>\n\n <!-- Form -->\n <Message v-if=\"userIsInChina\" severity=\"warn\" class=\"mb-4\">\n {{ t('auth.signup.regionRestrictionChina') }}\n </Message>\n <SignUpForm v-else :auth-error=\"authError\" @submit=\"signUpWithEmail\" />\n\n <!-- Divider -->\n <Divider align=\"center\" layout=\"horizontal\" class=\"my-8\">\n <span class=\"text-muted\">{{ t('auth.login.orContinueWith') }}</span>\n </Divider>\n\n <!-- Social Login Buttons -->\n <div class=\"flex flex-col gap-6\">\n <Button\n type=\"button\"\n class=\"h-10 bg-[#2d2e32]\"\n variant=\"secondary\"\n @click=\"signInWithGoogle\"\n >\n <i class=\"pi pi-google mr-2\"></i>\n {{ t('auth.signup.signUpWithGoogle') }}\n </Button>\n\n <Button\n type=\"button\"\n class=\"h-10 bg-[#2d2e32]\"\n variant=\"secondary\"\n @click=\"signInWithGithub\"\n >\n <i class=\"pi pi-github mr-2\"></i>\n {{ t('auth.signup.signUpWithGithub') }}\n </Button>\n </div>\n\n <!-- Terms & Contact -->\n <div class=\"mt-5 text-sm text-gray-600\">\n {{ t('auth.login.termsText') }}\n <a\n href=\"https://www.comfy.org/terms-of-service\"\n target=\"_blank\"\n class=\"cursor-pointer text-blue-400 no-underline\"\n >\n {{ t('auth.login.termsLink') }}\n </a>\n {{ t('auth.login.andText') }}\n <a\n href=\"/privacy-policy\"\n target=\"_blank\"\n class=\"cursor-pointer text-blue-400 no-underline\"\n >\n {{ t('auth.login.privacyLink') }} </a\n >.\n <p class=\"mt-2\">\n {{ t('cloudWaitlist_questionsText') }}\n <a\n href=\"https://support.comfy.org\"\n class=\"cursor-pointer text-blue-400 no-underline\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {{ t('cloudWaitlist_contactLink') }}</a\n >.\n </p>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Divider from 'primevue/divider'\nimport Message from 'primevue/message'\nimport { onMounted, ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useRoute, useRouter } from 'vue-router'\n\nimport SignUpForm from '@/components/dialog/content/signin/SignUpForm.vue'\nimport Button from '@/components/ui/button/Button.vue'\nimport { useFirebaseAuthActions } from '@/composables/auth/useFirebaseAuthActions'\nimport { getSafePreviousFullPath } from '@/platform/cloud/onboarding/utils/previousFullPath'\nimport { isCloud } from '@/platform/distribution/types'\nimport { useTelemetry } from '@/platform/telemetry'\nimport { useToastStore } from '@/platform/updates/common/toastStore'\nimport type { SignUpData } from '@/schemas/signInSchema'\nimport { isInChina } from '@/utils/networkUtil'\n\nconst { t } = useI18n()\nconst router = useRouter()\nconst route = useRoute()\nconst authActions = useFirebaseAuthActions()\nconst isSecureContext = globalThis.isSecureContext\nconst authError = ref('')\nconst userIsInChina = ref(false)\nconst toastStore = useToastStore()\n\nconst navigateToLogin = async () => {\n await router.push({ name: 'cloud-login', query: route.query })\n}\n\nconst onSuccess = async () => {\n toastStore.add({\n severity: 'success',\n summary: 'Sign up Completed',\n life: 2000\n })\n\n const previousFullPath = getSafePreviousFullPath(route.query)\n if (previousFullPath) {\n await router.replace(previousFullPath)\n return\n }\n\n // Default redirect to the normal onboarding flow\n await router.push({ path: '/', query: route.query })\n}\n\nconst signInWithGoogle = async () => {\n authError.value = ''\n if (await authActions.signInWithGoogle()) {\n await onSuccess()\n }\n}\n\nconst signInWithGithub = async () => {\n authError.value = ''\n if (await authActions.signInWithGithub()) {\n await onSuccess()\n }\n}\n\nconst signUpWithEmail = async (values: SignUpData) => {\n authError.value = ''\n if (await authActions.signUpWithEmail(values.email, values.password)) {\n await onSuccess()\n }\n}\n\nonMounted(async () => {\n // Track signup screen opened\n if (isCloud) {\n useTelemetry()?.trackSignupOpened()\n }\n\n userIsInChina.value = await isInChina()\n})\n</script>\n<style scoped>\n:deep(.p-inputtext) {\n border: none !important;\n box-shadow: none !important;\n background: #2d2e32 !important;\n}\n\n:deep(.p-password input) {\n border: none !important;\n box-shadow: none !important;\n}\n:deep(.p-checkbox-checked .p-checkbox-box) {\n background-color: #f0ff41 !important;\n border-color: #f0ff41 !important;\n}\n</style>\n","<template>\n <div class=\"flex h-full items-center justify-center p-8\">\n <div class=\"max-w-screen p-2 lg:w-96\">\n <!-- Header -->\n <div class=\"mb-8 flex flex-col gap-4\">\n <h1 class=\"my-0 text-xl leading-normal font-medium\">\n {{ t('auth.signup.title') }}\n </h1>\n <p class=\"my-0 text-base\">\n <span class=\"text-muted\">{{\n t('auth.signup.alreadyHaveAccount')\n }}</span>\n <span\n class=\"ml-1 cursor-pointer text-blue-500\"\n @click=\"navigateToLogin\"\n >{{ t('auth.signup.signIn') }}</span\n >\n </p>\n </div>\n\n <Message v-if=\"!isSecureContext\" severity=\"warn\" class=\"mb-4\">\n {{ t('auth.login.insecureContextWarning') }}\n </Message>\n\n <!-- Form -->\n <Message v-if=\"userIsInChina\" severity=\"warn\" class=\"mb-4\">\n {{ t('auth.signup.regionRestrictionChina') }}\n </Message>\n <SignUpForm v-else :auth-error=\"authError\" @submit=\"signUpWithEmail\" />\n\n <!-- Divider -->\n <Divider align=\"center\" layout=\"horizontal\" class=\"my-8\">\n <span class=\"text-muted\">{{ t('auth.login.orContinueWith') }}</span>\n </Divider>\n\n <!-- Social Login Buttons -->\n <div class=\"flex flex-col gap-6\">\n <Button\n type=\"button\"\n class=\"h-10 bg-[#2d2e32]\"\n variant=\"secondary\"\n @click=\"signInWithGoogle\"\n >\n <i class=\"pi pi-google mr-2\"></i>\n {{ t('auth.signup.signUpWithGoogle') }}\n </Button>\n\n <Button\n type=\"button\"\n class=\"h-10 bg-[#2d2e32]\"\n variant=\"secondary\"\n @click=\"signInWithGithub\"\n >\n <i class=\"pi pi-github mr-2\"></i>\n {{ t('auth.signup.signUpWithGithub') }}\n </Button>\n </div>\n\n <!-- Terms & Contact -->\n <div class=\"mt-5 text-sm text-gray-600\">\n {{ t('auth.login.termsText') }}\n <a\n href=\"https://www.comfy.org/terms-of-service\"\n target=\"_blank\"\n class=\"cursor-pointer text-blue-400 no-underline\"\n >\n {{ t('auth.login.termsLink') }}\n </a>\n {{ t('auth.login.andText') }}\n <a\n href=\"/privacy-policy\"\n target=\"_blank\"\n class=\"cursor-pointer text-blue-400 no-underline\"\n >\n {{ t('auth.login.privacyLink') }} </a\n >.\n <p class=\"mt-2\">\n {{ t('cloudWaitlist_questionsText') }}\n <a\n href=\"https://support.comfy.org\"\n class=\"cursor-pointer text-blue-400 no-underline\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {{ t('cloudWaitlist_contactLink') }}</a\n >.\n </p>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Divider from 'primevue/divider'\nimport Message from 'primevue/message'\nimport { onMounted, ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useRoute, useRouter } from 'vue-router'\n\nimport SignUpForm from '@/components/dialog/content/signin/SignUpForm.vue'\nimport Button from '@/components/ui/button/Button.vue'\nimport { useFirebaseAuthActions } from '@/composables/auth/useFirebaseAuthActions'\nimport { getSafePreviousFullPath } from '@/platform/cloud/onboarding/utils/previousFullPath'\nimport { isCloud } from '@/platform/distribution/types'\nimport { useTelemetry } from '@/platform/telemetry'\nimport { useToastStore } from '@/platform/updates/common/toastStore'\nimport type { SignUpData } from '@/schemas/signInSchema'\nimport { isInChina } from '@/utils/networkUtil'\n\nconst { t } = useI18n()\nconst router = useRouter()\nconst route = useRoute()\nconst authActions = useFirebaseAuthActions()\nconst isSecureContext = globalThis.isSecureContext\nconst authError = ref('')\nconst userIsInChina = ref(false)\nconst toastStore = useToastStore()\n\nconst navigateToLogin = async () => {\n await router.push({ name: 'cloud-login', query: route.query })\n}\n\nconst onSuccess = async () => {\n toastStore.add({\n severity: 'success',\n summary: 'Sign up Completed',\n life: 2000\n })\n\n const previousFullPath = getSafePreviousFullPath(route.query)\n if (previousFullPath) {\n await router.replace(previousFullPath)\n return\n }\n\n // Default redirect to the normal onboarding flow\n await router.push({ path: '/', query: route.query })\n}\n\nconst signInWithGoogle = async () => {\n authError.value = ''\n if (await authActions.signInWithGoogle()) {\n await onSuccess()\n }\n}\n\nconst signInWithGithub = async () => {\n authError.value = ''\n if (await authActions.signInWithGithub()) {\n await onSuccess()\n }\n}\n\nconst signUpWithEmail = async (values: SignUpData) => {\n authError.value = ''\n if (await authActions.signUpWithEmail(values.email, values.password)) {\n await onSuccess()\n }\n}\n\nonMounted(async () => {\n // Track signup screen opened\n if (isCloud) {\n useTelemetry()?.trackSignupOpened()\n }\n\n userIsInChina.value = await isInChina()\n})\n</script>\n<style scoped>\n:deep(.p-inputtext) {\n border: none !important;\n box-shadow: none !important;\n background: #2d2e32 !important;\n}\n\n:deep(.p-password input) {\n border: none !important;\n box-shadow: none !important;\n}\n:deep(.p-checkbox-checked .p-checkbox-box) {\n background-color: #f0ff41 !important;\n border-color: #f0ff41 !important;\n}\n</style>\n"],"mappings":"8nDC6GA,KAAM,CAAE,EAAA,CAAA,EAAM,EAAA,EACR,EAAS,EAAA,EACT,EAAQ,EAAA,EACR,EAAc,EAAA,EACd,EAAkB,WAAW,gBAC7B,EAAY,EAAI,EAAA,EAChB,EAAgB,EAAI,EAAA,EACpB,EAAa,EAAA,EAEb,EAAkB,EAAA,SAAY,CAClC,MAAM,EAAO,KAAK,CAAE,KAAM,cAAe,MAAO,EAAM,MAAO,GADvC,mBAIlB,EAAY,EAAA,SAAY,CAC5B,EAAW,IAAI,CACb,SAAU,UACV,QAAS,oBACT,KAAM,IACP,EAED,MAAM,EAAmB,EAAwB,EAAM,KAAA,EACvD,GAAI,EAAkB,CACpB,MAAM,EAAO,QAAQ,CAAA,EACrB,OAIF,MAAM,EAAO,KAAK,CAAE,KAAM,IAAK,MAAO,EAAM,MAAO,GAdnC,aAiBZ,EAAmB,EAAA,SAAY,CACnC,EAAU,MAAQ,GACd,MAAM,EAAY,iBAAA,GACpB,MAAM,EAAA,GAHe,oBAOnB,EAAmB,EAAA,SAAY,CACnC,EAAU,MAAQ,GACd,MAAM,EAAY,iBAAA,GACpB,MAAM,EAAA,GAHe,oBAOnB,EAAkB,EAAA,MAAO,GAAuB,CACpD,EAAU,MAAQ,GACd,MAAM,EAAY,gBAAgB,EAAO,MAAO,EAAO,QAAA,GACzD,MAAM,EAAA,GAHc,mBAOxB,OAAA,EAAU,SAAY,CAEhB,GACF,EAAA,GAAgB,kBAAA,EAGlB,EAAc,MAAQ,MAAM,EAAA"}
1
+ {"version":3,"file":"CloudSignupView-X2oiL3ZR.js","names":[],"sources":["../../src/platform/cloud/onboarding/CloudSignupView.vue","../../src/platform/cloud/onboarding/CloudSignupView.vue"],"sourcesContent":["<template>\n <div class=\"flex h-full items-center justify-center p-8\">\n <div class=\"max-w-screen p-2 lg:w-96\">\n <!-- Header -->\n <div class=\"mb-8 flex flex-col gap-4\">\n <h1 class=\"my-0 text-xl leading-normal font-medium\">\n {{ t('auth.signup.title') }}\n </h1>\n <p class=\"my-0 text-base\">\n <span class=\"text-muted\">{{\n t('auth.signup.alreadyHaveAccount')\n }}</span>\n <span\n class=\"ml-1 cursor-pointer text-blue-500\"\n @click=\"navigateToLogin\"\n >{{ t('auth.signup.signIn') }}</span\n >\n </p>\n </div>\n\n <Message v-if=\"!isSecureContext\" severity=\"warn\" class=\"mb-4\">\n {{ t('auth.login.insecureContextWarning') }}\n </Message>\n\n <!-- Form -->\n <Message v-if=\"userIsInChina\" severity=\"warn\" class=\"mb-4\">\n {{ t('auth.signup.regionRestrictionChina') }}\n </Message>\n <SignUpForm v-else :auth-error=\"authError\" @submit=\"signUpWithEmail\" />\n\n <!-- Divider -->\n <Divider align=\"center\" layout=\"horizontal\" class=\"my-8\">\n <span class=\"text-muted\">{{ t('auth.login.orContinueWith') }}</span>\n </Divider>\n\n <!-- Social Login Buttons -->\n <div class=\"flex flex-col gap-6\">\n <Button\n type=\"button\"\n class=\"h-10 bg-[#2d2e32]\"\n variant=\"secondary\"\n @click=\"signInWithGoogle\"\n >\n <i class=\"pi pi-google mr-2\"></i>\n {{ t('auth.signup.signUpWithGoogle') }}\n </Button>\n\n <Button\n type=\"button\"\n class=\"h-10 bg-[#2d2e32]\"\n variant=\"secondary\"\n @click=\"signInWithGithub\"\n >\n <i class=\"pi pi-github mr-2\"></i>\n {{ t('auth.signup.signUpWithGithub') }}\n </Button>\n </div>\n\n <!-- Terms & Contact -->\n <div class=\"mt-5 text-sm text-gray-600\">\n {{ t('auth.login.termsText') }}\n <a\n href=\"https://www.comfy.org/terms-of-service\"\n target=\"_blank\"\n class=\"cursor-pointer text-blue-400 no-underline\"\n >\n {{ t('auth.login.termsLink') }}\n </a>\n {{ t('auth.login.andText') }}\n <a\n href=\"/privacy-policy\"\n target=\"_blank\"\n class=\"cursor-pointer text-blue-400 no-underline\"\n >\n {{ t('auth.login.privacyLink') }} </a\n >.\n <p class=\"mt-2\">\n {{ t('cloudWaitlist_questionsText') }}\n <a\n href=\"https://support.comfy.org\"\n class=\"cursor-pointer text-blue-400 no-underline\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {{ t('cloudWaitlist_contactLink') }}</a\n >.\n </p>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Divider from 'primevue/divider'\nimport Message from 'primevue/message'\nimport { onMounted, ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useRoute, useRouter } from 'vue-router'\n\nimport SignUpForm from '@/components/dialog/content/signin/SignUpForm.vue'\nimport Button from '@/components/ui/button/Button.vue'\nimport { useFirebaseAuthActions } from '@/composables/auth/useFirebaseAuthActions'\nimport { getSafePreviousFullPath } from '@/platform/cloud/onboarding/utils/previousFullPath'\nimport { isCloud } from '@/platform/distribution/types'\nimport { useTelemetry } from '@/platform/telemetry'\nimport { useToastStore } from '@/platform/updates/common/toastStore'\nimport type { SignUpData } from '@/schemas/signInSchema'\nimport { isInChina } from '@/utils/networkUtil'\n\nconst { t } = useI18n()\nconst router = useRouter()\nconst route = useRoute()\nconst authActions = useFirebaseAuthActions()\nconst isSecureContext = globalThis.isSecureContext\nconst authError = ref('')\nconst userIsInChina = ref(false)\nconst toastStore = useToastStore()\n\nconst navigateToLogin = async () => {\n await router.push({ name: 'cloud-login', query: route.query })\n}\n\nconst onSuccess = async () => {\n toastStore.add({\n severity: 'success',\n summary: 'Sign up Completed',\n life: 2000\n })\n\n const previousFullPath = getSafePreviousFullPath(route.query)\n if (previousFullPath) {\n await router.replace(previousFullPath)\n return\n }\n\n // Default redirect to the normal onboarding flow\n await router.push({ path: '/', query: route.query })\n}\n\nconst signInWithGoogle = async () => {\n authError.value = ''\n if (await authActions.signInWithGoogle()) {\n await onSuccess()\n }\n}\n\nconst signInWithGithub = async () => {\n authError.value = ''\n if (await authActions.signInWithGithub()) {\n await onSuccess()\n }\n}\n\nconst signUpWithEmail = async (values: SignUpData) => {\n authError.value = ''\n if (await authActions.signUpWithEmail(values.email, values.password)) {\n await onSuccess()\n }\n}\n\nonMounted(async () => {\n // Track signup screen opened\n if (isCloud) {\n useTelemetry()?.trackSignupOpened()\n }\n\n userIsInChina.value = await isInChina()\n})\n</script>\n<style scoped>\n:deep(.p-inputtext) {\n border: none !important;\n box-shadow: none !important;\n background: #2d2e32 !important;\n}\n\n:deep(.p-password input) {\n border: none !important;\n box-shadow: none !important;\n}\n:deep(.p-checkbox-checked .p-checkbox-box) {\n background-color: #f0ff41 !important;\n border-color: #f0ff41 !important;\n}\n</style>\n","<template>\n <div class=\"flex h-full items-center justify-center p-8\">\n <div class=\"max-w-screen p-2 lg:w-96\">\n <!-- Header -->\n <div class=\"mb-8 flex flex-col gap-4\">\n <h1 class=\"my-0 text-xl leading-normal font-medium\">\n {{ t('auth.signup.title') }}\n </h1>\n <p class=\"my-0 text-base\">\n <span class=\"text-muted\">{{\n t('auth.signup.alreadyHaveAccount')\n }}</span>\n <span\n class=\"ml-1 cursor-pointer text-blue-500\"\n @click=\"navigateToLogin\"\n >{{ t('auth.signup.signIn') }}</span\n >\n </p>\n </div>\n\n <Message v-if=\"!isSecureContext\" severity=\"warn\" class=\"mb-4\">\n {{ t('auth.login.insecureContextWarning') }}\n </Message>\n\n <!-- Form -->\n <Message v-if=\"userIsInChina\" severity=\"warn\" class=\"mb-4\">\n {{ t('auth.signup.regionRestrictionChina') }}\n </Message>\n <SignUpForm v-else :auth-error=\"authError\" @submit=\"signUpWithEmail\" />\n\n <!-- Divider -->\n <Divider align=\"center\" layout=\"horizontal\" class=\"my-8\">\n <span class=\"text-muted\">{{ t('auth.login.orContinueWith') }}</span>\n </Divider>\n\n <!-- Social Login Buttons -->\n <div class=\"flex flex-col gap-6\">\n <Button\n type=\"button\"\n class=\"h-10 bg-[#2d2e32]\"\n variant=\"secondary\"\n @click=\"signInWithGoogle\"\n >\n <i class=\"pi pi-google mr-2\"></i>\n {{ t('auth.signup.signUpWithGoogle') }}\n </Button>\n\n <Button\n type=\"button\"\n class=\"h-10 bg-[#2d2e32]\"\n variant=\"secondary\"\n @click=\"signInWithGithub\"\n >\n <i class=\"pi pi-github mr-2\"></i>\n {{ t('auth.signup.signUpWithGithub') }}\n </Button>\n </div>\n\n <!-- Terms & Contact -->\n <div class=\"mt-5 text-sm text-gray-600\">\n {{ t('auth.login.termsText') }}\n <a\n href=\"https://www.comfy.org/terms-of-service\"\n target=\"_blank\"\n class=\"cursor-pointer text-blue-400 no-underline\"\n >\n {{ t('auth.login.termsLink') }}\n </a>\n {{ t('auth.login.andText') }}\n <a\n href=\"/privacy-policy\"\n target=\"_blank\"\n class=\"cursor-pointer text-blue-400 no-underline\"\n >\n {{ t('auth.login.privacyLink') }} </a\n >.\n <p class=\"mt-2\">\n {{ t('cloudWaitlist_questionsText') }}\n <a\n href=\"https://support.comfy.org\"\n class=\"cursor-pointer text-blue-400 no-underline\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {{ t('cloudWaitlist_contactLink') }}</a\n >.\n </p>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Divider from 'primevue/divider'\nimport Message from 'primevue/message'\nimport { onMounted, ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useRoute, useRouter } from 'vue-router'\n\nimport SignUpForm from '@/components/dialog/content/signin/SignUpForm.vue'\nimport Button from '@/components/ui/button/Button.vue'\nimport { useFirebaseAuthActions } from '@/composables/auth/useFirebaseAuthActions'\nimport { getSafePreviousFullPath } from '@/platform/cloud/onboarding/utils/previousFullPath'\nimport { isCloud } from '@/platform/distribution/types'\nimport { useTelemetry } from '@/platform/telemetry'\nimport { useToastStore } from '@/platform/updates/common/toastStore'\nimport type { SignUpData } from '@/schemas/signInSchema'\nimport { isInChina } from '@/utils/networkUtil'\n\nconst { t } = useI18n()\nconst router = useRouter()\nconst route = useRoute()\nconst authActions = useFirebaseAuthActions()\nconst isSecureContext = globalThis.isSecureContext\nconst authError = ref('')\nconst userIsInChina = ref(false)\nconst toastStore = useToastStore()\n\nconst navigateToLogin = async () => {\n await router.push({ name: 'cloud-login', query: route.query })\n}\n\nconst onSuccess = async () => {\n toastStore.add({\n severity: 'success',\n summary: 'Sign up Completed',\n life: 2000\n })\n\n const previousFullPath = getSafePreviousFullPath(route.query)\n if (previousFullPath) {\n await router.replace(previousFullPath)\n return\n }\n\n // Default redirect to the normal onboarding flow\n await router.push({ path: '/', query: route.query })\n}\n\nconst signInWithGoogle = async () => {\n authError.value = ''\n if (await authActions.signInWithGoogle()) {\n await onSuccess()\n }\n}\n\nconst signInWithGithub = async () => {\n authError.value = ''\n if (await authActions.signInWithGithub()) {\n await onSuccess()\n }\n}\n\nconst signUpWithEmail = async (values: SignUpData) => {\n authError.value = ''\n if (await authActions.signUpWithEmail(values.email, values.password)) {\n await onSuccess()\n }\n}\n\nonMounted(async () => {\n // Track signup screen opened\n if (isCloud) {\n useTelemetry()?.trackSignupOpened()\n }\n\n userIsInChina.value = await isInChina()\n})\n</script>\n<style scoped>\n:deep(.p-inputtext) {\n border: none !important;\n box-shadow: none !important;\n background: #2d2e32 !important;\n}\n\n:deep(.p-password input) {\n border: none !important;\n box-shadow: none !important;\n}\n:deep(.p-checkbox-checked .p-checkbox-box) {\n background-color: #f0ff41 !important;\n border-color: #f0ff41 !important;\n}\n</style>\n"],"mappings":"8nDC6GA,KAAM,CAAE,EAAA,CAAA,EAAM,EAAA,EACR,EAAS,EAAA,EACT,EAAQ,EAAA,EACR,EAAc,EAAA,EACd,EAAkB,WAAW,gBAC7B,EAAY,EAAI,EAAA,EAChB,EAAgB,EAAI,EAAA,EACpB,EAAa,EAAA,EAEb,EAAkB,EAAA,SAAY,CAClC,MAAM,EAAO,KAAK,CAAE,KAAM,cAAe,MAAO,EAAM,MAAO,GADvC,mBAIlB,EAAY,EAAA,SAAY,CAC5B,EAAW,IAAI,CACb,SAAU,UACV,QAAS,oBACT,KAAM,IACP,EAED,MAAM,EAAmB,EAAwB,EAAM,KAAA,EACvD,GAAI,EAAkB,CACpB,MAAM,EAAO,QAAQ,CAAA,EACrB,OAIF,MAAM,EAAO,KAAK,CAAE,KAAM,IAAK,MAAO,EAAM,MAAO,GAdnC,aAiBZ,EAAmB,EAAA,SAAY,CACnC,EAAU,MAAQ,GACd,MAAM,EAAY,iBAAA,GACpB,MAAM,EAAA,GAHe,oBAOnB,EAAmB,EAAA,SAAY,CACnC,EAAU,MAAQ,GACd,MAAM,EAAY,iBAAA,GACpB,MAAM,EAAA,GAHe,oBAOnB,EAAkB,EAAA,MAAO,GAAuB,CACpD,EAAU,MAAQ,GACd,MAAM,EAAY,gBAAgB,EAAO,MAAO,EAAO,QAAA,GACzD,MAAM,EAAA,GAHc,mBAOxB,OAAA,EAAU,SAAY,CAEhB,GACF,EAAA,GAAgB,kBAAA,EAGlB,EAAc,MAAQ,MAAM,EAAA"}
@@ -1,3 +1,3 @@
1
- import{$ as k,Z as A}from"./vendor-primevue-DcMRXJN3.js";import{$o as C,Ba as d,Ha as l,Ji as x,Jo as i,Ua as f,Va as y,Ya as B,co as S,do as n,za as R,zo as V}from"./vendor-other-DlQF6V2E.js";import{c as E,n as N,s as T}from"./vendor-vue-D9IUuwPJ.js";import"./api-CUAc7rDA.js";import"./remoteConfig-CZcEXsZS.js";import"./colorUtil-CzxntCbX.js";import{t as z}from"./useErrorHandling-CI8_F4yx.js";import"./Button-Do2I1OAA.js";import"./PanelTemplate-BjN5XNg2.js";import{Mr as H,Nr as K,a as P}from"./dialogService-BZ1FmjZL.js";import"./vendor-tiptap-_UqYL7N_.js";import"./vendor-xterm-BU_lcTPR.js";import"./vendor-three-BFcUNSs9.js";import"./markdownRendererUtil-DglHsU8t.js";import"./userStore-BkgQPjq6.js";import{t as $}from"./subscriptionCheckoutUtil-B_OvUP2T.js";var q={class:"flex h-full w-full items-center justify-center bg-comfy-menu-secondary-bg"},D={class:"flex flex-col items-center gap-4"},I=["alt"],J={key:0,class:"font-inter text-base font-normal leading-normal text-base-foreground"},M=B({__name:"CloudSubscriptionRedirectView",setup(O){const{t:e}=N(),u=T(),c=E(),{reportError:_,accessBillingPortal:b}=H(),{wrapWithErrorHandlingAsync:v}=z(),{isActiveSubscription:g,isInitialized:p}=K(),r=V(null),h=R(()=>r.value?{standard:e("subscription.tiers.standard.name"),creator:e("subscription.tiers.creator.name"),pro:e("subscription.tiers.pro.name"),founder:e("subscription.tiers.founder.name")}[r.value]:""),w=v(async()=>{const t=u.query.tier,a=u.query.cycle;let o=null,s="monthly";if(typeof t=="string"?o=t:Array.isArray(t)&&t[0]&&(o=t[0]),typeof a=="string"?s=a:Array.isArray(a)&&a[0]&&(s=a[0]),!o){await c.push("/");return}if(!["standard","creator","pro","founder"].includes(o)){await c.push("/");return}const m=o;r.value=m,(!s||!["monthly","yearly"].includes(s))&&(s="monthly"),p.value||await x(p).toBe(!0),g.value?await b(void 0,!1):await $(m,s,!1)},_);return S(()=>{w()}),(t,a)=>(n(),f("div",q,[d("div",D,[d("img",{src:P,alt:i(e)("g.comfyOrgLogoAlt"),class:"h-16 w-16"},null,8,I),r.value?(n(),f("p",J,C(i(e)("subscription.subscribeTo",{plan:h.value})),1)):l("",!0),r.value?(n(),y(i(A),{key:1,class:"h-8 w-8","stroke-width":"4"})):l("",!0),r.value?(n(),y(i(k),{key:2,as:"a",href:"/",link:"",label:i(e)("cloudOnboarding.skipToCloudApp")},null,8,["label"])):l("",!0)])]))}}),ie=M;export{ie as default};
1
+ import{$ as k,Z as A}from"./vendor-primevue-DcMRXJN3.js";import{$o as C,Ba as d,Ha as l,Ji as x,Jo as i,Ua as f,Va as y,Ya as B,co as S,do as n,za as R,zo as V}from"./vendor-other-DlQF6V2E.js";import{c as E,n as N,s as T}from"./vendor-vue-D9IUuwPJ.js";import"./api-Dwq2LQIW.js";import"./remoteConfig-CZcEXsZS.js";import"./colorUtil-CzxntCbX.js";import{t as z}from"./useErrorHandling-Cfa5N_7c.js";import"./Button-Do2I1OAA.js";import"./PanelTemplate-BJda9e5J.js";import{Mr as H,Nr as K,a as P}from"./dialogService-YG0RH337.js";import"./vendor-tiptap-_UqYL7N_.js";import"./vendor-xterm-BU_lcTPR.js";import"./vendor-three-BFcUNSs9.js";import"./markdownRendererUtil-DglHsU8t.js";import"./userStore-BAS9m9W6.js";import{t as $}from"./subscriptionCheckoutUtil-DswSOreM.js";var q={class:"flex h-full w-full items-center justify-center bg-comfy-menu-secondary-bg"},D={class:"flex flex-col items-center gap-4"},I=["alt"],J={key:0,class:"font-inter text-base font-normal leading-normal text-base-foreground"},M=B({__name:"CloudSubscriptionRedirectView",setup(O){const{t:e}=N(),u=T(),c=E(),{reportError:_,accessBillingPortal:b}=H(),{wrapWithErrorHandlingAsync:v}=z(),{isActiveSubscription:g,isInitialized:p}=K(),r=V(null),h=R(()=>r.value?{standard:e("subscription.tiers.standard.name"),creator:e("subscription.tiers.creator.name"),pro:e("subscription.tiers.pro.name"),founder:e("subscription.tiers.founder.name")}[r.value]:""),w=v(async()=>{const t=u.query.tier,a=u.query.cycle;let o=null,s="monthly";if(typeof t=="string"?o=t:Array.isArray(t)&&t[0]&&(o=t[0]),typeof a=="string"?s=a:Array.isArray(a)&&a[0]&&(s=a[0]),!o){await c.push("/");return}if(!["standard","creator","pro","founder"].includes(o)){await c.push("/");return}const m=o;r.value=m,(!s||!["monthly","yearly"].includes(s))&&(s="monthly"),p.value||await x(p).toBe(!0),g.value?await b(void 0,!1):await $(m,s,!1)},_);return S(()=>{w()}),(t,a)=>(n(),f("div",q,[d("div",D,[d("img",{src:P,alt:i(e)("g.comfyOrgLogoAlt"),class:"h-16 w-16"},null,8,I),r.value?(n(),f("p",J,C(i(e)("subscription.subscribeTo",{plan:h.value})),1)):l("",!0),r.value?(n(),y(i(A),{key:1,class:"h-8 w-8","stroke-width":"4"})):l("",!0),r.value?(n(),y(i(k),{key:2,as:"a",href:"/",link:"",label:i(e)("cloudOnboarding.skipToCloudApp")},null,8,["label"])):l("",!0)])]))}}),ie=M;export{ie as default};
2
2
 
3
- //# sourceMappingURL=CloudSubscriptionRedirectView-DPyO745g.js.map
3
+ //# sourceMappingURL=CloudSubscriptionRedirectView-UjNv8emo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CloudSubscriptionRedirectView-DPyO745g.js","names":[],"sources":["../../src/platform/cloud/onboarding/CloudSubscriptionRedirectView.vue","../../src/platform/cloud/onboarding/CloudSubscriptionRedirectView.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { until } from '@vueuse/core'\nimport Button from 'primevue/button'\nimport ProgressSpinner from 'primevue/progressspinner'\nimport { computed, onMounted, ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useRoute, useRouter } from 'vue-router'\n\nimport { useFirebaseAuthActions } from '@/composables/auth/useFirebaseAuthActions'\nimport { useErrorHandling } from '@/composables/useErrorHandling'\nimport { useSubscription } from '@/platform/cloud/subscription/composables/useSubscription'\nimport type { TierKey } from '@/platform/cloud/subscription/constants/tierPricing'\nimport { performSubscriptionCheckout } from '@/platform/cloud/subscription/utils/subscriptionCheckoutUtil'\n\nimport type { BillingCycle } from '../subscription/utils/subscriptionTierRank'\n\nconst { t } = useI18n()\nconst route = useRoute()\nconst router = useRouter()\nconst { reportError, accessBillingPortal } = useFirebaseAuthActions()\nconst { wrapWithErrorHandlingAsync } = useErrorHandling()\n\nconst { isActiveSubscription, isInitialized } = useSubscription()\n\nconst selectedTierKey = ref<TierKey | null>(null)\n\nconst tierDisplayName = computed(() => {\n if (!selectedTierKey.value) return ''\n const names: Record<TierKey, string> = {\n standard: t('subscription.tiers.standard.name'),\n creator: t('subscription.tiers.creator.name'),\n pro: t('subscription.tiers.pro.name'),\n founder: t('subscription.tiers.founder.name')\n }\n return names[selectedTierKey.value]\n})\n\nconst runRedirect = wrapWithErrorHandlingAsync(async () => {\n const rawType = route.query.tier\n const rawCycle = route.query.cycle\n let tierKeyParam: string | null = null\n let cycleParam = 'monthly'\n\n if (typeof rawType === 'string') {\n tierKeyParam = rawType\n } else if (Array.isArray(rawType) && rawType[0]) {\n tierKeyParam = rawType[0]\n }\n\n if (typeof rawCycle === 'string') {\n cycleParam = rawCycle\n } else if (Array.isArray(rawCycle) && rawCycle[0]) {\n cycleParam = rawCycle[0]\n }\n\n if (!tierKeyParam) {\n await router.push('/')\n return\n }\n\n const validTierKeys: TierKey[] = ['standard', 'creator', 'pro', 'founder']\n if (!(validTierKeys as string[]).includes(tierKeyParam)) {\n await router.push('/')\n return\n }\n\n const tierKey = tierKeyParam as TierKey\n\n selectedTierKey.value = tierKey\n\n const validCycles: BillingCycle[] = ['monthly', 'yearly']\n if (!cycleParam || !(validCycles as string[]).includes(cycleParam)) {\n cycleParam = 'monthly'\n }\n\n if (!isInitialized.value) {\n await until(isInitialized).toBe(true)\n }\n\n if (isActiveSubscription.value) {\n await accessBillingPortal(undefined, false)\n } else {\n await performSubscriptionCheckout(\n tierKey,\n cycleParam as BillingCycle,\n false\n )\n }\n}, reportError)\n\nonMounted(() => {\n void runRedirect()\n})\n</script>\n\n<template>\n <div\n class=\"flex h-full w-full items-center justify-center bg-comfy-menu-secondary-bg\"\n >\n <div class=\"flex flex-col items-center gap-4\">\n <img\n src=\"/assets/images/comfy-logo-single.svg\"\n :alt=\"t('g.comfyOrgLogoAlt')\"\n class=\"h-16 w-16\"\n />\n <p\n v-if=\"selectedTierKey\"\n class=\"font-inter text-base font-normal leading-normal text-base-foreground\"\n >\n {{\n t('subscription.subscribeTo', {\n plan: tierDisplayName\n })\n }}\n </p>\n <ProgressSpinner\n v-if=\"selectedTierKey\"\n class=\"h-8 w-8\"\n stroke-width=\"4\"\n />\n <Button\n v-if=\"selectedTierKey\"\n as=\"a\"\n href=\"/\"\n link\n :label=\"t('cloudOnboarding.skipToCloudApp')\"\n />\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { until } from '@vueuse/core'\nimport Button from 'primevue/button'\nimport ProgressSpinner from 'primevue/progressspinner'\nimport { computed, onMounted, ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useRoute, useRouter } from 'vue-router'\n\nimport { useFirebaseAuthActions } from '@/composables/auth/useFirebaseAuthActions'\nimport { useErrorHandling } from '@/composables/useErrorHandling'\nimport { useSubscription } from '@/platform/cloud/subscription/composables/useSubscription'\nimport type { TierKey } from '@/platform/cloud/subscription/constants/tierPricing'\nimport { performSubscriptionCheckout } from '@/platform/cloud/subscription/utils/subscriptionCheckoutUtil'\n\nimport type { BillingCycle } from '../subscription/utils/subscriptionTierRank'\n\nconst { t } = useI18n()\nconst route = useRoute()\nconst router = useRouter()\nconst { reportError, accessBillingPortal } = useFirebaseAuthActions()\nconst { wrapWithErrorHandlingAsync } = useErrorHandling()\n\nconst { isActiveSubscription, isInitialized } = useSubscription()\n\nconst selectedTierKey = ref<TierKey | null>(null)\n\nconst tierDisplayName = computed(() => {\n if (!selectedTierKey.value) return ''\n const names: Record<TierKey, string> = {\n standard: t('subscription.tiers.standard.name'),\n creator: t('subscription.tiers.creator.name'),\n pro: t('subscription.tiers.pro.name'),\n founder: t('subscription.tiers.founder.name')\n }\n return names[selectedTierKey.value]\n})\n\nconst runRedirect = wrapWithErrorHandlingAsync(async () => {\n const rawType = route.query.tier\n const rawCycle = route.query.cycle\n let tierKeyParam: string | null = null\n let cycleParam = 'monthly'\n\n if (typeof rawType === 'string') {\n tierKeyParam = rawType\n } else if (Array.isArray(rawType) && rawType[0]) {\n tierKeyParam = rawType[0]\n }\n\n if (typeof rawCycle === 'string') {\n cycleParam = rawCycle\n } else if (Array.isArray(rawCycle) && rawCycle[0]) {\n cycleParam = rawCycle[0]\n }\n\n if (!tierKeyParam) {\n await router.push('/')\n return\n }\n\n const validTierKeys: TierKey[] = ['standard', 'creator', 'pro', 'founder']\n if (!(validTierKeys as string[]).includes(tierKeyParam)) {\n await router.push('/')\n return\n }\n\n const tierKey = tierKeyParam as TierKey\n\n selectedTierKey.value = tierKey\n\n const validCycles: BillingCycle[] = ['monthly', 'yearly']\n if (!cycleParam || !(validCycles as string[]).includes(cycleParam)) {\n cycleParam = 'monthly'\n }\n\n if (!isInitialized.value) {\n await until(isInitialized).toBe(true)\n }\n\n if (isActiveSubscription.value) {\n await accessBillingPortal(undefined, false)\n } else {\n await performSubscriptionCheckout(\n tierKey,\n cycleParam as BillingCycle,\n false\n )\n }\n}, reportError)\n\nonMounted(() => {\n void runRedirect()\n})\n</script>\n\n<template>\n <div\n class=\"flex h-full w-full items-center justify-center bg-comfy-menu-secondary-bg\"\n >\n <div class=\"flex flex-col items-center gap-4\">\n <img\n src=\"/assets/images/comfy-logo-single.svg\"\n :alt=\"t('g.comfyOrgLogoAlt')\"\n class=\"h-16 w-16\"\n />\n <p\n v-if=\"selectedTierKey\"\n class=\"font-inter text-base font-normal leading-normal text-base-foreground\"\n >\n {{\n t('subscription.subscribeTo', {\n plan: tierDisplayName\n })\n }}\n </p>\n <ProgressSpinner\n v-if=\"selectedTierKey\"\n class=\"h-8 w-8\"\n stroke-width=\"4\"\n />\n <Button\n v-if=\"selectedTierKey\"\n as=\"a\"\n href=\"/\"\n link\n :label=\"t('cloudOnboarding.skipToCloudApp')\"\n />\n </div>\n </div>\n</template>\n"],"mappings":"0hCCgBA,KAAM,CAAE,EAAA,CAAA,EAAM,EAAA,EACR,EAAQ,EAAA,EACR,EAAS,EAAA,EACT,CAAE,YAAA,EAAa,oBAAA,CAAA,EAAwB,EAAA,EACvC,CAAE,2BAAA,CAAA,EAA+B,EAAA,EAEjC,CAAE,qBAAA,EAAsB,cAAA,CAAA,EAAkB,EAAA,EAE1C,EAAkB,EAAoB,IAAA,EAEtC,EAAkB,EAAA,IACjB,EAAgB,MACkB,CACrC,SAAU,EAAE,kCAAA,EACZ,QAAS,EAAE,iCAAA,EACX,IAAK,EAAE,6BAAA,EACP,QAAS,EAAE,iCAAA,GAEA,EAAgB,KAAA,EAPM,IAU/B,EAAc,EAA2B,SAAY,CACzD,MAAM,EAAU,EAAM,MAAM,KACtB,EAAW,EAAM,MAAM,MAC7B,IAAI,EAA8B,KAC9B,EAAa,UAcjB,GAZI,OAAO,GAAY,SACrB,EAAe,EACN,MAAM,QAAQ,CAAA,GAAY,EAAQ,CAAA,IAC3C,EAAe,EAAQ,CAAA,GAGrB,OAAO,GAAa,SACtB,EAAa,EACJ,MAAM,QAAQ,CAAA,GAAa,EAAS,CAAA,IAC7C,EAAa,EAAS,CAAA,GAGpB,CAAC,EAAc,CACjB,MAAM,EAAO,KAAK,GAAA,EAClB,OAIF,GAAI,CAD6B,CAAC,WAAY,UAAW,MAAO,WAC/B,SAAS,CAAA,EAAe,CACvD,MAAM,EAAO,KAAK,GAAA,EAClB,OAGF,MAAM,EAAU,EAEhB,EAAgB,MAAQ,GAGpB,CAAC,GAAc,CADiB,CAAC,UAAW,QAAA,EACF,SAAS,CAAA,KACrD,EAAa,WAGV,EAAc,OACjB,MAAM,EAAM,CAAA,EAAe,KAAK,EAAA,EAG9B,EAAqB,MACvB,MAAM,EAAoB,OAAW,EAAA,EAErC,MAAM,EACJ,EACA,EACA,EAAA,GAGH,CAAA,EAEH,OAAA,EAAA,IAAgB,CACT,EAAA"}
1
+ {"version":3,"file":"CloudSubscriptionRedirectView-UjNv8emo.js","names":[],"sources":["../../src/platform/cloud/onboarding/CloudSubscriptionRedirectView.vue","../../src/platform/cloud/onboarding/CloudSubscriptionRedirectView.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { until } from '@vueuse/core'\nimport Button from 'primevue/button'\nimport ProgressSpinner from 'primevue/progressspinner'\nimport { computed, onMounted, ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useRoute, useRouter } from 'vue-router'\n\nimport { useFirebaseAuthActions } from '@/composables/auth/useFirebaseAuthActions'\nimport { useErrorHandling } from '@/composables/useErrorHandling'\nimport { useSubscription } from '@/platform/cloud/subscription/composables/useSubscription'\nimport type { TierKey } from '@/platform/cloud/subscription/constants/tierPricing'\nimport { performSubscriptionCheckout } from '@/platform/cloud/subscription/utils/subscriptionCheckoutUtil'\n\nimport type { BillingCycle } from '../subscription/utils/subscriptionTierRank'\n\nconst { t } = useI18n()\nconst route = useRoute()\nconst router = useRouter()\nconst { reportError, accessBillingPortal } = useFirebaseAuthActions()\nconst { wrapWithErrorHandlingAsync } = useErrorHandling()\n\nconst { isActiveSubscription, isInitialized } = useSubscription()\n\nconst selectedTierKey = ref<TierKey | null>(null)\n\nconst tierDisplayName = computed(() => {\n if (!selectedTierKey.value) return ''\n const names: Record<TierKey, string> = {\n standard: t('subscription.tiers.standard.name'),\n creator: t('subscription.tiers.creator.name'),\n pro: t('subscription.tiers.pro.name'),\n founder: t('subscription.tiers.founder.name')\n }\n return names[selectedTierKey.value]\n})\n\nconst runRedirect = wrapWithErrorHandlingAsync(async () => {\n const rawType = route.query.tier\n const rawCycle = route.query.cycle\n let tierKeyParam: string | null = null\n let cycleParam = 'monthly'\n\n if (typeof rawType === 'string') {\n tierKeyParam = rawType\n } else if (Array.isArray(rawType) && rawType[0]) {\n tierKeyParam = rawType[0]\n }\n\n if (typeof rawCycle === 'string') {\n cycleParam = rawCycle\n } else if (Array.isArray(rawCycle) && rawCycle[0]) {\n cycleParam = rawCycle[0]\n }\n\n if (!tierKeyParam) {\n await router.push('/')\n return\n }\n\n const validTierKeys: TierKey[] = ['standard', 'creator', 'pro', 'founder']\n if (!(validTierKeys as string[]).includes(tierKeyParam)) {\n await router.push('/')\n return\n }\n\n const tierKey = tierKeyParam as TierKey\n\n selectedTierKey.value = tierKey\n\n const validCycles: BillingCycle[] = ['monthly', 'yearly']\n if (!cycleParam || !(validCycles as string[]).includes(cycleParam)) {\n cycleParam = 'monthly'\n }\n\n if (!isInitialized.value) {\n await until(isInitialized).toBe(true)\n }\n\n if (isActiveSubscription.value) {\n await accessBillingPortal(undefined, false)\n } else {\n await performSubscriptionCheckout(\n tierKey,\n cycleParam as BillingCycle,\n false\n )\n }\n}, reportError)\n\nonMounted(() => {\n void runRedirect()\n})\n</script>\n\n<template>\n <div\n class=\"flex h-full w-full items-center justify-center bg-comfy-menu-secondary-bg\"\n >\n <div class=\"flex flex-col items-center gap-4\">\n <img\n src=\"/assets/images/comfy-logo-single.svg\"\n :alt=\"t('g.comfyOrgLogoAlt')\"\n class=\"h-16 w-16\"\n />\n <p\n v-if=\"selectedTierKey\"\n class=\"font-inter text-base font-normal leading-normal text-base-foreground\"\n >\n {{\n t('subscription.subscribeTo', {\n plan: tierDisplayName\n })\n }}\n </p>\n <ProgressSpinner\n v-if=\"selectedTierKey\"\n class=\"h-8 w-8\"\n stroke-width=\"4\"\n />\n <Button\n v-if=\"selectedTierKey\"\n as=\"a\"\n href=\"/\"\n link\n :label=\"t('cloudOnboarding.skipToCloudApp')\"\n />\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { until } from '@vueuse/core'\nimport Button from 'primevue/button'\nimport ProgressSpinner from 'primevue/progressspinner'\nimport { computed, onMounted, ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useRoute, useRouter } from 'vue-router'\n\nimport { useFirebaseAuthActions } from '@/composables/auth/useFirebaseAuthActions'\nimport { useErrorHandling } from '@/composables/useErrorHandling'\nimport { useSubscription } from '@/platform/cloud/subscription/composables/useSubscription'\nimport type { TierKey } from '@/platform/cloud/subscription/constants/tierPricing'\nimport { performSubscriptionCheckout } from '@/platform/cloud/subscription/utils/subscriptionCheckoutUtil'\n\nimport type { BillingCycle } from '../subscription/utils/subscriptionTierRank'\n\nconst { t } = useI18n()\nconst route = useRoute()\nconst router = useRouter()\nconst { reportError, accessBillingPortal } = useFirebaseAuthActions()\nconst { wrapWithErrorHandlingAsync } = useErrorHandling()\n\nconst { isActiveSubscription, isInitialized } = useSubscription()\n\nconst selectedTierKey = ref<TierKey | null>(null)\n\nconst tierDisplayName = computed(() => {\n if (!selectedTierKey.value) return ''\n const names: Record<TierKey, string> = {\n standard: t('subscription.tiers.standard.name'),\n creator: t('subscription.tiers.creator.name'),\n pro: t('subscription.tiers.pro.name'),\n founder: t('subscription.tiers.founder.name')\n }\n return names[selectedTierKey.value]\n})\n\nconst runRedirect = wrapWithErrorHandlingAsync(async () => {\n const rawType = route.query.tier\n const rawCycle = route.query.cycle\n let tierKeyParam: string | null = null\n let cycleParam = 'monthly'\n\n if (typeof rawType === 'string') {\n tierKeyParam = rawType\n } else if (Array.isArray(rawType) && rawType[0]) {\n tierKeyParam = rawType[0]\n }\n\n if (typeof rawCycle === 'string') {\n cycleParam = rawCycle\n } else if (Array.isArray(rawCycle) && rawCycle[0]) {\n cycleParam = rawCycle[0]\n }\n\n if (!tierKeyParam) {\n await router.push('/')\n return\n }\n\n const validTierKeys: TierKey[] = ['standard', 'creator', 'pro', 'founder']\n if (!(validTierKeys as string[]).includes(tierKeyParam)) {\n await router.push('/')\n return\n }\n\n const tierKey = tierKeyParam as TierKey\n\n selectedTierKey.value = tierKey\n\n const validCycles: BillingCycle[] = ['monthly', 'yearly']\n if (!cycleParam || !(validCycles as string[]).includes(cycleParam)) {\n cycleParam = 'monthly'\n }\n\n if (!isInitialized.value) {\n await until(isInitialized).toBe(true)\n }\n\n if (isActiveSubscription.value) {\n await accessBillingPortal(undefined, false)\n } else {\n await performSubscriptionCheckout(\n tierKey,\n cycleParam as BillingCycle,\n false\n )\n }\n}, reportError)\n\nonMounted(() => {\n void runRedirect()\n})\n</script>\n\n<template>\n <div\n class=\"flex h-full w-full items-center justify-center bg-comfy-menu-secondary-bg\"\n >\n <div class=\"flex flex-col items-center gap-4\">\n <img\n src=\"/assets/images/comfy-logo-single.svg\"\n :alt=\"t('g.comfyOrgLogoAlt')\"\n class=\"h-16 w-16\"\n />\n <p\n v-if=\"selectedTierKey\"\n class=\"font-inter text-base font-normal leading-normal text-base-foreground\"\n >\n {{\n t('subscription.subscribeTo', {\n plan: tierDisplayName\n })\n }}\n </p>\n <ProgressSpinner\n v-if=\"selectedTierKey\"\n class=\"h-8 w-8\"\n stroke-width=\"4\"\n />\n <Button\n v-if=\"selectedTierKey\"\n as=\"a\"\n href=\"/\"\n link\n :label=\"t('cloudOnboarding.skipToCloudApp')\"\n />\n </div>\n </div>\n</template>\n"],"mappings":"0hCCgBA,KAAM,CAAE,EAAA,CAAA,EAAM,EAAA,EACR,EAAQ,EAAA,EACR,EAAS,EAAA,EACT,CAAE,YAAA,EAAa,oBAAA,CAAA,EAAwB,EAAA,EACvC,CAAE,2BAAA,CAAA,EAA+B,EAAA,EAEjC,CAAE,qBAAA,EAAsB,cAAA,CAAA,EAAkB,EAAA,EAE1C,EAAkB,EAAoB,IAAA,EAEtC,EAAkB,EAAA,IACjB,EAAgB,MACkB,CACrC,SAAU,EAAE,kCAAA,EACZ,QAAS,EAAE,iCAAA,EACX,IAAK,EAAE,6BAAA,EACP,QAAS,EAAE,iCAAA,GAEA,EAAgB,KAAA,EAPM,IAU/B,EAAc,EAA2B,SAAY,CACzD,MAAM,EAAU,EAAM,MAAM,KACtB,EAAW,EAAM,MAAM,MAC7B,IAAI,EAA8B,KAC9B,EAAa,UAcjB,GAZI,OAAO,GAAY,SACrB,EAAe,EACN,MAAM,QAAQ,CAAA,GAAY,EAAQ,CAAA,IAC3C,EAAe,EAAQ,CAAA,GAGrB,OAAO,GAAa,SACtB,EAAa,EACJ,MAAM,QAAQ,CAAA,GAAa,EAAS,CAAA,IAC7C,EAAa,EAAS,CAAA,GAGpB,CAAC,EAAc,CACjB,MAAM,EAAO,KAAK,GAAA,EAClB,OAIF,GAAI,CAD6B,CAAC,WAAY,UAAW,MAAO,WAC/B,SAAS,CAAA,EAAe,CACvD,MAAM,EAAO,KAAK,GAAA,EAClB,OAGF,MAAM,EAAU,EAEhB,EAAgB,MAAQ,GAGpB,CAAC,GAAc,CADiB,CAAC,UAAW,QAAA,EACF,SAAS,CAAA,KACrD,EAAa,WAGV,EAAc,OACjB,MAAM,EAAM,CAAA,EAAe,KAAK,EAAA,EAG9B,EAAqB,MACvB,MAAM,EAAoB,OAAW,EAAA,EAErC,MAAM,EACJ,EACA,EACA,EAAA,GAGH,CAAA,EAEH,OAAA,EAAA,IAAgB,CACT,EAAA"}
@@ -1,3 +1,3 @@
1
- var G=Object.defineProperty;var n=(S,b)=>G(S,"name",{value:b,configurable:!0});import{M as H,P as C,_ as K,ct as R,g as Y,it as U,v as x}from"./vendor-primevue-DcMRXJN3.js";import{$o as i,Ba as a,Do as o,Ha as P,Jo as u,Ka as c,Pa as k,Ua as m,Ya as Q,co as W,do as f,po as w,qa as s,za as h,zo as $}from"./vendor-other-DlQF6V2E.js";import{c as X,n as Z}from"./vendor-vue-D9IUuwPJ.js";import{Lt as j}from"./api-CUAc7rDA.js";import"./remoteConfig-CZcEXsZS.js";import"./colorUtil-CzxntCbX.js";import{n as ee}from"./useErrorHandling-CI8_F4yx.js";import{t as p}from"./Button-Do2I1OAA.js";import"./PanelTemplate-BjN5XNg2.js";import{ft as F}from"./dialogService-BZ1FmjZL.js";import{t as le}from"./_plugin-vue_export-helper-PHE0iSCb.js";import"./vendor-tiptap-_UqYL7N_.js";import"./vendor-xterm-BU_lcTPR.js";import"./vendor-three-BFcUNSs9.js";import"./markdownRendererUtil-DglHsU8t.js";import"./userStore-BkgQPjq6.js";import{r as ae,t as te}from"./auth-B8ZZ0KKQ.js";var se={class:"mb-8 block text-lg font-medium"},ue={class:"flex flex-col gap-6"},re=["for"],ie={class:"flex justify-between pt-4"},oe={class:"mb-8 block text-lg font-medium"},ne={class:"flex flex-col gap-6"},de=["for"],ve={key:0,class:"mt-4 ml-8"},ce={class:"flex gap-6 pt-4"},me={class:"mb-8 block text-lg font-medium"},fe={class:"flex flex-col gap-6"},pe=["for"],be={key:0,class:"mt-4 ml-8"},ye={class:"flex gap-6 pt-4"},he={class:"mb-8 block text-lg font-medium"},ge={class:"flex flex-col gap-6"},_e=["for"],xe={class:"flex gap-6 pt-4"},ke=4,we=Q({__name:"CloudSurveyView",setup(S){const{t:b}=Z(),g=X(),{flags:M}=ee(),V=h(()=>M.onboardingSurveyEnabled);W(async()=>{if(!V.value){await g.replace({name:"cloud-user-check"});return}try{await te()?await g.replace({name:"cloud-user-check"}):j&&F()?.trackSurvey("opened")}catch(t){console.error("Failed to check survey status:",t)}});const O=$(1),A=h(()=>Math.max(20,Math.min(100,(O.value-1)/(ke-1)*100))),_=$(!1),l=$({familiarity:"",useCase:"",useCaseOther:"",industry:"",industryOther:"",making:[]}),B=[{label:"New to ComfyUI (never used it before)",value:"new"},{label:"Just getting started (following tutorials)",value:"starting"},{label:"Comfortable with basics",value:"basics"},{label:"Advanced user (custom workflows)",value:"advanced"},{label:"Expert (help others)",value:"expert"}],E=[{label:"Personal projects/hobby",value:"personal"},{label:"Community contributions (nodes, workflows, etc.)",value:"community"},{label:"Client work (freelance)",value:"client"},{label:"My own workplace (in-house)",value:"inhouse"},{label:"Academic research",value:"research"},{label:"Other",value:"other"}],N=[{label:"Film, TV, & animation",value:"film_tv_animation"},{label:"Gaming",value:"gaming"},{label:"Marketing & advertising",value:"marketing"},{label:"Architecture",value:"architecture"},{label:"Product & graphic design",value:"product_design"},{label:"Fine art & illustration",value:"fine_art"},{label:"Software & technology",value:"software"},{label:"Education",value:"education"},{label:"Other",value:"other"}],D=[{label:"Images",value:"images"},{label:"Video & animation",value:"video"},{label:"3D assets",value:"3d"},{label:"Audio/music",value:"audio"},{label:"Custom nodes & workflows",value:"custom_nodes"}],I=h(()=>!!l.value.familiarity),T=h(()=>l.value.useCase?l.value.useCase==="other"?!!l.value.useCaseOther?.trim():!0:!1),z=h(()=>l.value.industry?l.value.industry==="other"?!!l.value.industryOther?.trim():!0:!1),J=h(()=>l.value.making.length>0),L=n(t=>{O.value=t},"changeActiveStep"),y=n((t,r)=>{L(t),r(String(t))},"goTo"),q=n(async()=>{try{if(!V.value){await g.replace({name:"cloud-user-check"});return}_.value=!0;const t={familiarity:l.value.familiarity,useCase:l.value.useCase==="other"?l.value.useCaseOther?.trim()||"other":l.value.useCase,industry:l.value.industry==="other"?l.value.industryOther?.trim()||"other":l.value.industry,making:l.value.making};await ae(t),j&&F()?.trackSurvey("submitted",{industry:t.industry,useCase:t.useCase,familiarity:t.familiarity,making:t.making}),await g.push({name:"cloud-user-check"})}finally{_.value=!1}},"onSubmitSurvey");return(t,r)=>(f(),m("div",null,[s(u(Y),{value:"1",class:"flex h-[638px] max-h-[80vh] w-[320px] max-w-[90vw] flex-col"},{default:o(()=>[s(u(H),{value:A.value,"show-value":!1,class:"mb-8 h-2"},null,8,["value"]),s(u(K),{class:"flex flex-1 flex-col p-0"},{default:o(()=>[s(u(x),{value:"1",class:"flex min-h-full flex-1 flex-col justify-between bg-transparent"},{default:o(({activateCallback:d})=>[a("div",null,[a("label",se,i(u(b)("cloudSurvey_steps_familiarity")),1),a("div",ue,[(f(),m(k,null,w(B,e=>a("div",{key:e.value,class:"flex items-center gap-3"},[s(u(C),{modelValue:l.value.familiarity,"onUpdate:modelValue":r[0]||(r[0]=v=>l.value.familiarity=v),"input-id":`fam-${e.value}`,name:"familiarity",value:e.value},null,8,["modelValue","input-id","value"]),a("label",{for:`fam-${e.value}`,class:"cursor-pointer text-sm"},i(e.label),9,re)])),64))])]),a("div",ie,[r[6]||(r[6]=a("span",null,null,-1)),s(p,{disabled:!I.value,class:"h-10 w-full border-none text-white",onClick:n(e=>y(2,d),"onClick")},{default:o(()=>[c(i(t.$t("g.next")),1)]),_:2},1032,["disabled","onClick"])])]),_:1}),s(u(x),{value:"2",class:"flex min-h-full flex-1 flex-col justify-between bg-transparent"},{default:o(({activateCallback:d})=>[a("div",null,[a("label",oe,i(u(b)("cloudSurvey_steps_purpose")),1),a("div",ne,[(f(),m(k,null,w(E,e=>a("div",{key:e.value,class:"flex items-center gap-3"},[s(u(C),{modelValue:l.value.useCase,"onUpdate:modelValue":r[1]||(r[1]=v=>l.value.useCase=v),"input-id":`purpose-${e.value}`,name:"purpose",value:e.value},null,8,["modelValue","input-id","value"]),a("label",{for:`purpose-${e.value}`,class:"cursor-pointer text-sm"},i(e.label),9,de)])),64))]),l.value.useCase==="other"?(f(),m("div",ve,[s(u(U),{modelValue:l.value.useCaseOther,"onUpdate:modelValue":r[2]||(r[2]=e=>l.value.useCaseOther=e),class:"w-full",placeholder:t.$t("cloudOnboarding.survey.options.industry.otherPlaceholder")},null,8,["modelValue","placeholder"])])):P("",!0)]),a("div",ce,[s(p,{variant:"secondary",class:"flex-1 text-white",onClick:n(e=>y(1,d),"onClick")},{default:o(()=>[c(i(t.$t("g.back")),1)]),_:2},1032,["onClick"]),s(p,{disabled:!T.value,class:"h-10 flex-1 text-white",onClick:n(e=>y(3,d),"onClick")},{default:o(()=>[c(i(t.$t("g.next")),1)]),_:2},1032,["disabled","onClick"])])]),_:1}),s(u(x),{value:"3",class:"flex min-h-full flex-1 flex-col justify-between bg-transparent"},{default:o(({activateCallback:d})=>[a("div",null,[a("label",me,i(u(b)("cloudSurvey_steps_industry")),1),a("div",fe,[(f(),m(k,null,w(N,e=>a("div",{key:e.value,class:"flex items-center gap-3"},[s(u(C),{modelValue:l.value.industry,"onUpdate:modelValue":r[3]||(r[3]=v=>l.value.industry=v),"input-id":`industry-${e.value}`,name:"industry",value:e.value},null,8,["modelValue","input-id","value"]),a("label",{for:`industry-${e.value}`,class:"cursor-pointer text-sm"},i(e.label),9,pe)])),64))]),l.value.industry==="other"?(f(),m("div",be,[s(u(U),{modelValue:l.value.industryOther,"onUpdate:modelValue":r[4]||(r[4]=e=>l.value.industryOther=e),class:"w-full",placeholder:t.$t("cloudOnboarding.survey.options.industry.otherPlaceholder")},null,8,["modelValue","placeholder"])])):P("",!0)]),a("div",ye,[s(p,{variant:"secondary",class:"flex-1 text-white",onClick:n(e=>y(2,d),"onClick")},{default:o(()=>[c(i(t.$t("g.back")),1)]),_:2},1032,["onClick"]),s(p,{disabled:!z.value,class:"h-10 flex-1 border-none text-white",onClick:n(e=>y(4,d),"onClick")},{default:o(()=>[c(i(t.$t("g.next")),1)]),_:2},1032,["disabled","onClick"])])]),_:1}),s(u(x),{value:"4",class:"flex min-h-full flex-1 flex-col justify-between bg-transparent"},{default:o(({activateCallback:d})=>[a("div",null,[a("label",he,i(u(b)("cloudSurvey_steps_making")),1),a("div",ge,[(f(),m(k,null,w(D,e=>a("div",{key:e.value,class:"flex items-center gap-3"},[s(u(R),{modelValue:l.value.making,"onUpdate:modelValue":r[5]||(r[5]=v=>l.value.making=v),"input-id":`making-${e.value}`,value:e.value},null,8,["modelValue","input-id","value"]),a("label",{for:`making-${e.value}`,class:"cursor-pointer text-sm"},i(e.label),9,_e)])),64))])]),a("div",xe,[s(p,{variant:"secondary",class:"flex-1 text-white",onClick:n(e=>y(3,d),"onClick")},{default:o(()=>[c(i(t.$t("g.back")),1)]),_:2},1032,["onClick"]),s(p,{disabled:!J.value||_.value,loading:_.value,class:"h-10 flex-1 border-none text-white",onClick:q},{default:o(()=>[c(i(t.$t("g.submit")),1)]),_:1},8,["disabled","loading"])])]),_:1})]),_:1})]),_:1})]))}}),Je=le(we,[["__scopeId","data-v-a5b5d1d9"]]);export{Je as default};
1
+ var G=Object.defineProperty;var n=(S,b)=>G(S,"name",{value:b,configurable:!0});import{M as H,P as C,_ as K,ct as R,g as Y,it as U,v as x}from"./vendor-primevue-DcMRXJN3.js";import{$o as i,Ba as a,Do as o,Ha as P,Jo as u,Ka as c,Pa as k,Ua as m,Ya as Q,co as W,do as f,po as w,qa as s,za as h,zo as $}from"./vendor-other-DlQF6V2E.js";import{c as X,n as Z}from"./vendor-vue-D9IUuwPJ.js";import{Lt as j}from"./api-Dwq2LQIW.js";import"./remoteConfig-CZcEXsZS.js";import"./colorUtil-CzxntCbX.js";import{n as ee}from"./useErrorHandling-Cfa5N_7c.js";import{t as p}from"./Button-Do2I1OAA.js";import"./PanelTemplate-BJda9e5J.js";import{ft as F}from"./dialogService-YG0RH337.js";import{t as le}from"./_plugin-vue_export-helper-PHE0iSCb.js";import"./vendor-tiptap-_UqYL7N_.js";import"./vendor-xterm-BU_lcTPR.js";import"./vendor-three-BFcUNSs9.js";import"./markdownRendererUtil-DglHsU8t.js";import"./userStore-BAS9m9W6.js";import{r as ae,t as te}from"./auth-B9axG-yZ.js";var se={class:"mb-8 block text-lg font-medium"},ue={class:"flex flex-col gap-6"},re=["for"],ie={class:"flex justify-between pt-4"},oe={class:"mb-8 block text-lg font-medium"},ne={class:"flex flex-col gap-6"},de=["for"],ve={key:0,class:"mt-4 ml-8"},ce={class:"flex gap-6 pt-4"},me={class:"mb-8 block text-lg font-medium"},fe={class:"flex flex-col gap-6"},pe=["for"],be={key:0,class:"mt-4 ml-8"},ye={class:"flex gap-6 pt-4"},he={class:"mb-8 block text-lg font-medium"},ge={class:"flex flex-col gap-6"},_e=["for"],xe={class:"flex gap-6 pt-4"},ke=4,we=Q({__name:"CloudSurveyView",setup(S){const{t:b}=Z(),g=X(),{flags:M}=ee(),V=h(()=>M.onboardingSurveyEnabled);W(async()=>{if(!V.value){await g.replace({name:"cloud-user-check"});return}try{await te()?await g.replace({name:"cloud-user-check"}):j&&F()?.trackSurvey("opened")}catch(t){console.error("Failed to check survey status:",t)}});const O=$(1),A=h(()=>Math.max(20,Math.min(100,(O.value-1)/(ke-1)*100))),_=$(!1),l=$({familiarity:"",useCase:"",useCaseOther:"",industry:"",industryOther:"",making:[]}),B=[{label:"New to ComfyUI (never used it before)",value:"new"},{label:"Just getting started (following tutorials)",value:"starting"},{label:"Comfortable with basics",value:"basics"},{label:"Advanced user (custom workflows)",value:"advanced"},{label:"Expert (help others)",value:"expert"}],E=[{label:"Personal projects/hobby",value:"personal"},{label:"Community contributions (nodes, workflows, etc.)",value:"community"},{label:"Client work (freelance)",value:"client"},{label:"My own workplace (in-house)",value:"inhouse"},{label:"Academic research",value:"research"},{label:"Other",value:"other"}],N=[{label:"Film, TV, & animation",value:"film_tv_animation"},{label:"Gaming",value:"gaming"},{label:"Marketing & advertising",value:"marketing"},{label:"Architecture",value:"architecture"},{label:"Product & graphic design",value:"product_design"},{label:"Fine art & illustration",value:"fine_art"},{label:"Software & technology",value:"software"},{label:"Education",value:"education"},{label:"Other",value:"other"}],D=[{label:"Images",value:"images"},{label:"Video & animation",value:"video"},{label:"3D assets",value:"3d"},{label:"Audio/music",value:"audio"},{label:"Custom nodes & workflows",value:"custom_nodes"}],I=h(()=>!!l.value.familiarity),T=h(()=>l.value.useCase?l.value.useCase==="other"?!!l.value.useCaseOther?.trim():!0:!1),z=h(()=>l.value.industry?l.value.industry==="other"?!!l.value.industryOther?.trim():!0:!1),J=h(()=>l.value.making.length>0),L=n(t=>{O.value=t},"changeActiveStep"),y=n((t,r)=>{L(t),r(String(t))},"goTo"),q=n(async()=>{try{if(!V.value){await g.replace({name:"cloud-user-check"});return}_.value=!0;const t={familiarity:l.value.familiarity,useCase:l.value.useCase==="other"?l.value.useCaseOther?.trim()||"other":l.value.useCase,industry:l.value.industry==="other"?l.value.industryOther?.trim()||"other":l.value.industry,making:l.value.making};await ae(t),j&&F()?.trackSurvey("submitted",{industry:t.industry,useCase:t.useCase,familiarity:t.familiarity,making:t.making}),await g.push({name:"cloud-user-check"})}finally{_.value=!1}},"onSubmitSurvey");return(t,r)=>(f(),m("div",null,[s(u(Y),{value:"1",class:"flex h-[638px] max-h-[80vh] w-[320px] max-w-[90vw] flex-col"},{default:o(()=>[s(u(H),{value:A.value,"show-value":!1,class:"mb-8 h-2"},null,8,["value"]),s(u(K),{class:"flex flex-1 flex-col p-0"},{default:o(()=>[s(u(x),{value:"1",class:"flex min-h-full flex-1 flex-col justify-between bg-transparent"},{default:o(({activateCallback:d})=>[a("div",null,[a("label",se,i(u(b)("cloudSurvey_steps_familiarity")),1),a("div",ue,[(f(),m(k,null,w(B,e=>a("div",{key:e.value,class:"flex items-center gap-3"},[s(u(C),{modelValue:l.value.familiarity,"onUpdate:modelValue":r[0]||(r[0]=v=>l.value.familiarity=v),"input-id":`fam-${e.value}`,name:"familiarity",value:e.value},null,8,["modelValue","input-id","value"]),a("label",{for:`fam-${e.value}`,class:"cursor-pointer text-sm"},i(e.label),9,re)])),64))])]),a("div",ie,[r[6]||(r[6]=a("span",null,null,-1)),s(p,{disabled:!I.value,class:"h-10 w-full border-none text-white",onClick:n(e=>y(2,d),"onClick")},{default:o(()=>[c(i(t.$t("g.next")),1)]),_:2},1032,["disabled","onClick"])])]),_:1}),s(u(x),{value:"2",class:"flex min-h-full flex-1 flex-col justify-between bg-transparent"},{default:o(({activateCallback:d})=>[a("div",null,[a("label",oe,i(u(b)("cloudSurvey_steps_purpose")),1),a("div",ne,[(f(),m(k,null,w(E,e=>a("div",{key:e.value,class:"flex items-center gap-3"},[s(u(C),{modelValue:l.value.useCase,"onUpdate:modelValue":r[1]||(r[1]=v=>l.value.useCase=v),"input-id":`purpose-${e.value}`,name:"purpose",value:e.value},null,8,["modelValue","input-id","value"]),a("label",{for:`purpose-${e.value}`,class:"cursor-pointer text-sm"},i(e.label),9,de)])),64))]),l.value.useCase==="other"?(f(),m("div",ve,[s(u(U),{modelValue:l.value.useCaseOther,"onUpdate:modelValue":r[2]||(r[2]=e=>l.value.useCaseOther=e),class:"w-full",placeholder:t.$t("cloudOnboarding.survey.options.industry.otherPlaceholder")},null,8,["modelValue","placeholder"])])):P("",!0)]),a("div",ce,[s(p,{variant:"secondary",class:"flex-1 text-white",onClick:n(e=>y(1,d),"onClick")},{default:o(()=>[c(i(t.$t("g.back")),1)]),_:2},1032,["onClick"]),s(p,{disabled:!T.value,class:"h-10 flex-1 text-white",onClick:n(e=>y(3,d),"onClick")},{default:o(()=>[c(i(t.$t("g.next")),1)]),_:2},1032,["disabled","onClick"])])]),_:1}),s(u(x),{value:"3",class:"flex min-h-full flex-1 flex-col justify-between bg-transparent"},{default:o(({activateCallback:d})=>[a("div",null,[a("label",me,i(u(b)("cloudSurvey_steps_industry")),1),a("div",fe,[(f(),m(k,null,w(N,e=>a("div",{key:e.value,class:"flex items-center gap-3"},[s(u(C),{modelValue:l.value.industry,"onUpdate:modelValue":r[3]||(r[3]=v=>l.value.industry=v),"input-id":`industry-${e.value}`,name:"industry",value:e.value},null,8,["modelValue","input-id","value"]),a("label",{for:`industry-${e.value}`,class:"cursor-pointer text-sm"},i(e.label),9,pe)])),64))]),l.value.industry==="other"?(f(),m("div",be,[s(u(U),{modelValue:l.value.industryOther,"onUpdate:modelValue":r[4]||(r[4]=e=>l.value.industryOther=e),class:"w-full",placeholder:t.$t("cloudOnboarding.survey.options.industry.otherPlaceholder")},null,8,["modelValue","placeholder"])])):P("",!0)]),a("div",ye,[s(p,{variant:"secondary",class:"flex-1 text-white",onClick:n(e=>y(2,d),"onClick")},{default:o(()=>[c(i(t.$t("g.back")),1)]),_:2},1032,["onClick"]),s(p,{disabled:!z.value,class:"h-10 flex-1 border-none text-white",onClick:n(e=>y(4,d),"onClick")},{default:o(()=>[c(i(t.$t("g.next")),1)]),_:2},1032,["disabled","onClick"])])]),_:1}),s(u(x),{value:"4",class:"flex min-h-full flex-1 flex-col justify-between bg-transparent"},{default:o(({activateCallback:d})=>[a("div",null,[a("label",he,i(u(b)("cloudSurvey_steps_making")),1),a("div",ge,[(f(),m(k,null,w(D,e=>a("div",{key:e.value,class:"flex items-center gap-3"},[s(u(R),{modelValue:l.value.making,"onUpdate:modelValue":r[5]||(r[5]=v=>l.value.making=v),"input-id":`making-${e.value}`,value:e.value},null,8,["modelValue","input-id","value"]),a("label",{for:`making-${e.value}`,class:"cursor-pointer text-sm"},i(e.label),9,_e)])),64))])]),a("div",xe,[s(p,{variant:"secondary",class:"flex-1 text-white",onClick:n(e=>y(3,d),"onClick")},{default:o(()=>[c(i(t.$t("g.back")),1)]),_:2},1032,["onClick"]),s(p,{disabled:!J.value||_.value,loading:_.value,class:"h-10 flex-1 border-none text-white",onClick:q},{default:o(()=>[c(i(t.$t("g.submit")),1)]),_:1},8,["disabled","loading"])])]),_:1})]),_:1})]),_:1})]))}}),Je=le(we,[["__scopeId","data-v-a5b5d1d9"]]);export{Je as default};
2
2
 
3
- //# sourceMappingURL=CloudSurveyView-CBtTd9Ru.js.map
3
+ //# sourceMappingURL=CloudSurveyView-IaiucCTP.js.map