@whop/elements-react-native 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (339) hide show
  1. package/README.md +179 -0
  2. package/android/build.gradle +64 -0
  3. package/android/consumer-rules.pro +3 -0
  4. package/android/gradle.properties +5 -0
  5. package/android/src/main/java/com/whop/elements/WhopAddressSuggestionsModule.kt +102 -0
  6. package/android/src/main/java/com/whop/elements/WhopAuthSessionModule.kt +126 -0
  7. package/android/src/main/java/com/whop/elements/WhopElementsPackage.kt +39 -0
  8. package/android/src/main/java/com/whop/elements/WhopPayButtonManager.kt +74 -0
  9. package/android/src/main/java/com/whop/elements/WhopPayButtonPressEvent.kt +17 -0
  10. package/android/src/main/java/com/whop/elements/WhopPayButtonView.kt +178 -0
  11. package/android/src/main/java/com/whop/elements/WhopPlatformPayModule.kt +212 -0
  12. package/assets/whop-wordmark-dark.png +0 -0
  13. package/assets/whop-wordmark-dark@2x.png +0 -0
  14. package/assets/whop-wordmark-dark@3x.png +0 -0
  15. package/assets/whop-wordmark-light.png +0 -0
  16. package/assets/whop-wordmark-light@2x.png +0 -0
  17. package/assets/whop-wordmark-light@3x.png +0 -0
  18. package/ios/Package.swift +59 -0
  19. package/ios/Sources/ElementsReactNative/WhopAddressSuggestionsImpl.swift +189 -0
  20. package/ios/Sources/ElementsReactNative/WhopAuthSessionImpl.swift +106 -0
  21. package/ios/Sources/ElementsReactNative/WhopPayButtonImpl.swift +89 -0
  22. package/ios/Sources/ElementsReactNative/WhopPlatformPayImpl.swift +181 -0
  23. package/ios/generated/WhopAddressSuggestionsModule.h +11 -0
  24. package/ios/generated/WhopAddressSuggestionsModule.mm +46 -0
  25. package/ios/generated/WhopAuthSessionModule.h +11 -0
  26. package/ios/generated/WhopAuthSessionModule.mm +45 -0
  27. package/ios/generated/WhopElementsShims.h +35 -0
  28. package/ios/generated/WhopPayButtonComponentView.h +12 -0
  29. package/ios/generated/WhopPayButtonComponentView.mm +82 -0
  30. package/ios/generated/WhopPlatformPayModule.h +11 -0
  31. package/ios/generated/WhopPlatformPayModule.mm +51 -0
  32. package/lib/module/api/client.js +139 -0
  33. package/lib/module/api/client.js.map +1 -0
  34. package/lib/module/api/client.test.js +137 -0
  35. package/lib/module/api/client.test.js.map +1 -0
  36. package/lib/module/api/types.js +2 -0
  37. package/lib/module/api/types.js.map +1 -0
  38. package/lib/module/controller/actions.js +148 -0
  39. package/lib/module/controller/actions.js.map +1 -0
  40. package/lib/module/controller/actions.test.js +102 -0
  41. package/lib/module/controller/actions.test.js.map +1 -0
  42. package/lib/module/controller/store.js +158 -0
  43. package/lib/module/controller/store.js.map +1 -0
  44. package/lib/module/core/address/country-data.js +1370 -0
  45. package/lib/module/core/address/country-data.js.map +1 -0
  46. package/lib/module/core/address/country-name.js +38 -0
  47. package/lib/module/core/address/country-name.js.map +1 -0
  48. package/lib/module/core/address/country-names.generated.js +249 -0
  49. package/lib/module/core/address/country-names.generated.js.map +1 -0
  50. package/lib/module/core/address/engine.js +245 -0
  51. package/lib/module/core/address/engine.js.map +1 -0
  52. package/lib/module/core/address/engine.test.js +216 -0
  53. package/lib/module/core/address/engine.test.js.map +1 -0
  54. package/lib/module/core/address/form-state.js +409 -0
  55. package/lib/module/core/address/form-state.js.map +1 -0
  56. package/lib/module/core/address/form-state.test.js +516 -0
  57. package/lib/module/core/address/form-state.test.js.map +1 -0
  58. package/lib/module/core/address/places.js +36 -0
  59. package/lib/module/core/address/places.js.map +1 -0
  60. package/lib/module/core/address/required-coverage.test.js +57 -0
  61. package/lib/module/core/address/required-coverage.test.js.map +1 -0
  62. package/lib/module/core/address/suggest.js +102 -0
  63. package/lib/module/core/address/suggest.js.map +1 -0
  64. package/lib/module/core/address/suggest.test.js +156 -0
  65. package/lib/module/core/address/suggest.test.js.map +1 -0
  66. package/lib/module/core/address/use-suggestions.js +33 -0
  67. package/lib/module/core/address/use-suggestions.js.map +1 -0
  68. package/lib/module/core/payments/address-change.js +91 -0
  69. package/lib/module/core/payments/address-change.js.map +1 -0
  70. package/lib/module/core/payments/billing-merge.js +62 -0
  71. package/lib/module/core/payments/billing-merge.js.map +1 -0
  72. package/lib/module/core/payments/browser-info.js +42 -0
  73. package/lib/module/core/payments/browser-info.js.map +1 -0
  74. package/lib/module/core/payments/bt.js +151 -0
  75. package/lib/module/core/payments/bt.js.map +1 -0
  76. package/lib/module/core/payments/bt.test.js +23 -0
  77. package/lib/module/core/payments/bt.test.js.map +1 -0
  78. package/lib/module/core/payments/currency.js +37 -0
  79. package/lib/module/core/payments/currency.js.map +1 -0
  80. package/lib/module/core/payments/detail.js +159 -0
  81. package/lib/module/core/payments/detail.js.map +1 -0
  82. package/lib/module/core/payments/detail.test.js +225 -0
  83. package/lib/module/core/payments/detail.test.js.map +1 -0
  84. package/lib/module/core/payments/errors.js +115 -0
  85. package/lib/module/core/payments/errors.js.map +1 -0
  86. package/lib/module/core/payments/mint.js +89 -0
  87. package/lib/module/core/payments/mint.js.map +1 -0
  88. package/lib/module/core/payments/plan.js +131 -0
  89. package/lib/module/core/payments/plan.js.map +1 -0
  90. package/lib/module/core/payments/refusals.js +17 -0
  91. package/lib/module/core/payments/refusals.js.map +1 -0
  92. package/lib/module/core/payments/secure-fields.js +87 -0
  93. package/lib/module/core/payments/secure-fields.js.map +1 -0
  94. package/lib/module/core/payments/tax-id-catalog.js +616 -0
  95. package/lib/module/core/payments/tax-id-catalog.js.map +1 -0
  96. package/lib/module/core/payments/wallet-contact.js +42 -0
  97. package/lib/module/core/payments/wallet-contact.js.map +1 -0
  98. package/lib/module/core/payments/wallet-contact.test.js +77 -0
  99. package/lib/module/core/payments/wallet-contact.test.js.map +1 -0
  100. package/lib/module/elements/address.js +467 -0
  101. package/lib/module/elements/address.js.map +1 -0
  102. package/lib/module/elements/branding.js +114 -0
  103. package/lib/module/elements/branding.js.map +1 -0
  104. package/lib/module/elements/card-fields/context.js +254 -0
  105. package/lib/module/elements/card-fields/context.js.map +1 -0
  106. package/lib/module/elements/card-fields/fields.js +309 -0
  107. package/lib/module/elements/card-fields/fields.js.map +1 -0
  108. package/lib/module/elements/card-fields/index.js +30 -0
  109. package/lib/module/elements/card-fields/index.js.map +1 -0
  110. package/lib/module/elements/card.js +107 -0
  111. package/lib/module/elements/card.js.map +1 -0
  112. package/lib/module/elements/email.js +84 -0
  113. package/lib/module/elements/email.js.map +1 -0
  114. package/lib/module/elements/payment/declared-fields.js +186 -0
  115. package/lib/module/elements/payment/declared-fields.js.map +1 -0
  116. package/lib/module/elements/payment/index.js +448 -0
  117. package/lib/module/elements/payment/index.js.map +1 -0
  118. package/lib/module/elements/payment/wallet.js +132 -0
  119. package/lib/module/elements/payment/wallet.js.map +1 -0
  120. package/lib/module/elements/tax-id.js +100 -0
  121. package/lib/module/elements/tax-id.js.map +1 -0
  122. package/lib/module/i18n/catalogs.js +103 -0
  123. package/lib/module/i18n/catalogs.js.map +1 -0
  124. package/lib/module/i18n/index.js +45 -0
  125. package/lib/module/i18n/index.js.map +1 -0
  126. package/lib/module/index.js +27 -0
  127. package/lib/module/index.js.map +1 -0
  128. package/lib/module/namespace.js +174 -0
  129. package/lib/module/namespace.js.map +1 -0
  130. package/lib/module/native/index.js +128 -0
  131. package/lib/module/native/index.js.map +1 -0
  132. package/lib/module/package.json +1 -0
  133. package/lib/module/provider.js +56 -0
  134. package/lib/module/provider.js.map +1 -0
  135. package/lib/module/specs/NativeWhopAddressSuggestions.js +6 -0
  136. package/lib/module/specs/NativeWhopAddressSuggestions.js.map +1 -0
  137. package/lib/module/specs/NativeWhopAuthSession.js +10 -0
  138. package/lib/module/specs/NativeWhopAuthSession.js.map +1 -0
  139. package/lib/module/specs/NativeWhopPlatformPay.js +10 -0
  140. package/lib/module/specs/NativeWhopPlatformPay.js.map +1 -0
  141. package/lib/module/specs/WhopPayButtonNativeComponent.ts +22 -0
  142. package/lib/module/theme/appearance.js +85 -0
  143. package/lib/module/theme/appearance.js.map +1 -0
  144. package/lib/module/theme/appearance.test.js +124 -0
  145. package/lib/module/theme/appearance.test.js.map +1 -0
  146. package/lib/module/theme/provider.js +25 -0
  147. package/lib/module/theme/provider.js.map +1 -0
  148. package/lib/module/theme/resolve.js +69 -0
  149. package/lib/module/theme/resolve.js.map +1 -0
  150. package/lib/module/theme/scales.generated.js +419 -0
  151. package/lib/module/theme/scales.generated.js.map +1 -0
  152. package/lib/module/ui/element-frame.js +83 -0
  153. package/lib/module/ui/element-frame.js.map +1 -0
  154. package/lib/module/ui/payment-method-icon.js +69 -0
  155. package/lib/module/ui/payment-method-icon.js.map +1 -0
  156. package/lib/module/ui/primitives.js +266 -0
  157. package/lib/module/ui/primitives.js.map +1 -0
  158. package/lib/module/ui/select.js +281 -0
  159. package/lib/module/ui/select.js.map +1 -0
  160. package/lib/module/ui/suggestions.js +71 -0
  161. package/lib/module/ui/suggestions.js.map +1 -0
  162. package/lib/module/ui/whop-logo.js +42 -0
  163. package/lib/module/ui/whop-logo.js.map +1 -0
  164. package/lib/typescript/package.json +1 -0
  165. package/lib/typescript/src/api/client.d.ts +87 -0
  166. package/lib/typescript/src/api/client.d.ts.map +1 -0
  167. package/lib/typescript/src/api/types.d.ts +175 -0
  168. package/lib/typescript/src/api/types.d.ts.map +1 -0
  169. package/lib/typescript/src/controller/actions.d.ts +42 -0
  170. package/lib/typescript/src/controller/actions.d.ts.map +1 -0
  171. package/lib/typescript/src/controller/store.d.ts +90 -0
  172. package/lib/typescript/src/controller/store.d.ts.map +1 -0
  173. package/lib/typescript/src/core/address/country-data.d.ts +4 -0
  174. package/lib/typescript/src/core/address/country-data.d.ts.map +1 -0
  175. package/lib/typescript/src/core/address/country-name.d.ts +2 -0
  176. package/lib/typescript/src/core/address/country-name.d.ts.map +1 -0
  177. package/lib/typescript/src/core/address/country-names.generated.d.ts +2 -0
  178. package/lib/typescript/src/core/address/country-names.generated.d.ts.map +1 -0
  179. package/lib/typescript/src/core/address/engine.d.ts +97 -0
  180. package/lib/typescript/src/core/address/engine.d.ts.map +1 -0
  181. package/lib/typescript/src/core/address/form-state.d.ts +144 -0
  182. package/lib/typescript/src/core/address/form-state.d.ts.map +1 -0
  183. package/lib/typescript/src/core/address/places.d.ts +23 -0
  184. package/lib/typescript/src/core/address/places.d.ts.map +1 -0
  185. package/lib/typescript/src/core/address/suggest.d.ts +47 -0
  186. package/lib/typescript/src/core/address/suggest.d.ts.map +1 -0
  187. package/lib/typescript/src/core/address/use-suggestions.d.ts +3 -0
  188. package/lib/typescript/src/core/address/use-suggestions.d.ts.map +1 -0
  189. package/lib/typescript/src/core/payments/address-change.d.ts +52 -0
  190. package/lib/typescript/src/core/payments/address-change.d.ts.map +1 -0
  191. package/lib/typescript/src/core/payments/billing-merge.d.ts +39 -0
  192. package/lib/typescript/src/core/payments/billing-merge.d.ts.map +1 -0
  193. package/lib/typescript/src/core/payments/browser-info.d.ts +12 -0
  194. package/lib/typescript/src/core/payments/browser-info.d.ts.map +1 -0
  195. package/lib/typescript/src/core/payments/bt.d.ts +55 -0
  196. package/lib/typescript/src/core/payments/bt.d.ts.map +1 -0
  197. package/lib/typescript/src/core/payments/currency.d.ts +7 -0
  198. package/lib/typescript/src/core/payments/currency.d.ts.map +1 -0
  199. package/lib/typescript/src/core/payments/detail.d.ts +53 -0
  200. package/lib/typescript/src/core/payments/detail.d.ts.map +1 -0
  201. package/lib/typescript/src/core/payments/errors.d.ts +62 -0
  202. package/lib/typescript/src/core/payments/errors.d.ts.map +1 -0
  203. package/lib/typescript/src/core/payments/mint.d.ts +74 -0
  204. package/lib/typescript/src/core/payments/mint.d.ts.map +1 -0
  205. package/lib/typescript/src/core/payments/plan.d.ts +69 -0
  206. package/lib/typescript/src/core/payments/plan.d.ts.map +1 -0
  207. package/lib/typescript/src/core/payments/refusals.d.ts +12 -0
  208. package/lib/typescript/src/core/payments/refusals.d.ts.map +1 -0
  209. package/lib/typescript/src/core/payments/secure-fields.d.ts +33 -0
  210. package/lib/typescript/src/core/payments/secure-fields.d.ts.map +1 -0
  211. package/lib/typescript/src/core/payments/tax-id-catalog.d.ts +481 -0
  212. package/lib/typescript/src/core/payments/tax-id-catalog.d.ts.map +1 -0
  213. package/lib/typescript/src/core/payments/wallet-contact.d.ts +40 -0
  214. package/lib/typescript/src/core/payments/wallet-contact.d.ts.map +1 -0
  215. package/lib/typescript/src/elements/address.d.ts +55 -0
  216. package/lib/typescript/src/elements/address.d.ts.map +1 -0
  217. package/lib/typescript/src/elements/branding.d.ts +18 -0
  218. package/lib/typescript/src/elements/branding.d.ts.map +1 -0
  219. package/lib/typescript/src/elements/card-fields/context.d.ts +67 -0
  220. package/lib/typescript/src/elements/card-fields/context.d.ts.map +1 -0
  221. package/lib/typescript/src/elements/card-fields/fields.d.ts +15 -0
  222. package/lib/typescript/src/elements/card-fields/fields.d.ts.map +1 -0
  223. package/lib/typescript/src/elements/card-fields/index.d.ts +21 -0
  224. package/lib/typescript/src/elements/card-fields/index.d.ts.map +1 -0
  225. package/lib/typescript/src/elements/card.d.ts +21 -0
  226. package/lib/typescript/src/elements/card.d.ts.map +1 -0
  227. package/lib/typescript/src/elements/email.d.ts +31 -0
  228. package/lib/typescript/src/elements/email.d.ts.map +1 -0
  229. package/lib/typescript/src/elements/payment/declared-fields.d.ts +43 -0
  230. package/lib/typescript/src/elements/payment/declared-fields.d.ts.map +1 -0
  231. package/lib/typescript/src/elements/payment/index.d.ts +37 -0
  232. package/lib/typescript/src/elements/payment/index.d.ts.map +1 -0
  233. package/lib/typescript/src/elements/payment/wallet.d.ts +39 -0
  234. package/lib/typescript/src/elements/payment/wallet.d.ts.map +1 -0
  235. package/lib/typescript/src/elements/tax-id.d.ts +41 -0
  236. package/lib/typescript/src/elements/tax-id.d.ts.map +1 -0
  237. package/lib/typescript/src/i18n/catalogs.d.ts +7 -0
  238. package/lib/typescript/src/i18n/catalogs.d.ts.map +1 -0
  239. package/lib/typescript/src/i18n/index.d.ts +17 -0
  240. package/lib/typescript/src/i18n/index.d.ts.map +1 -0
  241. package/lib/typescript/src/index.d.ts +42 -0
  242. package/lib/typescript/src/index.d.ts.map +1 -0
  243. package/lib/typescript/src/namespace.d.ts +36 -0
  244. package/lib/typescript/src/namespace.d.ts.map +1 -0
  245. package/lib/typescript/src/native/index.d.ts +62 -0
  246. package/lib/typescript/src/native/index.d.ts.map +1 -0
  247. package/lib/typescript/src/provider.d.ts +37 -0
  248. package/lib/typescript/src/provider.d.ts.map +1 -0
  249. package/lib/typescript/src/specs/NativeWhopAddressSuggestions.d.ts +13 -0
  250. package/lib/typescript/src/specs/NativeWhopAddressSuggestions.d.ts.map +1 -0
  251. package/lib/typescript/src/specs/NativeWhopAuthSession.d.ts +20 -0
  252. package/lib/typescript/src/specs/NativeWhopAuthSession.d.ts.map +1 -0
  253. package/lib/typescript/src/specs/NativeWhopPlatformPay.d.ts +24 -0
  254. package/lib/typescript/src/specs/NativeWhopPlatformPay.d.ts.map +1 -0
  255. package/lib/typescript/src/specs/WhopPayButtonNativeComponent.d.ts +21 -0
  256. package/lib/typescript/src/specs/WhopPayButtonNativeComponent.d.ts.map +1 -0
  257. package/lib/typescript/src/theme/appearance.d.ts +71 -0
  258. package/lib/typescript/src/theme/appearance.d.ts.map +1 -0
  259. package/lib/typescript/src/theme/provider.d.ts +11 -0
  260. package/lib/typescript/src/theme/provider.d.ts.map +1 -0
  261. package/lib/typescript/src/theme/resolve.d.ts +19 -0
  262. package/lib/typescript/src/theme/resolve.d.ts.map +1 -0
  263. package/lib/typescript/src/theme/scales.generated.d.ts +18 -0
  264. package/lib/typescript/src/theme/scales.generated.d.ts.map +1 -0
  265. package/lib/typescript/src/ui/element-frame.d.ts +32 -0
  266. package/lib/typescript/src/ui/element-frame.d.ts.map +1 -0
  267. package/lib/typescript/src/ui/payment-method-icon.d.ts +21 -0
  268. package/lib/typescript/src/ui/payment-method-icon.d.ts.map +1 -0
  269. package/lib/typescript/src/ui/primitives.d.ts +94 -0
  270. package/lib/typescript/src/ui/primitives.d.ts.map +1 -0
  271. package/lib/typescript/src/ui/select.d.ts +25 -0
  272. package/lib/typescript/src/ui/select.d.ts.map +1 -0
  273. package/lib/typescript/src/ui/suggestions.d.ts +15 -0
  274. package/lib/typescript/src/ui/suggestions.d.ts.map +1 -0
  275. package/lib/typescript/src/ui/whop-logo.d.ts +4 -0
  276. package/lib/typescript/src/ui/whop-logo.d.ts.map +1 -0
  277. package/package.json +121 -0
  278. package/scripts/check-swift.sh +27 -0
  279. package/scripts/codegen-shims.mjs +409 -0
  280. package/scripts/gen-country-names.mjs +58 -0
  281. package/scripts/gen-theme.mjs +124 -0
  282. package/scripts/gen-wordmark.mjs +68 -0
  283. package/scripts/mirror.mjs +112 -0
  284. package/src/api/client.ts +202 -0
  285. package/src/api/types.ts +166 -0
  286. package/src/controller/actions.ts +197 -0
  287. package/src/controller/store.ts +201 -0
  288. package/src/core/address/country-data.ts +927 -0
  289. package/src/core/address/country-name.ts +36 -0
  290. package/src/core/address/country-names.generated.ts +246 -0
  291. package/src/core/address/engine.ts +349 -0
  292. package/src/core/address/form-state.ts +479 -0
  293. package/src/core/address/places.ts +39 -0
  294. package/src/core/address/suggest.ts +153 -0
  295. package/src/core/address/use-suggestions.ts +37 -0
  296. package/src/core/payments/address-change.ts +121 -0
  297. package/src/core/payments/billing-merge.ts +91 -0
  298. package/src/core/payments/browser-info.ts +43 -0
  299. package/src/core/payments/bt.ts +176 -0
  300. package/src/core/payments/currency.ts +54 -0
  301. package/src/core/payments/detail.ts +204 -0
  302. package/src/core/payments/errors.ts +171 -0
  303. package/src/core/payments/mint.ts +130 -0
  304. package/src/core/payments/plan.ts +198 -0
  305. package/src/core/payments/refusals.ts +24 -0
  306. package/src/core/payments/secure-fields.ts +85 -0
  307. package/src/core/payments/tax-id-catalog.ts +320 -0
  308. package/src/core/payments/wallet-contact.ts +56 -0
  309. package/src/elements/address.tsx +570 -0
  310. package/src/elements/branding.tsx +87 -0
  311. package/src/elements/card-fields/context.tsx +310 -0
  312. package/src/elements/card-fields/fields.tsx +281 -0
  313. package/src/elements/card-fields/index.tsx +37 -0
  314. package/src/elements/card.tsx +101 -0
  315. package/src/elements/email.tsx +100 -0
  316. package/src/elements/payment/declared-fields.tsx +238 -0
  317. package/src/elements/payment/index.tsx +497 -0
  318. package/src/elements/payment/wallet.tsx +155 -0
  319. package/src/elements/tax-id.tsx +143 -0
  320. package/src/i18n/catalogs.ts +100 -0
  321. package/src/i18n/index.tsx +46 -0
  322. package/src/index.ts +68 -0
  323. package/src/namespace.tsx +231 -0
  324. package/src/native/index.ts +173 -0
  325. package/src/provider.tsx +76 -0
  326. package/src/specs/NativeWhopAddressSuggestions.ts +14 -0
  327. package/src/specs/NativeWhopAuthSession.ts +21 -0
  328. package/src/specs/NativeWhopPlatformPay.ts +25 -0
  329. package/src/specs/WhopPayButtonNativeComponent.ts +22 -0
  330. package/src/theme/appearance.ts +150 -0
  331. package/src/theme/provider.tsx +28 -0
  332. package/src/theme/resolve.ts +68 -0
  333. package/src/theme/scales.generated.ts +427 -0
  334. package/src/ui/element-frame.tsx +94 -0
  335. package/src/ui/payment-method-icon.tsx +55 -0
  336. package/src/ui/primitives.tsx +269 -0
  337. package/src/ui/select.tsx +255 -0
  338. package/src/ui/suggestions.tsx +69 -0
  339. package/src/ui/whop-logo.tsx +37 -0
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ import { describe, expect, it } from 'vitest';
4
+ import { mergeWalletContact, readSheetResult } from "./wallet-contact.js";
5
+ describe('readSheetResult', () => {
6
+ it('reads the envelope both native modules now send', () => {
7
+ const parsed = readSheetResult(JSON.stringify({
8
+ paymentData: '{"signature":"x"}',
9
+ email: 'buyer@example.com',
10
+ name: 'Ada Lovelace',
11
+ address: {
12
+ line1: '1 Main St',
13
+ city: 'Austin',
14
+ state: 'TX',
15
+ postal_code: '78701',
16
+ country: 'US'
17
+ }
18
+ }));
19
+ expect(parsed.paymentData).toBe('{"signature":"x"}');
20
+ expect(parsed.email).toBe('buyer@example.com');
21
+ expect(parsed.address?.postal_code).toBe('78701');
22
+ });
23
+
24
+ // An app that has not rebuilt its native side still returns a bare token. It must keep
25
+ // tokenizing — losing contacts is the old behaviour; failing to pay is not.
26
+ it('treats a bare Google Pay token as the payload', () => {
27
+ expect(readSheetResult('opaque-gateway-token')).toEqual({
28
+ paymentData: 'opaque-gateway-token'
29
+ });
30
+ });
31
+ it('treats JSON that is not an envelope as the payload', () => {
32
+ const raw = '{"signature":"x","version":"EC_v1"}';
33
+ expect(readSheetResult(raw)).toEqual({
34
+ paymentData: raw
35
+ });
36
+ });
37
+ });
38
+ describe('mergeWalletContact', () => {
39
+ const sheet = {
40
+ email: 'sheet@example.com',
41
+ name: 'Sheet Name',
42
+ address: {
43
+ line1: '1 Sheet St',
44
+ country: 'US'
45
+ }
46
+ };
47
+
48
+ // The regression: with no EmailElement mounted the sheet collects the email, and validating
49
+ // before folding it in threw "billingDetails.email is required" on a buyer who had just typed it.
50
+ it('supplies the email when nothing else did', () => {
51
+ expect(mergeWalletContact(undefined, sheet).email).toBe('sheet@example.com');
52
+ });
53
+ it('never overrides what the caller or a mounted element supplied', () => {
54
+ const merged = mergeWalletContact({
55
+ email: 'explicit@example.com',
56
+ name: 'Explicit'
57
+ }, sheet);
58
+ expect(merged.email).toBe('explicit@example.com');
59
+ expect(merged.name).toBe('Explicit');
60
+ });
61
+ it('carries the address the sheet collected', () => {
62
+ expect(mergeWalletContact({
63
+ email: 'a@b.co'
64
+ }, sheet).address).toEqual({
65
+ line1: '1 Sheet St',
66
+ country: 'US'
67
+ });
68
+ });
69
+ it('adds nothing when the sheet collected nothing', () => {
70
+ expect(mergeWalletContact({
71
+ email: 'a@b.co'
72
+ }, {})).toEqual({
73
+ email: 'a@b.co'
74
+ });
75
+ });
76
+ });
77
+ //# sourceMappingURL=wallet-contact.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["describe","expect","it","mergeWalletContact","readSheetResult","parsed","JSON","stringify","paymentData","email","name","address","line1","city","state","postal_code","country","toBe","toEqual","raw","sheet","undefined","merged"],"sourceRoot":"../../../../src","sources":["core/payments/wallet-contact.test.ts"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AAE7C,SAASC,kBAAkB,EAAEC,eAAe,QAAQ,qBAAkB;AAEtEJ,QAAQ,CAAC,iBAAiB,EAAE,MAAM;EACjCE,EAAE,CAAC,iDAAiD,EAAE,MAAM;IAC3D,MAAMG,MAAM,GAAGD,eAAe,CAC7BE,IAAI,CAACC,SAAS,CAAC;MACdC,WAAW,EAAE,mBAAmB;MAChCC,KAAK,EAAE,mBAAmB;MAC1BC,IAAI,EAAE,cAAc;MACpBC,OAAO,EAAE;QAAEC,KAAK,EAAE,WAAW;QAAEC,IAAI,EAAE,QAAQ;QAAEC,KAAK,EAAE,IAAI;QAAEC,WAAW,EAAE,OAAO;QAAEC,OAAO,EAAE;MAAK;IACjG,CAAC,CACF,CAAC;IACDf,MAAM,CAACI,MAAM,CAACG,WAAW,CAAC,CAACS,IAAI,CAAC,mBAAmB,CAAC;IACpDhB,MAAM,CAACI,MAAM,CAACI,KAAK,CAAC,CAACQ,IAAI,CAAC,mBAAmB,CAAC;IAC9ChB,MAAM,CAACI,MAAM,CAACM,OAAO,EAAEI,WAAW,CAAC,CAACE,IAAI,CAAC,OAAO,CAAC;EAClD,CAAC,CAAC;;EAEF;EACA;EACAf,EAAE,CAAC,+CAA+C,EAAE,MAAM;IACzDD,MAAM,CAACG,eAAe,CAAC,sBAAsB,CAAC,CAAC,CAACc,OAAO,CAAC;MAAEV,WAAW,EAAE;IAAuB,CAAC,CAAC;EACjG,CAAC,CAAC;EAEFN,EAAE,CAAC,oDAAoD,EAAE,MAAM;IAC9D,MAAMiB,GAAG,GAAG,qCAAqC;IACjDlB,MAAM,CAACG,eAAe,CAACe,GAAG,CAAC,CAAC,CAACD,OAAO,CAAC;MAAEV,WAAW,EAAEW;IAAI,CAAC,CAAC;EAC3D,CAAC,CAAC;AACH,CAAC,CAAC;AAEFnB,QAAQ,CAAC,oBAAoB,EAAE,MAAM;EACpC,MAAMoB,KAAK,GAAG;IACbX,KAAK,EAAE,mBAAmB;IAC1BC,IAAI,EAAE,YAAY;IAClBC,OAAO,EAAE;MAAEC,KAAK,EAAE,YAAY;MAAEI,OAAO,EAAE;IAAK;EAC/C,CAAC;;EAED;EACA;EACAd,EAAE,CAAC,0CAA0C,EAAE,MAAM;IACpDD,MAAM,CAACE,kBAAkB,CAACkB,SAAS,EAAED,KAAK,CAAC,CAACX,KAAK,CAAC,CAACQ,IAAI,CAAC,mBAAmB,CAAC;EAC7E,CAAC,CAAC;EAEFf,EAAE,CAAC,+DAA+D,EAAE,MAAM;IACzE,MAAMoB,MAAM,GAAGnB,kBAAkB,CAAC;MAAEM,KAAK,EAAE,sBAAsB;MAAEC,IAAI,EAAE;IAAW,CAAC,EAAEU,KAAK,CAAC;IAC7FnB,MAAM,CAACqB,MAAM,CAACb,KAAK,CAAC,CAACQ,IAAI,CAAC,sBAAsB,CAAC;IACjDhB,MAAM,CAACqB,MAAM,CAACZ,IAAI,CAAC,CAACO,IAAI,CAAC,UAAU,CAAC;EACrC,CAAC,CAAC;EAEFf,EAAE,CAAC,yCAAyC,EAAE,MAAM;IACnDD,MAAM,CAACE,kBAAkB,CAAC;MAAEM,KAAK,EAAE;IAAS,CAAC,EAAEW,KAAK,CAAC,CAACT,OAAO,CAAC,CAACO,OAAO,CAAC;MAAEN,KAAK,EAAE,YAAY;MAAEI,OAAO,EAAE;IAAK,CAAC,CAAC;EAC/G,CAAC,CAAC;EAEFd,EAAE,CAAC,+CAA+C,EAAE,MAAM;IACzDD,MAAM,CAACE,kBAAkB,CAAC;MAAEM,KAAK,EAAE;IAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAACS,OAAO,CAAC;MAAET,KAAK,EAAE;IAAS,CAAC,CAAC;EACjF,CAAC,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,467 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useEffect, useMemo, useReducer, useRef, useState } from 'react';
4
+ import { View } from 'react-native';
5
+ import { loadCountryCatalog, normalizeCountry, parseCountryFormat } from "../core/address/engine.js";
6
+ import { addressFormReducer, allowedCountryList, pairedGridRows, planFields, requiredFloorFor, seedAddressForm, snapshotAddressForm, placeAllowList } from "../core/address/form-state.js";
7
+ import { countryName } from "../core/address/country-name.js";
8
+ import { resolveSubdivision } from "../core/address/suggest.js";
9
+ import { useAddressSuggestions } from "../core/address/use-suggestions.js";
10
+ import { WhopAddressSuggestions } from "../native/index.js";
11
+ import { SuggestionList } from "../ui/suggestions.js";
12
+ import { detectIpCountry } from "../core/address/places.js";
13
+ import { useLocale, useT } from "../i18n/index.js";
14
+ import { usePaymentsState, usePaymentsStore } from "../namespace.js";
15
+ import { useTheme } from "../theme/provider.js";
16
+ import { ElementFrame } from "../ui/element-frame.js";
17
+ import { Field, FieldSkeleton, Row, Stack, TextButton } from "../ui/primitives.js";
18
+ import { Select } from "../ui/select.js";
19
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
20
+ /**
21
+ * Collects a postal address using the per-country format engine ported from the web element, so
22
+ * field order, labels, required-ness, postal validation, and the state lists are identical across
23
+ * the two surfaces for all 241 countries in the catalog.
24
+ */
25
+ export function AddressElement({
26
+ mode = 'billing',
27
+ layout = 'full',
28
+ scope = 'full',
29
+ defaultValues,
30
+ detectCountry = true,
31
+ allowedCountries,
32
+ name = 'combined',
33
+ organization = 'none',
34
+ line2 = 'toggle',
35
+ autocomplete = true,
36
+ customFields,
37
+ countryHint = '',
38
+ style,
39
+ fallback,
40
+ onChange,
41
+ onReady,
42
+ onError
43
+ }) {
44
+ const t = useT();
45
+ const theme = useTheme();
46
+ const store = usePaymentsStore();
47
+ const methodCountries = usePaymentsState(s => s.methodCountries);
48
+ const [catalog, setCatalog] = useState(null);
49
+ const [detected, setDetected] = useState(undefined);
50
+ const [detecting, setDetecting] = useState(detectCountry);
51
+ const [failure, setFailure] = useState(null);
52
+ useEffect(() => {
53
+ let alive = true;
54
+ loadCountryCatalog().then(data => alive && setCatalog(data)).catch(err => alive && setFailure({
55
+ message: err.message,
56
+ code: 'ADDRESS_CATALOG_FAILED'
57
+ }));
58
+ return () => {
59
+ alive = false;
60
+ };
61
+ }, []);
62
+ useEffect(() => {
63
+ if (!detectCountry) return;
64
+ let alive = true;
65
+ detectIpCountry().then(country => {
66
+ if (!alive) return;
67
+ setDetected(country);
68
+ setDetecting(false);
69
+ }).catch(() => alive && setDetecting(false));
70
+ return () => {
71
+ alive = false;
72
+ };
73
+ }, [detectCountry]);
74
+
75
+ // The method constraint NARROWS the consumer's allow list, never replaces it — replacing would
76
+ // let a tier's countries widen a restriction the integrator set deliberately.
77
+ const effectiveAllowed = useMemo(() => effectiveAllowedCountries(methodCountries ?? undefined, allowedCountries), [methodCountries, allowedCountries]);
78
+ const config = useMemo(() => ({
79
+ mode,
80
+ layout,
81
+ scope,
82
+ name,
83
+ organization,
84
+ line2,
85
+ autocomplete,
86
+ requiredFloor: requiredFloorFor(scope),
87
+ allowedCountries: effectiveAllowed,
88
+ customFields
89
+ }), [mode, layout, scope, name, organization, line2, autocomplete, effectiveAllowed, customFields]);
90
+ const ready = Boolean(catalog) && !detecting;
91
+ if (!catalog || detecting) {
92
+ return /*#__PURE__*/_jsx(ElementFrame, {
93
+ style: style,
94
+ fallback: fallback,
95
+ skeleton: /*#__PURE__*/_jsxs(Stack, {
96
+ children: [/*#__PURE__*/_jsx(FieldSkeleton, {}), /*#__PURE__*/_jsx(FieldSkeleton, {}), /*#__PURE__*/_jsx(FieldSkeleton, {})]
97
+ }),
98
+ ready: false,
99
+ error: failure,
100
+ onReady: onReady,
101
+ onError: onError,
102
+ children: /*#__PURE__*/_jsx(View, {})
103
+ });
104
+ }
105
+ return /*#__PURE__*/_jsx(AddressForm, {
106
+ catalog: catalog,
107
+ config: config,
108
+ detected: detected,
109
+ countryHint: countryHint,
110
+ defaultValues: defaultValues,
111
+ ready: ready,
112
+ style: style,
113
+ fallback: fallback,
114
+ onChange: onChange,
115
+ onReady: onReady,
116
+ onError: onError,
117
+ store: store,
118
+ t: t,
119
+ spacing: theme.tokens.spacing
120
+ });
121
+ }
122
+
123
+ /** Intersection when both exist; a disjoint pair keeps the consumer's list rather than widening. */
124
+ export function effectiveAllowedCountries(methodCountries, allowedCountries) {
125
+ if (!methodCountries?.length) return allowedCountries;
126
+ if (!allowedCountries?.length) return methodCountries;
127
+ const consumerAllowed = new Set(allowedCountries.map(code => code.toLowerCase()));
128
+ const intersection = methodCountries.filter(code => consumerAllowed.has(code.toLowerCase()));
129
+ return intersection.length > 0 ? intersection : allowedCountries;
130
+ }
131
+ function AddressForm({
132
+ catalog,
133
+ config,
134
+ detected,
135
+ countryHint,
136
+ defaultValues,
137
+ ready,
138
+ style,
139
+ fallback,
140
+ onChange,
141
+ onReady,
142
+ onError,
143
+ store,
144
+ t,
145
+ spacing
146
+ }) {
147
+ const catalogCountries = useMemo(() => Object.keys(catalog), [catalog]);
148
+ const [state, rawDispatch] = useReducer(addressFormReducer, undefined, () => seedAddressForm(config, {
149
+ defaultValues,
150
+ detectedCountry: detected,
151
+ countryHint
152
+ }, catalogCountries));
153
+ const format = useMemo(() => parseCountryFormat(state.country, catalog[state.country]), [state.country, catalog]);
154
+ const plan = useMemo(() => planFields(config, format), [config, format]);
155
+ const snapshot = useMemo(() => snapshotAddressForm(config, format, state), [config, format, state]);
156
+ const locale = useLocale();
157
+ const countryOptions = useMemo(() => {
158
+ const allowed = allowedCountryList(config, catalogCountries);
159
+ return allowed.map(code => ({
160
+ value: code,
161
+ label: countryName(code, locale)
162
+ })).sort((a, b) => a.label.localeCompare(b.label));
163
+ }, [config, catalogCountries, locale]);
164
+ const latestChange = useRef(onChange);
165
+ latestChange.current = onChange;
166
+
167
+ // The address element is the billing source while it is mounted, so the controller reads its
168
+ // snapshot at confirm rather than the payment element's internal block.
169
+ useEffect(() => {
170
+ store.patch({
171
+ addressLive: true
172
+ });
173
+ return () => store.patch({
174
+ addressLive: false,
175
+ addressCollected: undefined
176
+ });
177
+ }, [store]);
178
+ useEffect(() => {
179
+ store.patch({
180
+ addressCollected: {
181
+ complete: snapshot.complete,
182
+ address: snapshot.address,
183
+ custom: snapshot.custom
184
+ }
185
+ });
186
+ latestChange.current?.({
187
+ complete: snapshot.complete,
188
+ address: snapshot.address,
189
+ custom: snapshot.custom
190
+ });
191
+ }, [snapshot, store]);
192
+ const [line1Focused, setLine1Focused] = useState(false);
193
+ const suggestions = useAddressSuggestions(config.autocomplete, state.values.line1 ?? '');
194
+ const placeAllowed = useMemo(() => placeAllowList(config, catalogCountries), [config, catalogCountries]);
195
+ const showSuggestions = config.autocomplete && line1Focused && suggestions.length > 0;
196
+
197
+ // `apply-place` WHOLE-REPLACES the locality grid, so a resolve landing after the buyer moved on
198
+ // would silently rewrite line1, city, state and postal under them.
199
+ //
200
+ // The supersede is tracked with a counter bumped INSIDE dispatch rather than by reading the
201
+ // reducer's own `selecting` flag through a ref. A ref is only assigned during render, and an
202
+ // Android resolve is a cache hit that can settle before that render happens — which raced both
203
+ // ways: a fresh pick read a stale `false` and no-opped, and a superseding edit had not yet been
204
+ // seen, so a stale place still applied.
205
+ const pickSequence = useRef(0);
206
+ const dispatch = useCallback(action => {
207
+ if (action.type === 'edit' || action.type === 'set-country') pickSequence.current += 1;
208
+ rawDispatch(action);
209
+ }, []);
210
+ const pickSuggestion = suggestion => {
211
+ setLine1Focused(false);
212
+ const sequence = pickSequence.current + 1;
213
+ pickSequence.current = sequence;
214
+ dispatch({
215
+ type: 'begin-select'
216
+ });
217
+ void WhopAddressSuggestions.resolve(suggestion.id, state.country).then(parsed => {
218
+ if (pickSequence.current !== sequence) return;
219
+ if (!parsed) {
220
+ dispatch({
221
+ type: 'select-failed'
222
+ });
223
+ return;
224
+ }
225
+ // The state Select is keyed on the catalog's sub_key, and a geocoder may answer with the
226
+ // display name instead, so an unresolved subdivision must not reach the form as-is.
227
+ dispatch({
228
+ type: 'apply-place',
229
+ parsed: {
230
+ ...parsed,
231
+ state: resolveSubdivision(parsed.state, format.stateOptions)
232
+ },
233
+ allowed: placeAllowed
234
+ });
235
+ });
236
+ };
237
+ const showError = key => state.showAllErrors || state.touched[key] ? errorText(t, snapshot.errors[key]) : undefined;
238
+ const compact = config.layout === 'compact';
239
+ const textField = (key, label, extra) => /*#__PURE__*/_jsx(Field, {
240
+ label: compact ? undefined : label,
241
+ placeholder: compact ? label : undefined,
242
+ accessibilityLabel: label,
243
+ value: state.values[key] ?? '',
244
+ onChangeText: value => dispatch({
245
+ type: 'edit',
246
+ field: key,
247
+ value
248
+ }),
249
+ onBlur: () => dispatch({
250
+ type: 'blur',
251
+ field: key
252
+ }),
253
+ error: showError(key),
254
+ containerStyle: {
255
+ flex: 1
256
+ },
257
+ ...extra
258
+ }, key);
259
+ const nameFields = config.name === 'none' ? null : config.name === 'split' ? /*#__PURE__*/_jsxs(Row, {
260
+ children: [textField('first_name', t('First name'), {
261
+ autoComplete: 'given-name',
262
+ textContentType: 'givenName'
263
+ }), textField('last_name', t('Last name'), {
264
+ autoComplete: 'family-name',
265
+ textContentType: 'familyName'
266
+ })]
267
+ }) : textField('name', t('Name'), {
268
+ autoComplete: 'name',
269
+ textContentType: 'name'
270
+ });
271
+ const organizationFields = config.organization === 'none' ? null : /*#__PURE__*/_jsxs(Stack, {
272
+ gap: spacing * 2,
273
+ children: [textField('organization', t('Organization'), {
274
+ autoComplete: 'organization'
275
+ }), config.organization === 'name_with_type' ? /*#__PURE__*/_jsx(Select, {
276
+ label: t('Organization type'),
277
+ value: state.organizationType || undefined,
278
+ options: [{
279
+ value: 'business',
280
+ label: t('Business')
281
+ }, {
282
+ value: 'individual',
283
+ label: t('Individual')
284
+ }],
285
+ onChange: value => dispatch({
286
+ type: 'set-organization-type',
287
+ value: value
288
+ })
289
+ }) : null]
290
+ });
291
+ const customAt = position => (config.customFields ?? []).filter(field => field.position === position).map(field => {
292
+ const key = `custom:${field.key}`;
293
+ const value = state.custom[field.key] ?? '';
294
+ const onChange = next => dispatch({
295
+ type: 'edit-custom',
296
+ key: field.key,
297
+ value: next
298
+ });
299
+ if (field.type === 'select') {
300
+ return /*#__PURE__*/_jsx(Select, {
301
+ label: compact ? undefined : field.label,
302
+ placeholder: compact ? field.label : undefined,
303
+ accessibilityLabel: field.label,
304
+ value: value || undefined,
305
+ options: (field.options ?? []).map(option => ({
306
+ value: option,
307
+ label: option
308
+ })),
309
+ onChange: onChange,
310
+ error: showError(key),
311
+ searchable: (field.options ?? []).length > 12
312
+ }, key);
313
+ }
314
+ return /*#__PURE__*/_jsx(Field, {
315
+ label: compact ? undefined : field.label,
316
+ placeholder: compact ? field.label : undefined,
317
+ accessibilityLabel: field.label,
318
+ value: value,
319
+ onChangeText: onChange,
320
+ onBlur: () => dispatch({
321
+ type: 'blur',
322
+ field: key
323
+ }),
324
+ error: showError(key),
325
+ keyboardType: field.type === 'phone' ? 'phone-pad' : 'default',
326
+ autoComplete: field.type === 'phone' ? 'tel' : undefined
327
+ }, key);
328
+ });
329
+ const gridRows = pairedGridRows(plan.gridFields);
330
+ return /*#__PURE__*/_jsx(ElementFrame, {
331
+ style: style,
332
+ fallback: fallback,
333
+ skeleton: /*#__PURE__*/_jsxs(Stack, {
334
+ children: [/*#__PURE__*/_jsx(FieldSkeleton, {}), /*#__PURE__*/_jsx(FieldSkeleton, {}), /*#__PURE__*/_jsx(FieldSkeleton, {})]
335
+ }),
336
+ ready: ready,
337
+ onReady: onReady,
338
+ onError: onError,
339
+ children: /*#__PURE__*/_jsxs(Stack, {
340
+ children: [nameFields, customAt('after_name'), organizationFields, customAt('after_organization'), customAt('before_country'), /*#__PURE__*/_jsx(Select, {
341
+ label: t('Country'),
342
+ value: state.country,
343
+ options: countryOptions,
344
+ onChange: country => dispatch({
345
+ type: 'set-country',
346
+ country: normalizeCountry(country) ?? country
347
+ }),
348
+ searchable: true,
349
+ partName: "whop-AddressCountrySelect"
350
+ }), plan.gridFields.includes('line1') ? /*#__PURE__*/_jsxs(View, {
351
+ children: [textField('line1', gridLabel(t, 'line1', format), {
352
+ ...gridExtras('line1', format),
353
+ onFocus: () => setLine1Focused(true),
354
+ onBlur: () => {
355
+ setLine1Focused(false);
356
+ dispatch({
357
+ type: 'blur',
358
+ field: 'line1'
359
+ });
360
+ }
361
+ }), showSuggestions ? /*#__PURE__*/_jsx(SuggestionList, {
362
+ suggestions: suggestions,
363
+ onPick: pickSuggestion
364
+ }) : null]
365
+ }) : null, config.line2 === 'always' || state.line2Open ? textField('line2', t('Address line 2')) : null, gridRows.map(row => /*#__PURE__*/_jsx(Row, {
366
+ children: row.map(key => key === 'state' && format.stateOptions.length > 0 ? /*#__PURE__*/_jsx(View, {
367
+ style: {
368
+ flex: 1
369
+ },
370
+ children: /*#__PURE__*/_jsx(Select, {
371
+ label: compact ? undefined : stateLabel(t, format),
372
+ placeholder: compact ? stateLabel(t, format) : undefined,
373
+ accessibilityLabel: stateLabel(t, format),
374
+ value: state.values.state || undefined,
375
+ options: format.stateOptions.map(toOption),
376
+ onChange: value => dispatch({
377
+ type: 'edit',
378
+ field: 'state',
379
+ value
380
+ }),
381
+ error: showError('state'),
382
+ searchable: format.stateOptions.length > 12
383
+ })
384
+ }, key) : textField(key, gridLabel(t, key, format), gridExtras(key, format)))
385
+ }, row.join('-'))), customAt('after_address'), config.line2 === 'toggle' && !state.line2Open ? /*#__PURE__*/_jsx(TextButton, {
386
+ label: t('Add address line 2'),
387
+ onPress: () => dispatch({
388
+ type: 'toggle-line2'
389
+ })
390
+ }) : null]
391
+ })
392
+ });
393
+ }
394
+ function toOption(option) {
395
+ // The engine keys options by the catalog's own sub_key; `iso` is display metadata, not the value
396
+ // the format engine validates against.
397
+ return {
398
+ value: option.key,
399
+ label: option.name
400
+ };
401
+ }
402
+ function stateLabel(t, format) {
403
+ switch (format.stateLabel) {
404
+ case 'province':
405
+ return t('Province');
406
+ case 'emirate':
407
+ return t('Emirate');
408
+ case 'county':
409
+ return t('County');
410
+ case 'prefecture':
411
+ return t('Prefecture');
412
+ case 'island':
413
+ return t('Island');
414
+ case 'parish':
415
+ return t('Parish');
416
+ case 'department':
417
+ return t('Department');
418
+ case 'do_si':
419
+ return t('Province');
420
+ case 'oblast':
421
+ return t('Oblast');
422
+ case 'area':
423
+ return t('Area');
424
+ default:
425
+ return t('State');
426
+ }
427
+ }
428
+ function gridLabel(t, key, format) {
429
+ switch (key) {
430
+ case 'line1':
431
+ return t('Address line 1');
432
+ case 'city':
433
+ return t('City');
434
+ case 'state':
435
+ return stateLabel(t, format);
436
+ case 'postal_code':
437
+ return format.postalLabel === 'zip' ? t('ZIP code') : format.postalLabel === 'pin' ? t('PIN code') : t('Postal code');
438
+ default:
439
+ return key;
440
+ }
441
+ }
442
+ function gridExtras(key, format) {
443
+ if (key === 'postal_code') {
444
+ const field = format.fields.find(f => f.type === 'postal_code');
445
+ return {
446
+ autoComplete: 'postal-code',
447
+ textContentType: 'postalCode',
448
+ autoCapitalize: 'characters',
449
+ placeholder: field?.postalPlaceholder
450
+ };
451
+ }
452
+ if (key === 'line1') return {
453
+ autoComplete: 'address-line1',
454
+ textContentType: 'streetAddressLine1'
455
+ };
456
+ if (key === 'city') return {
457
+ autoComplete: 'postal-address-locality',
458
+ textContentType: 'addressCity'
459
+ };
460
+ return {};
461
+ }
462
+ function errorText(t, code) {
463
+ if (code === 'required') return t('Required');
464
+ if (code === 'invalid') return t("That doesn't look right");
465
+ return undefined;
466
+ }
467
+ //# sourceMappingURL=address.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useMemo","useReducer","useRef","useState","View","loadCountryCatalog","normalizeCountry","parseCountryFormat","addressFormReducer","allowedCountryList","pairedGridRows","planFields","requiredFloorFor","seedAddressForm","snapshotAddressForm","placeAllowList","countryName","resolveSubdivision","useAddressSuggestions","WhopAddressSuggestions","SuggestionList","detectIpCountry","useLocale","useT","usePaymentsState","usePaymentsStore","useTheme","ElementFrame","Field","FieldSkeleton","Row","Stack","TextButton","Select","jsx","_jsx","jsxs","_jsxs","AddressElement","mode","layout","scope","defaultValues","detectCountry","allowedCountries","name","organization","line2","autocomplete","customFields","countryHint","style","fallback","onChange","onReady","onError","t","theme","store","methodCountries","s","catalog","setCatalog","detected","setDetected","undefined","detecting","setDetecting","failure","setFailure","alive","then","data","catch","err","message","code","country","effectiveAllowed","effectiveAllowedCountries","config","requiredFloor","ready","Boolean","skeleton","children","error","AddressForm","spacing","tokens","length","consumerAllowed","Set","map","toLowerCase","intersection","filter","has","catalogCountries","Object","keys","state","rawDispatch","detectedCountry","format","plan","snapshot","locale","countryOptions","allowed","value","label","sort","a","b","localeCompare","latestChange","current","patch","addressLive","addressCollected","complete","address","custom","line1Focused","setLine1Focused","suggestions","values","line1","placeAllowed","showSuggestions","pickSequence","dispatch","action","type","pickSuggestion","suggestion","sequence","resolve","id","parsed","stateOptions","showError","key","showAllErrors","touched","errorText","errors","compact","textField","extra","placeholder","accessibilityLabel","onChangeText","field","onBlur","containerStyle","flex","nameFields","autoComplete","textContentType","organizationFields","gap","organizationType","options","customAt","position","next","option","searchable","keyboardType","gridRows","gridFields","partName","includes","gridLabel","gridExtras","onFocus","onPick","line2Open","row","stateLabel","toOption","join","onPress","postalLabel","fields","find","f","autoCapitalize","postalPlaceholder"],"sourceRoot":"../../../src","sources":["elements/address.tsx"],"mappings":"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","ignoreList":[]}