@pisell/private-materials 6.3.30 → 6.3.32

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 (287) 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 -146
  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/components/appointmentBooking/components/Cart/Item/index.d.ts +1 -1
  12. package/es/components/appointmentBooking/components/Cart/Item/index.js +3 -2
  13. package/es/components/appointmentBooking/components/ConfirmInformation/index.js +267 -76
  14. package/es/components/appointmentBooking/components/ConfirmInformation/index.less +15 -0
  15. package/es/components/appointmentBooking/hooks.d.ts +1 -0
  16. package/es/components/appointmentBooking/hooks.js +30 -30
  17. package/es/components/appointmentBooking/locales.d.ts +3 -0
  18. package/es/components/appointmentBooking/locales.js +9 -6
  19. package/es/components/booking/addons/model.d.ts +10 -1
  20. package/es/components/booking/components/footer/index.js +4 -1
  21. package/es/components/booking/components/footer/utils.js +62 -46
  22. package/es/components/booking/forms/model.d.ts +10 -1
  23. package/es/components/booking/info/clientVariant/hooks/useClientFn.js +2 -2
  24. package/es/components/booking/info/clientVariant/vertical/index.js +1 -1
  25. package/es/components/booking/info/main.js +3 -2
  26. package/es/components/booking/info/model.d.ts +10 -1
  27. package/es/components/booking/info/model.js +5 -0
  28. package/es/components/booking/info/service/addService/utils.d.ts +1 -1
  29. package/es/components/booking/info2/index.js +3 -2
  30. package/es/components/booking/info2/service/addService/utils.d.ts +1 -1
  31. package/es/components/booking/info2/service/contactInfoMode/index.d.ts +2 -0
  32. package/es/components/booking/info2/service/contactInfoMode/index.js +94 -0
  33. package/es/components/booking/locales.d.ts +3 -0
  34. package/es/components/booking/locales.js +9 -3
  35. package/es/components/booking/model.d.ts +13 -1
  36. package/es/components/booking/model.js +3 -0
  37. package/es/components/booking/notes/model.d.ts +10 -1
  38. package/es/components/booking/payments/model.d.ts +10 -1
  39. package/es/components/eftposPay/amount.d.ts +1 -1
  40. package/es/components/eftposPay/device.d.ts +1 -1
  41. package/es/components/eftposPay/store/index.d.ts +2 -2
  42. package/es/components/pay/toC/model.d.ts +9 -1
  43. package/es/components/schedules/model.d.ts +9 -1
  44. package/es/components/ticketBooking/components/ticketBooking/index.less +2 -1
  45. package/es/components/wallet/Detail/model.d.ts +13 -1
  46. package/es/components/wallet/DiscountCard/model.d.ts +14 -1
  47. package/es/components/wallet/PointCard/model.d.ts +13 -1
  48. package/es/components/wallet/RechargeableCard/model.d.ts +29 -1
  49. package/es/components/wallet/Voucher/model.d.ts +13 -1
  50. package/es/components/wallet/model.d.ts +9 -1
  51. package/es/index.d.ts +3 -0
  52. package/es/index.js +4 -1
  53. package/es/plus/clientName/index.d.ts +4 -0
  54. package/es/plus/clientName/index.js +18 -0
  55. package/es/plus/clientName/index.less +10 -0
  56. package/es/plus/clientName/type.d.ts +13 -0
  57. package/es/plus/clientName/type.js +1 -0
  58. package/es/plus/clientName/utils.d.ts +2 -0
  59. package/es/plus/clientName/utils.js +18 -0
  60. package/es/plus/contactInfo/components/Avatar/index.d.ts +10 -0
  61. package/es/plus/contactInfo/components/Avatar/index.js +30 -0
  62. package/es/plus/contactInfo/components/SwipeAction/index.d.ts +46 -0
  63. package/es/plus/contactInfo/components/SwipeAction/index.js +360 -0
  64. package/es/plus/contactInfo/components/SwipeAction/index.less +74 -0
  65. package/es/plus/contactInfo/index.d.ts +6 -0
  66. package/es/plus/contactInfo/index.js +198 -0
  67. package/es/plus/contactInfo/index.less +621 -0
  68. package/es/plus/contactInfo/locales.d.ts +15 -0
  69. package/es/plus/contactInfo/locales.js +14 -0
  70. package/es/plus/contactInfo/types.d.ts +91 -0
  71. package/es/plus/contactInfo/types.js +1 -0
  72. package/es/plus/contactInfo/utils.d.ts +7 -0
  73. package/es/plus/contactInfo/utils.js +50 -0
  74. package/es/plus/contactInfoModal/ContactInfoContent.d.ts +3 -0
  75. package/es/plus/contactInfoModal/ContactInfoContent.js +74 -0
  76. package/es/plus/contactInfoModal/index.d.ts +40 -0
  77. package/es/plus/contactInfoModal/index.js +154 -0
  78. package/es/plus/contactInfoModal/index.less +19 -0
  79. package/es/plus/contactInfoModal/locales.d.ts +66 -0
  80. package/es/plus/contactInfoModal/locales.js +65 -0
  81. package/es/pro/Login2.0/AuthModal.d.ts +143 -0
  82. package/es/pro/Login2.0/AuthModal.js +624 -0
  83. package/es/pro/Login2.0/Login2.d.ts +61 -0
  84. package/es/pro/Login2.0/Login2.js +2157 -0
  85. package/es/pro/Login2.0/Register2.d.ts +65 -0
  86. package/es/pro/Login2.0/Register2.js +1501 -0
  87. package/es/pro/Login2.0/components/ForgotPasswordFlow.d.ts +31 -0
  88. package/es/pro/Login2.0/components/ForgotPasswordFlow.js +330 -0
  89. package/es/pro/Login2.0/components/LegalTerms.d.ts +8 -0
  90. package/es/pro/Login2.0/components/LegalTerms.js +51 -0
  91. package/es/pro/Login2.0/components/LegalTerms.less +74 -0
  92. package/es/pro/Login2.0/components/LoginCodeInput.d.ts +27 -0
  93. package/es/pro/Login2.0/components/LoginCodeInput.js +207 -0
  94. package/es/pro/Login2.0/components/OAuthButtonGroup.d.ts +22 -0
  95. package/es/pro/Login2.0/components/OAuthButtonGroup.js +55 -0
  96. package/es/pro/Login2.0/components/PhoneInput.d.ts +53 -0
  97. package/es/pro/Login2.0/components/PhoneInput.js +414 -0
  98. package/es/pro/Login2.0/components/PhoneInput.less +148 -0
  99. package/es/pro/Login2.0/components/phoneValidation.d.ts +17 -0
  100. package/es/pro/Login2.0/components/phoneValidation.js +228 -0
  101. package/es/pro/Login2.0/hooks/index.d.ts +2 -0
  102. package/es/pro/Login2.0/hooks/index.js +1 -0
  103. package/es/pro/Login2.0/hooks/usePasswordValidationRules.d.ts +24 -0
  104. package/es/pro/Login2.0/hooks/usePasswordValidationRules.js +87 -0
  105. package/es/pro/Login2.0/hooks/useRegisterFlow.d.ts +39 -0
  106. package/es/pro/Login2.0/hooks/useRegisterFlow.js +158 -0
  107. package/es/pro/Login2.0/hooks/useRegistrationMethods.d.ts +9 -0
  108. package/es/pro/Login2.0/hooks/useRegistrationMethods.js +31 -0
  109. package/es/pro/Login2.0/index.js +8 -0
  110. package/es/pro/Login2.0/index.less +993 -0
  111. package/es/pro/Login2.0/locales.d.ts +543 -0
  112. package/es/pro/Login2.0/locales.js +622 -0
  113. package/es/pro/Login2.0/shared/Header.d.ts +11 -0
  114. package/es/pro/Login2.0/shared/Header.js +42 -0
  115. package/es/pro/Login2.0/shared/OAuthButtons.d.ts +11 -0
  116. package/es/pro/Login2.0/shared/OAuthButtons.js +59 -0
  117. package/es/pro/Login2.0/shared/registerFlow.d.ts +116 -0
  118. package/es/pro/Login2.0/shared/registerFlow.js +171 -0
  119. package/es/pro/Login2.0/shared/types.d.ts +232 -0
  120. package/es/pro/Login2.0/shared/types.js +1 -0
  121. package/es/pro/Login2.0/steps/CodeInput.d.ts +24 -0
  122. package/es/pro/Login2.0/steps/CodeInput.js +209 -0
  123. package/es/pro/Login2.0/steps/EmailAlreadyRegistered.d.ts +12 -0
  124. package/es/pro/Login2.0/steps/EmailAlreadyRegistered.js +35 -0
  125. package/es/pro/Login2.0/steps/EmailLinkAlreadyUsed.d.ts +7 -0
  126. package/es/pro/Login2.0/steps/EmailLinkAlreadyUsed.js +25 -0
  127. package/es/pro/Login2.0/steps/EmailLinkExpired.d.ts +9 -0
  128. package/es/pro/Login2.0/steps/EmailLinkExpired.js +33 -0
  129. package/es/pro/Login2.0/steps/SetPassword.d.ts +19 -0
  130. package/es/pro/Login2.0/steps/SetPassword.js +148 -0
  131. package/es/pro/Login2.0/steps/VerificationSuccess.d.ts +8 -0
  132. package/es/pro/Login2.0/steps/VerificationSuccess.js +35 -0
  133. package/es/pro/Login2.0/steps/VerifyingEmailLink.d.ts +7 -0
  134. package/es/pro/Login2.0/steps/VerifyingEmailLink.js +17 -0
  135. package/es/pro/Login2.0/steps/WaitEmailLink.d.ts +18 -0
  136. package/es/pro/Login2.0/steps/WaitEmailLink.js +54 -0
  137. package/es/pro/Login2.0/steps/index.d.ts +19 -0
  138. package/es/pro/Login2.0/steps/index.js +11 -0
  139. package/es/pro/Login2.0/steps/steps.less +423 -0
  140. package/es/pro/Login2.0/types.d.ts +167 -0
  141. package/es/pro/Login2.0/types.js +1 -0
  142. package/lib/components/appointmentBooking/components/Cart/Item/index.d.ts +1 -1
  143. package/lib/components/appointmentBooking/components/Cart/Item/index.js +5 -3
  144. package/lib/components/appointmentBooking/components/ConfirmInformation/index.js +151 -13
  145. package/lib/components/appointmentBooking/components/ConfirmInformation/index.less +15 -0
  146. package/lib/components/appointmentBooking/hooks.d.ts +1 -0
  147. package/lib/components/appointmentBooking/hooks.js +73 -35
  148. package/lib/components/appointmentBooking/locales.d.ts +3 -0
  149. package/lib/components/appointmentBooking/locales.js +6 -3
  150. package/lib/components/booking/addons/model.d.ts +10 -1
  151. package/lib/components/booking/components/footer/index.js +4 -1
  152. package/lib/components/booking/components/footer/utils.js +70 -38
  153. package/lib/components/booking/forms/model.d.ts +10 -1
  154. package/lib/components/booking/info/clientVariant/hooks/useClientFn.js +1 -1
  155. package/lib/components/booking/info/clientVariant/vertical/index.js +34 -17
  156. package/lib/components/booking/info/main.js +5 -4
  157. package/lib/components/booking/info/model.d.ts +10 -1
  158. package/lib/components/booking/info/model.js +5 -0
  159. package/lib/components/booking/info/service/addService/utils.d.ts +1 -1
  160. package/lib/components/booking/info2/index.js +5 -4
  161. package/lib/components/booking/info2/service/addService/utils.d.ts +1 -1
  162. package/lib/components/booking/info2/service/contactInfoMode/index.d.ts +2 -0
  163. package/lib/components/booking/info2/service/contactInfoMode/index.js +111 -0
  164. package/lib/components/booking/locales.d.ts +3 -0
  165. package/lib/components/booking/locales.js +9 -3
  166. package/lib/components/booking/model.d.ts +13 -1
  167. package/lib/components/booking/model.js +3 -0
  168. package/lib/components/booking/notes/model.d.ts +10 -1
  169. package/lib/components/booking/payments/model.d.ts +10 -1
  170. package/lib/components/eftposPay/amount.d.ts +1 -1
  171. package/lib/components/eftposPay/device.d.ts +1 -1
  172. package/lib/components/eftposPay/store/index.d.ts +2 -2
  173. package/lib/components/pay/toC/model.d.ts +9 -1
  174. package/lib/components/schedules/model.d.ts +9 -1
  175. package/lib/components/ticketBooking/components/ticketBooking/index.less +2 -1
  176. package/lib/components/wallet/Detail/model.d.ts +13 -1
  177. package/lib/components/wallet/DiscountCard/model.d.ts +14 -1
  178. package/lib/components/wallet/PointCard/model.d.ts +13 -1
  179. package/lib/components/wallet/RechargeableCard/model.d.ts +29 -1
  180. package/lib/components/wallet/Voucher/model.d.ts +13 -1
  181. package/lib/components/wallet/model.d.ts +9 -1
  182. package/lib/index.d.ts +3 -0
  183. package/lib/index.js +13 -0
  184. package/lib/plus/clientName/index.d.ts +4 -0
  185. package/lib/plus/clientName/index.js +53 -0
  186. package/lib/plus/clientName/index.less +10 -0
  187. package/lib/plus/clientName/type.d.ts +13 -0
  188. package/lib/plus/clientName/type.js +17 -0
  189. package/lib/plus/clientName/utils.d.ts +2 -0
  190. package/lib/plus/clientName/utils.js +43 -0
  191. package/lib/plus/contactInfo/components/Avatar/index.d.ts +10 -0
  192. package/lib/plus/contactInfo/components/Avatar/index.js +56 -0
  193. package/lib/plus/contactInfo/components/SwipeAction/index.d.ts +46 -0
  194. package/lib/plus/contactInfo/components/SwipeAction/index.js +373 -0
  195. package/lib/plus/contactInfo/components/SwipeAction/index.less +74 -0
  196. package/lib/plus/contactInfo/index.d.ts +6 -0
  197. package/lib/plus/contactInfo/index.js +226 -0
  198. package/lib/plus/contactInfo/index.less +621 -0
  199. package/lib/plus/contactInfo/locales.d.ts +15 -0
  200. package/lib/plus/contactInfo/locales.js +38 -0
  201. package/lib/plus/contactInfo/types.d.ts +91 -0
  202. package/lib/plus/contactInfo/types.js +17 -0
  203. package/lib/plus/contactInfo/utils.d.ts +7 -0
  204. package/lib/plus/contactInfo/utils.js +64 -0
  205. package/lib/plus/contactInfoModal/ContactInfoContent.d.ts +3 -0
  206. package/lib/plus/contactInfoModal/ContactInfoContent.js +129 -0
  207. package/lib/plus/contactInfoModal/index.d.ts +40 -0
  208. package/lib/plus/contactInfoModal/index.js +138 -0
  209. package/lib/plus/contactInfoModal/index.less +19 -0
  210. package/lib/plus/contactInfoModal/locales.d.ts +66 -0
  211. package/lib/plus/contactInfoModal/locales.js +89 -0
  212. package/lib/pro/Login2.0/AuthModal.d.ts +143 -0
  213. package/lib/pro/Login2.0/AuthModal.js +498 -0
  214. package/lib/pro/Login2.0/Login2.d.ts +61 -0
  215. package/lib/pro/Login2.0/Login2.js +1468 -0
  216. package/lib/pro/Login2.0/Register2.d.ts +65 -0
  217. package/lib/pro/Login2.0/Register2.js +1062 -0
  218. package/lib/pro/Login2.0/components/ForgotPasswordFlow.d.ts +31 -0
  219. package/lib/pro/Login2.0/components/ForgotPasswordFlow.js +213 -0
  220. package/lib/pro/Login2.0/components/LegalTerms.d.ts +8 -0
  221. package/lib/pro/Login2.0/components/LegalTerms.js +76 -0
  222. package/lib/pro/Login2.0/components/LegalTerms.less +74 -0
  223. package/lib/pro/Login2.0/components/LoginCodeInput.d.ts +27 -0
  224. package/lib/pro/Login2.0/components/LoginCodeInput.js +161 -0
  225. package/lib/pro/Login2.0/components/OAuthButtonGroup.d.ts +22 -0
  226. package/lib/pro/Login2.0/components/OAuthButtonGroup.js +87 -0
  227. package/lib/pro/Login2.0/components/PhoneInput.d.ts +53 -0
  228. package/lib/pro/Login2.0/components/PhoneInput.js +263 -0
  229. package/lib/pro/Login2.0/components/PhoneInput.less +148 -0
  230. package/lib/pro/Login2.0/components/phoneValidation.d.ts +17 -0
  231. package/lib/pro/Login2.0/components/phoneValidation.js +153 -0
  232. package/lib/pro/Login2.0/hooks/index.d.ts +2 -0
  233. package/lib/pro/Login2.0/hooks/index.js +29 -0
  234. package/lib/pro/Login2.0/hooks/usePasswordValidationRules.d.ts +24 -0
  235. package/lib/pro/Login2.0/hooks/usePasswordValidationRules.js +140 -0
  236. package/lib/pro/Login2.0/hooks/useRegisterFlow.d.ts +39 -0
  237. package/lib/pro/Login2.0/hooks/useRegisterFlow.js +149 -0
  238. package/lib/pro/Login2.0/hooks/useRegistrationMethods.d.ts +9 -0
  239. package/lib/pro/Login2.0/hooks/useRegistrationMethods.js +51 -0
  240. package/lib/pro/Login2.0/index.js +45 -0
  241. package/lib/pro/Login2.0/index.less +993 -0
  242. package/lib/pro/Login2.0/locales.d.ts +543 -0
  243. package/lib/pro/Login2.0/locales.js +646 -0
  244. package/lib/pro/Login2.0/shared/Header.d.ts +11 -0
  245. package/lib/pro/Login2.0/shared/Header.js +81 -0
  246. package/lib/pro/Login2.0/shared/OAuthButtons.d.ts +11 -0
  247. package/lib/pro/Login2.0/shared/OAuthButtons.js +78 -0
  248. package/lib/pro/Login2.0/shared/registerFlow.d.ts +116 -0
  249. package/lib/pro/Login2.0/shared/registerFlow.js +235 -0
  250. package/lib/pro/Login2.0/shared/types.d.ts +232 -0
  251. package/lib/pro/Login2.0/shared/types.js +17 -0
  252. package/lib/pro/Login2.0/steps/CodeInput.d.ts +24 -0
  253. package/lib/pro/Login2.0/steps/CodeInput.js +160 -0
  254. package/lib/pro/Login2.0/steps/EmailAlreadyRegistered.d.ts +12 -0
  255. package/lib/pro/Login2.0/steps/EmailAlreadyRegistered.js +46 -0
  256. package/lib/pro/Login2.0/steps/EmailLinkAlreadyUsed.d.ts +7 -0
  257. package/lib/pro/Login2.0/steps/EmailLinkAlreadyUsed.js +51 -0
  258. package/lib/pro/Login2.0/steps/EmailLinkExpired.d.ts +9 -0
  259. package/lib/pro/Login2.0/steps/EmailLinkExpired.js +51 -0
  260. package/lib/pro/Login2.0/steps/SetPassword.d.ts +19 -0
  261. package/lib/pro/Login2.0/steps/SetPassword.js +131 -0
  262. package/lib/pro/Login2.0/steps/VerificationSuccess.d.ts +8 -0
  263. package/lib/pro/Login2.0/steps/VerificationSuccess.js +49 -0
  264. package/lib/pro/Login2.0/steps/VerifyingEmailLink.d.ts +7 -0
  265. package/lib/pro/Login2.0/steps/VerifyingEmailLink.js +41 -0
  266. package/lib/pro/Login2.0/steps/WaitEmailLink.d.ts +18 -0
  267. package/lib/pro/Login2.0/steps/WaitEmailLink.js +67 -0
  268. package/lib/pro/Login2.0/steps/index.d.ts +19 -0
  269. package/lib/pro/Login2.0/steps/index.js +60 -0
  270. package/lib/pro/Login2.0/steps/steps.less +423 -0
  271. package/lib/pro/Login2.0/types.d.ts +167 -0
  272. package/lib/pro/Login2.0/types.js +17 -0
  273. package/lowcode/authmodal/meta.ts +395 -0
  274. package/lowcode/contact-info/fragments/cardStyle.ts +68 -0
  275. package/lowcode/contact-info/fragments/nameStyle.ts +33 -0
  276. package/lowcode/contact-info/fragments/pisellAvatar.ts +103 -0
  277. package/lowcode/contact-info/fragments/textStyle.ts +33 -0
  278. package/lowcode/contact-info/meta.ts +199 -0
  279. package/lowcode/contact-info-modal/meta.ts +98 -0
  280. package/lowcode/login2/CONFIG.md +447 -0
  281. package/lowcode/login2/TEST_CONFIG.md +324 -0
  282. package/lowcode/login2/VERIFICATION_METHODS.md +364 -0
  283. package/lowcode/login2/meta.ts +560 -0
  284. package/lowcode/login2/snippets.ts +124 -0
  285. package/lowcode/register2/meta.ts +562 -0
  286. package/lowcode/register2/snippets.ts +257 -0
  287. package/package.json +7 -5
