@daimo/pay 1.16.0 → 1.16.1

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 (368) hide show
  1. package/build/hooks/useConnect.d.ts +8 -8
  2. package/build/index.d.ts +626 -15
  3. package/build/package.json.js +6 -4
  4. package/build/package.json.js.map +1 -1
  5. package/build/src/assets/MobileWithLogos.js +320 -1
  6. package/build/src/assets/MobileWithLogos.js.map +1 -1
  7. package/build/src/assets/ScanIconWithLogos.js +216 -10
  8. package/build/src/assets/ScanIconWithLogos.js.map +1 -1
  9. package/build/src/assets/browsers.js +963 -7
  10. package/build/src/assets/browsers.js.map +1 -1
  11. package/build/src/assets/chains.js +633 -103
  12. package/build/src/assets/chains.js.map +1 -1
  13. package/build/src/assets/coins.js +38 -1
  14. package/build/src/assets/coins.js.map +1 -1
  15. package/build/src/assets/crepe.js +35 -1
  16. package/build/src/assets/crepe.js.map +1 -1
  17. package/build/src/assets/icons.js +258 -15
  18. package/build/src/assets/icons.js.map +1 -1
  19. package/build/src/assets/logos.js +1510 -140
  20. package/build/src/assets/logos.js.map +1 -1
  21. package/build/src/assets/wallet.js +32 -1
  22. package/build/src/assets/wallet.js.map +1 -1
  23. package/build/src/assets/wave.js +41 -1
  24. package/build/src/assets/wave.js.map +1 -1
  25. package/build/src/components/Common/Alert/index.js +4 -1
  26. package/build/src/components/Common/Alert/index.js.map +1 -1
  27. package/build/src/components/Common/Alert/styles.js +4 -4
  28. package/build/src/components/Common/Alert/styles.js.map +1 -1
  29. package/build/src/components/Common/AmountInput/AmountInputField.js +29 -18
  30. package/build/src/components/Common/AmountInput/AmountInputField.js.map +1 -1
  31. package/build/src/components/Common/AmountInput/index.js +112 -99
  32. package/build/src/components/Common/AmountInput/index.js.map +1 -1
  33. package/build/src/components/Common/Avatar/index.js +63 -51
  34. package/build/src/components/Common/Avatar/index.js.map +1 -1
  35. package/build/src/components/Common/Avatar/styles.js +9 -14
  36. package/build/src/components/Common/Avatar/styles.js.map +1 -1
  37. package/build/src/components/Common/BrowserIcon/index.js +15 -14
  38. package/build/src/components/Common/BrowserIcon/index.js.map +1 -1
  39. package/build/src/components/Common/BrowserIcon/styles.js +1 -1
  40. package/build/src/components/Common/BrowserIcon/styles.js.map +1 -1
  41. package/build/src/components/Common/Button/index.js +131 -25
  42. package/build/src/components/Common/Button/index.js.map +1 -1
  43. package/build/src/components/Common/Button/styles.js +20 -24
  44. package/build/src/components/Common/Button/styles.js.map +1 -1
  45. package/build/src/components/Common/Chain/index.js +130 -14
  46. package/build/src/components/Common/Chain/index.js.map +1 -1
  47. package/build/src/components/Common/Chain/styles.js +9 -13
  48. package/build/src/components/Common/Chain/styles.js.map +1 -1
  49. package/build/src/components/Common/ChainSelectList/index.js +232 -89
  50. package/build/src/components/Common/ChainSelectList/index.js.map +1 -1
  51. package/build/src/components/Common/ChainSelectList/styles.js +11 -13
  52. package/build/src/components/Common/ChainSelectList/styles.js.map +1 -1
  53. package/build/src/components/Common/CircleTimer.js +85 -41
  54. package/build/src/components/Common/CircleTimer.js.map +1 -1
  55. package/build/src/components/Common/ConnectorList/index.js +106 -80
  56. package/build/src/components/Common/ConnectorList/index.js.map +1 -1
  57. package/build/src/components/Common/ConnectorList/styles.js +28 -36
  58. package/build/src/components/Common/ConnectorList/styles.js.map +1 -1
  59. package/build/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js +16 -9
  60. package/build/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js.map +1 -1
  61. package/build/src/components/Common/CopyToClipboard/index.js +3 -5
  62. package/build/src/components/Common/CopyToClipboard/index.js.map +1 -1
  63. package/build/src/components/Common/CustomQRCode/QRCode.js +120 -57
  64. package/build/src/components/Common/CustomQRCode/QRCode.js.map +1 -1
  65. package/build/src/components/Common/CustomQRCode/index.js +60 -10
  66. package/build/src/components/Common/CustomQRCode/index.js.map +1 -1
  67. package/build/src/components/Common/CustomQRCode/styles.js +6 -6
  68. package/build/src/components/Common/CustomQRCode/styles.js.map +1 -1
  69. package/build/src/components/Common/FitText/index.js +24 -17
  70. package/build/src/components/Common/FitText/index.js.map +1 -1
  71. package/build/src/components/Common/Modal/index.js +481 -267
  72. package/build/src/components/Common/Modal/index.js.map +1 -1
  73. package/build/src/components/Common/Modal/styles.js +44 -48
  74. package/build/src/components/Common/Modal/styles.js.map +1 -1
  75. package/build/src/components/Common/OptionsList/index.js +75 -33
  76. package/build/src/components/Common/OptionsList/index.js.map +1 -1
  77. package/build/src/components/Common/OptionsList/styles.js +7 -8
  78. package/build/src/components/Common/OptionsList/styles.js.map +1 -1
  79. package/build/src/components/Common/OrderHeader/index.js +109 -65
  80. package/build/src/components/Common/OrderHeader/index.js.map +1 -1
  81. package/build/src/components/Common/PaymentBreakdown/index.js +29 -7
  82. package/build/src/components/Common/PaymentBreakdown/index.js.map +1 -1
  83. package/build/src/components/Common/Portal/index.js +21 -22
  84. package/build/src/components/Common/Portal/index.js.map +1 -1
  85. package/build/src/components/Common/PoweredByFooter/index.js +39 -21
  86. package/build/src/components/Common/PoweredByFooter/index.js.map +1 -1
  87. package/build/src/components/Common/ScrollArea/index.js +107 -52
  88. package/build/src/components/Common/ScrollArea/index.js.map +1 -1
  89. package/build/src/components/Common/ScrollArea/styles.js +7 -11
  90. package/build/src/components/Common/ScrollArea/styles.js.map +1 -1
  91. package/build/src/components/Common/SelectAnotherMethodButton/index.js +67 -55
  92. package/build/src/components/Common/SelectAnotherMethodButton/index.js.map +1 -1
  93. package/build/src/components/Common/Spinner/index.js +56 -16
  94. package/build/src/components/Common/Spinner/index.js.map +1 -1
  95. package/build/src/components/Common/Spinner/styles.js +2 -2
  96. package/build/src/components/Common/Spinner/styles.js.map +1 -1
  97. package/build/src/components/Common/SwitchButton/index.js +18 -15
  98. package/build/src/components/Common/SwitchButton/index.js.map +1 -1
  99. package/build/src/components/Common/ThemedButton/index.js +37 -16
  100. package/build/src/components/Common/ThemedButton/index.js.map +1 -1
  101. package/build/src/components/Common/ThemedButton/styles.js +2 -2
  102. package/build/src/components/Common/ThemedButton/styles.js.map +1 -1
  103. package/build/src/components/Common/TokenChainLogo/index.js +14 -8
  104. package/build/src/components/Common/TokenChainLogo/index.js.map +1 -1
  105. package/build/src/components/Common/Tooltip/index.js +115 -83
  106. package/build/src/components/Common/Tooltip/index.js.map +1 -1
  107. package/build/src/components/Common/Tooltip/styles.js +8 -8
  108. package/build/src/components/Common/Tooltip/styles.js.map +1 -1
  109. package/build/src/components/Common/WalletChainLogo/index.js +13 -6
  110. package/build/src/components/Common/WalletChainLogo/index.js.map +1 -1
  111. package/build/src/components/DaimoPayButton/index.js +170 -180
  112. package/build/src/components/DaimoPayButton/index.js.map +1 -1
  113. package/build/src/components/DaimoPayButton/styles.js +4 -4
  114. package/build/src/components/DaimoPayButton/styles.js.map +1 -1
  115. package/build/src/components/DaimoPayModal/ConnectUsing.js +50 -24
  116. package/build/src/components/DaimoPayModal/ConnectUsing.js.map +1 -1
  117. package/build/src/components/DaimoPayModal/ConnectWithInjector/index.js +303 -163
  118. package/build/src/components/DaimoPayModal/ConnectWithInjector/index.js.map +1 -1
  119. package/build/src/components/DaimoPayModal/ConnectWithInjector/styles.js +10 -12
  120. package/build/src/components/DaimoPayModal/ConnectWithInjector/styles.js.map +1 -1
  121. package/build/src/components/DaimoPayModal/ConnectWithQRCode.js +69 -39
  122. package/build/src/components/DaimoPayModal/ConnectWithQRCode.js.map +1 -1
  123. package/build/src/components/DaimoPayModal/index.js +409 -416
  124. package/build/src/components/DaimoPayModal/index.js.map +1 -1
  125. package/build/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js +15 -11
  126. package/build/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js.map +1 -1
  127. package/build/src/components/Pages/About/graphics.js +796 -130
  128. package/build/src/components/Pages/About/graphics.js.map +1 -1
  129. package/build/src/components/Pages/About/index.js +203 -110
  130. package/build/src/components/Pages/About/index.js.map +1 -1
  131. package/build/src/components/Pages/About/styles.js +11 -15
  132. package/build/src/components/Pages/About/styles.js.map +1 -1
  133. package/build/src/components/Pages/Confirmation/index.js +71 -48
  134. package/build/src/components/Pages/Confirmation/index.js.map +1 -1
  135. package/build/src/components/Pages/Connectors/index.js +50 -16
  136. package/build/src/components/Pages/Connectors/index.js.map +1 -1
  137. package/build/src/components/Pages/Connectors/styles.js +10 -10
  138. package/build/src/components/Pages/Connectors/styles.js.map +1 -1
  139. package/build/src/components/Pages/DownloadApp/index.js +23 -18
  140. package/build/src/components/Pages/DownloadApp/index.js.map +1 -1
  141. package/build/src/components/Pages/Error/index.js +27 -15
  142. package/build/src/components/Pages/Error/index.js.map +1 -1
  143. package/build/src/components/Pages/MobileConnectors/index.js +50 -44
  144. package/build/src/components/Pages/MobileConnectors/index.js.map +1 -1
  145. package/build/src/components/Pages/MobileConnectors/styles.js +9 -11
  146. package/build/src/components/Pages/MobileConnectors/styles.js.map +1 -1
  147. package/build/src/components/Pages/Onboarding/index.js +20 -4
  148. package/build/src/components/Pages/Onboarding/index.js.map +1 -1
  149. package/build/src/components/Pages/Onboarding/styles.js +13 -13
  150. package/build/src/components/Pages/Onboarding/styles.js.map +1 -1
  151. package/build/src/components/Pages/PayWithToken/index.js +133 -122
  152. package/build/src/components/Pages/PayWithToken/index.js.map +1 -1
  153. package/build/src/components/Pages/SelectAmount/index.js +12 -5
  154. package/build/src/components/Pages/SelectAmount/index.js.map +1 -1
  155. package/build/src/components/Pages/SelectDepositAddressAmount/index.js +56 -38
  156. package/build/src/components/Pages/SelectDepositAddressAmount/index.js.map +1 -1
  157. package/build/src/components/Pages/SelectDepositAddressChain/index.js +57 -40
  158. package/build/src/components/Pages/SelectDepositAddressChain/index.js.map +1 -1
  159. package/build/src/components/Pages/SelectExchange/index.js +29 -24
  160. package/build/src/components/Pages/SelectExchange/index.js.map +1 -1
  161. package/build/src/components/Pages/SelectExternalAmount/index.js +57 -41
  162. package/build/src/components/Pages/SelectExternalAmount/index.js.map +1 -1
  163. package/build/src/components/Pages/SelectMethod/index.js +201 -183
  164. package/build/src/components/Pages/SelectMethod/index.js.map +1 -1
  165. package/build/src/components/Pages/SelectToken/index.js +72 -46
  166. package/build/src/components/Pages/SelectToken/index.js.map +1 -1
  167. package/build/src/components/Pages/SelectWalletAmount/index.js +40 -32
  168. package/build/src/components/Pages/SelectWalletAmount/index.js.map +1 -1
  169. package/build/src/components/Pages/SelectWalletChain/index.js +40 -36
  170. package/build/src/components/Pages/SelectWalletChain/index.js.map +1 -1
  171. package/build/src/components/Pages/SelectZKP/index.js +29 -24
  172. package/build/src/components/Pages/SelectZKP/index.js.map +1 -1
  173. package/build/src/components/Pages/Solana/ConnectorSolana/index.js +60 -45
  174. package/build/src/components/Pages/Solana/ConnectorSolana/index.js.map +1 -1
  175. package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js +73 -61
  176. package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js.map +1 -1
  177. package/build/src/components/Pages/Solana/SelectSolanaAmount/index.js +12 -5
  178. package/build/src/components/Pages/Solana/SelectSolanaAmount/index.js.map +1 -1
  179. package/build/src/components/Pages/SwitchNetworks/index.js +29 -10
  180. package/build/src/components/Pages/SwitchNetworks/index.js.map +1 -1
  181. package/build/src/components/Pages/WaitingDepositAddress/index.js +332 -184
  182. package/build/src/components/Pages/WaitingDepositAddress/index.js.map +1 -1
  183. package/build/src/components/Pages/WaitingExternal/index.js +69 -46
  184. package/build/src/components/Pages/WaitingExternal/index.js.map +1 -1
  185. package/build/src/components/Pages/WaitingWallet/index.js +37 -16
  186. package/build/src/components/Pages/WaitingWallet/index.js.map +1 -1
  187. package/build/src/components/Spinners/CircleSpinner/index.js +96 -7
  188. package/build/src/components/Spinners/CircleSpinner/index.js.map +1 -1
  189. package/build/src/components/Spinners/CircleSpinner/styles.js +6 -7
  190. package/build/src/components/Spinners/CircleSpinner/styles.js.map +1 -1
  191. package/build/src/components/Spinners/ExternalPaymentSpinner/index.js +18 -9
  192. package/build/src/components/Spinners/ExternalPaymentSpinner/index.js.map +1 -1
  193. package/build/src/components/Spinners/SquircleSpinner/index.js +60 -7
  194. package/build/src/components/Spinners/SquircleSpinner/index.js.map +1 -1
  195. package/build/src/components/Spinners/SquircleSpinner/styles.js +4 -4
  196. package/build/src/components/Spinners/SquircleSpinner/styles.js.map +1 -1
  197. package/build/src/components/Spinners/TokenLogoSpinner/index.js +12 -1
  198. package/build/src/components/Spinners/TokenLogoSpinner/index.js.map +1 -1
  199. package/build/src/components/Spinners/TokenLogoSpinner/styles.js +1 -1
  200. package/build/src/components/Spinners/TokenLogoSpinner/styles.js.map +1 -1
  201. package/build/src/components/Spinners/WalletPaymentSpinner/index.js +27 -20
  202. package/build/src/components/Spinners/WalletPaymentSpinner/index.js.map +1 -1
  203. package/build/src/components/Spinners/styles.js +3 -4
  204. package/build/src/components/Spinners/styles.js.map +1 -1
  205. package/build/src/constants/defaultTheme.js +1 -1
  206. package/build/src/constants/defaultTheme.js.map +1 -1
  207. package/build/src/constants/routes.js +29 -30
  208. package/build/src/constants/routes.js.map +1 -1
  209. package/build/src/defaultConfig.js +49 -46
  210. package/build/src/defaultConfig.js.map +1 -1
  211. package/build/src/defaultConnectors.js +32 -19
  212. package/build/src/defaultConnectors.js.map +1 -1
  213. package/build/src/hooks/useChainIsSupported.js +3 -5
  214. package/build/src/hooks/useChainIsSupported.js.map +1 -1
  215. package/build/src/hooks/useChains.js +3 -4
  216. package/build/src/hooks/useChains.js.map +1 -1
  217. package/build/src/hooks/useConnect.js +51 -39
  218. package/build/src/hooks/useConnect.js.map +1 -1
  219. package/build/src/hooks/useConnectCallback.js +15 -12
  220. package/build/src/hooks/useConnectCallback.js.map +1 -1
  221. package/build/src/hooks/useConnectors.js +2 -2
  222. package/build/src/hooks/useConnectors.js.map +1 -1
  223. package/build/src/hooks/useDaimoPay.js +98 -82
  224. package/build/src/hooks/useDaimoPay.js.map +1 -1
  225. package/build/src/hooks/useDaimoPayStatus.js +4 -15
  226. package/build/src/hooks/useDaimoPayStatus.js.map +1 -1
  227. package/build/src/hooks/useDaimoPayUI.js +7 -7
  228. package/build/src/hooks/useDaimoPayUI.js.map +1 -1
  229. package/build/src/hooks/useDepositAddressOptions.js +29 -25
  230. package/build/src/hooks/useDepositAddressOptions.js.map +1 -1
  231. package/build/src/hooks/useEnsFallbackConfig.js +5 -5
  232. package/build/src/hooks/useEnsFallbackConfig.js.map +1 -1
  233. package/build/src/hooks/useExternalPaymentOptions.js +57 -52
  234. package/build/src/hooks/useExternalPaymentOptions.js.map +1 -1
  235. package/build/src/hooks/useFitText.js +120 -135
  236. package/build/src/hooks/useFitText.js.map +1 -1
  237. package/build/src/hooks/useFocusTrap.js +33 -37
  238. package/build/src/hooks/useFocusTrap.js.map +1 -1
  239. package/build/src/hooks/useIsMobile.js +3 -3
  240. package/build/src/hooks/useIsMobile.js.map +1 -1
  241. package/build/src/hooks/useIsMounted.js +3 -5
  242. package/build/src/hooks/useIsMounted.js.map +1 -1
  243. package/build/src/hooks/useLastConnector.js +15 -15
  244. package/build/src/hooks/useLastConnector.js.map +1 -1
  245. package/build/src/hooks/useLocales.js +44 -42
  246. package/build/src/hooks/useLocales.js.map +1 -1
  247. package/build/src/hooks/useLockBodyScroll.js +38 -44
  248. package/build/src/hooks/useLockBodyScroll.js.map +1 -1
  249. package/build/src/hooks/useOrderUsdLimits.js +17 -19
  250. package/build/src/hooks/useOrderUsdLimits.js.map +1 -1
  251. package/build/src/hooks/usePayContext.js +3 -5
  252. package/build/src/hooks/usePayContext.js.map +1 -1
  253. package/build/src/hooks/usePaymentState.js +351 -324
  254. package/build/src/hooks/usePaymentState.js.map +1 -1
  255. package/build/src/hooks/usePrevious.js +6 -7
  256. package/build/src/hooks/usePrevious.js.map +1 -1
  257. package/build/src/hooks/useSolanaPaymentOptions.js +33 -33
  258. package/build/src/hooks/useSolanaPaymentOptions.js.map +1 -1
  259. package/build/src/hooks/useTokenOptions.js +129 -112
  260. package/build/src/hooks/useTokenOptions.js.map +1 -1
  261. package/build/src/hooks/useUntronAvailability.js +26 -34
  262. package/build/src/hooks/useUntronAvailability.js.map +1 -1
  263. package/build/src/hooks/useWalletPaymentOptions.js +83 -78
  264. package/build/src/hooks/useWalletPaymentOptions.js.map +1 -1
  265. package/build/src/hooks/useWindowSize.js +16 -16
  266. package/build/src/hooks/useWindowSize.js.map +1 -1
  267. package/build/src/localizations/index.js +28 -31
  268. package/build/src/localizations/index.js.map +1 -1
  269. package/build/src/localizations/locales/ar-AE.js +88 -88
  270. package/build/src/localizations/locales/ar-AE.js.map +1 -1
  271. package/build/src/localizations/locales/ca-AD.js +88 -88
  272. package/build/src/localizations/locales/ca-AD.js.map +1 -1
  273. package/build/src/localizations/locales/ee-EE.js +96 -88
  274. package/build/src/localizations/locales/ee-EE.js.map +1 -1
  275. package/build/src/localizations/locales/en-US.js +134 -126
  276. package/build/src/localizations/locales/en-US.js.map +1 -1
  277. package/build/src/localizations/locales/es-ES.js +126 -126
  278. package/build/src/localizations/locales/es-ES.js.map +1 -1
  279. package/build/src/localizations/locales/fa-IR.js +88 -88
  280. package/build/src/localizations/locales/fa-IR.js.map +1 -1
  281. package/build/src/localizations/locales/fr-FR.js +88 -88
  282. package/build/src/localizations/locales/fr-FR.js.map +1 -1
  283. package/build/src/localizations/locales/ja-JP.js +88 -88
  284. package/build/src/localizations/locales/ja-JP.js.map +1 -1
  285. package/build/src/localizations/locales/pt-BR.js +96 -88
  286. package/build/src/localizations/locales/pt-BR.js.map +1 -1
  287. package/build/src/localizations/locales/ru-RU.js +92 -88
  288. package/build/src/localizations/locales/ru-RU.js.map +1 -1
  289. package/build/src/localizations/locales/tr-TR.js +96 -88
  290. package/build/src/localizations/locales/tr-TR.js.map +1 -1
  291. package/build/src/localizations/locales/vi-VN.js +96 -88
  292. package/build/src/localizations/locales/vi-VN.js.map +1 -1
  293. package/build/src/localizations/locales/zh-CN.js +88 -88
  294. package/build/src/localizations/locales/zh-CN.js.map +1 -1
  295. package/build/src/payment/paymentEffects.js +237 -265
  296. package/build/src/payment/paymentEffects.js.map +1 -1
  297. package/build/src/payment/paymentFsm.js +165 -186
  298. package/build/src/payment/paymentFsm.js.map +1 -1
  299. package/build/src/payment/paymentStore.js +8 -10
  300. package/build/src/payment/paymentStore.js.map +1 -1
  301. package/build/src/payment/paymentUtils.js +5 -9
  302. package/build/src/payment/paymentUtils.js.map +1 -1
  303. package/build/src/provider/DaimoPayProvider.js +258 -249
  304. package/build/src/provider/DaimoPayProvider.js.map +1 -1
  305. package/build/src/provider/PayContext.js +0 -1
  306. package/build/src/provider/PayContext.js.map +1 -1
  307. package/build/src/provider/PaymentProvider.js +18 -17
  308. package/build/src/provider/PaymentProvider.js.map +1 -1
  309. package/build/src/provider/SolanaContextProvider.js +6 -3
  310. package/build/src/provider/SolanaContextProvider.js.map +1 -1
  311. package/build/src/provider/Web3ContextProvider.js +23 -23
  312. package/build/src/provider/Web3ContextProvider.js.map +1 -1
  313. package/build/src/stateStore.js +28 -74
  314. package/build/src/stateStore.js.map +1 -1
  315. package/build/src/styles/defaultTheme.js +64 -73
  316. package/build/src/styles/defaultTheme.js.map +1 -1
  317. package/build/src/styles/index.js +202 -217
  318. package/build/src/styles/index.js.map +1 -1
  319. package/build/src/styles/styled/index.js +0 -10
  320. package/build/src/styles/styled/index.js.map +1 -1
  321. package/build/src/styles/themes/base.js +136 -136
  322. package/build/src/styles/themes/base.js.map +1 -1
  323. package/build/src/styles/themes/index.js.map +1 -1
  324. package/build/src/styles/themes/midnight.js +71 -71
  325. package/build/src/styles/themes/midnight.js.map +1 -1
  326. package/build/src/styles/themes/minimal.js +75 -75
  327. package/build/src/styles/themes/minimal.js.map +1 -1
  328. package/build/src/styles/themes/nouns.js +76 -76
  329. package/build/src/styles/themes/nouns.js.map +1 -1
  330. package/build/src/styles/themes/retro.js +88 -88
  331. package/build/src/styles/themes/retro.js.map +1 -1
  332. package/build/src/styles/themes/rounded.js +84 -84
  333. package/build/src/styles/themes/rounded.js.map +1 -1
  334. package/build/src/styles/themes/soft.js +66 -66
  335. package/build/src/styles/themes/soft.js.map +1 -1
  336. package/build/src/styles/themes/web95.js +95 -95
  337. package/build/src/styles/themes/web95.js.map +1 -1
  338. package/build/src/utils/exports.js +0 -1
  339. package/build/src/utils/exports.js.map +1 -1
  340. package/build/src/utils/format.js +25 -63
  341. package/build/src/utils/format.js.map +1 -1
  342. package/build/src/utils/index.js +23 -20
  343. package/build/src/utils/index.js.map +1 -1
  344. package/build/src/utils/p3.js +8 -9
  345. package/build/src/utils/p3.js.map +1 -1
  346. package/build/src/utils/platform.js +6 -8
  347. package/build/src/utils/platform.js.map +1 -1
  348. package/build/src/utils/polling.js +31 -31
  349. package/build/src/utils/polling.js.map +1 -1
  350. package/build/src/utils/supportUrl.js +9 -9
  351. package/build/src/utils/supportUrl.js.map +1 -1
  352. package/build/src/utils/trpc.js +11 -11
  353. package/build/src/utils/trpc.js.map +1 -1
  354. package/build/src/utils/validateInput.js +9 -29
  355. package/build/src/utils/validateInput.js.map +1 -1
  356. package/build/src/wallets/index.js +13 -22
  357. package/build/src/wallets/index.js.map +1 -1
  358. package/build/src/wallets/useWallets.js +183 -181
  359. package/build/src/wallets/useWallets.js.map +1 -1
  360. package/build/src/wallets/walletConfigs.js +230 -235
  361. package/build/src/wallets/walletConfigs.js.map +1 -1
  362. package/build/src/world-mini-app/WorldPayButton.js +113 -118
  363. package/build/src/world-mini-app/WorldPayButton.js.map +1 -1
  364. package/build/src/world-mini-app/promptWorldPayment.js +49 -47
  365. package/build/src/world-mini-app/promptWorldPayment.js.map +1 -1
  366. package/build/types-7ed033b6.d.ts +66 -0
  367. package/build/world.d.ts +89 -1
  368. package/package.json +6 -4
