@pisell/private-materials 3.4.43 → 3.4.45

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 (651) hide show
  1. package/build/lowcode/assets-daily.json +11 -11
  2. package/build/lowcode/assets-dev.json +2 -2
  3. package/build/lowcode/assets-prod.json +11 -11
  4. package/build/lowcode/index.js +1 -1
  5. package/build/lowcode/meta.js +9 -1
  6. package/build/lowcode/preview.js +146 -160
  7. package/build/lowcode/render/default/view.css +1 -1
  8. package/build/lowcode/render/default/view.js +9 -9
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +9 -9
  11. package/es/businessModel/SalesModel/index.d.ts +1 -0
  12. package/es/components/Sales/Summary/utils.d.ts +1 -1
  13. package/es/components/appointmentBooking/components/Cart/Item/Total.d.ts +1 -0
  14. package/es/components/appointmentBooking/components/Cart/Item/index.d.ts +2 -1
  15. package/es/components/appointmentBooking/components/Cart/Item/index.js +3 -2
  16. package/es/components/appointmentBooking/components/Cart/index.d.ts +1 -0
  17. package/es/components/appointmentBooking/components/ConfirmInformation/index.js +273 -76
  18. package/es/components/appointmentBooking/components/ConfirmInformation/index.less +15 -0
  19. package/es/components/appointmentBooking/components/Content/index.d.ts +1 -0
  20. package/es/components/appointmentBooking/components/Deposit/index.d.ts +1 -0
  21. package/es/components/appointmentBooking/components/Footer/index.d.ts +1 -0
  22. package/es/components/appointmentBooking/components/Guest/components/InformationOptionsModal/index.d.ts +1 -0
  23. package/es/components/appointmentBooking/components/Header/index.d.ts +1 -0
  24. package/es/components/appointmentBooking/components/Voucher/index.d.ts +1 -0
  25. package/es/components/appointmentBooking/deposit/index.d.ts +1 -0
  26. package/es/components/appointmentBooking/hooks.d.ts +1 -0
  27. package/es/components/appointmentBooking/hooks.js +30 -30
  28. package/es/components/appointmentBooking/index.d.ts +1 -0
  29. package/es/components/appointmentBooking/locales.d.ts +3 -0
  30. package/es/components/appointmentBooking/locales.js +9 -6
  31. package/es/components/booking/components/TabProduct/index.d.ts +1 -0
  32. package/es/components/booking/components/TabProduct/productItem/index.d.ts +1 -0
  33. package/es/components/booking/components/TabProduct/selectProductItem/index.d.ts +1 -0
  34. package/es/components/booking/components/collapsibleList/utils.d.ts +1 -0
  35. package/es/components/booking/components/customSelect/index.js +1 -1
  36. package/es/components/booking/components/emptyBooking/index.d.ts +1 -0
  37. package/es/components/booking/components/footer/FooterMenus/index.d.ts +1 -0
  38. package/es/components/booking/components/footer/index.d.ts +1 -0
  39. package/es/components/booking/components/footer/index.js +4 -1
  40. package/es/components/booking/components/footer/utils.js +75 -73
  41. package/es/components/booking/components/formItemChildrenWrap/index.d.ts +1 -0
  42. package/es/components/booking/deposit/index.d.ts +1 -0
  43. package/es/components/booking/forms/footer.d.ts +1 -0
  44. package/es/components/booking/forms/footer.js +24 -10
  45. package/es/components/booking/forms/sendModal/useSendModal.d.ts +1 -0
  46. package/es/components/booking/forms/single/index.d.ts +1 -0
  47. package/es/components/booking/forms/table/index.d.ts +1 -0
  48. package/es/components/booking/hooks/useClearCart.d.ts +1 -0
  49. package/es/components/booking/hooks/useQuotation.d.ts +1 -0
  50. package/es/components/booking/info/addServiceVariant/index.d.ts +1 -0
  51. package/es/components/booking/info/client/index.js +28 -13
  52. package/es/components/booking/info/clientVariant/hooks/useClientFn.d.ts +1 -0
  53. package/es/components/booking/info/clientVariant/hooks/useClientFn.js +16 -10
  54. package/es/components/booking/info/clientVariant/hooks/useIsLowSpeedNetwork.d.ts +1 -0
  55. package/es/components/booking/info/clientVariant/vertical/SelectDrawer.js +10 -2
  56. package/es/components/booking/info/clientVariant/vertical/index.js +1 -1
  57. package/es/components/booking/info/date/index.d.ts +1 -0
  58. package/es/components/booking/info/dateRange/index.d.ts +1 -0
  59. package/es/components/booking/info/header/index.d.ts +1 -0
  60. package/es/components/booking/info/hooks/useInfoHolder.d.ts +1 -0
  61. package/es/components/booking/info/index.d.ts +1 -0
  62. package/es/components/booking/info/main.js +3 -2
  63. package/es/components/booking/info/model.js +5 -0
  64. package/es/components/booking/info/notes/index.d.ts +1 -0
  65. package/es/components/booking/info/service/Lists.d.ts +1 -0
  66. package/es/components/booking/info/service/actions/index.d.ts +1 -0
  67. package/es/components/booking/info/service/addService/index.d.ts +1 -0
  68. package/es/components/booking/info/service/addTimeModal/index.d.ts +1 -0
  69. package/es/components/booking/info/service/editService/BookingList/index.d.ts +1 -0
  70. package/es/components/booking/info/service/like/index.d.ts +1 -0
  71. package/es/components/booking/info/service/serviceItem/index.d.ts +1 -0
  72. package/es/components/booking/info/service/serviceList/index.d.ts +1 -0
  73. package/es/components/booking/info/service2/Lists.d.ts +1 -0
  74. package/es/components/booking/info/service2/utils.d.ts +1 -1
  75. package/es/components/booking/info2/index.js +3 -2
  76. package/es/components/booking/info2/service/actions/index.d.ts +1 -0
  77. package/es/components/booking/info2/service/addTimeModal/index.d.ts +1 -0
  78. package/es/components/booking/info2/service/contactInfoMode/index.d.ts +3 -0
  79. package/es/components/booking/info2/service/contactInfoMode/index.js +94 -0
  80. package/es/components/booking/info2/service/serviceItem/index.d.ts +1 -0
  81. package/es/components/booking/info2/service/serviceList/index.d.ts +1 -0
  82. package/es/components/booking/locales.d.ts +6 -0
  83. package/es/components/booking/locales.js +12 -3
  84. package/es/components/booking/materiels/contacts/index.d.ts +1 -0
  85. package/es/components/booking/materiels/duration/index.d.ts +1 -0
  86. package/es/components/booking/materiels/holder/index.d.ts +1 -0
  87. package/es/components/booking/materiels/startTime/index.d.ts +1 -0
  88. package/es/components/booking/model.d.ts +4 -0
  89. package/es/components/booking/model.js +3 -0
  90. package/es/components/booking/notes/NoteBlock/NoteItem/index.d.ts +1 -0
  91. package/es/components/booking/notes/NoteBlock/index.d.ts +1 -0
  92. package/es/components/booking/notes/addNote/index.d.ts +1 -0
  93. package/es/components/booking/utils.d.ts +2 -2
  94. package/es/components/eftpos/deviceList/index.d.ts +1 -0
  95. package/es/components/eftpos/form/index.d.ts +1 -0
  96. package/es/components/eftpos/group/index.d.ts +1 -0
  97. package/es/components/eftpos/hooks.d.ts +1 -0
  98. package/es/components/eftpos/icon/apiKey.d.ts +1 -0
  99. package/es/components/eftpos/icon/device.d.ts +1 -0
  100. package/es/components/eftpos/index.d.ts +1 -0
  101. package/es/components/eftpos/pos.d.ts +1 -0
  102. package/es/components/eftpos/receipt/index.d.ts +1 -0
  103. package/es/components/eftpos/surcharge/index.d.ts +1 -0
  104. package/es/components/eftposPay/amount.d.ts +2 -1
  105. package/es/components/eftposPay/app.d.ts +1 -0
  106. package/es/components/eftposPay/component/alert/warn.d.ts +1 -0
  107. package/es/components/eftposPay/component/fail/failCustom.d.ts +1 -0
  108. package/es/components/eftposPay/component/fail/network.d.ts +1 -0
  109. package/es/components/eftposPay/component/fail/unknow.d.ts +1 -0
  110. package/es/components/eftposPay/component/header/titlebar.d.ts +1 -0
  111. package/es/components/eftposPay/component/manual/index.d.ts +1 -0
  112. package/es/components/eftposPay/component/signature/index.d.ts +1 -0
  113. package/es/components/eftposPay/component/step/index.d.ts +1 -0
  114. package/es/components/eftposPay/component/step/step.d.ts +1 -0
  115. package/es/components/eftposPay/device.d.ts +2 -1
  116. package/es/components/eftposPay/hooks.d.ts +2 -2
  117. package/es/components/eftposPay/index.d.ts +1 -0
  118. package/es/components/eftposPay/linkly/index.d.ts +1 -0
  119. package/es/components/eftposPay/pay.d.ts +1 -0
  120. package/es/components/eftposPay/payo/config.d.ts +1 -0
  121. package/es/components/eftposPay/store/index.d.ts +6 -6
  122. package/es/components/eftposPay/tip.d.ts +1 -0
  123. package/es/components/eftposPay/tyro/hooks.d.ts +1 -0
  124. package/es/components/eftposPay/windcave/receiptAction.d.ts +1 -0
  125. package/es/components/eftposPay/windcave/windcave.d.ts +1 -0
  126. package/es/components/eventBooking/components/ErrorTip/index.d.ts +1 -0
  127. package/es/components/eventBooking/components/Provider/Cart/ContinueButton/index.d.ts +1 -0
  128. package/es/components/eventBooking/components/Provider/Cart/Deposit/index.d.ts +1 -0
  129. package/es/components/eventBooking/components/Provider/Cart/Item/Total.d.ts +1 -0
  130. package/es/components/eventBooking/components/Provider/Cart/Item/index.d.ts +1 -0
  131. package/es/components/eventBooking/components/Provider/Cart/index.d.ts +1 -0
  132. package/es/components/eventBooking/components/Provider/Content/index.d.ts +1 -0
  133. package/es/components/eventBooking/components/Provider/EmptyHolderModal/index.d.ts +1 -0
  134. package/es/components/eventBooking/components/Provider/Event/index.d.ts +1 -0
  135. package/es/components/eventBooking/components/Provider/Footer/index.d.ts +1 -0
  136. package/es/components/eventBooking/components/Provider/Header/index.d.ts +1 -0
  137. package/es/components/eventBooking/components/Provider/Information/index.d.ts +1 -0
  138. package/es/components/eventBooking/components/Provider/InformationOptionsModal/index.d.ts +1 -0
  139. package/es/components/eventBooking/components/Provider/OrderProductModal/index.d.ts +1 -0
  140. package/es/components/eventBooking/components/Provider/RemoveOptionConfirmModal.d.ts +1 -0
  141. package/es/components/eventBooking/components/Provider/Resource/index.d.ts +1 -0
  142. package/es/components/eventBooking/components/Provider/SelectHolderModal.d.ts +1 -0
  143. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateStatus/index.d.ts +1 -0
  144. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/CallToBook/index.d.ts +1 -0
  145. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/WeekItem/index.d.ts +1 -0
  146. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/index.d.ts +1 -0
  147. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/DayItem/index.d.ts +1 -0
  148. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/index.d.ts +1 -0
  149. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Status/index.d.ts +1 -0
  150. package/es/components/eventBooking/components/bookingDetailModal/components/BookingOptions.d.ts +1 -0
  151. package/es/components/eventBooking/components/bookingDetailModal/components/Resource.d.ts +1 -0
  152. package/es/components/eventBooking/components/bookingDetailModal/components/Schedule.d.ts +1 -0
  153. package/es/components/eventBooking/components/scheduleCalendar/ProductItem/index.d.ts +1 -0
  154. package/es/components/eventBooking/components/scheduleCalendar/calendarItem.d.ts +1 -0
  155. package/es/components/eventBooking/components/scheduleCalendar/components/ScheduleTimeItem/index.d.ts +1 -0
  156. package/es/components/eventBooking/index.d.ts +1 -0
  157. package/es/components/login/index.d.ts +1 -0
  158. package/es/components/pay/toC/PaymentMethods/MWCreditCard/TDSPay/ThreedsLoading/index.d.ts +1 -0
  159. package/es/components/pay/toC/PaymentMethods/StripePay/Stripe/Finish/index.d.ts +1 -0
  160. package/es/components/pay/toC/PaymentMethods/StripePay/Stripe/StripeSDK/SDK.d.ts +1 -0
  161. package/es/components/pay/toC/PaymentMethods/StripePay/Stripe/StripeSDK/index.d.ts +1 -0
  162. package/es/components/pay/toC/PaymentMethods/StripePay/Stripe/components/PageLoading/index.d.ts +1 -0
  163. package/es/components/pay/toC/PaymentMethods/StripePay/Stripe/components/SetupForm/PaymentRequestForm.d.ts +1 -0
  164. package/es/components/pay/toC/PaymentMethods/StripePay/Stripe/components/SetupForm/index.d.ts +1 -0
  165. package/es/components/pay/toC/PaymentMethods/StripePay/Stripe/index.d.ts +1 -0
  166. package/es/components/pay/toC/WalletPassBlock/components/WalletUseList/index.d.ts +1 -0
  167. package/es/components/pay/toC/index.js +14 -11
  168. package/es/components/pisellSelectCustomerModal/RightPanel/Add/BirthdayField/index.d.ts +1 -0
  169. package/es/components/pisellSelectCustomerModal/RightPanel/Add/GenderField/index.d.ts +1 -0
  170. package/es/components/pisellSelectCustomerModal/RightPanel/Add/PhoneField/index.d.ts +1 -0
  171. package/es/components/pisellSelectCustomerModal/RightPanel/Add/index.d.ts +1 -0
  172. package/es/components/pisellSelectCustomerModal/RightPanel/List/index.d.ts +1 -0
  173. package/es/components/pisellSelectCustomerModal/RightPanel/index.d.ts +1 -0
  174. package/es/components/pisellSelectCustomerModal/index.d.ts +1 -0
  175. package/es/components/productExtension/fields/Actor/index.d.ts +1 -0
  176. package/es/components/productExtension/fields/Forms/index.d.ts +1 -0
  177. package/es/components/productExtension/fields/SelectProducts/ProductItem/index.d.ts +1 -0
  178. package/es/components/productExtension/fields/SelectProducts/ProductItemPreview/index.d.ts +1 -0
  179. package/es/components/productExtension/fields/SelectProducts/index.d.ts +1 -0
  180. package/es/components/productExtension/fields/SelectResourcesTable/index.d.ts +1 -0
  181. package/es/components/productExtension/index.d.ts +1 -0
  182. package/es/components/productSelect/components/TabProduct/index.d.ts +1 -0
  183. package/es/components/productSelect/components/productGroup/index.d.ts +1 -0
  184. package/es/components/ruleSetting/index.d.ts +1 -0
  185. package/es/components/ruleSetting/ruleBorder/index.d.ts +1 -0
  186. package/es/components/schedules/calendar/calendarItem.d.ts +1 -0
  187. package/es/components/schedules/calendar/index.d.ts +1 -0
  188. package/es/components/schedules/components/CurrentDay/index.d.ts +1 -0
  189. package/es/components/schedules/components/ScheduleDetailList/index.d.ts +1 -0
  190. package/es/components/schedules/components/ScheduleList/RenderScheduleItem/index.d.ts +1 -0
  191. package/es/components/schedules/components/ScheduleList/index.d.ts +1 -0
  192. package/es/components/schedules/products/ProductDetailDrawer/ProductDetail/MaxParticipantsModule/index.d.ts +1 -0
  193. package/es/components/schedules/products/ProductDetailDrawer/ProductDetail/ResourcesModule/index.d.ts +1 -0
  194. package/es/components/schedules/products/ProductDetailDrawer/ProductDetail/SchedulesModule/AddSchedules/index.d.ts +1 -0
  195. package/es/components/schedules/products/ProductDetailDrawer/ProductDetail/SchedulesModule/index.d.ts +1 -0
  196. package/es/components/schedules/products/ProductDetailDrawer/ProductDetail/index.d.ts +1 -0
  197. package/es/components/schedules/products/ProductDetailDrawer/ProductDetailByDate/index.d.ts +1 -0
  198. package/es/components/schedules/products/ProductDetailDrawer/index.d.ts +1 -0
  199. package/es/components/schedules/products/index.d.ts +1 -0
  200. package/es/components/schedules/products/list/ProductItem/index.d.ts +1 -0
  201. package/es/components/schedules/products/list/index.d.ts +1 -0
  202. package/es/components/schedules/resources/index.d.ts +1 -0
  203. package/es/components/schedules/resources/list/index.d.ts +1 -0
  204. package/es/components/schedules/resources/relationProduct/index.d.ts +1 -0
  205. package/es/components/schedules/schedules/AllSchedules/index.d.ts +1 -0
  206. package/es/components/schedules/schedules/ScheduleDetailDrawer/index.d.ts +1 -0
  207. package/es/components/schedules/schedules/index.d.ts +1 -0
  208. package/es/components/shoppingCart/components/Cart/Product.d.ts +1 -0
  209. package/es/components/shoppingCart/components/Cart/index.d.ts +1 -0
  210. package/es/components/shoppingCart/components/Empty/index.d.ts +1 -0
  211. package/es/components/shoppingCart/components/Render/index.d.ts +1 -0
  212. package/es/components/shoppingCart/hooks/useAddService.d.ts +1 -0
  213. package/es/components/shoppingCart/hooks/useClearCart.d.ts +1 -0
  214. package/es/components/shoppingCart/index.d.ts +1 -0
  215. package/es/components/taxSelect/index.d.ts +1 -0
  216. package/es/components/ticketBooking/components/addServiceVariant/index.d.ts +1 -0
  217. package/es/components/ticketBooking/components/menuBar/index.d.ts +1 -0
  218. package/es/components/ticketBooking/components/ticketBooking/index.less +2 -1
  219. package/es/components/wallet/hooks/useWalletCard.d.ts +1 -0
  220. package/es/components/workSpaceList/components/Modal/index.d.ts +1 -0
  221. package/es/components/workSpaceList/components/SearchWorkspaceAndBase/index.d.ts +1 -0
  222. package/es/hooks/usePaymentLogger.d.ts +1 -0
  223. package/es/index.d.ts +3 -0
  224. package/es/index.js +4 -1
  225. package/es/plus/clientName/index.d.ts +5 -0
  226. package/es/plus/clientName/index.js +18 -0
  227. package/es/plus/clientName/index.less +10 -0
  228. package/es/plus/clientName/type.d.ts +13 -0
  229. package/es/plus/clientName/type.js +1 -0
  230. package/es/plus/clientName/utils.d.ts +2 -0
  231. package/es/plus/clientName/utils.js +18 -0
  232. package/es/plus/contactInfo/components/Avatar/index.d.ts +10 -0
  233. package/es/plus/contactInfo/components/Avatar/index.js +30 -0
  234. package/es/plus/contactInfo/components/SwipeAction/index.d.ts +46 -0
  235. package/es/plus/contactInfo/components/SwipeAction/index.js +360 -0
  236. package/es/plus/contactInfo/components/SwipeAction/index.less +74 -0
  237. package/es/plus/contactInfo/index.d.ts +6 -0
  238. package/es/plus/contactInfo/index.js +198 -0
  239. package/es/plus/contactInfo/index.less +621 -0
  240. package/es/plus/contactInfo/locales.d.ts +15 -0
  241. package/es/plus/contactInfo/locales.js +14 -0
  242. package/es/plus/contactInfo/types.d.ts +91 -0
  243. package/es/plus/contactInfo/types.js +1 -0
  244. package/es/plus/contactInfo/utils.d.ts +7 -0
  245. package/es/plus/contactInfo/utils.js +50 -0
  246. package/es/plus/contactInfoModal/ContactInfoContent.d.ts +4 -0
  247. package/es/plus/contactInfoModal/ContactInfoContent.js +74 -0
  248. package/es/plus/contactInfoModal/index.d.ts +41 -0
  249. package/es/plus/contactInfoModal/index.js +155 -0
  250. package/es/plus/contactInfoModal/index.less +19 -0
  251. package/es/plus/contactInfoModal/locales.d.ts +66 -0
  252. package/es/plus/contactInfoModal/locales.js +65 -0
  253. package/es/plus/saasCreateOrganization/components/Header.d.ts +1 -0
  254. package/es/plus/saasCreateOrganization/index.d.ts +1 -0
  255. package/es/plus/saasRegister/components/EntryEmail.d.ts +1 -0
  256. package/es/plus/saasRegister/components/EntryInfo.d.ts +1 -0
  257. package/es/plus/saasRegister/components/GoLogin.d.ts +1 -0
  258. package/es/plus/saasRegister/components/Header.d.ts +1 -0
  259. package/es/plus/saasRegister/components/VerifyError.d.ts +1 -0
  260. package/es/plus/saasRegister/components/VerifyingLink.d.ts +1 -0
  261. package/es/plus/saasRegister/components/VertifyEmail.d.ts +1 -0
  262. package/es/pro/Login2.0/AuthModal.d.ts +143 -0
  263. package/es/pro/Login2.0/AuthModal.js +630 -0
  264. package/es/pro/Login2.0/Login2.d.ts +61 -0
  265. package/es/pro/Login2.0/Login2.js +2235 -0
  266. package/es/pro/Login2.0/Register2.d.ts +65 -0
  267. package/es/pro/Login2.0/Register2.js +1501 -0
  268. package/es/pro/Login2.0/components/ForgotPasswordFlow.d.ts +31 -0
  269. package/es/pro/Login2.0/components/ForgotPasswordFlow.js +330 -0
  270. package/es/pro/Login2.0/components/LegalTerms.d.ts +8 -0
  271. package/es/pro/Login2.0/components/LegalTerms.js +51 -0
  272. package/es/pro/Login2.0/components/LegalTerms.less +74 -0
  273. package/es/pro/Login2.0/components/LoginCodeInput.d.ts +27 -0
  274. package/es/pro/Login2.0/components/LoginCodeInput.js +207 -0
  275. package/es/pro/Login2.0/components/OAuthButtonGroup.d.ts +22 -0
  276. package/es/pro/Login2.0/components/OAuthButtonGroup.js +55 -0
  277. package/es/pro/Login2.0/components/PhoneInput.d.ts +53 -0
  278. package/es/pro/Login2.0/components/PhoneInput.js +414 -0
  279. package/es/pro/Login2.0/components/PhoneInput.less +148 -0
  280. package/es/pro/Login2.0/components/phoneValidation.d.ts +17 -0
  281. package/es/pro/Login2.0/components/phoneValidation.js +228 -0
  282. package/es/pro/Login2.0/hooks/index.d.ts +2 -0
  283. package/es/pro/Login2.0/hooks/index.js +1 -0
  284. package/es/pro/Login2.0/hooks/usePasswordValidationRules.d.ts +24 -0
  285. package/es/pro/Login2.0/hooks/usePasswordValidationRules.js +87 -0
  286. package/es/pro/Login2.0/hooks/useRegisterFlow.d.ts +39 -0
  287. package/es/pro/Login2.0/hooks/useRegisterFlow.js +158 -0
  288. package/es/pro/Login2.0/hooks/useRegistrationMethods.d.ts +9 -0
  289. package/es/pro/Login2.0/hooks/useRegistrationMethods.js +31 -0
  290. package/es/pro/Login2.0/index.js +8 -0
  291. package/es/pro/Login2.0/index.less +1002 -0
  292. package/es/pro/Login2.0/locales.d.ts +543 -0
  293. package/es/pro/Login2.0/locales.js +622 -0
  294. package/es/pro/Login2.0/shared/Header.d.ts +11 -0
  295. package/es/pro/Login2.0/shared/Header.js +42 -0
  296. package/es/pro/Login2.0/shared/OAuthButtons.d.ts +11 -0
  297. package/es/pro/Login2.0/shared/OAuthButtons.js +59 -0
  298. package/es/pro/Login2.0/shared/registerFlow.d.ts +116 -0
  299. package/es/pro/Login2.0/shared/registerFlow.js +171 -0
  300. package/es/pro/Login2.0/shared/types.d.ts +232 -0
  301. package/es/pro/Login2.0/shared/types.js +1 -0
  302. package/es/pro/Login2.0/steps/CodeInput.d.ts +24 -0
  303. package/es/pro/Login2.0/steps/CodeInput.js +209 -0
  304. package/es/pro/Login2.0/steps/EmailAlreadyRegistered.d.ts +12 -0
  305. package/es/pro/Login2.0/steps/EmailAlreadyRegistered.js +35 -0
  306. package/es/pro/Login2.0/steps/EmailLinkAlreadyUsed.d.ts +7 -0
  307. package/es/pro/Login2.0/steps/EmailLinkAlreadyUsed.js +25 -0
  308. package/es/pro/Login2.0/steps/EmailLinkExpired.d.ts +9 -0
  309. package/es/pro/Login2.0/steps/EmailLinkExpired.js +33 -0
  310. package/es/pro/Login2.0/steps/SetPassword.d.ts +19 -0
  311. package/es/pro/Login2.0/steps/SetPassword.js +148 -0
  312. package/es/pro/Login2.0/steps/VerificationSuccess.d.ts +8 -0
  313. package/es/pro/Login2.0/steps/VerificationSuccess.js +35 -0
  314. package/es/pro/Login2.0/steps/VerifyingEmailLink.d.ts +7 -0
  315. package/es/pro/Login2.0/steps/VerifyingEmailLink.js +17 -0
  316. package/es/pro/Login2.0/steps/WaitEmailLink.d.ts +18 -0
  317. package/es/pro/Login2.0/steps/WaitEmailLink.js +54 -0
  318. package/es/pro/Login2.0/steps/index.d.ts +19 -0
  319. package/es/pro/Login2.0/steps/index.js +11 -0
  320. package/es/pro/Login2.0/steps/steps.less +423 -0
  321. package/es/pro/Login2.0/types.d.ts +167 -0
  322. package/es/pro/Login2.0/types.js +1 -0
  323. package/es/pro/pisellPaymentList/example.d.ts +1 -0
  324. package/lib/businessModel/SalesModel/index.d.ts +1 -0
  325. package/lib/components/Sales/Summary/utils.d.ts +1 -1
  326. package/lib/components/appointmentBooking/components/Cart/Item/Total.d.ts +1 -0
  327. package/lib/components/appointmentBooking/components/Cart/Item/index.d.ts +2 -1
  328. package/lib/components/appointmentBooking/components/Cart/Item/index.js +5 -3
  329. package/lib/components/appointmentBooking/components/Cart/index.d.ts +1 -0
  330. package/lib/components/appointmentBooking/components/ConfirmInformation/index.js +156 -13
  331. package/lib/components/appointmentBooking/components/ConfirmInformation/index.less +15 -0
  332. package/lib/components/appointmentBooking/components/Content/index.d.ts +1 -0
  333. package/lib/components/appointmentBooking/components/Deposit/index.d.ts +1 -0
  334. package/lib/components/appointmentBooking/components/Footer/index.d.ts +1 -0
  335. package/lib/components/appointmentBooking/components/Guest/components/InformationOptionsModal/index.d.ts +1 -0
  336. package/lib/components/appointmentBooking/components/Header/index.d.ts +1 -0
  337. package/lib/components/appointmentBooking/components/Voucher/index.d.ts +1 -0
  338. package/lib/components/appointmentBooking/deposit/index.d.ts +1 -0
  339. package/lib/components/appointmentBooking/hooks.d.ts +1 -0
  340. package/lib/components/appointmentBooking/hooks.js +73 -35
  341. package/lib/components/appointmentBooking/index.d.ts +1 -0
  342. package/lib/components/appointmentBooking/locales.d.ts +3 -0
  343. package/lib/components/appointmentBooking/locales.js +6 -3
  344. package/lib/components/booking/components/TabProduct/index.d.ts +1 -0
  345. package/lib/components/booking/components/TabProduct/productItem/index.d.ts +1 -0
  346. package/lib/components/booking/components/TabProduct/selectProductItem/index.d.ts +1 -0
  347. package/lib/components/booking/components/collapsibleList/utils.d.ts +1 -0
  348. package/lib/components/booking/components/customSelect/index.js +1 -1
  349. package/lib/components/booking/components/emptyBooking/index.d.ts +1 -0
  350. package/lib/components/booking/components/footer/FooterMenus/index.d.ts +1 -0
  351. package/lib/components/booking/components/footer/index.d.ts +1 -0
  352. package/lib/components/booking/components/footer/index.js +4 -1
  353. package/lib/components/booking/components/footer/utils.js +93 -68
  354. package/lib/components/booking/components/formItemChildrenWrap/index.d.ts +1 -0
  355. package/lib/components/booking/deposit/index.d.ts +1 -0
  356. package/lib/components/booking/forms/footer.d.ts +1 -0
  357. package/lib/components/booking/forms/footer.js +29 -11
  358. package/lib/components/booking/forms/sendModal/useSendModal.d.ts +1 -0
  359. package/lib/components/booking/forms/single/index.d.ts +1 -0
  360. package/lib/components/booking/forms/table/index.d.ts +1 -0
  361. package/lib/components/booking/hooks/useClearCart.d.ts +1 -0
  362. package/lib/components/booking/hooks/useQuotation.d.ts +1 -0
  363. package/lib/components/booking/info/addServiceVariant/index.d.ts +1 -0
  364. package/lib/components/booking/info/client/index.js +14 -1
  365. package/lib/components/booking/info/clientVariant/hooks/useClientFn.d.ts +1 -0
  366. package/lib/components/booking/info/clientVariant/hooks/useClientFn.js +7 -2
  367. package/lib/components/booking/info/clientVariant/hooks/useIsLowSpeedNetwork.d.ts +1 -0
  368. package/lib/components/booking/info/clientVariant/vertical/SelectDrawer.js +11 -4
  369. package/lib/components/booking/info/clientVariant/vertical/index.js +34 -17
  370. package/lib/components/booking/info/date/index.d.ts +1 -0
  371. package/lib/components/booking/info/dateRange/index.d.ts +1 -0
  372. package/lib/components/booking/info/header/index.d.ts +1 -0
  373. package/lib/components/booking/info/hooks/useInfoHolder.d.ts +1 -0
  374. package/lib/components/booking/info/index.d.ts +1 -0
  375. package/lib/components/booking/info/main.js +5 -4
  376. package/lib/components/booking/info/model.js +5 -0
  377. package/lib/components/booking/info/notes/index.d.ts +1 -0
  378. package/lib/components/booking/info/service/Lists.d.ts +1 -0
  379. package/lib/components/booking/info/service/actions/index.d.ts +1 -0
  380. package/lib/components/booking/info/service/addService/index.d.ts +1 -0
  381. package/lib/components/booking/info/service/addTimeModal/index.d.ts +1 -0
  382. package/lib/components/booking/info/service/editService/BookingList/index.d.ts +1 -0
  383. package/lib/components/booking/info/service/like/index.d.ts +1 -0
  384. package/lib/components/booking/info/service/serviceItem/index.d.ts +1 -0
  385. package/lib/components/booking/info/service/serviceList/index.d.ts +1 -0
  386. package/lib/components/booking/info/service2/Lists.d.ts +1 -0
  387. package/lib/components/booking/info/service2/utils.d.ts +1 -1
  388. package/lib/components/booking/info2/index.js +5 -4
  389. package/lib/components/booking/info2/service/actions/index.d.ts +1 -0
  390. package/lib/components/booking/info2/service/addTimeModal/index.d.ts +1 -0
  391. package/lib/components/booking/info2/service/contactInfoMode/index.d.ts +3 -0
  392. package/lib/components/booking/info2/service/contactInfoMode/index.js +111 -0
  393. package/lib/components/booking/info2/service/serviceItem/index.d.ts +1 -0
  394. package/lib/components/booking/info2/service/serviceList/index.d.ts +1 -0
  395. package/lib/components/booking/locales.d.ts +6 -0
  396. package/lib/components/booking/locales.js +12 -3
  397. package/lib/components/booking/materiels/contacts/index.d.ts +1 -0
  398. package/lib/components/booking/materiels/duration/index.d.ts +1 -0
  399. package/lib/components/booking/materiels/holder/index.d.ts +1 -0
  400. package/lib/components/booking/materiels/startTime/index.d.ts +1 -0
  401. package/lib/components/booking/model.d.ts +4 -0
  402. package/lib/components/booking/model.js +3 -0
  403. package/lib/components/booking/notes/NoteBlock/NoteItem/index.d.ts +1 -0
  404. package/lib/components/booking/notes/NoteBlock/index.d.ts +1 -0
  405. package/lib/components/booking/notes/addNote/index.d.ts +1 -0
  406. package/lib/components/booking/utils.d.ts +2 -2
  407. package/lib/components/eftpos/deviceList/index.d.ts +1 -0
  408. package/lib/components/eftpos/form/index.d.ts +1 -0
  409. package/lib/components/eftpos/group/index.d.ts +1 -0
  410. package/lib/components/eftpos/hooks.d.ts +1 -0
  411. package/lib/components/eftpos/icon/apiKey.d.ts +1 -0
  412. package/lib/components/eftpos/icon/device.d.ts +1 -0
  413. package/lib/components/eftpos/index.d.ts +1 -0
  414. package/lib/components/eftpos/pos.d.ts +1 -0
  415. package/lib/components/eftpos/receipt/index.d.ts +1 -0
  416. package/lib/components/eftpos/surcharge/index.d.ts +1 -0
  417. package/lib/components/eftposPay/amount.d.ts +2 -1
  418. package/lib/components/eftposPay/app.d.ts +1 -0
  419. package/lib/components/eftposPay/component/alert/warn.d.ts +1 -0
  420. package/lib/components/eftposPay/component/fail/failCustom.d.ts +1 -0
  421. package/lib/components/eftposPay/component/fail/network.d.ts +1 -0
  422. package/lib/components/eftposPay/component/fail/unknow.d.ts +1 -0
  423. package/lib/components/eftposPay/component/header/titlebar.d.ts +1 -0
  424. package/lib/components/eftposPay/component/manual/index.d.ts +1 -0
  425. package/lib/components/eftposPay/component/signature/index.d.ts +1 -0
  426. package/lib/components/eftposPay/component/step/index.d.ts +1 -0
  427. package/lib/components/eftposPay/component/step/step.d.ts +1 -0
  428. package/lib/components/eftposPay/device.d.ts +2 -1
  429. package/lib/components/eftposPay/hooks.d.ts +2 -2
  430. package/lib/components/eftposPay/index.d.ts +1 -0
  431. package/lib/components/eftposPay/linkly/index.d.ts +1 -0
  432. package/lib/components/eftposPay/pay.d.ts +1 -0
  433. package/lib/components/eftposPay/payo/config.d.ts +1 -0
  434. package/lib/components/eftposPay/store/index.d.ts +6 -6
  435. package/lib/components/eftposPay/tip.d.ts +1 -0
  436. package/lib/components/eftposPay/tyro/hooks.d.ts +1 -0
  437. package/lib/components/eftposPay/windcave/receiptAction.d.ts +1 -0
  438. package/lib/components/eftposPay/windcave/windcave.d.ts +1 -0
  439. package/lib/components/eventBooking/components/ErrorTip/index.d.ts +1 -0
  440. package/lib/components/eventBooking/components/Provider/Cart/ContinueButton/index.d.ts +1 -0
  441. package/lib/components/eventBooking/components/Provider/Cart/Deposit/index.d.ts +1 -0
  442. package/lib/components/eventBooking/components/Provider/Cart/Item/Total.d.ts +1 -0
  443. package/lib/components/eventBooking/components/Provider/Cart/Item/index.d.ts +1 -0
  444. package/lib/components/eventBooking/components/Provider/Cart/index.d.ts +1 -0
  445. package/lib/components/eventBooking/components/Provider/Content/index.d.ts +1 -0
  446. package/lib/components/eventBooking/components/Provider/EmptyHolderModal/index.d.ts +1 -0
  447. package/lib/components/eventBooking/components/Provider/Event/index.d.ts +1 -0
  448. package/lib/components/eventBooking/components/Provider/Footer/index.d.ts +1 -0
  449. package/lib/components/eventBooking/components/Provider/Header/index.d.ts +1 -0
  450. package/lib/components/eventBooking/components/Provider/Information/index.d.ts +1 -0
  451. package/lib/components/eventBooking/components/Provider/InformationOptionsModal/index.d.ts +1 -0
  452. package/lib/components/eventBooking/components/Provider/OrderProductModal/index.d.ts +1 -0
  453. package/lib/components/eventBooking/components/Provider/RemoveOptionConfirmModal.d.ts +1 -0
  454. package/lib/components/eventBooking/components/Provider/Resource/index.d.ts +1 -0
  455. package/lib/components/eventBooking/components/Provider/SelectHolderModal.d.ts +1 -0
  456. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateStatus/index.d.ts +1 -0
  457. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/CallToBook/index.d.ts +1 -0
  458. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/WeekItem/index.d.ts +1 -0
  459. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/index.d.ts +1 -0
  460. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/DayItem/index.d.ts +1 -0
  461. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/index.d.ts +1 -0
  462. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Status/index.d.ts +1 -0
  463. package/lib/components/eventBooking/components/bookingDetailModal/components/BookingOptions.d.ts +1 -0
  464. package/lib/components/eventBooking/components/bookingDetailModal/components/Resource.d.ts +1 -0
  465. package/lib/components/eventBooking/components/bookingDetailModal/components/Schedule.d.ts +1 -0
  466. package/lib/components/eventBooking/components/scheduleCalendar/ProductItem/index.d.ts +1 -0
  467. package/lib/components/eventBooking/components/scheduleCalendar/calendarItem.d.ts +1 -0
  468. package/lib/components/eventBooking/components/scheduleCalendar/components/ScheduleTimeItem/index.d.ts +1 -0
  469. package/lib/components/eventBooking/index.d.ts +1 -0
  470. package/lib/components/login/index.d.ts +1 -0
  471. package/lib/components/pay/toC/PaymentMethods/MWCreditCard/TDSPay/ThreedsLoading/index.d.ts +1 -0
  472. package/lib/components/pay/toC/PaymentMethods/StripePay/Stripe/Finish/index.d.ts +1 -0
  473. package/lib/components/pay/toC/PaymentMethods/StripePay/Stripe/StripeSDK/SDK.d.ts +1 -0
  474. package/lib/components/pay/toC/PaymentMethods/StripePay/Stripe/StripeSDK/index.d.ts +1 -0
  475. package/lib/components/pay/toC/PaymentMethods/StripePay/Stripe/components/PageLoading/index.d.ts +1 -0
  476. package/lib/components/pay/toC/PaymentMethods/StripePay/Stripe/components/SetupForm/PaymentRequestForm.d.ts +1 -0
  477. package/lib/components/pay/toC/PaymentMethods/StripePay/Stripe/components/SetupForm/index.d.ts +1 -0
  478. package/lib/components/pay/toC/PaymentMethods/StripePay/Stripe/index.d.ts +1 -0
  479. package/lib/components/pay/toC/WalletPassBlock/components/WalletUseList/index.d.ts +1 -0
  480. package/lib/components/pay/toC/index.js +7 -1
  481. package/lib/components/pisellSelectCustomerModal/RightPanel/Add/BirthdayField/index.d.ts +1 -0
  482. package/lib/components/pisellSelectCustomerModal/RightPanel/Add/GenderField/index.d.ts +1 -0
  483. package/lib/components/pisellSelectCustomerModal/RightPanel/Add/PhoneField/index.d.ts +1 -0
  484. package/lib/components/pisellSelectCustomerModal/RightPanel/Add/index.d.ts +1 -0
  485. package/lib/components/pisellSelectCustomerModal/RightPanel/List/index.d.ts +1 -0
  486. package/lib/components/pisellSelectCustomerModal/RightPanel/index.d.ts +1 -0
  487. package/lib/components/pisellSelectCustomerModal/index.d.ts +1 -0
  488. package/lib/components/productExtension/fields/Actor/index.d.ts +1 -0
  489. package/lib/components/productExtension/fields/Forms/index.d.ts +1 -0
  490. package/lib/components/productExtension/fields/SelectProducts/ProductItem/index.d.ts +1 -0
  491. package/lib/components/productExtension/fields/SelectProducts/ProductItemPreview/index.d.ts +1 -0
  492. package/lib/components/productExtension/fields/SelectProducts/index.d.ts +1 -0
  493. package/lib/components/productExtension/fields/SelectResourcesTable/index.d.ts +1 -0
  494. package/lib/components/productExtension/index.d.ts +1 -0
  495. package/lib/components/productSelect/components/TabProduct/index.d.ts +1 -0
  496. package/lib/components/productSelect/components/productGroup/index.d.ts +1 -0
  497. package/lib/components/ruleSetting/index.d.ts +1 -0
  498. package/lib/components/ruleSetting/ruleBorder/index.d.ts +1 -0
  499. package/lib/components/schedules/calendar/calendarItem.d.ts +1 -0
  500. package/lib/components/schedules/calendar/index.d.ts +1 -0
  501. package/lib/components/schedules/components/CurrentDay/index.d.ts +1 -0
  502. package/lib/components/schedules/components/ScheduleDetailList/index.d.ts +1 -0
  503. package/lib/components/schedules/components/ScheduleList/RenderScheduleItem/index.d.ts +1 -0
  504. package/lib/components/schedules/components/ScheduleList/index.d.ts +1 -0
  505. package/lib/components/schedules/products/ProductDetailDrawer/ProductDetail/MaxParticipantsModule/index.d.ts +1 -0
  506. package/lib/components/schedules/products/ProductDetailDrawer/ProductDetail/ResourcesModule/index.d.ts +1 -0
  507. package/lib/components/schedules/products/ProductDetailDrawer/ProductDetail/SchedulesModule/AddSchedules/index.d.ts +1 -0
  508. package/lib/components/schedules/products/ProductDetailDrawer/ProductDetail/SchedulesModule/index.d.ts +1 -0
  509. package/lib/components/schedules/products/ProductDetailDrawer/ProductDetail/index.d.ts +1 -0
  510. package/lib/components/schedules/products/ProductDetailDrawer/ProductDetailByDate/index.d.ts +1 -0
  511. package/lib/components/schedules/products/ProductDetailDrawer/index.d.ts +1 -0
  512. package/lib/components/schedules/products/index.d.ts +1 -0
  513. package/lib/components/schedules/products/list/ProductItem/index.d.ts +1 -0
  514. package/lib/components/schedules/products/list/index.d.ts +1 -0
  515. package/lib/components/schedules/resources/index.d.ts +1 -0
  516. package/lib/components/schedules/resources/list/index.d.ts +1 -0
  517. package/lib/components/schedules/resources/relationProduct/index.d.ts +1 -0
  518. package/lib/components/schedules/schedules/AllSchedules/index.d.ts +1 -0
  519. package/lib/components/schedules/schedules/ScheduleDetailDrawer/index.d.ts +1 -0
  520. package/lib/components/schedules/schedules/index.d.ts +1 -0
  521. package/lib/components/shoppingCart/components/Cart/Product.d.ts +1 -0
  522. package/lib/components/shoppingCart/components/Cart/index.d.ts +1 -0
  523. package/lib/components/shoppingCart/components/Empty/index.d.ts +1 -0
  524. package/lib/components/shoppingCart/components/Render/index.d.ts +1 -0
  525. package/lib/components/shoppingCart/hooks/useAddService.d.ts +1 -0
  526. package/lib/components/shoppingCart/hooks/useClearCart.d.ts +1 -0
  527. package/lib/components/shoppingCart/index.d.ts +1 -0
  528. package/lib/components/taxSelect/index.d.ts +1 -0
  529. package/lib/components/ticketBooking/components/addServiceVariant/index.d.ts +1 -0
  530. package/lib/components/ticketBooking/components/menuBar/index.d.ts +1 -0
  531. package/lib/components/ticketBooking/components/ticketBooking/index.less +2 -1
  532. package/lib/components/wallet/hooks/useWalletCard.d.ts +1 -0
  533. package/lib/components/workSpaceList/components/Modal/index.d.ts +1 -0
  534. package/lib/components/workSpaceList/components/SearchWorkspaceAndBase/index.d.ts +1 -0
  535. package/lib/hooks/usePaymentLogger.d.ts +1 -0
  536. package/lib/index.d.ts +3 -0
  537. package/lib/index.js +13 -0
  538. package/lib/plus/clientName/index.d.ts +5 -0
  539. package/lib/plus/clientName/index.js +53 -0
  540. package/lib/plus/clientName/index.less +10 -0
  541. package/lib/plus/clientName/type.d.ts +13 -0
  542. package/lib/plus/clientName/type.js +17 -0
  543. package/lib/plus/clientName/utils.d.ts +2 -0
  544. package/lib/plus/clientName/utils.js +43 -0
  545. package/lib/plus/contactInfo/components/Avatar/index.d.ts +10 -0
  546. package/lib/plus/contactInfo/components/Avatar/index.js +56 -0
  547. package/lib/plus/contactInfo/components/SwipeAction/index.d.ts +46 -0
  548. package/lib/plus/contactInfo/components/SwipeAction/index.js +373 -0
  549. package/lib/plus/contactInfo/components/SwipeAction/index.less +74 -0
  550. package/lib/plus/contactInfo/index.d.ts +6 -0
  551. package/lib/plus/contactInfo/index.js +226 -0
  552. package/lib/plus/contactInfo/index.less +621 -0
  553. package/lib/plus/contactInfo/locales.d.ts +15 -0
  554. package/lib/plus/contactInfo/locales.js +38 -0
  555. package/lib/plus/contactInfo/types.d.ts +91 -0
  556. package/lib/plus/contactInfo/types.js +17 -0
  557. package/lib/plus/contactInfo/utils.d.ts +7 -0
  558. package/lib/plus/contactInfo/utils.js +64 -0
  559. package/lib/plus/contactInfoModal/ContactInfoContent.d.ts +4 -0
  560. package/lib/plus/contactInfoModal/ContactInfoContent.js +129 -0
  561. package/lib/plus/contactInfoModal/index.d.ts +41 -0
  562. package/lib/plus/contactInfoModal/index.js +139 -0
  563. package/lib/plus/contactInfoModal/index.less +19 -0
  564. package/lib/plus/contactInfoModal/locales.d.ts +66 -0
  565. package/lib/plus/contactInfoModal/locales.js +89 -0
  566. package/lib/plus/saasCreateOrganization/components/Header.d.ts +1 -0
  567. package/lib/plus/saasCreateOrganization/index.d.ts +1 -0
  568. package/lib/plus/saasRegister/components/EntryEmail.d.ts +1 -0
  569. package/lib/plus/saasRegister/components/EntryInfo.d.ts +1 -0
  570. package/lib/plus/saasRegister/components/GoLogin.d.ts +1 -0
  571. package/lib/plus/saasRegister/components/Header.d.ts +1 -0
  572. package/lib/plus/saasRegister/components/VerifyError.d.ts +1 -0
  573. package/lib/plus/saasRegister/components/VerifyingLink.d.ts +1 -0
  574. package/lib/plus/saasRegister/components/VertifyEmail.d.ts +1 -0
  575. package/lib/pro/Login2.0/AuthModal.d.ts +143 -0
  576. package/lib/pro/Login2.0/AuthModal.js +503 -0
  577. package/lib/pro/Login2.0/Login2.d.ts +61 -0
  578. package/lib/pro/Login2.0/Login2.js +1544 -0
  579. package/lib/pro/Login2.0/Register2.d.ts +65 -0
  580. package/lib/pro/Login2.0/Register2.js +1062 -0
  581. package/lib/pro/Login2.0/components/ForgotPasswordFlow.d.ts +31 -0
  582. package/lib/pro/Login2.0/components/ForgotPasswordFlow.js +213 -0
  583. package/lib/pro/Login2.0/components/LegalTerms.d.ts +8 -0
  584. package/lib/pro/Login2.0/components/LegalTerms.js +76 -0
  585. package/lib/pro/Login2.0/components/LegalTerms.less +74 -0
  586. package/lib/pro/Login2.0/components/LoginCodeInput.d.ts +27 -0
  587. package/lib/pro/Login2.0/components/LoginCodeInput.js +161 -0
  588. package/lib/pro/Login2.0/components/OAuthButtonGroup.d.ts +22 -0
  589. package/lib/pro/Login2.0/components/OAuthButtonGroup.js +87 -0
  590. package/lib/pro/Login2.0/components/PhoneInput.d.ts +53 -0
  591. package/lib/pro/Login2.0/components/PhoneInput.js +263 -0
  592. package/lib/pro/Login2.0/components/PhoneInput.less +148 -0
  593. package/lib/pro/Login2.0/components/phoneValidation.d.ts +17 -0
  594. package/lib/pro/Login2.0/components/phoneValidation.js +153 -0
  595. package/lib/pro/Login2.0/hooks/index.d.ts +2 -0
  596. package/lib/pro/Login2.0/hooks/index.js +29 -0
  597. package/lib/pro/Login2.0/hooks/usePasswordValidationRules.d.ts +24 -0
  598. package/lib/pro/Login2.0/hooks/usePasswordValidationRules.js +140 -0
  599. package/lib/pro/Login2.0/hooks/useRegisterFlow.d.ts +39 -0
  600. package/lib/pro/Login2.0/hooks/useRegisterFlow.js +149 -0
  601. package/lib/pro/Login2.0/hooks/useRegistrationMethods.d.ts +9 -0
  602. package/lib/pro/Login2.0/hooks/useRegistrationMethods.js +51 -0
  603. package/lib/pro/Login2.0/index.js +45 -0
  604. package/lib/pro/Login2.0/index.less +1002 -0
  605. package/lib/pro/Login2.0/locales.d.ts +543 -0
  606. package/lib/pro/Login2.0/locales.js +646 -0
  607. package/lib/pro/Login2.0/shared/Header.d.ts +11 -0
  608. package/lib/pro/Login2.0/shared/Header.js +81 -0
  609. package/lib/pro/Login2.0/shared/OAuthButtons.d.ts +11 -0
  610. package/lib/pro/Login2.0/shared/OAuthButtons.js +78 -0
  611. package/lib/pro/Login2.0/shared/registerFlow.d.ts +116 -0
  612. package/lib/pro/Login2.0/shared/registerFlow.js +235 -0
  613. package/lib/pro/Login2.0/shared/types.d.ts +232 -0
  614. package/lib/pro/Login2.0/shared/types.js +17 -0
  615. package/lib/pro/Login2.0/steps/CodeInput.d.ts +24 -0
  616. package/lib/pro/Login2.0/steps/CodeInput.js +160 -0
  617. package/lib/pro/Login2.0/steps/EmailAlreadyRegistered.d.ts +12 -0
  618. package/lib/pro/Login2.0/steps/EmailAlreadyRegistered.js +46 -0
  619. package/lib/pro/Login2.0/steps/EmailLinkAlreadyUsed.d.ts +7 -0
  620. package/lib/pro/Login2.0/steps/EmailLinkAlreadyUsed.js +51 -0
  621. package/lib/pro/Login2.0/steps/EmailLinkExpired.d.ts +9 -0
  622. package/lib/pro/Login2.0/steps/EmailLinkExpired.js +51 -0
  623. package/lib/pro/Login2.0/steps/SetPassword.d.ts +19 -0
  624. package/lib/pro/Login2.0/steps/SetPassword.js +131 -0
  625. package/lib/pro/Login2.0/steps/VerificationSuccess.d.ts +8 -0
  626. package/lib/pro/Login2.0/steps/VerificationSuccess.js +49 -0
  627. package/lib/pro/Login2.0/steps/VerifyingEmailLink.d.ts +7 -0
  628. package/lib/pro/Login2.0/steps/VerifyingEmailLink.js +41 -0
  629. package/lib/pro/Login2.0/steps/WaitEmailLink.d.ts +18 -0
  630. package/lib/pro/Login2.0/steps/WaitEmailLink.js +67 -0
  631. package/lib/pro/Login2.0/steps/index.d.ts +19 -0
  632. package/lib/pro/Login2.0/steps/index.js +60 -0
  633. package/lib/pro/Login2.0/steps/steps.less +423 -0
  634. package/lib/pro/Login2.0/types.d.ts +167 -0
  635. package/lib/pro/Login2.0/types.js +17 -0
  636. package/lib/pro/pisellPaymentList/example.d.ts +1 -0
  637. package/lowcode/authmodal/meta.ts +395 -0
  638. package/lowcode/contact-info/fragments/cardStyle.ts +68 -0
  639. package/lowcode/contact-info/fragments/nameStyle.ts +33 -0
  640. package/lowcode/contact-info/fragments/pisellAvatar.ts +103 -0
  641. package/lowcode/contact-info/fragments/textStyle.ts +33 -0
  642. package/lowcode/contact-info/meta.ts +199 -0
  643. package/lowcode/contact-info-modal/meta.ts +98 -0
  644. package/lowcode/login2/CONFIG.md +447 -0
  645. package/lowcode/login2/TEST_CONFIG.md +324 -0
  646. package/lowcode/login2/VERIFICATION_METHODS.md +364 -0
  647. package/lowcode/login2/meta.ts +560 -0
  648. package/lowcode/login2/snippets.ts +124 -0
  649. package/lowcode/register2/meta.ts +562 -0
  650. package/lowcode/register2/snippets.ts +257 -0
  651. package/package.json +5 -3