@@ -0,0 +1,228 @@
1
+ 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); }
2
+ 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; }
3
+ 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); } }
4
+ 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); }); }; }
5
+ // 定义 getText 函数类型
6
+
7
+ /**
8
+ * 手机号校验函数,用于 Ant Design Form 的 rules
9
+ * @param value 手机号值,可以是字符串或对象格式
10
+ * @param getText 国际化文本获取函数
11
+ * @returns Promise<void> 校验通过时 resolve,失败时 reject 并返回错误信息
12
+ */
13
+ export var validatePhoneNumber = /*#__PURE__*/function () {
14
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(value, getText) {
15
+ var phone, countryCode, match;
16
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
17
+ while (1) switch (_context.prev = _context.next) {
18
+ case 0:
19
+ if (value) {
20
+ _context.next = 2;
21
+ break;
22
+ }
23
+ throw new Error(getText('pisell-phone-validation-required'));
24
+ case 2:
25
+ if (!(typeof value === 'string')) {
26
+ _context.next = 12;
27
+ break;
28
+ }
29
+ if (value.startsWith('+')) {
30
+ _context.next = 5;
31
+ break;
32
+ }
33
+ throw new Error(getText('pisell-phone-validation-invalid'));
34
+ case 5:
35
+ match = value.match(/^\+(\d{1,4})(\d+)$/);
36
+ if (match) {
37
+ _context.next = 8;
38
+ break;
39
+ }
40
+ throw new Error(getText('pisell-phone-validation-invalid'));
41
+ case 8:
42
+ countryCode = match[1];
43
+ phone = match[2];
44
+ _context.next = 14;
45
+ break;
46
+ case 12:
47
+ // 对象格式:{ phone: "13800138000", country_calling_code: "86" }
48
+ phone = value.phone;
49
+ countryCode = value.country_calling_code;
50
+ case 14:
51
+ if (!(!phone || !countryCode)) {
52
+ _context.next = 16;
53
+ break;
54
+ }
55
+ throw new Error(getText('pisell-phone-validation-required'));
56
+ case 16:
57
+ _context.t0 = countryCode;
58
+ _context.next = _context.t0 === '86' ? 19 : _context.t0 === '852' ? 22 : _context.t0 === '853' ? 25 : _context.t0 === '886' ? 28 : _context.t0 === '1' ? 31 : _context.t0 === '44' ? 34 : _context.t0 === '61' ? 37 : _context.t0 === '81' ? 40 : _context.t0 === '82' ? 43 : _context.t0 === '65' ? 46 : _context.t0 === '60' ? 49 : _context.t0 === '66' ? 52 : _context.t0 === '84' ? 55 : _context.t0 === '63' ? 58 : _context.t0 === '62' ? 61 : _context.t0 === '91' ? 64 : 67;
59
+ break;
60
+ case 19:
61
+ if (/^1[3-9]\d{9}$/.test(phone)) {
62
+ _context.next = 21;
63
+ break;
64
+ }
65
+ throw new Error(getText('pisell-phone-validation-china'));
66
+ case 21:
67
+ return _context.abrupt("break", 70);
68
+ case 22:
69
+ if (/^[5-9]\d{7}$/.test(phone)) {
70
+ _context.next = 24;
71
+ break;
72
+ }
73
+ throw new Error(getText('pisell-phone-validation-hongkong'));
74
+ case 24:
75
+ return _context.abrupt("break", 70);
76
+ case 25:
77
+ if (/^6\d{7}$/.test(phone)) {
78
+ _context.next = 27;
79
+ break;
80
+ }
81
+ throw new Error(getText('pisell-phone-validation-macau'));
82
+ case 27:
83
+ return _context.abrupt("break", 70);
84
+ case 28:
85
+ if (/^9\d{8}$/.test(phone)) {
86
+ _context.next = 30;
87
+ break;
88
+ }
89
+ throw new Error(getText('pisell-phone-validation-taiwan'));
90
+ case 30:
91
+ return _context.abrupt("break", 70);
92
+ case 31:
93
+ if (/^\d{10}$/.test(phone)) {
94
+ _context.next = 33;
95
+ break;
96
+ }
97
+ throw new Error(getText('pisell-phone-validation-us-canada'));
98
+ case 33:
99
+ return _context.abrupt("break", 70);
100
+ case 34:
101
+ if (/^7\d{9}$/.test(phone)) {
102
+ _context.next = 36;
103
+ break;
104
+ }
105
+ throw new Error(getText('pisell-phone-validation-uk'));
106
+ case 36:
107
+ return _context.abrupt("break", 70);
108
+ case 37:
109
+ if (/^4\d{8,9}$/.test(phone)) {
110
+ _context.next = 39;
111
+ break;
112
+ }
113
+ throw new Error(getText('pisell-phone-validation-australia'));
114
+ case 39:
115
+ return _context.abrupt("break", 70);
116
+ case 40:
117
+ if (/^[789]0\d{8}$/.test(phone)) {
118
+ _context.next = 42;
119
+ break;
120
+ }
121
+ throw new Error(getText('pisell-phone-validation-japan'));
122
+ case 42:
123
+ return _context.abrupt("break", 70);
124
+ case 43:
125
+ if (/^1[0-9]\d{7,8}$/.test(phone)) {
126
+ _context.next = 45;
127
+ break;
128
+ }
129
+ throw new Error(getText('pisell-phone-validation-korea'));
130
+ case 45:
131
+ return _context.abrupt("break", 70);
132
+ case 46:
133
+ if (/^[89]\d{7}$/.test(phone)) {
134
+ _context.next = 48;
135
+ break;
136
+ }
137
+ throw new Error(getText('pisell-phone-validation-singapore'));
138
+ case 48:
139
+ return _context.abrupt("break", 70);
140
+ case 49:
141
+ if (/^1[0-9]\d{7,8}$/.test(phone)) {
142
+ _context.next = 51;
143
+ break;
144
+ }
145
+ throw new Error(getText('pisell-phone-validation-malaysia'));
146
+ case 51:
147
+ return _context.abrupt("break", 70);
148
+ case 52:
149
+ if (/^[689]\d{8}$/.test(phone)) {
150
+ _context.next = 54;
151
+ break;
152
+ }
153
+ throw new Error(getText('pisell-phone-validation-thailand'));
154
+ case 54:
155
+ return _context.abrupt("break", 70);
156
+ case 55:
157
+ if (/^[3579]\d{8}$/.test(phone)) {
158
+ _context.next = 57;
159
+ break;
160
+ }
161
+ throw new Error(getText('pisell-phone-validation-vietnam'));
162
+ case 57:
163
+ return _context.abrupt("break", 70);
164
+ case 58:
165
+ if (/^9\d{9}$/.test(phone)) {
166
+ _context.next = 60;
167
+ break;
168
+ }
169
+ throw new Error(getText('pisell-phone-validation-philippines'));
170
+ case 60:
171
+ return _context.abrupt("break", 70);
172
+ case 61:
173
+ if (/^8\d{8,11}$/.test(phone)) {
174
+ _context.next = 63;
175
+ break;
176
+ }
177
+ throw new Error(getText('pisell-phone-validation-indonesia'));
178
+ case 63:
179
+ return _context.abrupt("break", 70);
180
+ case 64:
181
+ if (/^[6-9]\d{9}$/.test(phone)) {
182
+ _context.next = 66;
183
+ break;
184
+ }
185
+ throw new Error(getText('pisell-phone-validation-india'));
186
+ case 66:
187
+ return _context.abrupt("break", 70);
188
+ case 67:
189
+ if (/^\d{6,15}$/.test(phone)) {
190
+ _context.next = 69;
191
+ break;
192
+ }
193
+ throw new Error(getText('pisell-phone-validation-invalid'));
194
+ case 69:
195
+ return _context.abrupt("break", 70);
196
+ case 70:
197
+ case "end":
198
+ return _context.stop();
199
+ }
200
+ }, _callee);
201
+ }));
202
+ return function validatePhoneNumber(_x, _x2) {
203
+ return _ref.apply(this, arguments);
204
+ };
205
+ }();
206
+
207
+ /**
208
+ * 创建手机号校验规则,用于 Form.Item 的 rules 属性
209
+ * @param getText 国际化文本获取函数
210
+ * @param required 是否必填
211
+ * @returns Form 校验规则数组
212
+ */
213
+ export var createPhoneValidationRules = function createPhoneValidationRules(getText) {
214
+ var required = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
215
+ var rules = [];
216
+
217
+ // 只使用自定义 validator,不使用 Ant Design 的 required 规则
218
+ // 这样可以避免重复的错误信息
219
+ rules.push({
220
+ validator: function validator(_, value) {
221
+ if (!value && !required) {
222
+ return Promise.resolve();
223
+ }
224
+ return validatePhoneNumber(value, getText);
225
+ }
226
+ });
227
+ return rules;
228
+ };
@@ -0,0 +1,2 @@
1
+ export { useRegisterFlow } from './useRegisterFlow';
2
+ export type { UseRegisterFlowOptions, UseRegisterFlowReturn } from './useRegisterFlow';
@@ -0,0 +1 @@
1
+ export { useRegisterFlow } from "./useRegisterFlow";
@@ -0,0 +1,24 @@
1
+ import type { Rule } from 'antd/es/form';
2
+ export interface PasswordRuleConfig {
3
+ minLength?: number;
4
+ requireUppercase?: boolean;
5
+ requireLowercase?: boolean;
6
+ requireNumber?: boolean;
7
+ requireSpecialCharacters?: boolean;
8
+ }
9
+ interface PasswordRuleMessages {
10
+ required?: string;
11
+ minLength?: string;
12
+ requireUppercase?: string;
13
+ requireLowercase?: string;
14
+ requireNumber?: string;
15
+ requireSpecialCharacters?: string;
16
+ summary?: string;
17
+ }
18
+ interface UsePasswordValidationRulesOptions {
19
+ translate?: (key: string) => string;
20
+ fallbackMinLength?: number;
21
+ messageKeys?: PasswordRuleMessages;
22
+ }
23
+ export declare const usePasswordValidationRules: (passwordRules?: PasswordRuleConfig, options?: UsePasswordValidationRulesOptions) => Rule[];
24
+ export default usePasswordValidationRules;
@@ -0,0 +1,87 @@
1
+ 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); }
2
+ 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; }
3
+ 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; }
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
+ import { useMemo } from 'react';
8
+ var DEFAULT_MESSAGES = {
9
+ required: 'Password is required',
10
+ minLength: 'Password must be at least {length} characters long',
11
+ requireUppercase: 'at least one uppercase letter',
12
+ requireLowercase: 'at least one lowercase letter',
13
+ requireNumber: 'at least one number',
14
+ requireSpecialCharacters: 'at least one special character',
15
+ summary: 'Password must contain: {requirements}'
16
+ };
17
+ var formatMessage = function formatMessage(template, variables) {
18
+ return Object.keys(variables).reduce(function (message, key) {
19
+ var _variables$key;
20
+ return message.replace(new RegExp("{".concat(key, "}"), 'g'), String((_variables$key = variables[key]) !== null && _variables$key !== void 0 ? _variables$key : ''));
21
+ }, template);
22
+ };
23
+ var resolveMessage = function resolveMessage(key, translate, messageKeys) {
24
+ var messageKey = messageKeys === null || messageKeys === void 0 ? void 0 : messageKeys[key];
25
+ if (messageKey && translate) {
26
+ var translated = translate(messageKey);
27
+ if (translated) {
28
+ return translated;
29
+ }
30
+ }
31
+ return DEFAULT_MESSAGES[key];
32
+ };
33
+ export var usePasswordValidationRules = function usePasswordValidationRules(passwordRules, options) {
34
+ var translate = options === null || options === void 0 ? void 0 : options.translate;
35
+ var messageKeys = options === null || options === void 0 ? void 0 : options.messageKeys;
36
+ var fallbackMinLength = options === null || options === void 0 ? void 0 : options.fallbackMinLength;
37
+ return useMemo(function () {
38
+ var rules = [{
39
+ required: true,
40
+ message: resolveMessage('required', translate, messageKeys)
41
+ }];
42
+ var effectiveRules = _objectSpread({}, passwordRules);
43
+ if (effectiveRules.minLength == null && fallbackMinLength) {
44
+ effectiveRules.minLength = fallbackMinLength;
45
+ }
46
+ if (effectiveRules.minLength) {
47
+ var rawMessage = resolveMessage('minLength', translate, messageKeys);
48
+ rules.push({
49
+ min: effectiveRules.minLength,
50
+ message: formatMessage(rawMessage, {
51
+ length: effectiveRules.minLength
52
+ })
53
+ });
54
+ }
55
+ if (effectiveRules.requireUppercase || effectiveRules.requireLowercase || effectiveRules.requireNumber || effectiveRules.requireSpecialCharacters) {
56
+ rules.push({
57
+ validator: function validator(_rule, value) {
58
+ if (!value) {
59
+ return Promise.resolve();
60
+ }
61
+ var requirements = [];
62
+ if (effectiveRules.requireUppercase && !/[A-Z]/.test(value)) {
63
+ requirements.push(resolveMessage('requireUppercase', translate, messageKeys));
64
+ }
65
+ if (effectiveRules.requireLowercase && !/[a-z]/.test(value)) {
66
+ requirements.push(resolveMessage('requireLowercase', translate, messageKeys));
67
+ }
68
+ if (effectiveRules.requireNumber && !/\d/.test(value)) {
69
+ requirements.push(resolveMessage('requireNumber', translate, messageKeys));
70
+ }
71
+ if (effectiveRules.requireSpecialCharacters && !/[!@#$%^&*]/.test(value)) {
72
+ requirements.push(resolveMessage('requireSpecialCharacters', translate, messageKeys));
73
+ }
74
+ if (requirements.length > 0) {
75
+ var template = resolveMessage('summary', translate, messageKeys);
76
+ return Promise.reject(new Error(formatMessage(template, {
77
+ requirements: requirements.join(', ')
78
+ })));
79
+ }
80
+ return Promise.resolve();
81
+ }
82
+ });
83
+ }
84
+ return rules;
85
+ }, [fallbackMinLength, messageKeys === null || messageKeys === void 0 ? void 0 : messageKeys.requireLowercase, messageKeys === null || messageKeys === void 0 ? void 0 : messageKeys.requireNumber, messageKeys === null || messageKeys === void 0 ? void 0 : messageKeys.requireSpecialCharacters, messageKeys === null || messageKeys === void 0 ? void 0 : messageKeys.requireUppercase, messageKeys === null || messageKeys === void 0 ? void 0 : messageKeys.minLength, messageKeys === null || messageKeys === void 0 ? void 0 : messageKeys.required, messageKeys === null || messageKeys === void 0 ? void 0 : messageKeys.summary, passwordRules === null || passwordRules === void 0 ? void 0 : passwordRules.minLength, passwordRules === null || passwordRules === void 0 ? void 0 : passwordRules.requireLowercase, passwordRules === null || passwordRules === void 0 ? void 0 : passwordRules.requireNumber, passwordRules === null || passwordRules === void 0 ? void 0 : passwordRules.requireSpecialCharacters, passwordRules === null || passwordRules === void 0 ? void 0 : passwordRules.requireUppercase, translate]);
86
+ };
87
+ export default usePasswordValidationRules;
@@ -0,0 +1,39 @@
1
+ import { RegisterStep, RegisterFlowData, RegisterFlowConfig, getStepDefinition } from '../shared/registerFlow';
2
+ import type { AuthMethodType } from '../shared/types';
3
+ export interface UseRegisterFlowOptions {
4
+ /** 账号类型 */
5
+ accountType: AuthMethodType;
6
+ /** 邮箱配置 */
7
+ emailConfig?: {
8
+ enable_email?: boolean;
9
+ require_email_verification?: boolean;
10
+ };
11
+ /** 手机配置 */
12
+ phoneConfig?: {
13
+ enable_phone_number?: boolean;
14
+ require_phone_verification?: boolean;
15
+ };
16
+ /** 初始账号 */
17
+ initialAccount?: string;
18
+ /** 步骤变化回调 */
19
+ onStepChange?: (step: RegisterStep, data: RegisterFlowData) => void;
20
+ /** 完成回调 */
21
+ onComplete?: (data: RegisterFlowData) => void;
22
+ }
23
+ export interface UseRegisterFlowReturn {
24
+ /** 当前流程数据 */
25
+ flowData: RegisterFlowData;
26
+ /** 当前步骤定义 */
27
+ currentStepDef: ReturnType<typeof getStepDefinition>;
28
+ /** 流程配置 */
29
+ flowConfig: RegisterFlowConfig;
30
+ /** 跳转到指定步骤 */
31
+ goToStep: (step: RegisterStep, updates?: Partial<RegisterFlowData>) => void;
32
+ /** 更新流程数据 */
33
+ updateFlowData: (updates: Partial<RegisterFlowData>) => void;
34
+ /** 重置流程 */
35
+ resetFlow: () => void;
36
+ /** 处理错误 */
37
+ handleError: (code: string, message: string, targetStep?: RegisterStep) => void;
38
+ }
39
+ export declare function useRegisterFlow(options: UseRegisterFlowOptions): UseRegisterFlowReturn;
@@ -0,0 +1,158 @@
1
+ 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); }
2
+ 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; }
3
+ 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; }
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 _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
8
+ 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."); }
9
+ 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); }
10
+ 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; }
11
+ 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; } }
12
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
13
+ import { useState, useCallback, useEffect, useRef, useMemo } from 'react';
14
+ import { RegisterStep, isValidTransition, getStepDefinition, getFlowConfig, determineVerificationMethod } from "../shared/registerFlow";
15
+ export function useRegisterFlow(options) {
16
+ var accountType = options.accountType,
17
+ emailConfig = options.emailConfig,
18
+ phoneConfig = options.phoneConfig,
19
+ _options$initialAccou = options.initialAccount,
20
+ initialAccount = _options$initialAccou === void 0 ? '' : _options$initialAccou,
21
+ onStepChange = options.onStepChange,
22
+ onComplete = options.onComplete;
23
+
24
+ // 使用 ref 存储回调,避免它们成为依赖项导致无限渲染
25
+ var onStepChangeRef = useRef(onStepChange);
26
+ var onCompleteRef = useRef(onComplete);
27
+
28
+ // 当回调函数变化时更新 ref
29
+ useEffect(function () {
30
+ onStepChangeRef.current = onStepChange;
31
+ onCompleteRef.current = onComplete;
32
+ }, [onStepChange, onComplete]);
33
+
34
+ // 确定验证方式 - 使用 useMemo 避免每次渲染都重新计算
35
+ var verificationMethod = useMemo(function () {
36
+ return determineVerificationMethod(accountType, emailConfig, phoneConfig);
37
+ }, [accountType, emailConfig, phoneConfig]);
38
+
39
+ // 获取流程配置 - 使用 useMemo 避免每次渲染都重新计算
40
+ var flowConfig = useMemo(function () {
41
+ return getFlowConfig(verificationMethod);
42
+ }, [verificationMethod]);
43
+
44
+ // 自动跳转定时器
45
+ var autoTransitionTimer = useRef();
46
+
47
+ // 初始化流程数据
48
+ var _useState = useState({
49
+ currentStep: RegisterStep.INITIAL_FORM,
50
+ account: initialAccount,
51
+ accountType: accountType,
52
+ verificationMethod: verificationMethod
53
+ }),
54
+ _useState2 = _slicedToArray(_useState, 2),
55
+ flowData = _useState2[0],
56
+ setFlowData = _useState2[1];
57
+
58
+ // 获取当前步骤定义
59
+ var currentStepDef = getStepDefinition(flowData.currentStep);
60
+
61
+ // 清除自动跳转定时器
62
+ var clearAutoTransition = useCallback(function () {
63
+ if (autoTransitionTimer.current) {
64
+ clearTimeout(autoTransitionTimer.current);
65
+ autoTransitionTimer.current = undefined;
66
+ }
67
+ }, []);
68
+
69
+ // 跳转到指定步骤
70
+ var goToStep = useCallback(function (step, updates) {
71
+ setFlowData(function (prevFlowData) {
72
+ var _updates$verification, _onStepChangeRef$curr, _flowConfig$autoTrans;
73
+ // 如果 updates 中包含新的验证方式,使用新的;否则使用流程数据中的验证方式
74
+ var targetVerificationMethod = (_updates$verification = updates === null || updates === void 0 ? void 0 : updates.verificationMethod) !== null && _updates$verification !== void 0 ? _updates$verification : prevFlowData.verificationMethod;
75
+
76
+ // 验证步骤流转是否合法
77
+ if (!isValidTransition(targetVerificationMethod, prevFlowData.currentStep, step)) {
78
+ console.warn("Invalid transition from ".concat(prevFlowData.currentStep, " to ").concat(step, " for ").concat(targetVerificationMethod), '(current verificationMethod:', prevFlowData.verificationMethod, ', target:', targetVerificationMethod, ')');
79
+ return prevFlowData; // 返回原数据,不更新
80
+ }
81
+
82
+ // 清除之前的自动跳转定时器
83
+ clearAutoTransition();
84
+
85
+ // 更新流程数据
86
+ var newFlowData = _objectSpread(_objectSpread(_objectSpread({}, prevFlowData), updates), {}, {
87
+ currentStep: step
88
+ });
89
+
90
+ // 触发步骤变化回调(使用 ref)
91
+ (_onStepChangeRef$curr = onStepChangeRef.current) === null || _onStepChangeRef$curr === void 0 || _onStepChangeRef$curr.call(onStepChangeRef, step, newFlowData);
92
+
93
+ // 如果到达完成步骤,触发完成回调(使用 ref)
94
+ if (step === RegisterStep.COMPLETE) {
95
+ var _onCompleteRef$curren;
96
+ (_onCompleteRef$curren = onCompleteRef.current) === null || _onCompleteRef$curren === void 0 || _onCompleteRef$curren.call(onCompleteRef, newFlowData);
97
+ }
98
+
99
+ // 检查是否需要自动跳转
100
+ var autoTransition = (_flowConfig$autoTrans = flowConfig.autoTransition) === null || _flowConfig$autoTrans === void 0 ? void 0 : _flowConfig$autoTrans[step];
101
+ if (autoTransition) {
102
+ autoTransitionTimer.current = setTimeout(function () {
103
+ goToStep(autoTransition.nextStep);
104
+ }, autoTransition.delay);
105
+ }
106
+ return newFlowData;
107
+ });
108
+ }, [verificationMethod, flowConfig, clearAutoTransition]);
109
+
110
+ // 更新流程数据(不改变步骤)
111
+ var updateFlowData = useCallback(function (updates) {
112
+ setFlowData(function (prev) {
113
+ return _objectSpread(_objectSpread({}, prev), updates);
114
+ });
115
+ }, []);
116
+
117
+ // 重置流程
118
+ var resetFlow = useCallback(function () {
119
+ clearAutoTransition();
120
+ setFlowData({
121
+ currentStep: RegisterStep.INITIAL_FORM,
122
+ account: initialAccount,
123
+ accountType: accountType,
124
+ verificationMethod: verificationMethod
125
+ });
126
+ }, [clearAutoTransition, initialAccount, accountType, verificationMethod]);
127
+
128
+ // 处理错误
129
+ var handleError = useCallback(function (code, message, targetStep) {
130
+ var errorData = _objectSpread(_objectSpread({}, flowData), {}, {
131
+ error: {
132
+ code: code,
133
+ message: message
134
+ }
135
+ });
136
+ if (targetStep) {
137
+ errorData.currentStep = targetStep;
138
+ }
139
+ setFlowData(errorData);
140
+ onStepChange === null || onStepChange === void 0 || onStepChange(errorData.currentStep, errorData);
141
+ }, [flowData, onStepChange]);
142
+
143
+ // 清理定时器
144
+ useEffect(function () {
145
+ return function () {
146
+ clearAutoTransition();
147
+ };
148
+ }, [clearAutoTransition]);
149
+ return {
150
+ flowData: flowData,
151
+ currentStepDef: currentStepDef,
152
+ flowConfig: flowConfig,
153
+ goToStep: goToStep,
154
+ updateFlowData: updateFlowData,
155
+ resetFlow: resetFlow,
156
+ handleError: handleError
157
+ };
158
+ }
@@ -0,0 +1,9 @@
1
+ import { AuthMethodType } from '../shared/types';
2
+ /**
3
+ * 注册方式相关的逻辑hook
4
+ */
5
+ export declare function useRegistrationMethods(isRegistrationMethodEnabled: (type: AuthMethodType) => boolean): {
6
+ enabledMethods: AuthMethodType[];
7
+ shouldShowDivider: boolean;
8
+ hasEmailAndPhone: boolean;
9
+ };
@@ -0,0 +1,31 @@
1
+ import { useMemo } from 'react';
2
+ /**
3
+ * 注册方式相关的逻辑hook
4
+ */
5
+ export function useRegistrationMethods(isRegistrationMethodEnabled) {
6
+ // 获取所有启用的注册方式
7
+ var enabledMethods = useMemo(function () {
8
+ var methods = [];
9
+ if (isRegistrationMethodEnabled('email')) methods.push('email');
10
+ if (isRegistrationMethodEnabled('phone')) methods.push('phone');
11
+ if (isRegistrationMethodEnabled('google')) methods.push('google');
12
+ if (isRegistrationMethodEnabled('facebook')) methods.push('facebook');
13
+ if (isRegistrationMethodEnabled('apple')) methods.push('apple');
14
+ return methods;
15
+ }, [isRegistrationMethodEnabled]);
16
+
17
+ // 是否应该显示分隔线(超过一种注册方式时显示)
18
+ var shouldShowDivider = useMemo(function () {
19
+ return enabledMethods.length > 1;
20
+ }, [enabledMethods.length]);
21
+
22
+ // 是否同时启用了邮箱和手机注册
23
+ var hasEmailAndPhone = useMemo(function () {
24
+ return isRegistrationMethodEnabled('email') && isRegistrationMethodEnabled('phone');
25
+ }, [isRegistrationMethodEnabled]);
26
+ return {
27
+ enabledMethods: enabledMethods,
28
+ shouldShowDivider: shouldShowDivider,
29
+ hasEmailAndPhone: hasEmailAndPhone
30
+ };
31
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * 登录注册 2.0 组件
3
+ * 主入口文件
4
+ */
5
+
6
+ export { default as Login2 } from "./Login2";
7
+ export { default as Register2 } from "./Register2";
8
+ export { default as AuthModal } from "./AuthModal";