@@ -5,23 +5,24 @@ import { createPaymentStore } from '../payment/paymentStore.js';
5
5
  import { createTrpcClient } from '../utils/trpc.js';
6
6
 
7
7
  const PaymentContext = createContext(null);
8
- function PaymentProvider({ children, payApiUrl, log = console.log, }) {
9
- // Generate unique sessionId for tracking in the backend
10
- const [sessionId] = useState(() => crypto.randomUUID().replaceAll("-", ""));
11
- const trpc = useMemo(() => {
12
- return createTrpcClient(payApiUrl, sessionId);
13
- }, [payApiUrl, sessionId]);
14
- const store = useMemo(() => {
15
- return createPaymentStore();
16
- }, []);
17
- // Attach subscriber to run side effects in response to events. Use a
18
- // layout effect that runs before the first render.
19
- useLayoutEffect(() => {
20
- const unsubscribe = attachPaymentEffectHandlers(store, trpc, log);
21
- log("[EFFECT] subscribed to payment effects");
22
- return unsubscribe;
23
- }, [store, trpc, log]);
24
- return (jsx(PaymentContext.Provider, { value: store, children: children }));
8
+ function PaymentProvider({
9
+ children,
10
+ payApiUrl,
11
+ log = console.log
12
+ }) {
13
+ const [sessionId] = useState(() => crypto.randomUUID().replaceAll("-", ""));
14
+ const trpc = useMemo(() => {
15
+ return createTrpcClient(payApiUrl, sessionId);
16
+ }, [payApiUrl, sessionId]);
17
+ const store = useMemo(() => {
18
+ return createPaymentStore();
19
+ }, []);
20
+ useLayoutEffect(() => {
21
+ const unsubscribe = attachPaymentEffectHandlers(store, trpc, log);
22
+ log("[EFFECT] subscribed to payment effects");
23
+ return unsubscribe;
24
+ }, [store, trpc, log]);
25
+ return /* @__PURE__ */ jsx(PaymentContext.Provider, { value: store, children });
25
26
  }
26
27
 
27
28
  export { PaymentContext, PaymentProvider };
@@ -1 +1 @@
1
- {"version":3,"file":"PaymentProvider.js","sources":["../../../src/provider/PaymentProvider.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;;;;MAKa,cAAc,GAAG,aAAa,CAAsB,IAAI,EAAE;AAQvD,SAAA,eAAe,CAAC,EAC9B,QAAQ,EACR,SAAS,EACT,GAAG,GAAG,OAAO,CAAC,GAAG,GACI,EAAA;;IAErB,MAAM,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5E,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,MAAK;AACxB,QAAA,OAAO,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAChD,KAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAE3B,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,MAAK;QACzB,OAAO,kBAAkB,EAAE,CAAC;KAC7B,EAAE,EAAE,CAAC,CAAC;;;IAIP,eAAe,CAAC,MAAK;QACnB,MAAM,WAAW,GAAG,2BAA2B,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAClE,GAAG,CAAC,wCAAwC,CAAC,CAAC;AAC9C,QAAA,OAAO,WAAW,CAAC;KACpB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AAEvB,IAAA,QACEA,GAAA,CAAC,cAAc,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,KAAK,EAAA,QAAA,EAAG,QAAQ,EAAA,CAA2B,EAC3E;AACJ;;;;"}
1
+ {"version":3,"file":"PaymentProvider.js","sources":["../../../src/provider/PaymentProvider.tsx"],"sourcesContent":["import { createContext, useLayoutEffect, useMemo, useState } from \"react\";\nimport { attachPaymentEffectHandlers } from \"../payment/paymentEffects\";\nimport { createPaymentStore, PaymentStore } from \"../payment/paymentStore\";\nimport { createTrpcClient } from \"../utils/trpc\";\n\nexport const PaymentContext = createContext<PaymentStore | null>(null);\n\ntype PaymentProviderProps = {\n children: React.ReactNode;\n payApiUrl: string;\n log?: (msg: string) => void;\n};\n\nexport function PaymentProvider({\n children,\n payApiUrl,\n log = console.log,\n}: PaymentProviderProps) {\n // Generate unique sessionId for tracking in the backend\n const [sessionId] = useState(() => crypto.randomUUID().replaceAll(\"-\", \"\"));\n const trpc = useMemo(() => {\n return createTrpcClient(payApiUrl, sessionId);\n }, [payApiUrl, sessionId]);\n\n const store = useMemo(() => {\n return createPaymentStore();\n }, []);\n\n // Attach subscriber to run side effects in response to events. Use a\n // layout effect that runs before the first render.\n useLayoutEffect(() => {\n const unsubscribe = attachPaymentEffectHandlers(store, trpc, log);\n log(\"[EFFECT] subscribed to payment effects\");\n return unsubscribe;\n }, [store, trpc, log]);\n\n return (\n <PaymentContext.Provider value={store}>{children}</PaymentContext.Provider>\n );\n}\n"],"names":[],"mappings":";;;;;;AAKa,MAAA,cAAA,GAAiB,cAAmC,IAAI,EAAA;AAQ9D,SAAS,eAAgB,CAAA;AAAA,EAC9B,QAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAM,OAAQ,CAAA,GAAA;AAChB,CAAyB,EAAA;AAEvB,EAAM,MAAA,CAAC,SAAS,CAAA,GAAI,QAAS,CAAA,MAAM,MAAO,CAAA,UAAA,EAAa,CAAA,UAAA,CAAW,GAAK,EAAA,EAAE,CAAC,CAAA,CAAA;AAC1E,EAAM,MAAA,IAAA,GAAO,QAAQ,MAAM;AACzB,IAAO,OAAA,gBAAA,CAAiB,WAAW,SAAS,CAAA,CAAA;AAAA,GAC3C,EAAA,CAAC,SAAW,EAAA,SAAS,CAAC,CAAA,CAAA;AAEzB,EAAM,MAAA,KAAA,GAAQ,QAAQ,MAAM;AAC1B,IAAA,OAAO,kBAAmB,EAAA,CAAA;AAAA,GAC5B,EAAG,EAAE,CAAA,CAAA;AAIL,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,MAAM,WAAc,GAAA,2BAAA,CAA4B,KAAO,EAAA,IAAA,EAAM,GAAG,CAAA,CAAA;AAChE,IAAA,GAAA,CAAI,wCAAwC,CAAA,CAAA;AAC5C,IAAO,OAAA,WAAA,CAAA;AAAA,GACN,EAAA,CAAC,KAAO,EAAA,IAAA,EAAM,GAAG,CAAC,CAAA,CAAA;AAErB,EAAA,2BACG,cAAe,CAAA,QAAA,EAAf,EAAwB,KAAA,EAAO,OAAQ,QAAS,EAAA,CAAA,CAAA;AAErD;;;;"}
@@ -2,9 +2,12 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import { ConnectionProvider, WalletProvider } from '@solana/wallet-adapter-react';
3
3
 
4
4
  const DEFAULT_SOLANA_RPC_URL = "https://nameless-thrilling-spring.solana-mainnet.quiknode.pro/71d5c9acbf54c7cf00584cf6fab7fc37e844415f/";
5
- const SolanaContextProvider = ({ children, solanaRpcUrl, }) => {
6
- const endpoint = solanaRpcUrl ?? DEFAULT_SOLANA_RPC_URL;
7
- return (jsx(ConnectionProvider, { endpoint: endpoint, children: jsx(WalletProvider, { wallets: [], autoConnect: true, children: children }) }));
5
+ const SolanaContextProvider = ({
6
+ children,
7
+ solanaRpcUrl
8
+ }) => {
9
+ const endpoint = solanaRpcUrl ?? DEFAULT_SOLANA_RPC_URL;
10
+ return /* @__PURE__ */ jsx(ConnectionProvider, { endpoint, children: /* @__PURE__ */ jsx(WalletProvider, { wallets: [], autoConnect: true, children }) });
8
11
  };
9
12
 
10
13
  export { SolanaContextProvider };
@@ -1 +1 @@
1
- {"version":3,"file":"SolanaContextProvider.js","sources":["../../../src/provider/SolanaContextProvider.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;AAQA,MAAM,sBAAsB,GAC1B,yGAAyG,CAAC;AAE/F,MAAA,qBAAqB,GAAG,CAAC,EACpC,QAAQ,EACR,YAAY,GAIb,KAAI;AACH,IAAA,MAAM,QAAQ,GAAG,YAAY,IAAI,sBAAsB,CAAC;IAExD,QACEA,IAAC,kBAAkB,EAAA,EAAC,QAAQ,EAAE,QAAQ,YACpCA,GAAC,CAAA,cAAc,IAAC,OAAO,EAAE,EAAE,EAAE,WAAW,kBACrC,QAAQ,EAAA,CACM,EACE,CAAA,EACrB;AACJ;;;;"}
1
+ {"version":3,"file":"SolanaContextProvider.js","sources":["../../../src/provider/SolanaContextProvider.tsx"],"sourcesContent":["import { WalletName } from \"@solana/wallet-adapter-base\";\nimport {\n ConnectionProvider,\n WalletProvider,\n} from \"@solana/wallet-adapter-react\";\n\nexport type SolanaWalletName = WalletName<string>;\n\nconst DEFAULT_SOLANA_RPC_URL =\n \"https://nameless-thrilling-spring.solana-mainnet.quiknode.pro/71d5c9acbf54c7cf00584cf6fab7fc37e844415f/\";\n\nexport const SolanaContextProvider = ({\n children,\n solanaRpcUrl,\n}: {\n children: React.ReactNode;\n solanaRpcUrl?: string;\n}) => {\n const endpoint = solanaRpcUrl ?? DEFAULT_SOLANA_RPC_URL;\n\n return (\n <ConnectionProvider endpoint={endpoint}>\n <WalletProvider wallets={[]} autoConnect>\n {children}\n </WalletProvider>\n </ConnectionProvider>\n );\n};\n"],"names":[],"mappings":";;;AAQA,MAAM,sBACJ,GAAA,yGAAA,CAAA;AAEK,MAAM,wBAAwB,CAAC;AAAA,EACpC,QAAA;AAAA,EACA,YAAA;AACF,CAGM,KAAA;AACJ,EAAA,MAAM,WAAW,YAAgB,IAAA,sBAAA,CAAA;AAEjC,EACE,uBAAA,GAAA,CAAC,kBAAmB,EAAA,EAAA,QAAA,EAClB,QAAC,kBAAA,GAAA,CAAA,cAAA,EAAA,EAAe,OAAS,EAAA,EAAI,EAAA,WAAA,EAAW,IACrC,EAAA,QAAA,EACH,CACF,EAAA,CAAA,CAAA;AAEJ;;;;"}
@@ -5,31 +5,31 @@ import { useChainIsSupported } from '../hooks/useChainIsSupported.js';
5
5
  import { useChains } from '../hooks/useChains.js';
6
6
 
7
7
  const Web3Context = React.createContext({
8
- connect: {
9
- getUri: () => "",
10
- },
8
+ connect: {
9
+ getUri: () => ""
10
+ },
11
+ dapp: {
12
+ chains: []
13
+ },
14
+ account: void 0
15
+ });
16
+ const Web3ContextProvider = ({
17
+ children
18
+ }) => {
19
+ const { address: currentAddress, chain } = useAccount();
20
+ const chainIsSupported = useChainIsSupported(chain?.id);
21
+ const chains = useChains();
22
+ const value = {
11
23
  dapp: {
12
- chains: [],
24
+ chains
13
25
  },
14
- account: undefined,
15
- });
16
- const Web3ContextProvider = ({ children, }) => {
17
- const { address: currentAddress, chain } = useAccount();
18
- const chainIsSupported = useChainIsSupported(chain?.id);
19
- const chains = useChains();
20
- const value = {
21
- dapp: {
22
- chains,
23
- },
24
- account: currentAddress
25
- ? {
26
- chain,
27
- chainIsSupported,
28
- address: currentAddress,
29
- }
30
- : undefined,
31
- };
32
- return jsx(Web3Context.Provider, { value: value, children: children });
26
+ account: currentAddress ? {
27
+ chain,
28
+ chainIsSupported,
29
+ address: currentAddress
30
+ } : void 0
31
+ };
32
+ return /* @__PURE__ */ jsx(Web3Context.Provider, { value, children });
33
33
  };
34
34
 
35
35
  export { Web3ContextProvider };
@@ -1 +1 @@
1
- {"version":3,"file":"Web3ContextProvider.js","sources":["../../../src/provider/Web3ContextProvider.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;;;;AA0BA,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC;AACtC,IAAA,OAAO,EAAE;AACP,QAAA,MAAM,EAAE,MAAM,EAAE;AACjB,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,MAAM,EAAE,EAAE;AACX,KAAA;AACD,IAAA,OAAO,EAAE,SAAS;AACJ,CAAA,CAAC,CAAC;MAEL,mBAAmB,GAAG,CAAC,EAClC,QAAQ,GAGT,KAAI;IACH,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE,CAAC;IACxD,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACxD,IAAA,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AAE3B,IAAA,MAAM,KAAK,GAAG;AACZ,QAAA,IAAI,EAAE;YACJ,MAAM;AACP,SAAA;AACD,QAAA,OAAO,EAAE,cAAc;AACrB,cAAE;gBACE,KAAK;gBACL,gBAAgB;AAChB,gBAAA,OAAO,EAAE,cAAc;AACxB,aAAA;AACH,cAAE,SAAS;KACC,CAAC;IAEjB,OAAOA,GAAA,CAAC,WAAW,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,KAAK,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAwB,CAAC;AAC/E;;;;"}
1
+ {"version":3,"file":"Web3ContextProvider.js","sources":["../../../src/provider/Web3ContextProvider.tsx"],"sourcesContent":["/**\n * This provider is responsible for handling reusable web3 logic across the app.\n */\n\nimport React from \"react\";\n\nimport { Address, Chain } from \"viem\";\nimport { useAccount } from \"wagmi\";\n\nimport { useChainIsSupported } from \"../hooks/useChainIsSupported\";\nimport { useChains } from \"../hooks/useChains\";\n\ntype Web3Context = {\n connect: {\n getUri: (id?: string) => string;\n };\n dapp: {\n chains: Chain[];\n };\n account?: {\n chain: Chain;\n chainIsSupported: boolean;\n address: Address;\n };\n};\n\nconst Web3Context = React.createContext({\n connect: {\n getUri: () => \"\",\n },\n dapp: {\n chains: [],\n },\n account: undefined,\n} as Web3Context);\n\nexport const Web3ContextProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const { address: currentAddress, chain } = useAccount();\n const chainIsSupported = useChainIsSupported(chain?.id);\n const chains = useChains();\n\n const value = {\n dapp: {\n chains,\n },\n account: currentAddress\n ? {\n chain,\n chainIsSupported,\n address: currentAddress,\n }\n : undefined,\n } as Web3Context;\n\n return <Web3Context.Provider value={value}>{children}</Web3Context.Provider>;\n};\n\nexport const useWeb3 = () => React.useContext(Web3Context);\n"],"names":[],"mappings":";;;;;;AA0BA,MAAM,WAAA,GAAc,MAAM,aAAc,CAAA;AAAA,EACtC,OAAS,EAAA;AAAA,IACP,QAAQ,MAAM,EAAA;AAAA,GAChB;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,QAAQ,EAAC;AAAA,GACX;AAAA,EACA,OAAS,EAAA,KAAA,CAAA;AACX,CAAgB,CAAA,CAAA;AAET,MAAM,sBAAsB,CAAC;AAAA,EAClC,QAAA;AACF,CAEM,KAAA;AACJ,EAAA,MAAM,EAAE,OAAA,EAAS,cAAgB,EAAA,KAAA,KAAU,UAAW,EAAA,CAAA;AACtD,EAAM,MAAA,gBAAA,GAAmB,mBAAoB,CAAA,KAAA,EAAO,EAAE,CAAA,CAAA;AACtD,EAAA,MAAM,SAAS,SAAU,EAAA,CAAA;AAEzB,EAAA,MAAM,KAAQ,GAAA;AAAA,IACZ,IAAM,EAAA;AAAA,MACJ,MAAA;AAAA,KACF;AAAA,IACA,SAAS,cACL,GAAA;AAAA,MACE,KAAA;AAAA,MACA,gBAAA;AAAA,MACA,OAAS,EAAA,cAAA;AAAA,KAEX,GAAA,KAAA,CAAA;AAAA,GACN,CAAA;AAEA,EAAA,uBAAQ,GAAA,CAAA,WAAA,CAAY,QAAZ,EAAA,EAAqB,OAAe,QAAS,EAAA,CAAA,CAAA;AACvD;;;;"}
@@ -1,81 +1,35 @@
1
- /**
2
- * Creates a store that manages state and dispatches events to a list of
3
- * subscribers.
4
- *
5
- * @param reducer The reducer function that takes the current state and an event
6
- * and deterministically returns a new state.
7
- * @param init The initial state of the store.
8
- * @returns An object with three methods:
9
- * - getState: Returns the current state of the store.
10
- * - dispatch: Transition to a new state by applying the reducer function to
11
- * the current state and the event.
12
- * - subscribe: Takes a function as an argument and adds it to the list of
13
- * subscribers. When the state changes, all subscribers will be called. The
14
- * function returns a function that can be used to unsubscribe from the store.
15
- */
16
1
  function createStore(reducer, init) {
17
- let state = init;
18
- const listeners = new Set();
19
- return {
20
- getState: () => state,
21
- dispatch: (e) => {
22
- const prev = state;
23
- state = reducer(state, e);
24
- listeners.forEach((l) => l({ prev, next: state, event: e }));
25
- },
26
- subscribe: (l) => {
27
- listeners.add(l);
28
- // Return an unsubscribe function.
29
- return () => listeners.delete(l);
30
- },
31
- };
2
+ let state = init;
3
+ const listeners = /* @__PURE__ */ new Set();
4
+ return {
5
+ getState: () => state,
6
+ dispatch: (e) => {
7
+ const prev = state;
8
+ state = reducer(state, e);
9
+ listeners.forEach((l) => l({ prev, next: state, event: e }));
10
+ },
11
+ subscribe: (l) => {
12
+ listeners.add(l);
13
+ return () => listeners.delete(l);
14
+ }
15
+ };
32
16
  }
33
- /**
34
- * Wait until the store enters any state that satisfies the given predicate(s),
35
- * or reject on error.
36
- *
37
- * @returns
38
- * `Promise<T>` resolving with the first state where `predicate` is true,
39
- * or rejecting if `isError` ever returns true.
40
- *
41
- * @example After hydrating an order, wait for the payment FSM to transition to
42
- * the new state before returning the updated order.
43
- *
44
- * // 1. Kick off the preview transition
45
- * store.dispatch({ type: "hydrate_order" });
46
- *
47
- * // 2. Pause until the order is successfully hydrated or errors
48
- * const newState = await waitForState(
49
- * store,
50
- * (s): s is NewState => s.type === "payment_unpaid",
51
- * s => s.type === "error",
52
- * s => (s as ErrorState).message
53
- * );
54
- *
55
- * // 3. Now newState.order is updated with the hydrated order
56
- * return newState.order;
57
- * ```
58
- */
59
17
  function waitForState(store, predicates, isError, getErrorMessage) {
60
- // Normalise to an array and build a helper that succeeds if *any* guard passes
61
- const guards = typeof predicates === "function" ? [predicates] : predicates;
62
- const matches = (s) => guards.some((g) => g(s));
63
- return new Promise((resolve, reject) => {
64
- // Fast path – we might already be in a valid state
65
- const first = store.getState();
66
- if (matches(first))
67
- return resolve(first);
68
- const unsubscribe = store.subscribe(({ next }) => {
69
- if (matches(next)) {
70
- unsubscribe();
71
- resolve(next);
72
- }
73
- else if (isError?.(next)) {
74
- unsubscribe();
75
- reject(new Error(getErrorMessage?.(next) ?? "error"));
76
- }
77
- });
18
+ const guards = typeof predicates === "function" ? [predicates] : predicates;
19
+ const matches = (s) => guards.some((g) => g(s));
20
+ return new Promise((resolve, reject) => {
21
+ const first = store.getState();
22
+ if (matches(first)) return resolve(first);
23
+ const unsubscribe = store.subscribe(({ next }) => {
24
+ if (matches(next)) {
25
+ unsubscribe();
26
+ resolve(next);
27
+ } else if (isError?.(next)) {
28
+ unsubscribe();
29
+ reject(new Error(getErrorMessage?.(next) ?? "error"));
30
+ }
78
31
  });
32
+ });
79
33
  }
80
34
 
81
35
  export { createStore, waitForState };
@@ -1 +1 @@
1
- {"version":3,"file":"stateStore.js","sources":["../../src/stateStore.ts"],"sourcesContent":[null],"names":[],"mappings":"AA4BA;;;;;;;;;;;;;;AAcG;AACa,SAAA,WAAW,CACzB,OAA0B,EAC1B,IAAO,EAAA;IAEP,IAAI,KAAK,GAAG,IAAI,CAAC;AACjB,IAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE5C,OAAO;AACL,QAAA,QAAQ,EAAE,MAAM,KAAK;AACrB,QAAA,QAAQ,EAAE,CAAC,CAAC,KAAI;YACd,MAAM,IAAI,GAAG,KAAK,CAAC;AACnB,YAAA,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC1B,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SAC9D;AACD,QAAA,SAAS,EAAE,CAAC,CAAC,KAAI;AACf,YAAA,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;YAEjB,OAAO,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAClC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AACG,SAAU,YAAY,CAC1B,KAAkB,EAClB,UAAgE,EAChE,OAA2B,EAC3B,eAAkC,EAAA;;AAGlC,IAAA,MAAM,MAAM,GAAG,OAAO,UAAU,KAAK,UAAU,GAAG,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;IAE5E,MAAM,OAAO,GAAG,CAAC,CAAI,KAAa,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;;AAErC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;QAE1C,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,KAAI;AAC/C,YAAA,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;AACjB,gBAAA,WAAW,EAAE,CAAC;gBACd,OAAO,CAAC,IAAI,CAAC,CAAC;aACf;AAAM,iBAAA,IAAI,OAAO,GAAG,IAAI,CAAC,EAAE;AAC1B,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,MAAM,CAAC,IAAI,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC;aACvD;AACH,SAAC,CAAC,CAAC;AACL,KAAC,CAAC,CAAC;AACL;;;;"}
1
+ {"version":3,"file":"stateStore.js","sources":["../../src/stateStore.ts"],"sourcesContent":["/**\n * A store that manages state and dispatches events to a list of subscribers.\n * - getState: Returns the current state of the store.\n * - dispatch: Transition to a new state by applying the reducer function to\n * the current state and the event.\n * - subscribe: Takes a function as an argument and adds it to the list of\n * subscribers. When the state changes, all subscribers will be called. The\n * function returns a function that can be used to unsubscribe from the store.\n *\n * @template S The type of the state.\n * @template E The type of the events.\n */\nexport interface Store<S, E> {\n getState: () => S;\n dispatch: (e: E) => void;\n subscribe: (l: listener<S, E>) => () => void;\n}\n\ntype listener<S, E> = ({\n prev,\n next,\n event,\n}: {\n prev: S;\n next: S;\n event: E;\n}) => void;\n\n/**\n * Creates a store that manages state and dispatches events to a list of\n * subscribers.\n *\n * @param reducer The reducer function that takes the current state and an event\n * and deterministically returns a new state.\n * @param init The initial state of the store.\n * @returns An object with three methods:\n * - getState: Returns the current state of the store.\n * - dispatch: Transition to a new state by applying the reducer function to\n * the current state and the event.\n * - subscribe: Takes a function as an argument and adds it to the list of\n * subscribers. When the state changes, all subscribers will be called. The\n * function returns a function that can be used to unsubscribe from the store.\n */\nexport function createStore<S, E>(\n reducer: (s: S, e: E) => S,\n init: S,\n): Store<S, E> {\n let state = init;\n const listeners = new Set<listener<S, E>>();\n\n return {\n getState: () => state,\n dispatch: (e) => {\n const prev = state;\n state = reducer(state, e);\n listeners.forEach((l) => l({ prev, next: state, event: e }));\n },\n subscribe: (l) => {\n listeners.add(l);\n // Return an unsubscribe function.\n return () => listeners.delete(l);\n },\n };\n}\n\n/**\n * Wait until the store enters any state that satisfies the given predicate(s),\n * or reject on error.\n * \n * @returns\n * `Promise<T>` resolving with the first state where `predicate` is true,\n * or rejecting if `isError` ever returns true.\n *\n * @example After hydrating an order, wait for the payment FSM to transition to\n * the new state before returning the updated order.\n * \n * // 1. Kick off the preview transition\n * store.dispatch({ type: \"hydrate_order\" });\n *\n * // 2. Pause until the order is successfully hydrated or errors\n * const newState = await waitForState(\n * store,\n * (s): s is NewState => s.type === \"payment_unpaid\",\n * s => s.type === \"error\",\n * s => (s as ErrorState).message\n * );\n *\n * // 3. Now newState.order is updated with the hydrated order\n * return newState.order;\n * ```\n */\nexport function waitForState<S, E, T extends S>(\n store: Store<S, E>,\n predicates: ((s: S) => s is T) | ReadonlyArray<(s: S) => s is T>,\n isError?: (s: S) => boolean,\n getErrorMessage?: (s: S) => string,\n): Promise<T> {\n // Normalise to an array and build a helper that succeeds if *any* guard passes\n const guards = typeof predicates === \"function\" ? [predicates] : predicates;\n\n const matches = (s: S): s is T => guards.some((g) => g(s));\n\n return new Promise((resolve, reject) => {\n // Fast path – we might already be in a valid state\n const first = store.getState();\n if (matches(first)) return resolve(first);\n\n const unsubscribe = store.subscribe(({ next }) => {\n if (matches(next)) {\n unsubscribe();\n resolve(next);\n } else if (isError?.(next)) {\n unsubscribe();\n reject(new Error(getErrorMessage?.(next) ?? \"error\"));\n }\n });\n });\n}\n"],"names":[],"mappings":"AA2CgB,SAAA,WAAA,CACd,SACA,IACa,EAAA;AACb,EAAA,IAAI,KAAQ,GAAA,IAAA,CAAA;AACZ,EAAM,MAAA,SAAA,uBAAgB,GAAoB,EAAA,CAAA;AAE1C,EAAO,OAAA;AAAA,IACL,UAAU,MAAM,KAAA;AAAA,IAChB,QAAA,EAAU,CAAC,CAAM,KAAA;AACf,MAAA,MAAM,IAAO,GAAA,KAAA,CAAA;AACb,MAAQ,KAAA,GAAA,OAAA,CAAQ,OAAO,CAAC,CAAA,CAAA;AACxB,MAAU,SAAA,CAAA,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAE,CAAA,EAAE,IAAM,EAAA,IAAA,EAAM,KAAO,EAAA,KAAA,EAAO,CAAE,EAAC,CAAC,CAAA,CAAA;AAAA,KAC7D;AAAA,IACA,SAAA,EAAW,CAAC,CAAM,KAAA;AAChB,MAAA,SAAA,CAAU,IAAI,CAAC,CAAA,CAAA;AAEf,MAAO,OAAA,MAAM,SAAU,CAAA,MAAA,CAAO,CAAC,CAAA,CAAA;AAAA,KACjC;AAAA,GACF,CAAA;AACF,CAAA;AA4BO,SAAS,YACd,CAAA,KAAA,EACA,UACA,EAAA,OAAA,EACA,eACY,EAAA;AAEZ,EAAA,MAAM,SAAS,OAAO,UAAA,KAAe,UAAa,GAAA,CAAC,UAAU,CAAI,GAAA,UAAA,CAAA;AAEjE,EAAM,MAAA,OAAA,GAAU,CAAC,CAAiB,KAAA,MAAA,CAAO,KAAK,CAAC,CAAA,KAAM,CAAE,CAAA,CAAC,CAAC,CAAA,CAAA;AAEzD,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AAEtC,IAAM,MAAA,KAAA,GAAQ,MAAM,QAAS,EAAA,CAAA;AAC7B,IAAA,IAAI,OAAQ,CAAA,KAAK,CAAG,EAAA,OAAO,QAAQ,KAAK,CAAA,CAAA;AAExC,IAAA,MAAM,cAAc,KAAM,CAAA,SAAA,CAAU,CAAC,EAAE,MAAW,KAAA;AAChD,MAAI,IAAA,OAAA,CAAQ,IAAI,CAAG,EAAA;AACjB,QAAY,WAAA,EAAA,CAAA;AACZ,QAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AAAA,OACd,MAAA,IAAW,OAAU,GAAA,IAAI,CAAG,EAAA;AAC1B,QAAY,WAAA,EAAA,CAAA;AACZ,QAAA,MAAA,CAAO,IAAI,KAAM,CAAA,eAAA,GAAkB,IAAI,CAAA,IAAK,OAAO,CAAC,CAAA,CAAA;AAAA,OACtD;AAAA,KACD,CAAA,CAAA;AAAA,GACF,CAAA,CAAA;AACH;;;;"}
@@ -1,88 +1,79 @@
1
1
  const defaultLightTheme = {
2
- font: {
3
- family: `-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, 'Apple Color Emoji', Arial, sans-serif, 'Segoe UI Emoji'`,
2
+ font: {
3
+ family: `-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, 'Apple Color Emoji', Arial, sans-serif, 'Segoe UI Emoji'`
4
+ },
5
+ text: {
6
+ primary: {
7
+ color: "#373737"
4
8
  },
5
- text: {
6
- primary: {
7
- color: "#373737",
8
- },
9
- secondary: {
10
- color: "#999999",
11
- hover: {
12
- color: "#111111",
13
- },
14
- },
15
- error: "#FC6464",
16
- valid: "#32D74B",
9
+ secondary: {
10
+ color: "#999999",
11
+ hover: {
12
+ color: "#111111"
13
+ }
17
14
  },
18
- buttons: {
19
- primary: {
20
- borderRadius: 16,
21
- color: "#000373737000",
22
- background: "#FFFFFF",
23
- border: "#F0F0F0",
24
- hover: {
25
- color: "#000000",
26
- border: "#1A88F8",
27
- },
28
- },
29
- secondary: {
30
- borderRadius: 16,
31
- background: "#F6F7F9",
32
- color: "#000000",
33
- },
34
- },
35
- navigation: {
36
- color: "#999999",
37
- },
38
- modal: {
39
- background: "#ffffff", // need to generate an rgba transparent version of this for Safari
40
- divider: "#f7f6f8",
41
- },
42
- tooltips: {
43
- color: "#999999",
44
- background: "#ffffff",
45
- hover: {
46
- background: "#f6f7f9",
47
- },
48
- },
49
- overlay: {
50
- background: "rgba(0, 0, 0, 0.06)",
51
- },
52
- qrCode: {
53
- accentColor: "#F7F6F8",
15
+ error: "#FC6464",
16
+ valid: "#32D74B"
17
+ },
18
+ buttons: {
19
+ primary: {
20
+ borderRadius: 16,
21
+ color: "#000373737000",
22
+ background: "#FFFFFF",
23
+ border: "#F0F0F0",
24
+ hover: {
25
+ color: "#000000",
26
+ border: "#1A88F8"
27
+ }
54
28
  },
29
+ secondary: {
30
+ borderRadius: 16,
31
+ background: "#F6F7F9",
32
+ color: "#000000"
33
+ }
34
+ },
35
+ navigation: {
36
+ color: "#999999"
37
+ },
38
+ modal: {
39
+ background: "#ffffff",
40
+ // need to generate an rgba transparent version of this for Safari
41
+ divider: "#f7f6f8"
42
+ },
43
+ tooltips: {
44
+ color: "#999999",
45
+ background: "#ffffff",
46
+ hover: {
47
+ background: "#f6f7f9"
48
+ }
49
+ },
50
+ overlay: {
51
+ background: "rgba(0, 0, 0, 0.06)"
52
+ },
53
+ qrCode: {
54
+ accentColor: "#F7F6F8"
55
+ }
55
56
  };
56
- // parse into css variables so we can use p3 colors
57
57
  const parseTheme = (theme) => {
58
- return theme;
58
+ return theme;
59
59
  };
60
60
  const userPrefersDarkMode = () => {
61
- if (typeof window === "undefined")
62
- return false;
63
- return (window.matchMedia &&
64
- window.matchMedia("(prefers-color-scheme: dark)").matches);
65
- /*
66
- window
67
- .matchMedia('(prefers-color-scheme: dark)')
68
- .addEventListener('change', (event) => {
69
- userPrefersDarkMode = event.matches;
70
- });
71
- */
61
+ if (typeof window === "undefined") return false;
62
+ return window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches;
72
63
  };
73
64
  userPrefersDarkMode();
74
65
  const defaultTheme = {
75
- daimoPay: {
76
- options: {
77
- iconStyle: "light",
78
- },
79
- //theme: parseTheme(defaultLightTheme),
80
- theme: {
81
- preferred: "dark",
82
- light: parseTheme(defaultLightTheme),
83
- dark: parseTheme(defaultLightTheme),
84
- },
66
+ daimoPay: {
67
+ options: {
68
+ iconStyle: "light"
85
69
  },
70
+ //theme: parseTheme(defaultLightTheme),
71
+ theme: {
72
+ preferred: "dark",
73
+ light: parseTheme(defaultLightTheme),
74
+ dark: parseTheme(defaultLightTheme)
75
+ }
76
+ }
86
77
  };
87
78
 
88
79
  export { defaultTheme as default };
@@ -1 +1 @@
1
- {"version":3,"file":"defaultTheme.js","sources":["../../../src/styles/defaultTheme.ts"],"sourcesContent":[null],"names":[],"mappings":"AAEA,MAAM,iBAAiB,GAAU;AAC/B,IAAA,IAAI,EAAE;AACJ,QAAA,MAAM,EAAE,CAAoH,kHAAA,CAAA;AAC7H,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,OAAO,EAAE;AACP,YAAA,KAAK,EAAE,SAAS;AACjB,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,SAAS;AACjB,aAAA;AACF,SAAA;AACD,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,KAAK,EAAE,SAAS;AACjB,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,OAAO,EAAE;AACP,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,KAAK,EAAE,eAAe;AACtB,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,MAAM,EAAE,SAAS;AAClB,aAAA;AACF,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,KAAK,EAAE,SAAS;AACjB,SAAA;AACF,KAAA;AACD,IAAA,UAAU,EAAE;AACV,QAAA,KAAK,EAAE,SAAS;AACjB,KAAA;AACD,IAAA,KAAK,EAAE;QACL,UAAU,EAAE,SAAS;AACrB,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,UAAU,EAAE,SAAS;AACrB,QAAA,KAAK,EAAE;AACL,YAAA,UAAU,EAAE,SAAS;AACtB,SAAA;AACF,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,UAAU,EAAE,qBAAqB;AAClC,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,WAAW,EAAE,SAAS;AACvB,KAAA;CACF,CAAC;AAEF;AACA,MAAM,UAAU,GAAG,CAAC,KAAY,KAAI;AAClC,IAAA,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,MAAK;IAC/B,IAAI,OAAO,MAAM,KAAK,WAAW;AAAE,QAAA,OAAO,KAAK,CAAC;IAChD,QACE,MAAM,CAAC,UAAU;QACjB,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,OAAO,EACzD;AACF;;;;;;AAMI;AACN,CAAC,CAAC;AACa,mBAAmB,GAAG;AAKrC,MAAM,YAAY,GAAgB;AAChC,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,SAAS,EAAE,OAAO;AACnB,SAAA;;AAED,QAAA,KAAK,EAAE;AACL,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC;AACpC,YAAA,IAAI,EAAE,UAAU,CAAC,iBAAiB,CAAC;AACpC,SAAA;AACF,KAAA;;;;;"}
1
+ {"version":3,"file":"defaultTheme.js","sources":["../../../src/styles/defaultTheme.ts"],"sourcesContent":["import { CustomTheme, Theme } from \"./types\";\n\nconst defaultLightTheme: Theme = {\n font: {\n family: `-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, 'Apple Color Emoji', Arial, sans-serif, 'Segoe UI Emoji'`,\n },\n text: {\n primary: {\n color: \"#373737\",\n },\n secondary: {\n color: \"#999999\",\n hover: {\n color: \"#111111\",\n },\n },\n error: \"#FC6464\",\n valid: \"#32D74B\",\n },\n buttons: {\n primary: {\n borderRadius: 16,\n color: \"#000373737000\",\n background: \"#FFFFFF\",\n border: \"#F0F0F0\",\n hover: {\n color: \"#000000\",\n border: \"#1A88F8\",\n },\n },\n secondary: {\n borderRadius: 16,\n background: \"#F6F7F9\",\n color: \"#000000\",\n },\n },\n navigation: {\n color: \"#999999\",\n },\n modal: {\n background: \"#ffffff\", // need to generate an rgba transparent version of this for Safari\n divider: \"#f7f6f8\",\n },\n tooltips: {\n color: \"#999999\",\n background: \"#ffffff\",\n hover: {\n background: \"#f6f7f9\",\n },\n },\n overlay: {\n background: \"rgba(0, 0, 0, 0.06)\",\n },\n qrCode: {\n accentColor: \"#F7F6F8\",\n },\n};\n\n// parse into css variables so we can use p3 colors\nconst parseTheme = (theme: Theme) => {\n return theme;\n};\n\nconst userPrefersDarkMode = () => {\n if (typeof window === \"undefined\") return false;\n return (\n window.matchMedia &&\n window.matchMedia(\"(prefers-color-scheme: dark)\").matches\n );\n /*\n window\n .matchMedia('(prefers-color-scheme: dark)')\n .addEventListener('change', (event) => {\n userPrefersDarkMode = event.matches;\n });\n */\n};\nlet darkMode = userPrefersDarkMode();\n\nif (darkMode) {\n}\n\nconst defaultTheme: CustomTheme = {\n daimoPay: {\n options: {\n iconStyle: \"light\",\n },\n //theme: parseTheme(defaultLightTheme),\n theme: {\n preferred: \"dark\",\n light: parseTheme(defaultLightTheme),\n dark: parseTheme(defaultLightTheme),\n },\n },\n};\nexport default defaultTheme;\n"],"names":[],"mappings":"AAEA,MAAM,iBAA2B,GAAA;AAAA,EAC/B,IAAM,EAAA;AAAA,IACJ,MAAQ,EAAA,CAAA,kHAAA,CAAA;AAAA,GACV;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,OAAS,EAAA;AAAA,MACP,KAAO,EAAA,SAAA;AAAA,KACT;AAAA,IACA,SAAW,EAAA;AAAA,MACT,KAAO,EAAA,SAAA;AAAA,MACP,KAAO,EAAA;AAAA,QACL,KAAO,EAAA,SAAA;AAAA,OACT;AAAA,KACF;AAAA,IACA,KAAO,EAAA,SAAA;AAAA,IACP,KAAO,EAAA,SAAA;AAAA,GACT;AAAA,EACA,OAAS,EAAA;AAAA,IACP,OAAS,EAAA;AAAA,MACP,YAAc,EAAA,EAAA;AAAA,MACd,KAAO,EAAA,eAAA;AAAA,MACP,UAAY,EAAA,SAAA;AAAA,MACZ,MAAQ,EAAA,SAAA;AAAA,MACR,KAAO,EAAA;AAAA,QACL,KAAO,EAAA,SAAA;AAAA,QACP,MAAQ,EAAA,SAAA;AAAA,OACV;AAAA,KACF;AAAA,IACA,SAAW,EAAA;AAAA,MACT,YAAc,EAAA,EAAA;AAAA,MACd,UAAY,EAAA,SAAA;AAAA,MACZ,KAAO,EAAA,SAAA;AAAA,KACT;AAAA,GACF;AAAA,EACA,UAAY,EAAA;AAAA,IACV,KAAO,EAAA,SAAA;AAAA,GACT;AAAA,EACA,KAAO,EAAA;AAAA,IACL,UAAY,EAAA,SAAA;AAAA;AAAA,IACZ,OAAS,EAAA,SAAA;AAAA,GACX;AAAA,EACA,QAAU,EAAA;AAAA,IACR,KAAO,EAAA,SAAA;AAAA,IACP,UAAY,EAAA,SAAA;AAAA,IACZ,KAAO,EAAA;AAAA,MACL,UAAY,EAAA,SAAA;AAAA,KACd;AAAA,GACF;AAAA,EACA,OAAS,EAAA;AAAA,IACP,UAAY,EAAA,qBAAA;AAAA,GACd;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,WAAa,EAAA,SAAA;AAAA,GACf;AACF,CAAA,CAAA;AAGA,MAAM,UAAA,GAAa,CAAC,KAAiB,KAAA;AACnC,EAAO,OAAA,KAAA,CAAA;AACT,CAAA,CAAA;AAEA,MAAM,sBAAsB,MAAM;AAChC,EAAI,IAAA,OAAO,MAAW,KAAA,WAAA,EAAoB,OAAA,KAAA,CAAA;AAC1C,EAAA,OACE,MAAO,CAAA,UAAA,IACP,MAAO,CAAA,UAAA,CAAW,8BAA8B,CAAE,CAAA,OAAA,CAAA;AAStD,CAAA,CAAA;AACe,mBAAoB,GAAA;AAKnC,MAAM,YAA4B,GAAA;AAAA,EAChC,QAAU,EAAA;AAAA,IACR,OAAS,EAAA;AAAA,MACP,SAAW,EAAA,OAAA;AAAA,KACb;AAAA;AAAA,IAEA,KAAO,EAAA;AAAA,MACL,SAAW,EAAA,MAAA;AAAA,MACX,KAAA,EAAO,WAAW,iBAAiB,CAAA;AAAA,MACnC,IAAA,EAAM,WAAW,iBAAiB,CAAA;AAAA,KACpC;AAAA,GACF;AACF;;;;"}