@@ -0,0 +1,2235 @@
1
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
8
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
9
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
10
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
11
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
12
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
13
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
14
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
15
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
16
+ import React, { useState, useEffect, useCallback, useMemo, useRef } from 'react';
17
+ import { Form, message } from 'antd';
18
+ import { Input, Button, Checkbox } from '@pisell/materials';
19
+ import classNames from 'classnames';
20
+ import { locales } from '@pisell/utils';
21
+ import { useDebounceFn } from 'ahooks';
22
+ import localeTexts from "./locales";
23
+ import Header from "./shared/Header";
24
+ import LoginCodeInput from "./components/LoginCodeInput";
25
+ import ForgotPasswordFlow from "./components/ForgotPasswordFlow";
26
+ import SetPassword from "./steps/SetPassword";
27
+ import PhoneInput from "./components/PhoneInput";
28
+ import { createPhoneValidationRules } from "./components/phoneValidation";
29
+ import LegalTerms from "./components/LegalTerms";
30
+ import "./index.less";
31
+ import { usePisellOS } from "../../hooks/useEngineContext";
32
+ import useEngineContext from "../../hooks/useEngineContext";
33
+ import { Iconfont } from '@pisell/materials';
34
+ import usePasswordValidationRules from "./hooks/usePasswordValidationRules";
35
+ import OAuthButtonGroup from "./components/OAuthButtonGroup";
36
+
37
+ /** 登录组件配置 */
38
+
39
+ /** 登录组件事件 */
40
+
41
+ /** 登录组件属性 */
42
+
43
+ /**
44
+ * 登录 2.0 组件
45
+ * 支持邮箱、手机、三方登录
46
+ * 组件宽度固定 360px
47
+ */
48
+ var Login2 = function Login2(_ref) {
49
+ var _context$appHelper, _config$ui, _config$emailLinkVeri, _config$emailLinkVeri2, _config$emailLinkVeri4;
50
+ var config = _ref.config,
51
+ _ref$visible = _ref.visible,
52
+ visible = _ref$visible === void 0 ? true : _ref$visible,
53
+ onClose = _ref.onClose,
54
+ className = _ref.className,
55
+ style = _ref.style,
56
+ onLogin = _ref.onLogin,
57
+ onOAuthLogin = _ref.onOAuthLogin,
58
+ onSendVerificationCode = _ref.onSendVerificationCode,
59
+ onForgotPassword = _ref.onForgotPassword,
60
+ onSwitchToRegister = _ref.onSwitchToRegister,
61
+ onError = _ref.onError;
62
+ var _Form$useForm = Form.useForm(),
63
+ _Form$useForm2 = _slicedToArray(_Form$useForm, 1),
64
+ form = _Form$useForm2[0];
65
+ var _useState = useState(false),
66
+ _useState2 = _slicedToArray(_useState, 2),
67
+ loading = _useState2[0],
68
+ setLoading = _useState2[1];
69
+ var _useState3 = useState(0),
70
+ _useState4 = _slicedToArray(_useState3, 2),
71
+ countdown = _useState4[0],
72
+ setCountdown = _useState4[1];
73
+ var _useState5 = useState([]),
74
+ _useState6 = _slicedToArray(_useState5, 2),
75
+ countries = _useState6[0],
76
+ setCountries = _useState6[1];
77
+ var pisellOS = usePisellOS();
78
+ var registerAndLogin = pisellOS === null || pisellOS === void 0 ? void 0 : pisellOS.getModule('registerAndLogin');
79
+ var context = useEngineContext();
80
+ var storage = context === null || context === void 0 || (_context$appHelper = context.appHelper) === null || _context$appHelper === void 0 || (_context$appHelper = _context$appHelper.utils) === null || _context$appHelper === void 0 ? void 0 : _context$appHelper.storage;
81
+
82
+ // 初始化国际化
83
+ useEffect(function () {
84
+ var _context$appHelper$ut, _context$appHelper$ut2, _context$appHelper$ut3, _context$appHelper$ut4;
85
+ locales.init(localeTexts, ((_context$appHelper$ut = context.appHelper.utils) === null || _context$appHelper$ut === void 0 || (_context$appHelper$ut2 = _context$appHelper$ut.getApp) === null || _context$appHelper$ut2 === void 0 || (_context$appHelper$ut2 = _context$appHelper$ut2.call(_context$appHelper$ut)) === null || _context$appHelper$ut2 === void 0 || (_context$appHelper$ut2 = _context$appHelper$ut2.locales) === null || _context$appHelper$ut2 === void 0 || (_context$appHelper$ut3 = _context$appHelper$ut2.getLocale) === null || _context$appHelper$ut3 === void 0 ? void 0 : _context$appHelper$ut3.call(_context$appHelper$ut2)) || ((_context$appHelper$ut4 = context.appHelper.utils) === null || _context$appHelper$ut4 === void 0 || (_context$appHelper$ut4 = _context$appHelper$ut4.storage) === null || _context$appHelper$ut4 === void 0 ? void 0 : _context$appHelper$ut4.get('umi_locale')) || 'en');
86
+ }, []);
87
+
88
+ // 登录方式配置
89
+ var loginMethods = config.loginMethods || [];
90
+ var passwordValidationRules = usePasswordValidationRules((_config$ui = config.ui) === null || _config$ui === void 0 ? void 0 : _config$ui.passwordRules, {
91
+ translate: locales.getText,
92
+ fallbackMinLength: 6,
93
+ messageKeys: {
94
+ required: locales.getText('pisell-login2-password-required'),
95
+ minLength: locales.getText('pisell-set-password-min-length'),
96
+ requireUppercase: locales.getText('pisell-set-password-require-uppercase'),
97
+ requireLowercase: locales.getText('pisell-set-password-require-lowercase'),
98
+ requireNumber: locales.getText('pisell-set-password-require-number'),
99
+ requireSpecialCharacters: locales.getText('pisell-set-password-require-special'),
100
+ summary: locales.getText('pisell-set-password-must-contain')
101
+ }
102
+ });
103
+
104
+ // 当前激活的登录方式(第一个为默认)
105
+ var _useState7 = useState(null),
106
+ _useState8 = _slicedToArray(_useState7, 2),
107
+ currentLoginMethod = _useState8[0],
108
+ setCurrentLoginMethod = _useState8[1];
109
+
110
+ // 当前验证方式(针对 email/phone)
111
+ var _useState9 = useState('password'),
112
+ _useState10 = _slicedToArray(_useState9, 2),
113
+ currentVerificationMethod = _useState10[0],
114
+ setCurrentVerificationMethod = _useState10[1];
115
+ var hasTriggeredGuestLoginRef = useRef(false);
116
+
117
+ // 初始化 currentLoginMethod(当 loginMethods 变化时)
118
+ useEffect(function () {
119
+ if (loginMethods.length > 0 && !currentLoginMethod) {
120
+ var initialMethod = loginMethods[0];
121
+ setCurrentLoginMethod(initialMethod);
122
+ if ((initialMethod === null || initialMethod === void 0 ? void 0 : initialMethod.type) === 'email' || (initialMethod === null || initialMethod === void 0 ? void 0 : initialMethod.type) === 'phone') {
123
+ var _initialMethod$verifi;
124
+ setCurrentVerificationMethod(((_initialMethod$verifi = initialMethod.verificationMethods) === null || _initialMethod$verifi === void 0 ? void 0 : _initialMethod$verifi[0]) || 'password');
125
+ }
126
+ }
127
+ // 如果只有 guest 登录,则默认直接使用 guest 登录
128
+ if (hasTriggeredGuestLoginRef.current) return;
129
+ var hasOnlyGuest = loginMethods.length === 1 && loginMethods[0].type === 'guest';
130
+ if (!hasOnlyGuest) return;
131
+ hasTriggeredGuestLoginRef.current = true;
132
+ handleGuestLogin();
133
+ }, [loginMethods, currentLoginMethod]);
134
+
135
+ // 检测浏览器记忆的凭据和 Remember me 状态
136
+ useEffect(function () {
137
+ if (((currentLoginMethod === null || currentLoginMethod === void 0 ? void 0 : currentLoginMethod.type) === 'email' || (currentLoginMethod === null || currentLoginMethod === void 0 ? void 0 : currentLoginMethod.type) === 'phone') && currentVerificationMethod === 'password') {
138
+ // 检查是否有存储的 Remember me 状态
139
+ var storedRememberMe = storage.get('login_remember_me') === 'true';
140
+ setRememberMe(storedRememberMe);
141
+ // 检查是否有存储的邮箱/手机号
142
+ var _account = storage.get('login_account');
143
+ try {
144
+ _account = JSON.parse(_account || '{}');
145
+ } catch (e) {
146
+ console.error(e);
147
+ }
148
+ if (_account && storedRememberMe) {
149
+ // 检查存储的账号类型是否匹配当前的登录方式
150
+ var accountString = typeof _account === 'string' ? _account : _account.phone || _account.email || '';
151
+ var isEmail = accountString.includes('@');
152
+ var isPhone = /^\d+$/.test(accountString.replace(/\+/g, '').replace(/\s/g, ''));
153
+
154
+ // 只有当存储的账号类型与当前登录方式匹配时,才使用存储的凭据
155
+ var shouldUseStoredAccount = currentLoginMethod.type === 'email' && isEmail || currentLoginMethod.type === 'phone' && isPhone;
156
+ if (shouldUseStoredAccount) {
157
+ setEnteredAccount(_account);
158
+ setHasStoredCredentials(true);
159
+
160
+ // 如果表单此时没有值,则填充一个
161
+ if (isEmail && !form.getFieldValue('email')) {
162
+ form.setFieldsValue({
163
+ email: _account
164
+ });
165
+ }
166
+ if (isPhone && !form.getFieldValue('phone')) {
167
+ form.setFieldsValue({
168
+ phone: _account
169
+ });
170
+ }
171
+
172
+ // 如果是分步登录且有存储的凭据,直接跳到密码步骤
173
+ if (currentLoginMethod !== null && currentLoginMethod !== void 0 && currentLoginMethod.stepByStep) {
174
+ setLoginStep('password');
175
+ }
176
+ } else {
177
+ // 如果不匹配,清空相关状态
178
+ setHasStoredCredentials(false);
179
+ setEnteredAccount('');
180
+ }
181
+ } else {
182
+ // 如果没有存储的凭据或 remember me,清空状态
183
+ setHasStoredCredentials(false);
184
+ }
185
+ }
186
+ }, [currentLoginMethod, currentVerificationMethod]);
187
+
188
+ // 当组件关闭时,清空密码字段,防止浏览器弹出保存密码提示
189
+ useEffect(function () {
190
+ if (!visible) {
191
+ // 清空密码字段,防止浏览器检测到凭据变化而弹出保存提示
192
+ form.setFieldsValue({
193
+ password: ''
194
+ });
195
+
196
+ // 可选:重置整个表单(如果希望更彻底的清理)
197
+ // form.resetFields();
198
+ }
199
+ }, [visible, form]);
200
+
201
+ // 登录步骤状态:
202
+ // - 'account': 输入账号(密码分步登录的第一步 或 验证码登录的第一步)
203
+ // - 'password': 输入密码(仅密码分步登录的第二步)
204
+ // - 'code': 输入验证码(验证码登录的第二步)
205
+ var _useState11 = useState('account'),
206
+ _useState12 = _slicedToArray(_useState11, 2),
207
+ loginStep = _useState12[0],
208
+ setLoginStep = _useState12[1];
209
+
210
+ // 已输入的账号
211
+ var _useState13 = useState(''),
212
+ _useState14 = _slicedToArray(_useState13, 2),
213
+ enteredAccount = _useState14[0],
214
+ setEnteredAccount = _useState14[1];
215
+
216
+ // 验证码输入错误信息
217
+ var _useState15 = useState(''),
218
+ _useState16 = _slicedToArray(_useState15, 2),
219
+ codeError = _useState16[0],
220
+ setCodeError = _useState16[1];
221
+
222
+ // 记住我状态
223
+ var _useState17 = useState(false),
224
+ _useState18 = _slicedToArray(_useState17, 2),
225
+ rememberMe = _useState18[0],
226
+ setRememberMe = _useState18[1];
227
+
228
+ // 检测浏览器记忆的凭据
229
+ var _useState19 = useState(false),
230
+ _useState20 = _slicedToArray(_useState19, 2),
231
+ hasStoredCredentials = _useState20[0],
232
+ setHasStoredCredentials = _useState20[1];
233
+
234
+ // 上次登录方式
235
+ var _useState21 = useState(null),
236
+ _useState22 = _slicedToArray(_useState21, 2),
237
+ lastLoginMethod = _useState22[0],
238
+ setLastLoginMethod = _useState22[1];
239
+
240
+ // 是否显示忘记密码流程
241
+ var _useState23 = useState(false),
242
+ _useState24 = _slicedToArray(_useState23, 2),
243
+ showForgotPassword = _useState24[0],
244
+ setShowForgotPassword = _useState24[1];
245
+
246
+ // 邮件链接验证相关状态
247
+ var _useState25 = useState(null),
248
+ _useState26 = _slicedToArray(_useState25, 2),
249
+ emailLinkVerifyStatus = _useState26[0],
250
+ setEmailLinkVerifyStatus = _useState26[1];
251
+ var _useState27 = useState(''),
252
+ _useState28 = _slicedToArray(_useState27, 2),
253
+ emailLinkError = _useState28[0],
254
+ setEmailLinkError = _useState28[1];
255
+ var _useState29 = useState(''),
256
+ _useState30 = _slicedToArray(_useState29, 2),
257
+ resetPasswordUserEmail = _useState30[0],
258
+ setResetPasswordUserEmail = _useState30[1];
259
+
260
+ // 检查是否是邮件链接验证模式
261
+ var isEmailLinkVerification = ((_config$emailLinkVeri = config.emailLinkVerification) === null || _config$emailLinkVeri === void 0 ? void 0 : _config$emailLinkVeri.enabled) && ((_config$emailLinkVeri2 = config.emailLinkVerification) === null || _config$emailLinkVeri2 === void 0 ? void 0 : _config$emailLinkVeri2.code);
262
+
263
+ // 邮件链接验证初始化
264
+ useEffect(function () {
265
+ var _config$emailLinkVeri3;
266
+ if (isEmailLinkVerification && (_config$emailLinkVeri3 = config.emailLinkVerification) !== null && _config$emailLinkVeri3 !== void 0 && _config$emailLinkVeri3.code) {
267
+ setEmailLinkVerifyStatus('verifying');
268
+
269
+ // 调用检测重置密码代码的API
270
+ var checkCode = /*#__PURE__*/function () {
271
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
272
+ var result, _result$data;
273
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
274
+ while (1) switch (_context.prev = _context.next) {
275
+ case 0:
276
+ _context.prev = 0;
277
+ if (!(registerAndLogin !== null && registerAndLogin !== void 0 && registerAndLogin.checkResetPasswordCode)) {
278
+ _context.next = 8;
279
+ break;
280
+ }
281
+ _context.next = 4;
282
+ return registerAndLogin.checkResetPasswordCode({
283
+ code: config.emailLinkVerification.code
284
+ });
285
+ case 4:
286
+ result = _context.sent;
287
+ if (result.status) {
288
+ setEmailLinkVerifyStatus('success');
289
+ // 保存用户邮箱信息,如果API返回了邮箱
290
+ if ((_result$data = result.data) !== null && _result$data !== void 0 && _result$data.email) {
291
+ setResetPasswordUserEmail(result.data.email);
292
+ }
293
+ // 验证成功后不需要显示忘记密码流程,直接显示重置密码页面
294
+ } else {
295
+ setEmailLinkVerifyStatus('error');
296
+ setEmailLinkError(result.message || '验证码无效或已过期');
297
+ }
298
+ _context.next = 10;
299
+ break;
300
+ case 8:
301
+ setEmailLinkVerifyStatus('error');
302
+ setEmailLinkError('系统错误,请稍后重试');
303
+ case 10:
304
+ _context.next = 16;
305
+ break;
306
+ case 12:
307
+ _context.prev = 12;
308
+ _context.t0 = _context["catch"](0);
309
+ setEmailLinkVerifyStatus('error');
310
+ setEmailLinkError('网络错误,请稍后重试');
311
+ case 16:
312
+ case "end":
313
+ return _context.stop();
314
+ }
315
+ }, _callee, null, [[0, 12]]);
316
+ }));
317
+ return function checkCode() {
318
+ return _ref2.apply(this, arguments);
319
+ };
320
+ }();
321
+ checkCode();
322
+ }
323
+ }, [isEmailLinkVerification, (_config$emailLinkVeri4 = config.emailLinkVerification) === null || _config$emailLinkVeri4 === void 0 ? void 0 : _config$emailLinkVeri4.code, registerAndLogin]);
324
+
325
+ // 验证码倒计时
326
+ useEffect(function () {
327
+ if (countdown > 0) {
328
+ var timer = setTimeout(function () {
329
+ setCountdown(countdown - 1);
330
+ }, 1000);
331
+ return function () {
332
+ return clearTimeout(timer);
333
+ };
334
+ }
335
+ }, [countdown]);
336
+
337
+ // 获取国家列表
338
+ useEffect(function () {
339
+ var fetchCountries = /*#__PURE__*/function () {
340
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
341
+ var countriesList;
342
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
343
+ while (1) switch (_context2.prev = _context2.next) {
344
+ case 0:
345
+ _context2.prev = 0;
346
+ if (!(registerAndLogin !== null && registerAndLogin !== void 0 && registerAndLogin.getCountries)) {
347
+ _context2.next = 6;
348
+ break;
349
+ }
350
+ _context2.next = 4;
351
+ return registerAndLogin.getCountries();
352
+ case 4:
353
+ countriesList = _context2.sent;
354
+ setCountries(countriesList || []);
355
+ case 6:
356
+ _context2.next = 11;
357
+ break;
358
+ case 8:
359
+ _context2.prev = 8;
360
+ _context2.t0 = _context2["catch"](0);
361
+ console.error('Failed to fetch countries:', _context2.t0);
362
+ case 11:
363
+ case "end":
364
+ return _context2.stop();
365
+ }
366
+ }, _callee2, null, [[0, 8]]);
367
+ }));
368
+ return function fetchCountries() {
369
+ return _ref3.apply(this, arguments);
370
+ };
371
+ }();
372
+ fetchCountries();
373
+ }, [registerAndLogin]);
374
+
375
+ // 读取上次登录方式和记住的密码
376
+ useEffect(function () {
377
+ try {
378
+ var storedLoginMethod = storage.get('pisell_last_login_method');
379
+ if (storedLoginMethod) {
380
+ var parsedMethod = JSON.parse(storedLoginMethod);
381
+ setLastLoginMethod(parsedMethod);
382
+ }
383
+ var _rememberMe = storage.get('login_remember_me') === 'true';
384
+ var _account2 = storage.get('login_account');
385
+ var password = storage.get('login_password');
386
+ if (_rememberMe && _account2 && password) {
387
+ var accountData;
388
+ try {
389
+ accountData = JSON.parse(_account2 || '{}');
390
+ } catch (e) {
391
+ accountData = _account2;
392
+ }
393
+ var isEmail = typeof accountData === 'string' && accountData.includes('@');
394
+ var loginMethod = loginMethods.find(function (m) {
395
+ return m.type === (isEmail ? 'email' : 'phone');
396
+ });
397
+ if (loginMethod) {
398
+ setCurrentLoginMethod(loginMethod);
399
+ setCurrentVerificationMethod('password');
400
+ setEnteredAccount(accountData);
401
+ var accountFieldName = isEmail ? 'email' : 'phone';
402
+ form.setFieldsValue(_defineProperty(_defineProperty(_defineProperty({}, accountFieldName, accountData), "password", password), "remember_me", true));
403
+ setLoginStep('password');
404
+ setRememberMe(true);
405
+ }
406
+ }
407
+ } catch (error) {
408
+ console.error('Failed to parse last login method:', error);
409
+ }
410
+ }, [loginMethods]);
411
+
412
+ // 检查是否是上次登录方式
413
+ var isLastLoginMethod = useCallback(function (methodType) {
414
+ if (!lastLoginMethod) return false;
415
+ return lastLoginMethod.type === methodType;
416
+ }, [lastLoginMethod]);
417
+
418
+ // 切换验证方式
419
+ var switchVerificationMethod = useCallback(function (method) {
420
+ form.resetFields();
421
+ // 重置登录步骤到第一步
422
+ setLoginStep('account');
423
+ setEnteredAccount('');
424
+ // 更新当前验证方式
425
+ setCurrentVerificationMethod(method);
426
+ }, [form]);
427
+
428
+ // 切换登录方式
429
+ var switchLoginMethod = useCallback(function (method) {
430
+ // 清空所有表单值
431
+ form.resetFields();
432
+
433
+ // 如果在第二步(密码输入步骤)或其他步骤,都回到第一步
434
+ setLoginStep('account');
435
+ setEnteredAccount('');
436
+
437
+ // 清空存储的凭据状态,防止 useEffect 重新应用不匹配的凭据
438
+ setHasStoredCredentials(false);
439
+ setCurrentLoginMethod(method);
440
+
441
+ // 设置新登录方式的默认验证方式
442
+ if (method.type === 'email' || method.type === 'phone') {
443
+ setCurrentVerificationMethod(method.verificationMethods[0]);
444
+ }
445
+ }, [form]);
446
+
447
+ // 处理继续(分步骤登录:验证账号后进入密码页)
448
+ var handleContinueWithAccountInternal = /*#__PURE__*/function () {
449
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
450
+ var accountFieldName, accountValues, _account3, _context$appHelper2, _utils$getStore, _utils$getStore$getSt, utils, shopId, result;
451
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
452
+ while (1) switch (_context3.prev = _context3.next) {
453
+ case 0:
454
+ _context3.prev = 0;
455
+ setLoading(true);
456
+ // 根据当前登录方式确定字段名
457
+ accountFieldName = (currentLoginMethod === null || currentLoginMethod === void 0 ? void 0 : currentLoginMethod.type) === 'email' ? 'email' : 'phone';
458
+ _context3.next = 5;
459
+ return form.validateFields([accountFieldName]);
460
+ case 5:
461
+ accountValues = _context3.sent;
462
+ _account3 = accountValues[accountFieldName]; // 如果是邮箱登录,先检查邮箱是否存在
463
+ if (!((currentLoginMethod === null || currentLoginMethod === void 0 ? void 0 : currentLoginMethod.type) === 'email' && registerAndLogin)) {
464
+ _context3.next = 28;
465
+ break;
466
+ }
467
+ // 获取 shop_id
468
+ utils = (context === null || context === void 0 || (_context$appHelper2 = context.appHelper) === null || _context$appHelper2 === void 0 ? void 0 : _context$appHelper2.utils) || {};
469
+ shopId = ((_utils$getStore = utils.getStore) === null || _utils$getStore === void 0 || (_utils$getStore = _utils$getStore.call(utils)) === null || _utils$getStore === void 0 || (_utils$getStore$getSt = _utils$getStore.getState) === null || _utils$getStore$getSt === void 0 || (_utils$getStore$getSt = _utils$getStore$getSt.call(_utils$getStore)) === null || _utils$getStore$getSt === void 0 || (_utils$getStore$getSt = _utils$getStore$getSt.global) === null || _utils$getStore$getSt === void 0 || (_utils$getStore$getSt = _utils$getStore$getSt.shop) === null || _utils$getStore$getSt === void 0 ? void 0 : _utils$getStore$getSt.id) || 9;
470
+ _context3.next = 12;
471
+ return registerAndLogin.checkEmailExists({
472
+ email: _account3,
473
+ shop_id: shopId
474
+ });
475
+ case 12:
476
+ result = _context3.sent;
477
+ if (!(result.status && result.data)) {
478
+ _context3.next = 24;
479
+ break;
480
+ }
481
+ if (!result.data.exists) {
482
+ _context3.next = 20;
483
+ break;
484
+ }
485
+ // 邮箱已注册,可以继续登录流程
486
+ setEnteredAccount(_account3);
487
+ setLoginStep('password');
488
+ // 预填充账号到表单
489
+ form.setFieldsValue(_defineProperty({}, accountFieldName, _account3));
490
+ _context3.next = 22;
491
+ break;
492
+ case 20:
493
+ // 邮箱未注册,提示用户
494
+ message.error(locales.getText('pisell-login2-email-not-registered'));
495
+ return _context3.abrupt("return");
496
+ case 22:
497
+ _context3.next = 26;
498
+ break;
499
+ case 24:
500
+ // API 调用失败
501
+ message.error(result.message || locales.getText('pisell-login2-check-email-failed'));
502
+ return _context3.abrupt("return");
503
+ case 26:
504
+ _context3.next = 31;
505
+ break;
506
+ case 28:
507
+ // 非邮箱登录或其他情况,直接继续
508
+ setEnteredAccount(_account3);
509
+ setLoginStep('password');
510
+ // 预填充账号到表单
511
+ form.setFieldsValue(_defineProperty({}, accountFieldName, _account3));
512
+ case 31:
513
+ _context3.next = 39;
514
+ break;
515
+ case 33:
516
+ _context3.prev = 33;
517
+ _context3.t0 = _context3["catch"](0);
518
+ if (!_context3.t0.errorFields) {
519
+ _context3.next = 37;
520
+ break;
521
+ }
522
+ return _context3.abrupt("return");
523
+ case 37:
524
+ console.error('Continue with account error:', _context3.t0);
525
+ message.error((_context3.t0 === null || _context3.t0 === void 0 ? void 0 : _context3.t0.message) || locales.getText('pisell-login2-continue-failed'));
526
+ case 39:
527
+ _context3.prev = 39;
528
+ setLoading(false);
529
+ return _context3.finish(39);
530
+ case 42:
531
+ case "end":
532
+ return _context3.stop();
533
+ }
534
+ }, _callee3, null, [[0, 33, 39, 42]]);
535
+ }));
536
+ return function handleContinueWithAccountInternal() {
537
+ return _ref4.apply(this, arguments);
538
+ };
539
+ }();
540
+
541
+ // 使用防抖的继续按钮处理函数
542
+ var _useDebounceFn = useDebounceFn(handleContinueWithAccountInternal, {
543
+ wait: 200,
544
+ leading: true,
545
+ trailing: false
546
+ }),
547
+ handleContinueWithAccount = _useDebounceFn.run;
548
+ // 返回到账号输入页
549
+ // 返回到账号输入页
550
+ var handleBackToAccountInternal = function handleBackToAccountInternal() {
551
+ setLoginStep('account');
552
+ form.resetFields(['password']);
553
+ };
554
+
555
+ // 使用防抖的返回账号页处理函数
556
+ var _useDebounceFn2 = useDebounceFn(handleBackToAccountInternal, {
557
+ wait: 200,
558
+ leading: true,
559
+ trailing: false
560
+ }),
561
+ handleBackToAccount = _useDebounceFn2.run;
562
+
563
+ // 发送验证码(验证码登录第一步)
564
+ var handleSendCode = /*#__PURE__*/function () {
565
+ var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
566
+ var accountFieldName, _account4, _type, _res, res, phoneData, _countries$find, _res2;
567
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
568
+ while (1) switch (_context4.prev = _context4.next) {
569
+ case 0:
570
+ _context4.prev = 0;
571
+ accountFieldName = (currentLoginMethod === null || currentLoginMethod === void 0 ? void 0 : currentLoginMethod.type) === 'email' ? 'email' : 'phone'; // 先进行表单验证
572
+ _context4.next = 4;
573
+ return form.validateFields([accountFieldName]);
574
+ case 4:
575
+ _account4 = form.getFieldValue(accountFieldName);
576
+ if (_account4) {
577
+ _context4.next = 8;
578
+ break;
579
+ }
580
+ message.error(locales.getText('pisell-login2-account-required'));
581
+ return _context4.abrupt("return");
582
+ case 8:
583
+ setLoading(true);
584
+ _type = (currentLoginMethod === null || currentLoginMethod === void 0 ? void 0 : currentLoginMethod.type) === 'email' ? 'email' : 'phone'; // 调用实际的 API
585
+ if (!registerAndLogin) {
586
+ _context4.next = 23;
587
+ break;
588
+ }
589
+ if (!(_type === 'email')) {
590
+ _context4.next = 17;
591
+ break;
592
+ }
593
+ _context4.next = 14;
594
+ return registerAndLogin.sendEmailLoginCode({
595
+ type: 'email',
596
+ target: _account4,
597
+ purpose: 'login'
598
+ });
599
+ case 14:
600
+ res = _context4.sent;
601
+ _context4.next = 21;
602
+ break;
603
+ case 17:
604
+ // 处理手机号数据
605
+
606
+ if (typeof _account4 === 'string') {
607
+ // 如果是字符串格式,需要解析
608
+ phoneData = {
609
+ phone: _account4,
610
+ country_calling_code: ((_countries$find = countries.find(function (country) {
611
+ return country.value === _account4;
612
+ })) === null || _countries$find === void 0 ? void 0 : _countries$find.calling_code) || ''
613
+ };
614
+ } else {
615
+ // 如果是对象格式,直接使用
616
+ phoneData = _account4;
617
+ }
618
+
619
+ // 发送手机登录验证码
620
+ _context4.next = 20;
621
+ return registerAndLogin.sendSmsLoginCode(phoneData);
622
+ case 20:
623
+ res = _context4.sent;
624
+ case 21:
625
+ if (!(((_res = res) === null || _res === void 0 ? void 0 : _res.code) !== 200)) {
626
+ _context4.next = 23;
627
+ break;
628
+ }
629
+ throw new Error(((_res2 = res) === null || _res2 === void 0 ? void 0 : _res2.message) || locales.getText('pisell-login2-code-send-failed'));
630
+ case 23:
631
+ _context4.next = 25;
632
+ return onSendVerificationCode === null || onSendVerificationCode === void 0 ? void 0 : onSendVerificationCode(_account4, _type, config.channel);
633
+ case 25:
634
+ // 保存账号并跳转到验证码输入页面
635
+ setEnteredAccount(_account4);
636
+ setLoginStep('code');
637
+ setCountdown(60);
638
+ message.success(locales.getText('pisell-login2-code-sent'));
639
+ _context4.next = 36;
640
+ break;
641
+ case 31:
642
+ _context4.prev = 31;
643
+ _context4.t0 = _context4["catch"](0);
644
+ if (!(_context4.t0 !== null && _context4.t0 !== void 0 && _context4.t0.errorFields)) {
645
+ _context4.next = 35;
646
+ break;
647
+ }
648
+ return _context4.abrupt("return");
649
+ case 35:
650
+ message.error((_context4.t0 === null || _context4.t0 === void 0 ? void 0 : _context4.t0.message) || locales.getText('pisell-login2-code-send-failed'));
651
+ case 36:
652
+ _context4.prev = 36;
653
+ setLoading(false);
654
+ return _context4.finish(36);
655
+ case 39:
656
+ case "end":
657
+ return _context4.stop();
658
+ }
659
+ }, _callee4, null, [[0, 31, 36, 39]]);
660
+ }));
661
+ return function handleSendCode() {
662
+ return _ref5.apply(this, arguments);
663
+ };
664
+ }();
665
+
666
+ // 处理验证码提交(验证码登录第二步)
667
+ var handleCodeSubmit = /*#__PURE__*/function () {
668
+ var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(code) {
669
+ var _method, result, _result, phoneData, _countries$find2, _result2, errorMessage, _error, loginData;
670
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
671
+ while (1) switch (_context5.prev = _context5.next) {
672
+ case 0:
673
+ _context5.prev = 0;
674
+ setLoading(true);
675
+ setCodeError(''); // 清除之前的错误
676
+ _method = (currentLoginMethod === null || currentLoginMethod === void 0 ? void 0 : currentLoginMethod.type) || 'email';
677
+ if (!registerAndLogin) {
678
+ _context5.next = 22;
679
+ break;
680
+ }
681
+ if (!(_method === 'email')) {
682
+ _context5.next = 11;
683
+ break;
684
+ }
685
+ _context5.next = 8;
686
+ return registerAndLogin.emailCodeLogin({
687
+ email: enteredAccount,
688
+ code: code
689
+ });
690
+ case 8:
691
+ result = _context5.sent;
692
+ _context5.next = 16;
693
+ break;
694
+ case 11:
695
+ if (!(_method === 'phone')) {
696
+ _context5.next = 16;
697
+ break;
698
+ }
699
+ // 处理手机号数据
700
+
701
+ if (typeof enteredAccount === 'string') {
702
+ // 如果是字符串格式,需要解析
703
+ phoneData = {
704
+ phone: enteredAccount,
705
+ country_calling_code: ((_countries$find2 = countries.find(function (country) {
706
+ return country.value === enteredAccount;
707
+ })) === null || _countries$find2 === void 0 ? void 0 : _countries$find2.calling_code) || ''
708
+ };
709
+ } else {
710
+ // 如果是对象格式,直接使用
711
+ phoneData = enteredAccount;
712
+ }
713
+
714
+ // 手机验证码登录
715
+ _context5.next = 15;
716
+ return registerAndLogin.phoneCodeLogin({
717
+ phone: phoneData.phone,
718
+ country_calling_code: phoneData.country_calling_code,
719
+ code: code
720
+ });
721
+ case 15:
722
+ result = _context5.sent;
723
+ case 16:
724
+ if (!(((_result = result) === null || _result === void 0 ? void 0 : _result.code) !== 200)) {
725
+ _context5.next = 22;
726
+ break;
727
+ }
728
+ errorMessage = ((_result2 = result) === null || _result2 === void 0 ? void 0 : _result2.message) || locales.getText('pisell-login2-login-failed');
729
+ _error = new Error(errorMessage); // 调用错误处理回调
730
+ onError === null || onError === void 0 || onError(_error, _method);
731
+ // 设置错误信息,不抛出错误,让组件显示错误并清空输入
732
+ setCodeError(errorMessage);
733
+ return _context5.abrupt("return");
734
+ case 22:
735
+ // 调用外部回调
736
+ loginData = {
737
+ account: enteredAccount,
738
+ password: undefined,
739
+ verification_code: code,
740
+ remember_me: false
741
+ };
742
+ _context5.next = 25;
743
+ return onLogin === null || onLogin === void 0 ? void 0 : onLogin(result.data, _method, loginData, config.channel);
744
+ case 25:
745
+ message.success(locales.getText('pisell-login2-login-success'));
746
+ _context5.next = 31;
747
+ break;
748
+ case 28:
749
+ _context5.prev = 28;
750
+ _context5.t0 = _context5["catch"](0);
751
+ // 设置错误信息,显示在组件下方
752
+ setCodeError((_context5.t0 === null || _context5.t0 === void 0 ? void 0 : _context5.t0.message) || locales.getText('pisell-login2-login-failed'));
753
+ case 31:
754
+ _context5.prev = 31;
755
+ setLoading(false);
756
+ return _context5.finish(31);
757
+ case 34:
758
+ case "end":
759
+ return _context5.stop();
760
+ }
761
+ }, _callee5, null, [[0, 28, 31, 34]]);
762
+ }));
763
+ return function handleCodeSubmit(_x) {
764
+ return _ref6.apply(this, arguments);
765
+ };
766
+ }();
767
+
768
+ // 从验证码页面返回
769
+ var handleBackFromCode = function handleBackFromCode() {
770
+ setLoginStep('account');
771
+ form.resetFields();
772
+ setCodeError(''); // 清除验证码错误
773
+ };
774
+
775
+ // 打开忘记密码流程
776
+ // 打开忘记密码流程
777
+ var handleForgotPasswordClickInternal = function handleForgotPasswordClickInternal() {
778
+ var accountFieldName = (currentLoginMethod === null || currentLoginMethod === void 0 ? void 0 : currentLoginMethod.type) === 'email' ? 'email' : 'phone';
779
+ var account = form.getFieldValue(accountFieldName);
780
+ setEnteredAccount(account || '');
781
+ setShowForgotPassword(true);
782
+ };
783
+
784
+ // 使用防抖的忘记密码处理函数
785
+ var _useDebounceFn3 = useDebounceFn(handleForgotPasswordClickInternal, {
786
+ wait: 200,
787
+ leading: true,
788
+ trailing: false
789
+ }),
790
+ handleForgotPasswordClick = _useDebounceFn3.run;
791
+
792
+ // 关闭忘记密码流程
793
+ var handleCloseForgotPassword = function handleCloseForgotPassword() {
794
+ setShowForgotPassword(false);
795
+ setCountdown(0);
796
+ };
797
+
798
+ // 忘记密码 - 发送重置密码链接
799
+ var handleForgotPasswordSendLink = /*#__PURE__*/function () {
800
+ var _ref7 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(account) {
801
+ var res;
802
+ return _regeneratorRuntime().wrap(function _callee6$(_context6) {
803
+ while (1) switch (_context6.prev = _context6.next) {
804
+ case 0:
805
+ _context6.prev = 0;
806
+ setLoading(true);
807
+ if (!registerAndLogin) {
808
+ _context6.next = 8;
809
+ break;
810
+ }
811
+ _context6.next = 5;
812
+ return registerAndLogin.sendResetPasswordLink({
813
+ email: account
814
+ });
815
+ case 5:
816
+ res = _context6.sent;
817
+ if (res.status) {
818
+ _context6.next = 8;
819
+ break;
820
+ }
821
+ throw new Error(res.message || '发送重置密码链接失败');
822
+ case 8:
823
+ message.success(locales.getText('pisell-forgot-password-link-sent'));
824
+ _context6.next = 15;
825
+ break;
826
+ case 11:
827
+ _context6.prev = 11;
828
+ _context6.t0 = _context6["catch"](0);
829
+ message.error((_context6.t0 === null || _context6.t0 === void 0 ? void 0 : _context6.t0.message) || '发送重置密码链接失败');
830
+ throw _context6.t0;
831
+ case 15:
832
+ _context6.prev = 15;
833
+ setLoading(false);
834
+ return _context6.finish(15);
835
+ case 18:
836
+ case "end":
837
+ return _context6.stop();
838
+ }
839
+ }, _callee6, null, [[0, 11, 15, 18]]);
840
+ }));
841
+ return function handleForgotPasswordSendLink(_x2) {
842
+ return _ref7.apply(this, arguments);
843
+ };
844
+ }();
845
+
846
+ // 忘记密码 - 发送验证码
847
+ var handleForgotPasswordSendCode = /*#__PURE__*/function () {
848
+ var _ref8 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(account) {
849
+ var _type2, res, phoneAccount, _res3;
850
+ return _regeneratorRuntime().wrap(function _callee7$(_context7) {
851
+ while (1) switch (_context7.prev = _context7.next) {
852
+ case 0:
853
+ _context7.prev = 0;
854
+ setLoading(true);
855
+ _type2 = (currentLoginMethod === null || currentLoginMethod === void 0 ? void 0 : currentLoginMethod.type) === 'email' ? 'email' : 'phone';
856
+ if (!registerAndLogin) {
857
+ _context7.next = 18;
858
+ break;
859
+ }
860
+ if (!(_type2 === 'email')) {
861
+ _context7.next = 12;
862
+ break;
863
+ }
864
+ _context7.next = 7;
865
+ return registerAndLogin.sendPasswordResetEmail({
866
+ email: account
867
+ });
868
+ case 7:
869
+ res = _context7.sent;
870
+ if (res.status) {
871
+ _context7.next = 10;
872
+ break;
873
+ }
874
+ throw new Error(res.message || locales.getText('pisell-login2-code-send-failed'));
875
+ case 10:
876
+ _context7.next = 18;
877
+ break;
878
+ case 12:
879
+ // 处理手机号对象格式
880
+ phoneAccount = account;
881
+ _context7.next = 15;
882
+ return registerAndLogin.sendPasswordResetSms({
883
+ phone: phoneAccount.phone,
884
+ country_calling_code: phoneAccount.country_calling_code
885
+ });
886
+ case 15:
887
+ _res3 = _context7.sent;
888
+ if (_res3.status) {
889
+ _context7.next = 18;
890
+ break;
891
+ }
892
+ throw new Error(_res3.message || locales.getText('pisell-login2-code-send-failed'));
893
+ case 18:
894
+ setCountdown(60);
895
+ message.success(locales.getText('pisell-login2-code-sent'));
896
+ _context7.next = 26;
897
+ break;
898
+ case 22:
899
+ _context7.prev = 22;
900
+ _context7.t0 = _context7["catch"](0);
901
+ message.error((_context7.t0 === null || _context7.t0 === void 0 ? void 0 : _context7.t0.message) || locales.getText('pisell-login2-code-send-failed'));
902
+ throw _context7.t0;
903
+ case 26:
904
+ _context7.prev = 26;
905
+ setLoading(false);
906
+ return _context7.finish(26);
907
+ case 29:
908
+ case "end":
909
+ return _context7.stop();
910
+ }
911
+ }, _callee7, null, [[0, 22, 26, 29]]);
912
+ }));
913
+ return function handleForgotPasswordSendCode(_x3) {
914
+ return _ref8.apply(this, arguments);
915
+ };
916
+ }();
917
+
918
+ // 忘记密码 - 验证验证码
919
+ var handleForgotPasswordVerifyCode = /*#__PURE__*/function () {
920
+ var _ref9 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(account, code) {
921
+ var _context$appHelper3, _utils$getStore2, _utils$getStore2$getS, utils, shopId, isPhoneAccount, res, phoneData;
922
+ return _regeneratorRuntime().wrap(function _callee8$(_context8) {
923
+ while (1) switch (_context8.prev = _context8.next) {
924
+ case 0:
925
+ _context8.prev = 0;
926
+ setLoading(true);
927
+ if (!registerAndLogin) {
928
+ _context8.next = 20;
929
+ break;
930
+ }
931
+ // 获取 shop_id
932
+ utils = (context === null || context === void 0 || (_context$appHelper3 = context.appHelper) === null || _context$appHelper3 === void 0 ? void 0 : _context$appHelper3.utils) || {};
933
+ shopId = ((_utils$getStore2 = utils.getStore) === null || _utils$getStore2 === void 0 || (_utils$getStore2 = _utils$getStore2.call(utils)) === null || _utils$getStore2 === void 0 || (_utils$getStore2$getS = _utils$getStore2.getState) === null || _utils$getStore2$getS === void 0 || (_utils$getStore2$getS = _utils$getStore2$getS.call(_utils$getStore2)) === null || _utils$getStore2$getS === void 0 || (_utils$getStore2$getS = _utils$getStore2$getS.global) === null || _utils$getStore2$getS === void 0 || (_utils$getStore2$getS = _utils$getStore2$getS.shop) === null || _utils$getStore2$getS === void 0 ? void 0 : _utils$getStore2$getS.id) || 9; // 判断账号类型
934
+ isPhoneAccount = _typeof(account) === 'object' && 'phone' in account;
935
+ if (isPhoneAccount) {
936
+ _context8.next = 12;
937
+ break;
938
+ }
939
+ _context8.next = 9;
940
+ return registerAndLogin.checkEmailCode({
941
+ email: account,
942
+ shop_id: shopId,
943
+ code: code,
944
+ action: 'customer_reset_password_code'
945
+ });
946
+ case 9:
947
+ res = _context8.sent;
948
+ _context8.next = 16;
949
+ break;
950
+ case 12:
951
+ // 手机验证码
952
+ phoneData = account;
953
+ _context8.next = 15;
954
+ return registerAndLogin.checkMobileCode({
955
+ phone: phoneData.phone,
956
+ country_calling_code: phoneData.country_calling_code,
957
+ code: code
958
+ });
959
+ case 15:
960
+ res = _context8.sent;
961
+ case 16:
962
+ if (res.status) {
963
+ _context8.next = 18;
964
+ break;
965
+ }
966
+ throw new Error(res.message || '验证码验证失败');
967
+ case 18:
968
+ if (res.data.valid) {
969
+ _context8.next = 20;
970
+ break;
971
+ }
972
+ throw new Error(locales.getText('pisell-login2-code-verify-failed'));
973
+ case 20:
974
+ _context8.next = 26;
975
+ break;
976
+ case 22:
977
+ _context8.prev = 22;
978
+ _context8.t0 = _context8["catch"](0);
979
+ message.error((_context8.t0 === null || _context8.t0 === void 0 ? void 0 : _context8.t0.message) || '验证码验证失败');
980
+ throw _context8.t0;
981
+ case 26:
982
+ _context8.prev = 26;
983
+ setLoading(false);
984
+ return _context8.finish(26);
985
+ case 29:
986
+ case "end":
987
+ return _context8.stop();
988
+ }
989
+ }, _callee8, null, [[0, 22, 26, 29]]);
990
+ }));
991
+ return function handleForgotPasswordVerifyCode(_x4, _x5) {
992
+ return _ref9.apply(this, arguments);
993
+ };
994
+ }();
995
+
996
+ // 忘记密码 - 重置密码
997
+ var handleForgotPasswordReset = /*#__PURE__*/function () {
998
+ var _ref10 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9(account, password, code) {
999
+ var _isPhoneAccount, resetPasswordParams, res, isPhoneAccount, phoneMethod, emailMethod;
1000
+ return _regeneratorRuntime().wrap(function _callee9$(_context9) {
1001
+ while (1) switch (_context9.prev = _context9.next) {
1002
+ case 0:
1003
+ _context9.prev = 0;
1004
+ setLoading(true);
1005
+ if (!registerAndLogin) {
1006
+ _context9.next = 10;
1007
+ break;
1008
+ }
1009
+ // 判断账号类型
1010
+ _isPhoneAccount = _typeof(account) === 'object' && 'phone' in account;
1011
+ if (_isPhoneAccount) {
1012
+ // 手机号格式
1013
+ resetPasswordParams = {
1014
+ type: 'phone',
1015
+ target: {
1016
+ phone: account.phone,
1017
+ country_calling_code: account.country_calling_code
1018
+ },
1019
+ password: password,
1020
+ code: code
1021
+ };
1022
+ } else {
1023
+ // 邮箱格式
1024
+ resetPasswordParams = {
1025
+ type: 'email',
1026
+ target: {
1027
+ email: account
1028
+ },
1029
+ password: password,
1030
+ code: code
1031
+ };
1032
+ }
1033
+ _context9.next = 7;
1034
+ return registerAndLogin.resetPassword(resetPasswordParams);
1035
+ case 7:
1036
+ res = _context9.sent;
1037
+ if (!((res === null || res === void 0 ? void 0 : res.code) !== 200)) {
1038
+ _context9.next = 10;
1039
+ break;
1040
+ }
1041
+ throw new Error((res === null || res === void 0 ? void 0 : res.message) || '密码重置失败');
1042
+ case 10:
1043
+ // 重置成功后关闭忘记密码流程
1044
+ handleCloseForgotPassword();
1045
+
1046
+ // 根据账号类型自动切换登录方式并预填充账号
1047
+ isPhoneAccount = _typeof(account) === 'object' && 'phone' in account;
1048
+ if (isPhoneAccount) {
1049
+ // 手机号重置密码成功,切换到手机号登录
1050
+ phoneMethod = config.loginMethods.find(function (method) {
1051
+ return method.type === 'phone';
1052
+ });
1053
+ if (phoneMethod) {
1054
+ setCurrentLoginMethod(phoneMethod);
1055
+ setCurrentVerificationMethod(phoneMethod.verificationMethods[0]);
1056
+ }
1057
+
1058
+ // 预填充手机号到表单
1059
+ form.setFieldsValue({
1060
+ phone: account
1061
+ });
1062
+ setEnteredAccount(account);
1063
+ } else {
1064
+ // 邮箱重置密码成功,切换到邮箱登录
1065
+ emailMethod = config.loginMethods.find(function (method) {
1066
+ return method.type === 'email';
1067
+ });
1068
+ if (emailMethod) {
1069
+ setCurrentLoginMethod(emailMethod);
1070
+ setCurrentVerificationMethod(emailMethod.verificationMethods[0]);
1071
+ }
1072
+
1073
+ // 预填充邮箱到表单
1074
+ form.setFieldsValue({
1075
+ email: account
1076
+ });
1077
+ setEnteredAccount(account);
1078
+ }
1079
+
1080
+ // 重置登录步骤到账号输入页面
1081
+ setLoginStep('account');
1082
+ _context9.next = 19;
1083
+ break;
1084
+ case 16:
1085
+ _context9.prev = 16;
1086
+ _context9.t0 = _context9["catch"](0);
1087
+ message.error((_context9.t0 === null || _context9.t0 === void 0 ? void 0 : _context9.t0.message) || '密码重置失败');
1088
+ // throw error;
1089
+ case 19:
1090
+ _context9.prev = 19;
1091
+ setLoading(false);
1092
+ return _context9.finish(19);
1093
+ case 22:
1094
+ case "end":
1095
+ return _context9.stop();
1096
+ }
1097
+ }, _callee9, null, [[0, 16, 19, 22]]);
1098
+ }));
1099
+ return function handleForgotPasswordReset(_x6, _x7, _x8) {
1100
+ return _ref10.apply(this, arguments);
1101
+ };
1102
+ }();
1103
+
1104
+ // 邮件链接重置密码
1105
+ var handleEmailLinkResetPassword = /*#__PURE__*/function () {
1106
+ var _ref11 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10(account, password, code) {
1107
+ var res;
1108
+ return _regeneratorRuntime().wrap(function _callee10$(_context10) {
1109
+ while (1) switch (_context10.prev = _context10.next) {
1110
+ case 0:
1111
+ _context10.prev = 0;
1112
+ setLoading(true);
1113
+ if (!registerAndLogin) {
1114
+ _context10.next = 8;
1115
+ break;
1116
+ }
1117
+ _context10.next = 5;
1118
+ return registerAndLogin.resetPasswordByCode({
1119
+ code: config.emailLinkVerification.code,
1120
+ password: password
1121
+ });
1122
+ case 5:
1123
+ res = _context10.sent;
1124
+ if (!((res === null || res === void 0 ? void 0 : res.code) !== 200)) {
1125
+ _context10.next = 8;
1126
+ break;
1127
+ }
1128
+ throw new Error((res === null || res === void 0 ? void 0 : res.message) || '密码重置失败');
1129
+ case 8:
1130
+ // 重置成功后关闭忘记密码流程并重置邮件链接验证状态
1131
+ handleCloseForgotPassword();
1132
+ setEmailLinkVerifyStatus(null);
1133
+ message.success('密码重置成功');
1134
+ _context10.next = 17;
1135
+ break;
1136
+ case 13:
1137
+ _context10.prev = 13;
1138
+ _context10.t0 = _context10["catch"](0);
1139
+ message.error((_context10.t0 === null || _context10.t0 === void 0 ? void 0 : _context10.t0.message) || '密码重置失败');
1140
+ throw _context10.t0;
1141
+ case 17:
1142
+ _context10.prev = 17;
1143
+ setLoading(false);
1144
+ return _context10.finish(17);
1145
+ case 20:
1146
+ case "end":
1147
+ return _context10.stop();
1148
+ }
1149
+ }, _callee10, null, [[0, 13, 17, 20]]);
1150
+ }));
1151
+ return function handleEmailLinkResetPassword(_x9, _x10, _x11) {
1152
+ return _ref11.apply(this, arguments);
1153
+ };
1154
+ }();
1155
+
1156
+ // 处理 Guest 登录
1157
+ var handleGuestLoginInternal = /*#__PURE__*/function () {
1158
+ var _ref12 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {
1159
+ var result, loginMethodInfo;
1160
+ return _regeneratorRuntime().wrap(function _callee11$(_context11) {
1161
+ while (1) switch (_context11.prev = _context11.next) {
1162
+ case 0:
1163
+ _context11.prev = 0;
1164
+ setLoading(true);
1165
+ if (!registerAndLogin) {
1166
+ _context11.next = 7;
1167
+ break;
1168
+ }
1169
+ _context11.next = 5;
1170
+ return registerAndLogin.guestLogin();
1171
+ case 5:
1172
+ result = _context11.sent;
1173
+ if (result.code === 200) {
1174
+ message.success(locales.getText('pisell-login2-login-success'));
1175
+
1176
+ // 记录本次登录方式到localStorage
1177
+ loginMethodInfo = {
1178
+ type: 'guest',
1179
+ verificationMethod: null,
1180
+ timestamp: Date.now()
1181
+ };
1182
+ storage.set('pisell_last_login_method', JSON.stringify(loginMethodInfo));
1183
+ onLogin === null || onLogin === void 0 || onLogin(result.data, 'guest', {
1184
+ account: 'guest',
1185
+ password: undefined
1186
+ }, config.channel);
1187
+ } else {
1188
+ message.error(result.message || locales.getText('pisell-login2-login-failed'));
1189
+ }
1190
+ case 7:
1191
+ _context11.next = 13;
1192
+ break;
1193
+ case 9:
1194
+ _context11.prev = 9;
1195
+ _context11.t0 = _context11["catch"](0);
1196
+ console.error('Guest login error:', _context11.t0);
1197
+ message.error(locales.getText('pisell-login2-login-failed'));
1198
+ case 13:
1199
+ _context11.prev = 13;
1200
+ setLoading(false);
1201
+ return _context11.finish(13);
1202
+ case 16:
1203
+ case "end":
1204
+ return _context11.stop();
1205
+ }
1206
+ }, _callee11, null, [[0, 9, 13, 16]]);
1207
+ }));
1208
+ return function handleGuestLoginInternal() {
1209
+ return _ref12.apply(this, arguments);
1210
+ };
1211
+ }();
1212
+
1213
+ // 使用防抖的Guest登录处理函数
1214
+ var _useDebounceFn4 = useDebounceFn(handleGuestLoginInternal, {
1215
+ wait: 200,
1216
+ leading: true,
1217
+ trailing: false
1218
+ }),
1219
+ handleGuestLogin = _useDebounceFn4.run;
1220
+ var oauthProviders = useMemo(function () {
1221
+ return loginMethods.filter(function (method) {
1222
+ return ['google', 'facebook', 'apple', 'guest'].includes(method.type);
1223
+ }).map(function (method) {
1224
+ var isLast = isLastLoginMethod(method.type);
1225
+ var commonConfig = {
1226
+ className: classNames('login2-oauth-button', method.type, {
1227
+ 'has-last-login-badge': isLast
1228
+ }),
1229
+ badge: isLast ? locales.getText('pisell-login2-last-login-badge') : undefined,
1230
+ badgeClassName: 'last-login-badge'
1231
+ };
1232
+ switch (method.type) {
1233
+ case 'google':
1234
+ return _objectSpread({
1235
+ key: 'google',
1236
+ label: /*#__PURE__*/React.createElement("span", null, locales.getText('pisell-login2-continue-with'), " Google"),
1237
+ icon: /*#__PURE__*/React.createElement(Iconfont, {
1238
+ type: "pisell2-google"
1239
+ }),
1240
+ onClick: function onClick() {
1241
+ return handleOAuthClick('google');
1242
+ }
1243
+ }, commonConfig);
1244
+ case 'facebook':
1245
+ return _objectSpread({
1246
+ key: 'facebook',
1247
+ label: /*#__PURE__*/React.createElement("span", null, locales.getText('pisell-login2-continue-with'), " Facebook"),
1248
+ icon: /*#__PURE__*/React.createElement(Iconfont, {
1249
+ type: "pisell2-facebook"
1250
+ }),
1251
+ onClick: function onClick() {
1252
+ return handleOAuthClick('facebook');
1253
+ }
1254
+ }, commonConfig);
1255
+ case 'apple':
1256
+ return _objectSpread({
1257
+ key: 'apple',
1258
+ label: /*#__PURE__*/React.createElement("span", null, locales.getText('pisell-login2-continue-with'), " Apple"),
1259
+ icon: /*#__PURE__*/React.createElement(Iconfont, {
1260
+ type: "pisell2-apple"
1261
+ }),
1262
+ onClick: function onClick() {
1263
+ return handleOAuthClick('apple');
1264
+ }
1265
+ }, commonConfig);
1266
+ case 'guest':
1267
+ return _objectSpread({
1268
+ key: 'guest',
1269
+ label: locales.getText('pisell-login2-login-as-guest'),
1270
+ icon: /*#__PURE__*/React.createElement(Iconfont, {
1271
+ type: "pisell2-user-01"
1272
+ }),
1273
+ onClick: handleGuestLogin
1274
+ }, commonConfig);
1275
+ default:
1276
+ return null;
1277
+ }
1278
+ }).filter(Boolean);
1279
+ }, [handleGuestLogin, handleOAuthClick, isLastLoginMethod, loginMethods]);
1280
+
1281
+ // 处理登录
1282
+ var handleLoginInternal = /*#__PURE__*/function () {
1283
+ var _ref13 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {
1284
+ var values, accountFieldName, _account5, loginData, _method2, result, _result3, phoneData, _countries$find3, _result4, loginMethodInfo;
1285
+ return _regeneratorRuntime().wrap(function _callee12$(_context12) {
1286
+ while (1) switch (_context12.prev = _context12.next) {
1287
+ case 0:
1288
+ _context12.prev = 0;
1289
+ setLoading(true);
1290
+ _context12.next = 4;
1291
+ return form.validateFields();
1292
+ case 4:
1293
+ values = _context12.sent;
1294
+ // 在分步骤登录模式下,账号从表单字段获取(支持编辑)
1295
+ accountFieldName = (currentLoginMethod === null || currentLoginMethod === void 0 ? void 0 : currentLoginMethod.type) === 'email' ? 'email' : 'phone';
1296
+ _account5 = values[accountFieldName] || values.account; // 兼容旧的 account
1297
+ loginData = {
1298
+ account: _account5,
1299
+ password: currentVerificationMethod === 'password' ? values.password : undefined,
1300
+ verification_code: currentVerificationMethod === 'verification_code' ? values.verification_code : undefined,
1301
+ remember_me: values.remember_me
1302
+ };
1303
+ _method2 = (currentLoginMethod === null || currentLoginMethod === void 0 ? void 0 : currentLoginMethod.type) || 'email';
1304
+ if (!registerAndLogin) {
1305
+ _context12.next = 35;
1306
+ break;
1307
+ }
1308
+ if (!(_method2 === 'email')) {
1309
+ _context12.next = 22;
1310
+ break;
1311
+ }
1312
+ if (!(currentVerificationMethod === 'password')) {
1313
+ _context12.next = 17;
1314
+ break;
1315
+ }
1316
+ _context12.next = 14;
1317
+ return registerAndLogin.emailPasswordLogin({
1318
+ email: _account5,
1319
+ password: values.password
1320
+ });
1321
+ case 14:
1322
+ result = _context12.sent;
1323
+ _context12.next = 20;
1324
+ break;
1325
+ case 17:
1326
+ _context12.next = 19;
1327
+ return registerAndLogin.emailCodeLogin({
1328
+ email: _account5,
1329
+ code: values.verification_code
1330
+ });
1331
+ case 19:
1332
+ result = _context12.sent;
1333
+ case 20:
1334
+ _context12.next = 33;
1335
+ break;
1336
+ case 22:
1337
+ if (!(_method2 === 'phone')) {
1338
+ _context12.next = 33;
1339
+ break;
1340
+ }
1341
+ // 处理手机号数据
1342
+
1343
+ if (typeof _account5 === 'string') {
1344
+ // 如果是字符串格式,需要解析
1345
+ phoneData = {
1346
+ phone: _account5,
1347
+ country_calling_code: ((_countries$find3 = countries.find(function (country) {
1348
+ return country.value === _account5;
1349
+ })) === null || _countries$find3 === void 0 ? void 0 : _countries$find3.calling_code) || ''
1350
+ };
1351
+ } else {
1352
+ // 如果是对象格式,直接使用
1353
+ phoneData = _account5;
1354
+ }
1355
+ if (!(currentVerificationMethod === 'password')) {
1356
+ _context12.next = 30;
1357
+ break;
1358
+ }
1359
+ _context12.next = 27;
1360
+ return registerAndLogin.phonePasswordLogin({
1361
+ phone: phoneData.phone,
1362
+ country_calling_code: phoneData.country_calling_code,
1363
+ password: values.password
1364
+ });
1365
+ case 27:
1366
+ result = _context12.sent;
1367
+ _context12.next = 33;
1368
+ break;
1369
+ case 30:
1370
+ _context12.next = 32;
1371
+ return registerAndLogin.phoneCodeLogin({
1372
+ phone: phoneData.phone,
1373
+ country_calling_code: phoneData.country_calling_code,
1374
+ code: values.verification_code
1375
+ });
1376
+ case 32:
1377
+ result = _context12.sent;
1378
+ case 33:
1379
+ if (!(((_result3 = result) === null || _result3 === void 0 ? void 0 : _result3.code) !== 200)) {
1380
+ _context12.next = 35;
1381
+ break;
1382
+ }
1383
+ throw new Error(((_result4 = result) === null || _result4 === void 0 ? void 0 : _result4.message) || locales.getText('pisell-login2-login-failed'));
1384
+ case 35:
1385
+ _context12.next = 37;
1386
+ return onLogin === null || onLogin === void 0 ? void 0 : onLogin(result.data, _method2, loginData, config.channel);
1387
+ case 37:
1388
+ // 记录本次登录方式到localStorage
1389
+ loginMethodInfo = {
1390
+ type: _method2,
1391
+ verificationMethod: currentVerificationMethod,
1392
+ timestamp: Date.now()
1393
+ };
1394
+ storage.set('pisell_last_login_method', JSON.stringify(loginMethodInfo));
1395
+
1396
+ // 登录成功后处理 Remember me
1397
+ if (values.remember_me && _account5) {
1398
+ storage.set('login_account', JSON.stringify(_account5));
1399
+ storage.set('login_remember_me', 'true');
1400
+ if (currentVerificationMethod === 'password') {
1401
+ storage.set('login_password', values.password);
1402
+ }
1403
+ // 同步更新 enteredAccount 状态
1404
+ setEnteredAccount(_account5);
1405
+ } else {
1406
+ storage.remove('login_account');
1407
+ storage.remove('login_remember_me');
1408
+ storage.remove('login_password');
1409
+ }
1410
+ message.success(locales.getText('pisell-login2-login-success'));
1411
+ _context12.next = 48;
1412
+ break;
1413
+ case 43:
1414
+ _context12.prev = 43;
1415
+ _context12.t0 = _context12["catch"](0);
1416
+ if (!_context12.t0.errorFields) {
1417
+ _context12.next = 47;
1418
+ break;
1419
+ }
1420
+ return _context12.abrupt("return");
1421
+ case 47:
1422
+ message.error((_context12.t0 === null || _context12.t0 === void 0 ? void 0 : _context12.t0.message) || locales.getText('pisell-login2-login-failed'));
1423
+ case 48:
1424
+ _context12.prev = 48;
1425
+ setLoading(false);
1426
+ return _context12.finish(48);
1427
+ case 51:
1428
+ case "end":
1429
+ return _context12.stop();
1430
+ }
1431
+ }, _callee12, null, [[0, 43, 48, 51]]);
1432
+ }));
1433
+ return function handleLoginInternal() {
1434
+ return _ref13.apply(this, arguments);
1435
+ };
1436
+ }();
1437
+
1438
+ // 使用防抖的登录处理函数
1439
+ var _useDebounceFn5 = useDebounceFn(handleLoginInternal, {
1440
+ wait: 1000,
1441
+ leading: true,
1442
+ trailing: false
1443
+ }),
1444
+ handleLogin = _useDebounceFn5.run;
1445
+
1446
+ // 处理三方登录
1447
+ var handleOAuthClickInternal = /*#__PURE__*/function () {
1448
+ var _ref14 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee13(provider) {
1449
+ var _config$loginMethods, fbConfig, token, res, _config$loginMethods2, appleConfig, _token, _res4;
1450
+ return _regeneratorRuntime().wrap(function _callee13$(_context13) {
1451
+ while (1) switch (_context13.prev = _context13.next) {
1452
+ case 0:
1453
+ _context13.prev = 0;
1454
+ setLoading(true);
1455
+ if (!(provider === 'facebook')) {
1456
+ _context13.next = 15;
1457
+ break;
1458
+ }
1459
+ fbConfig = config === null || config === void 0 || (_config$loginMethods = config.loginMethods) === null || _config$loginMethods === void 0 ? void 0 : _config$loginMethods.find(function (n) {
1460
+ return n.type === 'facebook';
1461
+ });
1462
+ token = fbConfig === null || fbConfig === void 0 ? void 0 : fbConfig.appId;
1463
+ if (!token) {
1464
+ _context13.next = 12;
1465
+ break;
1466
+ }
1467
+ _context13.next = 8;
1468
+ return registerAndLogin.loginWithFacebook(token);
1469
+ case 8:
1470
+ res = _context13.sent;
1471
+ if (res.status) {
1472
+ onLogin === null || onLogin === void 0 || onLogin(res.data, 'facebook', {
1473
+ account: '',
1474
+ password: ''
1475
+ }, config.channel);
1476
+ }
1477
+ _context13.next = 13;
1478
+ break;
1479
+ case 12:
1480
+ throw new Error('Facebook app_id not configured');
1481
+ case 13:
1482
+ _context13.next = 30;
1483
+ break;
1484
+ case 15:
1485
+ if (!(provider === 'apple')) {
1486
+ _context13.next = 28;
1487
+ break;
1488
+ }
1489
+ appleConfig = config === null || config === void 0 || (_config$loginMethods2 = config.loginMethods) === null || _config$loginMethods2 === void 0 ? void 0 : _config$loginMethods2.find(function (n) {
1490
+ return n.type === 'apple';
1491
+ });
1492
+ _token = appleConfig === null || appleConfig === void 0 ? void 0 : appleConfig.clientId;
1493
+ if (!_token) {
1494
+ _context13.next = 25;
1495
+ break;
1496
+ }
1497
+ _context13.next = 21;
1498
+ return registerAndLogin.loginWithApple(_token);
1499
+ case 21:
1500
+ _res4 = _context13.sent;
1501
+ onLogin === null || onLogin === void 0 || onLogin(_res4.data, 'apple', {
1502
+ account: '',
1503
+ password: ''
1504
+ }, config.channel);
1505
+ _context13.next = 26;
1506
+ break;
1507
+ case 25:
1508
+ throw new Error('Apple client_id not configured');
1509
+ case 26:
1510
+ _context13.next = 30;
1511
+ break;
1512
+ case 28:
1513
+ _context13.next = 30;
1514
+ return onOAuthLogin === null || onOAuthLogin === void 0 ? void 0 : onOAuthLogin(provider, config.channel);
1515
+ case 30:
1516
+ _context13.next = 37;
1517
+ break;
1518
+ case 32:
1519
+ _context13.prev = 32;
1520
+ _context13.t0 = _context13["catch"](0);
1521
+ if (!(_context13.t0.message === 'facebook_login_cancel')) {
1522
+ _context13.next = 36;
1523
+ break;
1524
+ }
1525
+ return _context13.abrupt("return", message.error(locales.getText('pisell-register2-facebook-login-canceled')));
1526
+ case 36:
1527
+ message.error((_context13.t0 === null || _context13.t0 === void 0 ? void 0 : _context13.t0.message) || locales.getText('pisell-login2-login-failed'));
1528
+ case 37:
1529
+ _context13.prev = 37;
1530
+ setLoading(false);
1531
+ return _context13.finish(37);
1532
+ case 40:
1533
+ case "end":
1534
+ return _context13.stop();
1535
+ }
1536
+ }, _callee13, null, [[0, 32, 37, 40]]);
1537
+ }));
1538
+ return function handleOAuthClickInternal(_x12) {
1539
+ return _ref14.apply(this, arguments);
1540
+ };
1541
+ }();
1542
+
1543
+ // 使用防抖的OAuth登录处理函数
1544
+ var _useDebounceFn6 = useDebounceFn(handleOAuthClickInternal, {
1545
+ wait: 200,
1546
+ leading: true,
1547
+ trailing: false
1548
+ }),
1549
+ handleOAuthClick = _useDebounceFn6.run;
1550
+
1551
+ // 渲染主登录表单
1552
+ var renderMainLoginForm = function renderMainLoginForm() {
1553
+ var _config$ui2, _config$ui3, _config$ui4, _config$ui5, _config$ui8, _config$ui9;
1554
+ if (!currentLoginMethod) return null;
1555
+ var type = currentLoginMethod.type;
1556
+
1557
+ // OAuth 类型和 Guest 登录不在主表单区域显示,而是在 switch-options 区域显示
1558
+ if (type === 'google' || type === 'facebook' || type === 'apple' || type === 'guest') {
1559
+ return null;
1560
+ }
1561
+
1562
+ // 检查是否有邮箱或手机登录方法
1563
+ var hasEmailOrPhoneMethod = loginMethods.some(function (method) {
1564
+ return method.type === 'email' || method.type === 'phone';
1565
+ });
1566
+
1567
+ // 如果没有邮箱或手机登录方法,不渲染主输入表单
1568
+ if (!hasEmailOrPhoneMethod) {
1569
+ return null;
1570
+ }
1571
+ var isEmail = type === 'email';
1572
+ var isPhone = type === 'phone';
1573
+
1574
+ // 根据当前模式获取账号字段名(用于区分浏览器自动填充)
1575
+ var accountFieldName = isEmail ? 'email' : 'phone';
1576
+
1577
+ // 辅助函数:根据当前模式获取账号值
1578
+ var getAccountValue = function getAccountValue(values) {
1579
+ if (values) {
1580
+ return values[accountFieldName] || values.account; // 兼容旧的 account
1581
+ }
1582
+ return form.getFieldValue(accountFieldName) || form.getFieldValue('account');
1583
+ };
1584
+ var accountLabel = isEmail ? ((_config$ui2 = config.ui) === null || _config$ui2 === void 0 || (_config$ui2 = _config$ui2.formLabels) === null || _config$ui2 === void 0 || (_config$ui2 = _config$ui2.email) === null || _config$ui2 === void 0 ? void 0 : _config$ui2.show) !== false ? ((_config$ui3 = config.ui) === null || _config$ui3 === void 0 || (_config$ui3 = _config$ui3.formLabels) === null || _config$ui3 === void 0 || (_config$ui3 = _config$ui3.email) === null || _config$ui3 === void 0 ? void 0 : _config$ui3.text) || locales.getText('pisell-login2-email-label') : undefined : ((_config$ui4 = config.ui) === null || _config$ui4 === void 0 || (_config$ui4 = _config$ui4.formLabels) === null || _config$ui4 === void 0 || (_config$ui4 = _config$ui4.phone) === null || _config$ui4 === void 0 ? void 0 : _config$ui4.show) !== false ? ((_config$ui5 = config.ui) === null || _config$ui5 === void 0 || (_config$ui5 = _config$ui5.formLabels) === null || _config$ui5 === void 0 || (_config$ui5 = _config$ui5.phone) === null || _config$ui5 === void 0 ? void 0 : _config$ui5.text) || locales.getText('pisell-login2-phone-label') : undefined;
1585
+ var accountPlaceholder = isEmail ? locales.getText('pisell-login2-email-placeholder') : locales.getText('pisell-login2-phone-placeholder');
1586
+ var accountRules = isEmail ? [{
1587
+ required: true,
1588
+ message: locales.getText('pisell-login2-email-required')
1589
+ }, {
1590
+ type: 'email',
1591
+ message: locales.getText('pisell-login2-email-invalid')
1592
+ }] : createPhoneValidationRules(locales.getText, true);
1593
+
1594
+ // 判断是否使用分步骤登录
1595
+ var useStepByStep = (currentLoginMethod === null || currentLoginMethod === void 0 ? void 0 : currentLoginMethod.stepByStep) && currentVerificationMethod === 'password';
1596
+
1597
+ // 分步骤登录 - 合并步骤1和步骤2为同一表单,通过条件渲染控制显示
1598
+ if (useStepByStep) {
1599
+ var _getAccountValue, _getAccountValue2, _config$ui6, _config$ui7;
1600
+ var isPasswordStep = loginStep === 'password';
1601
+ var showPasswordField = isPasswordStep;
1602
+
1603
+ // 处理表单提交(仅用于用户主动触发,防止自动触发)
1604
+ var handleFormSubmit = function handleFormSubmit(e) {
1605
+ e === null || e === void 0 || e.preventDefault();
1606
+ if (isPasswordStep) {
1607
+ handleLogin();
1608
+ } else {
1609
+ handleContinueWithAccount();
1610
+ }
1611
+ };
1612
+ return /*#__PURE__*/React.createElement(Form, {
1613
+ form: form,
1614
+ layout: "vertical",
1615
+ className: "login2-form",
1616
+ size: "large"
1617
+ }, (isEmail || isPhone) && !showPasswordField && /*#__PURE__*/React.createElement("div", {
1618
+ style: {
1619
+ position: 'absolute',
1620
+ left: '-9999px',
1621
+ opacity: 0,
1622
+ pointerEvents: 'none'
1623
+ }
1624
+ }, /*#__PURE__*/React.createElement("input", {
1625
+ type: "text",
1626
+ name: "username",
1627
+ autoComplete: "username",
1628
+ tabIndex: -1,
1629
+ readOnly: true,
1630
+ "aria-hidden": "true"
1631
+ })), showPasswordField && /*#__PURE__*/React.createElement("div", {
1632
+ className: "login2-account-show-text-edit"
1633
+ }, /*#__PURE__*/React.createElement("span", {
1634
+ className: "login2-account-show-text-edit-text"
1635
+ }, isPhone && "+".concat((_getAccountValue = getAccountValue()) === null || _getAccountValue === void 0 ? void 0 : _getAccountValue.country_calling_code).concat((_getAccountValue2 = getAccountValue()) === null || _getAccountValue2 === void 0 ? void 0 : _getAccountValue2.phone) || '', isEmail && getAccountValue() || ''), /*#__PURE__*/React.createElement("span", {
1636
+ className: "login2-account-show-text-edit-icon",
1637
+ onClick: handleBackToAccount
1638
+ }, /*#__PURE__*/React.createElement(Iconfont, {
1639
+ type: "pisell2-edit-05"
1640
+ }))), /*#__PURE__*/React.createElement(Form.Item, {
1641
+ style: {
1642
+ display: showPasswordField ? 'none' : 'block'
1643
+ },
1644
+ label: accountLabel,
1645
+ name: isEmail ? 'email' : 'phone',
1646
+ rules: accountRules,
1647
+ validateTrigger: ['onBlur', 'onSubmit'],
1648
+ className: isPhone ? 'phone-input-form-item' : ''
1649
+ }, isPhone ? /*#__PURE__*/React.createElement(PhoneInput, {
1650
+ size: "large",
1651
+ placeholder: accountPlaceholder,
1652
+ className: "login2-phone-input",
1653
+ countries: countries,
1654
+ valueFormat: "object",
1655
+ value: isPasswordStep ? enteredAccount : getAccountValue() || undefined,
1656
+ onChange: function onChange(value) {
1657
+ if (isPasswordStep) {
1658
+ setEnteredAccount(value);
1659
+ }
1660
+ form.setFieldsValue(_defineProperty({}, accountFieldName, value));
1661
+ }
1662
+ }) : /*#__PURE__*/React.createElement(Input, {
1663
+ size: "large",
1664
+ placeholder: accountPlaceholder,
1665
+ className: "login2-input",
1666
+ type: "email",
1667
+ autoComplete: "email",
1668
+ value: getAccountValue() || enteredAccount || '',
1669
+ onChange: function onChange(e) {
1670
+ var newValue = e.target.value;
1671
+ if (isPasswordStep) {
1672
+ setEnteredAccount(newValue);
1673
+ }
1674
+ form.setFieldsValue(_defineProperty({}, accountFieldName, newValue));
1675
+ },
1676
+ onKeyDown: function onKeyDown(e) {
1677
+ if (e.key === 'Enter' && !e.shiftKey && !e.ctrlKey && !e.metaKey) {
1678
+ e.preventDefault();
1679
+ handleFormSubmit(e);
1680
+ }
1681
+ }
1682
+ })), /*#__PURE__*/React.createElement(Form.Item, {
1683
+ style: {
1684
+ display: showPasswordField ? 'block' : 'none'
1685
+ },
1686
+ label: ((_config$ui6 = config.ui) === null || _config$ui6 === void 0 || (_config$ui6 = _config$ui6.formLabels) === null || _config$ui6 === void 0 || (_config$ui6 = _config$ui6.password) === null || _config$ui6 === void 0 ? void 0 : _config$ui6.show) !== false ? ((_config$ui7 = config.ui) === null || _config$ui7 === void 0 || (_config$ui7 = _config$ui7.formLabels) === null || _config$ui7 === void 0 || (_config$ui7 = _config$ui7.password) === null || _config$ui7 === void 0 ? void 0 : _config$ui7.text) || locales.getText('pisell-login2-password-label') : undefined,
1687
+ name: "password",
1688
+ validateTrigger: ['onBlur', 'onSubmit'],
1689
+ rules: passwordValidationRules
1690
+ }, /*#__PURE__*/React.createElement(Input.Password, {
1691
+ size: "large",
1692
+ placeholder: locales.getText('pisell-login2-password-placeholder'),
1693
+ className: "login2-input",
1694
+ name: "password",
1695
+ autoComplete: "current-password",
1696
+ type: "password",
1697
+ autoFocus: hasStoredCredentials,
1698
+ onKeyDown: function onKeyDown(e) {
1699
+ if (e.key === 'Enter' && !e.shiftKey && !e.ctrlKey && !e.metaKey) {
1700
+ e.preventDefault();
1701
+ handleFormSubmit(e);
1702
+ }
1703
+ }
1704
+ })), showPasswordField && /*#__PURE__*/React.createElement("div", {
1705
+ className: "login2-form-footer"
1706
+ }, /*#__PURE__*/React.createElement(Form.Item, {
1707
+ name: "remember_me",
1708
+ valuePropName: "checked",
1709
+ noStyle: true
1710
+ }, /*#__PURE__*/React.createElement(Checkbox, {
1711
+ defaultChecked: rememberMe
1712
+ }, locales.getText('pisell-login2-remember-me'))), /*#__PURE__*/React.createElement("a", {
1713
+ className: "login2-link",
1714
+ onClick: handleForgotPasswordClick
1715
+ }, locales.getText('pisell-login2-forgot-password'))), /*#__PURE__*/React.createElement(Button, {
1716
+ type: "primary",
1717
+ size: "large",
1718
+ block: true,
1719
+ htmlType: "button",
1720
+ loading: loading,
1721
+ onClick: handleFormSubmit,
1722
+ className: "login2-submit-button"
1723
+ }, isPasswordStep ? locales.getText('pisell-login2-login-button') : isEmail ? locales.getText('pisell-login2-continue-with-email') : locales.getText('pisell-login2-continue-with-phone')), showPasswordField && /*#__PURE__*/React.createElement(Button, {
1724
+ size: "large",
1725
+ block: true,
1726
+ onClick: handleBackToAccount,
1727
+ className: "login2-back-button"
1728
+ }, locales.getText('pisell-login2-back')));
1729
+ }
1730
+
1731
+ // 验证码登录 - 第一步:仅输入账号
1732
+ if (currentVerificationMethod === 'verification_code' && loginStep === 'account') {
1733
+ // 处理表单提交(仅用于用户主动触发,防止自动触发)
1734
+ var _handleFormSubmit = function _handleFormSubmit(e) {
1735
+ e === null || e === void 0 || e.preventDefault();
1736
+ handleSendCode();
1737
+ };
1738
+ return /*#__PURE__*/React.createElement(Form, {
1739
+ form: form,
1740
+ layout: "vertical",
1741
+ className: "login2-form",
1742
+ size: "large"
1743
+ }, isEmail && /*#__PURE__*/React.createElement("div", {
1744
+ style: {
1745
+ position: 'absolute',
1746
+ left: '-9999px',
1747
+ opacity: 0,
1748
+ pointerEvents: 'none'
1749
+ }
1750
+ }, /*#__PURE__*/React.createElement("input", {
1751
+ type: "text",
1752
+ name: "username",
1753
+ autoComplete: "username",
1754
+ tabIndex: -1,
1755
+ readOnly: true,
1756
+ "aria-hidden": "true"
1757
+ })), /*#__PURE__*/React.createElement(Form.Item, {
1758
+ label: accountLabel,
1759
+ name: accountFieldName,
1760
+ rules: accountRules,
1761
+ className: isPhone ? 'phone-input-form-item' : '',
1762
+ validateTrigger: ['onBlur', 'onSubmit']
1763
+ }, isPhone ? /*#__PURE__*/React.createElement(PhoneInput, {
1764
+ size: "large",
1765
+ placeholder: accountPlaceholder,
1766
+ className: "login2-phone-input",
1767
+ countries: countries,
1768
+ valueFormat: "object",
1769
+ onKeyDown: function onKeyDown(e) {
1770
+ if (e.key === 'Enter' && !e.shiftKey && !e.ctrlKey && !e.metaKey) {
1771
+ e.preventDefault();
1772
+ _handleFormSubmit(e);
1773
+ }
1774
+ }
1775
+ }) : /*#__PURE__*/React.createElement(Input, {
1776
+ size: "large",
1777
+ placeholder: accountPlaceholder,
1778
+ className: "login2-input",
1779
+ type: "email",
1780
+ autoComplete: "email",
1781
+ onKeyDown: function onKeyDown(e) {
1782
+ if (e.key === 'Enter' && !e.shiftKey && !e.ctrlKey && !e.metaKey) {
1783
+ e.preventDefault();
1784
+ _handleFormSubmit(e);
1785
+ }
1786
+ }
1787
+ })), /*#__PURE__*/React.createElement(Button, {
1788
+ type: "primary",
1789
+ size: "large",
1790
+ block: true,
1791
+ htmlType: "button",
1792
+ loading: loading,
1793
+ onClick: _handleFormSubmit,
1794
+ className: "login2-submit-button"
1795
+ }, isEmail ? locales.getText('pisell-login2-continue-with-email') : locales.getText('pisell-login2-continue-with-phone')));
1796
+ }
1797
+
1798
+ // 密码登录 - 单步完成
1799
+ return /*#__PURE__*/React.createElement(Form, {
1800
+ form: form,
1801
+ layout: "vertical",
1802
+ className: "login2-form",
1803
+ size: "large",
1804
+ onFinish: handleLogin
1805
+ }, isEmail && /*#__PURE__*/React.createElement("div", {
1806
+ style: {
1807
+ position: 'absolute',
1808
+ left: '-9999px',
1809
+ opacity: 0,
1810
+ pointerEvents: 'none'
1811
+ }
1812
+ }, /*#__PURE__*/React.createElement("input", {
1813
+ type: "text",
1814
+ name: "username",
1815
+ autoComplete: "username",
1816
+ tabIndex: -1,
1817
+ readOnly: true,
1818
+ "aria-hidden": "true"
1819
+ })), isEmail ? /*#__PURE__*/React.createElement(Form.Item, {
1820
+ label: accountLabel,
1821
+ name: accountFieldName,
1822
+ rules: accountRules,
1823
+ validateTrigger: ['onBlur', 'onSubmit']
1824
+ }, /*#__PURE__*/React.createElement(Input, {
1825
+ size: "large",
1826
+ placeholder: accountPlaceholder,
1827
+ className: "login2-input",
1828
+ type: "email",
1829
+ autoComplete: "email",
1830
+ value: getAccountValue() || enteredAccount || '',
1831
+ onChange: function onChange(e) {
1832
+ var newValue = e.target.value;
1833
+ setEnteredAccount(newValue);
1834
+ form.setFieldsValue(_defineProperty({}, accountFieldName, newValue));
1835
+ }
1836
+ })) : /*#__PURE__*/React.createElement(Form.Item, {
1837
+ label: accountLabel,
1838
+ name: accountFieldName,
1839
+ rules: accountRules,
1840
+ validateTrigger: ['onBlur', 'onSubmit']
1841
+ }, /*#__PURE__*/React.createElement(PhoneInput, {
1842
+ size: "large",
1843
+ placeholder: accountPlaceholder,
1844
+ className: "login2-phone-input",
1845
+ countries: countries,
1846
+ valueFormat: "object"
1847
+ })), /*#__PURE__*/React.createElement(Form.Item, {
1848
+ label: ((_config$ui8 = config.ui) === null || _config$ui8 === void 0 || (_config$ui8 = _config$ui8.formLabels) === null || _config$ui8 === void 0 || (_config$ui8 = _config$ui8.password) === null || _config$ui8 === void 0 ? void 0 : _config$ui8.show) !== false ? ((_config$ui9 = config.ui) === null || _config$ui9 === void 0 || (_config$ui9 = _config$ui9.formLabels) === null || _config$ui9 === void 0 || (_config$ui9 = _config$ui9.password) === null || _config$ui9 === void 0 ? void 0 : _config$ui9.text) || locales.getText('pisell-login2-password-label') : undefined,
1849
+ name: "password",
1850
+ rules: passwordValidationRules,
1851
+ validateTrigger: ['onBlur', 'onSubmit']
1852
+ }, /*#__PURE__*/React.createElement(Input.Password, {
1853
+ size: "large",
1854
+ placeholder: locales.getText('pisell-login2-password-placeholder'),
1855
+ className: "login2-input",
1856
+ name: "password",
1857
+ autoComplete: "current-password",
1858
+ type: "password"
1859
+ })), /*#__PURE__*/React.createElement("div", {
1860
+ className: "login2-form-footer"
1861
+ }, /*#__PURE__*/React.createElement(Form.Item, {
1862
+ name: "remember_me",
1863
+ valuePropName: "checked",
1864
+ noStyle: true
1865
+ }, /*#__PURE__*/React.createElement(Checkbox, null, locales.getText('pisell-login2-remember-me'))), currentVerificationMethod === 'password' && /*#__PURE__*/React.createElement("a", {
1866
+ className: "login2-link",
1867
+ onClick: handleForgotPasswordClick
1868
+ }, locales.getText('pisell-login2-forgot-password'))), /*#__PURE__*/React.createElement(Button, {
1869
+ type: "primary",
1870
+ size: "large",
1871
+ block: true,
1872
+ htmlType: "submit",
1873
+ loading: loading,
1874
+ onClick: handleLogin,
1875
+ className: "login2-submit-button"
1876
+ }, locales.getText('pisell-login2-login-button')));
1877
+ };
1878
+
1879
+ // 渲染底部切换选项区域
1880
+ var renderSwitchOptions = function renderSwitchOptions() {
1881
+ if (!currentLoginMethod) return null;
1882
+ var primaryMethod = loginMethods[0];
1883
+ var currentIsFormMethod = currentLoginMethod.type === 'email' || currentLoginMethod.type === 'phone';
1884
+ var primaryIsFormMethod = (primaryMethod === null || primaryMethod === void 0 ? void 0 : primaryMethod.type) === 'email' || (primaryMethod === null || primaryMethod === void 0 ? void 0 : primaryMethod.type) === 'phone';
1885
+ var shouldUseFormLayout = currentIsFormMethod || primaryIsFormMethod;
1886
+ var verificationSwitchButtons = [];
1887
+ if (currentIsFormMethod) {
1888
+ (currentLoginMethod.verificationMethods || []).filter(function (method) {
1889
+ return method !== currentVerificationMethod;
1890
+ }).forEach(function (method) {
1891
+ if (method === 'verification_code') {
1892
+ var text = currentLoginMethod.type === 'email' ? locales.getText('pisell-login2-switch-to-email-code') : locales.getText('pisell-login2-switch-to-sms-code');
1893
+ verificationSwitchButtons.push( /*#__PURE__*/React.createElement("button", {
1894
+ key: "switch-to-code",
1895
+ className: "login2-switch-option-button",
1896
+ onClick: function onClick() {
1897
+ return switchVerificationMethod('verification_code');
1898
+ }
1899
+ }, currentLoginMethod.type === 'email' ? /*#__PURE__*/React.createElement(Iconfont, {
1900
+ type: "pisell2-mail-01"
1901
+ }) : /*#__PURE__*/React.createElement(Iconfont, {
1902
+ type: "pisell2-phone"
1903
+ }), /*#__PURE__*/React.createElement("span", {
1904
+ className: "option-text"
1905
+ }, text)));
1906
+ } else {
1907
+ verificationSwitchButtons.push( /*#__PURE__*/React.createElement("button", {
1908
+ key: "switch-to-password",
1909
+ className: "login2-switch-option-button",
1910
+ onClick: function onClick() {
1911
+ return switchVerificationMethod('password');
1912
+ }
1913
+ }, /*#__PURE__*/React.createElement(Iconfont, {
1914
+ type: "pisell2-key-01"
1915
+ }), /*#__PURE__*/React.createElement("span", {
1916
+ className: "option-text"
1917
+ }, locales.getText('pisell-login2-switch-to-password'))));
1918
+ }
1919
+ });
1920
+ }
1921
+ var emailPhoneSwitchButtons = [];
1922
+ loginMethods.forEach(function (method, index) {
1923
+ if (method.type === 'email' || method.type === 'phone') {
1924
+ if (method.type === currentLoginMethod.type) return;
1925
+ var isLast = isLastLoginMethod(method.type);
1926
+ var _className = classNames('login2-switch-option-button', {
1927
+ 'has-last-login-badge': isLast
1928
+ });
1929
+ emailPhoneSwitchButtons.push( /*#__PURE__*/React.createElement("button", {
1930
+ key: "".concat(method.type, "-").concat(index),
1931
+ className: _className,
1932
+ onClick: function onClick() {
1933
+ return switchLoginMethod(method);
1934
+ }
1935
+ }, isLast && /*#__PURE__*/React.createElement("div", {
1936
+ className: "last-login-badge"
1937
+ }, locales.getText('pisell-login2-last-login-badge')), /*#__PURE__*/React.createElement(Iconfont, {
1938
+ type: method.type === 'email' ? 'pisell2-mail-01' : 'pisell2-phone'
1939
+ }), /*#__PURE__*/React.createElement("span", {
1940
+ className: "option-text"
1941
+ }, method.type === 'email' ? locales.getText('pisell-login2-switch-to-email') : locales.getText('pisell-login2-switch-to-phone'))));
1942
+ }
1943
+ });
1944
+ var nonOauthButtons = [].concat(verificationSwitchButtons, emailPhoneSwitchButtons);
1945
+ var registerPrompt = onSwitchToRegister && /*#__PURE__*/React.createElement("div", {
1946
+ className: "login2-register-prompt"
1947
+ }, /*#__PURE__*/React.createElement("span", {
1948
+ className: "register-prompt-text"
1949
+ }, locales.getText('pisell-login2-no-account')), /*#__PURE__*/React.createElement("button", {
1950
+ className: "register-prompt-link",
1951
+ onClick: onSwitchToRegister
1952
+ }, locales.getText('pisell-login2-register-link')));
1953
+ if (!nonOauthButtons.length && !oauthProviders.length) {
1954
+ return registerPrompt;
1955
+ }
1956
+ if (shouldUseFormLayout) {
1957
+ var groups = [];
1958
+ if (nonOauthButtons.length > 0) {
1959
+ groups.push( /*#__PURE__*/React.createElement("div", {
1960
+ key: "non-oauth",
1961
+ className: "login2-switch-options"
1962
+ }, nonOauthButtons));
1963
+ }
1964
+ if (oauthProviders.length > 0) {
1965
+ groups.push( /*#__PURE__*/React.createElement(OAuthButtonGroup, {
1966
+ key: "oauth",
1967
+ providers: oauthProviders,
1968
+ wrapperClassName: "login2-oauth-buttons",
1969
+ buttonClassName: "login2-oauth-button",
1970
+ gap: 12
1971
+ }));
1972
+ }
1973
+ if (!groups.length) {
1974
+ return registerPrompt;
1975
+ }
1976
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
1977
+ className: "login2-divider"
1978
+ }, locales.getText('pisell-login2-or')), /*#__PURE__*/React.createElement("div", {
1979
+ className: "login2-switch-groups"
1980
+ }, groups), registerPrompt);
1981
+ }
1982
+ var primaryProvider = oauthProviders.find(function (provider) {
1983
+ return provider.key === (primaryMethod === null || primaryMethod === void 0 ? void 0 : primaryMethod.type);
1984
+ });
1985
+ var secondaryOauthProviders = oauthProviders.filter(function (provider) {
1986
+ return provider.key !== (primaryMethod === null || primaryMethod === void 0 ? void 0 : primaryMethod.type);
1987
+ });
1988
+ var hasSecondaryButtons = nonOauthButtons.length > 0 || secondaryOauthProviders.length > 0;
1989
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
1990
+ className: "login2-switch-groups"
1991
+ }, primaryProvider ? /*#__PURE__*/React.createElement(OAuthButtonGroup, {
1992
+ providers: [primaryProvider],
1993
+ wrapperClassName: "login2-oauth-buttons",
1994
+ buttonClassName: "login2-oauth-button",
1995
+ gap: 12
1996
+ }) : /*#__PURE__*/React.createElement("div", {
1997
+ className: "login2-switch-options"
1998
+ }, /*#__PURE__*/React.createElement("button", {
1999
+ key: "primary-fallback",
2000
+ className: "login2-switch-option-button",
2001
+ onClick: function onClick() {
2002
+ if ((primaryMethod === null || primaryMethod === void 0 ? void 0 : primaryMethod.type) === 'guest') {
2003
+ handleGuestLogin();
2004
+ } else if ((primaryMethod === null || primaryMethod === void 0 ? void 0 : primaryMethod.type) === 'google' || (primaryMethod === null || primaryMethod === void 0 ? void 0 : primaryMethod.type) === 'facebook' || (primaryMethod === null || primaryMethod === void 0 ? void 0 : primaryMethod.type) === 'apple') {
2005
+ handleOAuthClick(primaryMethod.type);
2006
+ }
2007
+ }
2008
+ }, /*#__PURE__*/React.createElement(Iconfont, {
2009
+ type: (primaryMethod === null || primaryMethod === void 0 ? void 0 : primaryMethod.type) === 'guest' ? 'pisell2-user-01' : (primaryMethod === null || primaryMethod === void 0 ? void 0 : primaryMethod.type) === 'google' ? 'pisell2-google' : (primaryMethod === null || primaryMethod === void 0 ? void 0 : primaryMethod.type) === 'facebook' ? 'pisell2-facebook' : 'pisell2-apple'
2010
+ }), /*#__PURE__*/React.createElement("span", {
2011
+ className: "option-text"
2012
+ }, (primaryMethod === null || primaryMethod === void 0 ? void 0 : primaryMethod.type) === 'guest' ? locales.getText('pisell-login2-login-as-guest') : "".concat(locales.getText('pisell-login2-continue-with'), " ").concat(primaryMethod !== null && primaryMethod !== void 0 && primaryMethod.type ? primaryMethod.type.charAt(0).toUpperCase() + primaryMethod.type.slice(1) : '')))), hasSecondaryButtons && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
2013
+ className: "login2-divider"
2014
+ }, locales.getText('pisell-login2-or')), nonOauthButtons.length > 0 && /*#__PURE__*/React.createElement("div", {
2015
+ className: "login2-switch-options"
2016
+ }, nonOauthButtons), secondaryOauthProviders.length > 0 && /*#__PURE__*/React.createElement(OAuthButtonGroup, {
2017
+ providers: secondaryOauthProviders,
2018
+ wrapperClassName: "login2-oauth-buttons",
2019
+ buttonClassName: "login2-oauth-button",
2020
+ gap: 12
2021
+ }))), registerPrompt);
2022
+ };
2023
+
2024
+ // 渲染 OAuth 按钮
2025
+ if (!visible) {
2026
+ return null;
2027
+ }
2028
+ var ui = config.ui;
2029
+
2030
+ // 如果是邮件链接验证模式,显示相应的页面
2031
+ if (isEmailLinkVerification) {
2032
+ if (emailLinkVerifyStatus === 'verifying') {
2033
+ // 显示验证中页面
2034
+ return /*#__PURE__*/React.createElement("div", {
2035
+ className: classNames('login2-container', className),
2036
+ style: _objectSpread(_objectSpread({}, style), {}, {
2037
+ '--theme-color': (ui === null || ui === void 0 ? void 0 : ui.themeColor) || '#7F56D9'
2038
+ })
2039
+ }, /*#__PURE__*/React.createElement("div", {
2040
+ className: "login2-email-link-verifying"
2041
+ }, /*#__PURE__*/React.createElement("div", {
2042
+ className: "verifying-content"
2043
+ }, /*#__PURE__*/React.createElement("div", {
2044
+ className: "verifying-icon"
2045
+ }, /*#__PURE__*/React.createElement(Iconfont, {
2046
+ type: "icon-loading",
2047
+ spin: true
2048
+ })), /*#__PURE__*/React.createElement("h2", {
2049
+ className: "verifying-title"
2050
+ }, "Verifying your email..."), /*#__PURE__*/React.createElement("p", {
2051
+ className: "verifying-desc"
2052
+ }, "Please wait while we verify your email link."))));
2053
+ }
2054
+ if (emailLinkVerifyStatus === 'success') {
2055
+ // 验证成功,显示重置密码页面
2056
+ return /*#__PURE__*/React.createElement("div", {
2057
+ className: classNames('login2-container', className),
2058
+ style: _objectSpread(_objectSpread({}, style), {}, {
2059
+ '--theme-color': (ui === null || ui === void 0 ? void 0 : ui.themeColor) || '#7F56D9'
2060
+ })
2061
+ }, /*#__PURE__*/React.createElement(SetPassword, {
2062
+ scenario: "reset",
2063
+ flowData: {
2064
+ account: resetPasswordUserEmail || '',
2065
+ accountType: 'email',
2066
+ verificationMethod: 'verification_code'
2067
+ },
2068
+ onSubmit: ( /*#__PURE__*/function () {
2069
+ var _ref15 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee14(password, confirmPassword) {
2070
+ var result, emailMethod;
2071
+ return _regeneratorRuntime().wrap(function _callee14$(_context14) {
2072
+ while (1) switch (_context14.prev = _context14.next) {
2073
+ case 0:
2074
+ _context14.prev = 0;
2075
+ if (!(registerAndLogin !== null && registerAndLogin !== void 0 && registerAndLogin.resetPasswordByCode)) {
2076
+ _context14.next = 8;
2077
+ break;
2078
+ }
2079
+ _context14.next = 4;
2080
+ return registerAndLogin.resetPasswordByCode({
2081
+ code: config.emailLinkVerification.code,
2082
+ password: password
2083
+ });
2084
+ case 4:
2085
+ result = _context14.sent;
2086
+ if (result.status) {
2087
+ message.success('密码重置成功');
2088
+ // 重置状态
2089
+ setEmailLinkVerifyStatus(null);
2090
+ setEmailLinkError('');
2091
+
2092
+ // 根据用户邮箱自动切换到邮箱登录并预填充
2093
+ if (resetPasswordUserEmail) {
2094
+ // 切换到邮箱登录方式
2095
+ emailMethod = config.loginMethods.find(function (method) {
2096
+ return method.type === 'email';
2097
+ });
2098
+ if (emailMethod) {
2099
+ setCurrentLoginMethod(emailMethod);
2100
+ setCurrentVerificationMethod(emailMethod.verificationMethods[0]);
2101
+ }
2102
+
2103
+ // 预填充邮箱到表单
2104
+ form.setFieldsValue({
2105
+ email: resetPasswordUserEmail
2106
+ });
2107
+ setEnteredAccount(resetPasswordUserEmail);
2108
+
2109
+ // 重置登录步骤到账号输入页面
2110
+ setLoginStep('account');
2111
+ }
2112
+ } else {
2113
+ message.error(result.message || '密码重置失败');
2114
+ }
2115
+ _context14.next = 9;
2116
+ break;
2117
+ case 8:
2118
+ message.error('系统错误,请稍后重试');
2119
+ case 9:
2120
+ _context14.next = 14;
2121
+ break;
2122
+ case 11:
2123
+ _context14.prev = 11;
2124
+ _context14.t0 = _context14["catch"](0);
2125
+ message.error((_context14.t0 === null || _context14.t0 === void 0 ? void 0 : _context14.t0.message) || '密码重置失败');
2126
+ case 14:
2127
+ case "end":
2128
+ return _context14.stop();
2129
+ }
2130
+ }, _callee14, null, [[0, 11]]);
2131
+ }));
2132
+ return function (_x13, _x14) {
2133
+ return _ref15.apply(this, arguments);
2134
+ };
2135
+ }()),
2136
+ onBack: function onBack() {
2137
+ setEmailLinkVerifyStatus(null);
2138
+ setEmailLinkError('');
2139
+ },
2140
+ loading: loading
2141
+ }));
2142
+ }
2143
+ if (emailLinkVerifyStatus === 'error') {
2144
+ // 显示错误页面
2145
+ return /*#__PURE__*/React.createElement("div", {
2146
+ className: classNames('login2-container', className),
2147
+ style: _objectSpread(_objectSpread({}, style), {}, {
2148
+ '--theme-color': (ui === null || ui === void 0 ? void 0 : ui.themeColor) || '#7F56D9'
2149
+ })
2150
+ }, /*#__PURE__*/React.createElement("div", {
2151
+ className: "login2-email-link-error"
2152
+ }, /*#__PURE__*/React.createElement("div", {
2153
+ className: "error-content"
2154
+ }, /*#__PURE__*/React.createElement("div", {
2155
+ className: "error-icon"
2156
+ }, /*#__PURE__*/React.createElement(Iconfont, {
2157
+ type: "icon-error"
2158
+ })), /*#__PURE__*/React.createElement("h2", {
2159
+ className: "error-title"
2160
+ }, locales.getText('pisell-login2-verification-failed-title')), /*#__PURE__*/React.createElement("p", {
2161
+ className: "error-desc"
2162
+ }, emailLinkError), /*#__PURE__*/React.createElement(Button, {
2163
+ type: "primary",
2164
+ size: "large",
2165
+ block: true,
2166
+ className: "login2-error-main-button",
2167
+ onClick: function onClick() {
2168
+ setEmailLinkVerifyStatus(null);
2169
+ setEmailLinkError('');
2170
+ }
2171
+ }, locales.getText('pisell-login2-login-button')))));
2172
+ }
2173
+ }
2174
+
2175
+ // 如果显示忘记密码流程
2176
+ if (showForgotPassword) {
2177
+ var accountType = (currentLoginMethod === null || currentLoginMethod === void 0 ? void 0 : currentLoginMethod.type) === 'email' ? 'email' : 'phone';
2178
+ return /*#__PURE__*/React.createElement("div", {
2179
+ className: classNames('login2-container', className),
2180
+ style: _objectSpread(_objectSpread({}, style), {}, {
2181
+ '--theme-color': (ui === null || ui === void 0 ? void 0 : ui.themeColor) || '#7F56D9'
2182
+ })
2183
+ }, /*#__PURE__*/React.createElement(ForgotPasswordFlow, {
2184
+ initialEmail: enteredAccount,
2185
+ accountType: accountType,
2186
+ onSendCode: handleForgotPasswordSendCode,
2187
+ onVerifyCode: handleForgotPasswordVerifyCode,
2188
+ onResetPassword: isEmailLinkVerification ? handleEmailLinkResetPassword : handleForgotPasswordReset,
2189
+ onSendResetLink: handleForgotPasswordSendLink,
2190
+ onBack: handleCloseForgotPassword,
2191
+ loading: loading,
2192
+ countdown: countdown,
2193
+ countries: countries
2194
+ }));
2195
+ }
2196
+
2197
+ // 如果在验证码输入步骤,显示验证码输入页面
2198
+ if (loginStep === 'code') {
2199
+ var _accountType = (currentLoginMethod === null || currentLoginMethod === void 0 ? void 0 : currentLoginMethod.type) === 'email' ? 'email' : 'phone';
2200
+ return /*#__PURE__*/React.createElement("div", {
2201
+ className: classNames('login2-container', className),
2202
+ style: _objectSpread(_objectSpread({}, style), {}, {
2203
+ '--theme-color': (ui === null || ui === void 0 ? void 0 : ui.themeColor) || '#7F56D9'
2204
+ })
2205
+ }, /*#__PURE__*/React.createElement(LoginCodeInput, {
2206
+ account: typeof enteredAccount === 'string' ? enteredAccount : enteredAccount.phone,
2207
+ accountType: _accountType,
2208
+ codeLength: 4,
2209
+ onSubmit: handleCodeSubmit,
2210
+ onResend: handleSendCode,
2211
+ onBack: handleBackFromCode,
2212
+ countdown: countdown,
2213
+ loading: loading,
2214
+ error: codeError,
2215
+ onClearError: function onClearError() {
2216
+ return setCodeError('');
2217
+ }
2218
+ }));
2219
+ }
2220
+ return /*#__PURE__*/React.createElement("div", {
2221
+ className: classNames('login2-container', 'register2-container', className),
2222
+ style: _objectSpread(_objectSpread({}, style), {}, {
2223
+ '--theme-color': (ui === null || ui === void 0 ? void 0 : ui.themeColor) || '#7F56D9'
2224
+ })
2225
+ }, /*#__PURE__*/React.createElement(Header, {
2226
+ ui: ui
2227
+ }), /*#__PURE__*/React.createElement("div", {
2228
+ className: "login2-content"
2229
+ }, renderMainLoginForm(), renderSwitchOptions()), /*#__PURE__*/React.createElement(LegalTerms, {
2230
+ config: _objectSpread(_objectSpread({}, config.legalTerms), {}, {
2231
+ mode: 'login'
2232
+ })
2233
+ }));
2234
+ };
2235
+ export default Login2;