@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
@@ -3,13 +3,13 @@ import { mainnet } from 'wagmi/chains';
3
3
  import { useChainIsSupported } from './useChainIsSupported.js';
4
4
 
5
5
  const ensFallbackConfig = createConfig({
6
- chains: [mainnet],
7
- transports: {
8
- [mainnet.id]: http(),
9
- },
6
+ chains: [mainnet],
7
+ transports: {
8
+ [mainnet.id]: http()
9
+ }
10
10
  });
11
11
  function useEnsFallbackConfig() {
12
- return !useChainIsSupported(1) ? ensFallbackConfig : undefined;
12
+ return !useChainIsSupported(1) ? ensFallbackConfig : void 0;
13
13
  }
14
14
 
15
15
  export { useEnsFallbackConfig };
@@ -1 +1 @@
1
- {"version":3,"file":"useEnsFallbackConfig.js","sources":["../../../src/hooks/useEnsFallbackConfig.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKA,MAAM,iBAAiB,GAAG,YAAY,CAAC;IACrC,MAAM,EAAE,CAAC,OAAO,CAAC;AACjB,IAAA,UAAU,EAAE;AACV,QAAA,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE;AACrB,KAAA;AACF,CAAA,CAAC,CAAC;SAEa,oBAAoB,GAAA;AAClC,IAAA,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,iBAAiB,GAAG,SAAS,CAAC;AACjE;;;;"}
1
+ {"version":3,"file":"useEnsFallbackConfig.js","sources":["../../../src/hooks/useEnsFallbackConfig.ts"],"sourcesContent":["import type { Config } from \"@wagmi/core\";\nimport { createConfig, http } from \"wagmi\";\nimport { mainnet } from \"wagmi/chains\";\nimport { useChainIsSupported } from \"../hooks/useChainIsSupported\";\n\nconst ensFallbackConfig = createConfig({\n chains: [mainnet],\n transports: {\n [mainnet.id]: http(),\n },\n});\n\nexport function useEnsFallbackConfig(): Config | undefined {\n return !useChainIsSupported(1) ? ensFallbackConfig : undefined;\n}\n"],"names":[],"mappings":";;;;AAKA,MAAM,oBAAoB,YAAa,CAAA;AAAA,EACrC,MAAA,EAAQ,CAAC,OAAO,CAAA;AAAA,EAChB,UAAY,EAAA;AAAA,IACV,CAAC,OAAA,CAAQ,EAAE,GAAG,IAAK,EAAA;AAAA,GACrB;AACF,CAAC,CAAA,CAAA;AAEM,SAAS,oBAA2C,GAAA;AACzD,EAAA,OAAO,CAAC,mBAAA,CAAoB,CAAC,CAAA,GAAI,iBAAoB,GAAA,KAAA,CAAA,CAAA;AACvD;;;;"}
@@ -1,58 +1,63 @@
1
1
  import { ExternalPaymentOptions } from '@daimo/pay-common';
2
2
  import { useState, useEffect } from 'react';
3
3
 
4
- const DEFAULT_EXTERNAL_PAYMENT_OPTIONS = Object.values(ExternalPaymentOptions).filter((opt) =>
5
- // Solana and ExternalChains are handled in the SelectMethod component.
6
- opt !== ExternalPaymentOptions.ExternalChains &&
7
- opt !== ExternalPaymentOptions.Daimo);
8
- function useExternalPaymentOptions({ trpc, filterIds, platform, usdRequired, mode, }) {
9
- const [options, setOptions] = useState(new Map());
10
- const [loading, setLoading] = useState(false);
11
- useEffect(() => {
12
- const refreshExternalPaymentOptions = async (usd, mode) => {
13
- if (!platform)
14
- return;
15
- setLoading(true);
16
- try {
17
- const newOptions = await trpc.getExternalPaymentOptions.query({
18
- platform,
19
- mode,
20
- usdRequired: usd,
21
- });
22
- // Filter out options not in options JSON
23
- const enabledExtPaymentOptions = filterIds || DEFAULT_EXTERNAL_PAYMENT_OPTIONS;
24
- const hasAllPaymentApps = enabledExtPaymentOptions.includes(ExternalPaymentOptions.AllPaymentApps);
25
- const hasAllExchanges = enabledExtPaymentOptions.includes(ExternalPaymentOptions.AllExchanges);
26
- const filteredOptions = newOptions.filter((option) => enabledExtPaymentOptions.includes(option.id) ||
27
- (hasAllPaymentApps && option.optionType === "zkp2p") ||
28
- (hasAllExchanges && option.optionType === "exchange"));
29
- const optionsByType = new Map();
30
- filteredOptions.forEach((option) => {
31
- const { optionType } = option;
32
- if (!optionsByType.has(optionType)) {
33
- optionsByType.set(optionType, []);
34
- }
35
- optionsByType.get(optionType).push(option);
36
- });
37
- setOptions(optionsByType);
38
- }
39
- catch (error) {
40
- console.error(error);
41
- }
42
- finally {
43
- setLoading(false);
44
- }
45
- };
46
- if (usdRequired != null && mode != null) {
47
- refreshExternalPaymentOptions(usdRequired, mode);
48
- }
49
- // TODO: this is an ugly way to handle polling/refresh
50
- // Notice the load-bearing JSON.stringify() to prevent a visible infinite
51
- // refresh glitch on the SelectMethod screen. Replace this useEffect().
52
- //
53
- // eslint-disable-next-line react-hooks/exhaustive-deps
54
- }, [usdRequired, JSON.stringify(filterIds), platform, mode, trpc]);
55
- return { options, loading };
4
+ const DEFAULT_EXTERNAL_PAYMENT_OPTIONS = Object.values(
5
+ ExternalPaymentOptions
6
+ ).filter(
7
+ (opt) => (
8
+ // Solana and ExternalChains are handled in the SelectMethod component.
9
+ opt !== ExternalPaymentOptions.ExternalChains && opt !== ExternalPaymentOptions.Daimo
10
+ )
11
+ );
12
+ function useExternalPaymentOptions({
13
+ trpc,
14
+ filterIds,
15
+ platform,
16
+ usdRequired,
17
+ mode
18
+ }) {
19
+ const [options, setOptions] = useState(/* @__PURE__ */ new Map());
20
+ const [loading, setLoading] = useState(false);
21
+ useEffect(() => {
22
+ const refreshExternalPaymentOptions = async (usd, mode2) => {
23
+ if (!platform) return;
24
+ setLoading(true);
25
+ try {
26
+ const newOptions = await trpc.getExternalPaymentOptions.query({
27
+ platform,
28
+ mode: mode2,
29
+ usdRequired: usd
30
+ });
31
+ const enabledExtPaymentOptions = filterIds || DEFAULT_EXTERNAL_PAYMENT_OPTIONS;
32
+ const hasAllPaymentApps = enabledExtPaymentOptions.includes(
33
+ ExternalPaymentOptions.AllPaymentApps
34
+ );
35
+ const hasAllExchanges = enabledExtPaymentOptions.includes(
36
+ ExternalPaymentOptions.AllExchanges
37
+ );
38
+ const filteredOptions = newOptions.filter(
39
+ (option) => enabledExtPaymentOptions.includes(option.id) || hasAllPaymentApps && option.optionType === "zkp2p" || hasAllExchanges && option.optionType === "exchange"
40
+ );
41
+ const optionsByType = /* @__PURE__ */ new Map();
42
+ filteredOptions.forEach((option) => {
43
+ const { optionType } = option;
44
+ if (!optionsByType.has(optionType)) {
45
+ optionsByType.set(optionType, []);
46
+ }
47
+ optionsByType.get(optionType).push(option);
48
+ });
49
+ setOptions(optionsByType);
50
+ } catch (error) {
51
+ console.error(error);
52
+ } finally {
53
+ setLoading(false);
54
+ }
55
+ };
56
+ if (usdRequired != null && mode != null) {
57
+ refreshExternalPaymentOptions(usdRequired, mode);
58
+ }
59
+ }, [usdRequired, JSON.stringify(filterIds), platform, mode, trpc]);
60
+ return { options, loading };
56
61
  }
57
62
 
58
63
  export { useExternalPaymentOptions };
@@ -1 +1 @@
1
- {"version":3,"file":"useExternalPaymentOptions.js","sources":["../../../src/hooks/useExternalPaymentOptions.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AASA,MAAM,gCAAgC,GAAG,MAAM,CAAC,MAAM,CACpD,sBAAsB,CACvB,CAAC,MAAM,CACN,CAAC,GAAG;AACF;AACA,GAAG,KAAK,sBAAsB,CAAC,cAAc;AAC7C,IAAA,GAAG,KAAK,sBAAsB,CAAC,KAAK,CACvC,CAAC;AAEc,SAAA,yBAAyB,CAAC,EACxC,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,WAAW,EACX,IAAI,GAOL,EAAA;AAQC,IAAA,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAEpC,IAAI,GAAG,EAAE,CAAC,CAAC;IACb,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9C,SAAS,CAAC,MAAK;QACb,MAAM,6BAA6B,GAAG,OACpC,GAAW,EACX,IAAuB,KACrB;AACF,YAAA,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAEtB,UAAU,CAAC,IAAI,CAAC,CAAC;AACjB,YAAA,IAAI;gBACF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;oBAC5D,QAAQ;oBACR,IAAI;AACJ,oBAAA,WAAW,EAAE,GAAG;AACjB,iBAAA,CAAC,CAAC;;AAGH,gBAAA,MAAM,wBAAwB,GAC5B,SAAS,IAAI,gCAAgC,CAAC;gBAEhD,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,QAAQ,CACzD,sBAAsB,CAAC,cAAc,CACtC,CAAC;gBACF,MAAM,eAAe,GAAG,wBAAwB,CAAC,QAAQ,CACvD,sBAAsB,CAAC,YAAY,CACpC,CAAC;AAEF,gBAAA,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CACvC,CAAC,MAAqC,KACpC,wBAAwB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;AAC5C,qBAAC,iBAAiB,IAAI,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC;qBACnD,eAAe,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,CAAC,CACxD,CAAC;AACF,gBAAA,MAAM,aAAa,GAGf,IAAI,GAAG,EAAE,CAAC;AACd,gBAAA,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACjC,oBAAA,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;oBAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AAClC,wBAAA,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;qBACnC;oBACD,aAAa,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9C,iBAAC,CAAC,CAAC;gBAEH,UAAU,CAAC,aAAa,CAAC,CAAC;aAC3B;YAAC,OAAO,KAAK,EAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aACtB;oBAAS;gBACR,UAAU,CAAC,KAAK,CAAC,CAAC;aACnB;AACH,SAAC,CAAC;QAEF,IAAI,WAAW,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AACvC,YAAA,6BAA6B,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;SAClD;;;;;;AAMH,KAAC,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAEnE,IAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B;;;;"}
1
+ {"version":3,"file":"useExternalPaymentOptions.js","sources":["../../../src/hooks/useExternalPaymentOptions.ts"],"sourcesContent":["import {\n DaimoPayOrderMode,\n ExternalPaymentOptionMetadata,\n ExternalPaymentOptions,\n PlatformType,\n} from \"@daimo/pay-common\";\nimport { useEffect, useState } from \"react\";\nimport { TrpcClient } from \"../utils/trpc\";\n\nconst DEFAULT_EXTERNAL_PAYMENT_OPTIONS = Object.values(\n ExternalPaymentOptions,\n).filter(\n (opt) =>\n // Solana and ExternalChains are handled in the SelectMethod component.\n opt !== ExternalPaymentOptions.ExternalChains &&\n opt !== ExternalPaymentOptions.Daimo,\n);\n\nexport function useExternalPaymentOptions({\n trpc,\n filterIds,\n platform,\n usdRequired,\n mode,\n}: {\n trpc: TrpcClient;\n filterIds: string[] | undefined;\n platform: PlatformType | undefined;\n usdRequired: number | undefined;\n mode: DaimoPayOrderMode | undefined;\n}): {\n /// Exteral options, organized by optionType\n options: Map<\n \"external\" | \"zkp2p\" | \"exchange\",\n ExternalPaymentOptionMetadata[]\n >;\n loading: boolean;\n} {\n const [options, setOptions] = useState<\n Map<\"external\" | \"zkp2p\" | \"exchange\", ExternalPaymentOptionMetadata[]>\n >(new Map());\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n const refreshExternalPaymentOptions = async (\n usd: number,\n mode: DaimoPayOrderMode,\n ) => {\n if (!platform) return;\n\n setLoading(true);\n try {\n const newOptions = await trpc.getExternalPaymentOptions.query({\n platform,\n mode,\n usdRequired: usd,\n });\n\n // Filter out options not in options JSON\n const enabledExtPaymentOptions =\n filterIds || DEFAULT_EXTERNAL_PAYMENT_OPTIONS;\n\n const hasAllPaymentApps = enabledExtPaymentOptions.includes(\n ExternalPaymentOptions.AllPaymentApps,\n );\n const hasAllExchanges = enabledExtPaymentOptions.includes(\n ExternalPaymentOptions.AllExchanges,\n );\n\n const filteredOptions = newOptions.filter(\n (option: ExternalPaymentOptionMetadata) =>\n enabledExtPaymentOptions.includes(option.id) ||\n (hasAllPaymentApps && option.optionType === \"zkp2p\") ||\n (hasAllExchanges && option.optionType === \"exchange\"),\n );\n const optionsByType: Map<\n \"external\" | \"zkp2p\" | \"exchange\",\n ExternalPaymentOptionMetadata[]\n > = new Map();\n filteredOptions.forEach((option) => {\n const { optionType } = option;\n if (!optionsByType.has(optionType)) {\n optionsByType.set(optionType, []);\n }\n optionsByType.get(optionType)!.push(option);\n });\n\n setOptions(optionsByType);\n } catch (error) {\n console.error(error);\n } finally {\n setLoading(false);\n }\n };\n\n if (usdRequired != null && mode != null) {\n refreshExternalPaymentOptions(usdRequired, mode);\n }\n // TODO: this is an ugly way to handle polling/refresh\n // Notice the load-bearing JSON.stringify() to prevent a visible infinite\n // refresh glitch on the SelectMethod screen. Replace this useEffect().\n //\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [usdRequired, JSON.stringify(filterIds), platform, mode, trpc]);\n\n return { options, loading };\n}\n"],"names":["mode"],"mappings":";;;AASA,MAAM,mCAAmC,MAAO,CAAA,MAAA;AAAA,EAC9C,sBAAA;AACF,CAAE,CAAA,MAAA;AAAA,EACA,CAAC,GAAA;AAAA;AAAA,IAEC,GAAQ,KAAA,sBAAA,CAAuB,cAC/B,IAAA,GAAA,KAAQ,sBAAuB,CAAA,KAAA;AAAA,GAAA;AACnC,CAAA,CAAA;AAEO,SAAS,yBAA0B,CAAA;AAAA,EACxC,IAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA;AACF,CAaE,EAAA;AACA,EAAA,MAAM,CAAC,OAAS,EAAA,UAAU,IAAI,QAE5B,iBAAA,IAAI,KAAK,CAAA,CAAA;AACX,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AAE5C,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,6BAAA,GAAgC,OACpC,GAAA,EACAA,KACG,KAAA;AACH,MAAA,IAAI,CAAC,QAAU,EAAA,OAAA;AAEf,MAAA,UAAA,CAAW,IAAI,CAAA,CAAA;AACf,MAAI,IAAA;AACF,QAAA,MAAM,UAAa,GAAA,MAAM,IAAK,CAAA,yBAAA,CAA0B,KAAM,CAAA;AAAA,UAC5D,QAAA;AAAA,UACA,IAAAA,EAAAA,KAAAA;AAAA,UACA,WAAa,EAAA,GAAA;AAAA,SACd,CAAA,CAAA;AAGD,QAAA,MAAM,2BACJ,SAAa,IAAA,gCAAA,CAAA;AAEf,QAAA,MAAM,oBAAoB,wBAAyB,CAAA,QAAA;AAAA,UACjD,sBAAuB,CAAA,cAAA;AAAA,SACzB,CAAA;AACA,QAAA,MAAM,kBAAkB,wBAAyB,CAAA,QAAA;AAAA,UAC/C,sBAAuB,CAAA,YAAA;AAAA,SACzB,CAAA;AAEA,QAAA,MAAM,kBAAkB,UAAW,CAAA,MAAA;AAAA,UACjC,CAAC,MAAA,KACC,wBAAyB,CAAA,QAAA,CAAS,MAAO,CAAA,EAAE,CAC1C,IAAA,iBAAA,IAAqB,MAAO,CAAA,UAAA,KAAe,OAC3C,IAAA,eAAA,IAAmB,OAAO,UAAe,KAAA,UAAA;AAAA,SAC9C,CAAA;AACA,QAAM,MAAA,aAAA,uBAGE,GAAI,EAAA,CAAA;AACZ,QAAgB,eAAA,CAAA,OAAA,CAAQ,CAAC,MAAW,KAAA;AAClC,UAAM,MAAA,EAAE,YAAe,GAAA,MAAA,CAAA;AACvB,UAAA,IAAI,CAAC,aAAA,CAAc,GAAI,CAAA,UAAU,CAAG,EAAA;AAClC,YAAc,aAAA,CAAA,GAAA,CAAI,UAAY,EAAA,EAAE,CAAA,CAAA;AAAA,WAClC;AACA,UAAA,aAAA,CAAc,GAAI,CAAA,UAAU,CAAG,CAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,SAC3C,CAAA,CAAA;AAED,QAAA,UAAA,CAAW,aAAa,CAAA,CAAA;AAAA,eACjB,KAAO,EAAA;AACd,QAAA,OAAA,CAAQ,MAAM,KAAK,CAAA,CAAA;AAAA,OACnB,SAAA;AACA,QAAA,UAAA,CAAW,KAAK,CAAA,CAAA;AAAA,OAClB;AAAA,KACF,CAAA;AAEA,IAAI,IAAA,WAAA,IAAe,IAAQ,IAAA,IAAA,IAAQ,IAAM,EAAA;AACvC,MAAA,6BAAA,CAA8B,aAAa,IAAI,CAAA,CAAA;AAAA,KACjD;AAAA,GAMF,EAAG,CAAC,WAAA,EAAa,IAAK,CAAA,SAAA,CAAU,SAAS,CAAG,EAAA,QAAA,EAAU,IAAM,EAAA,IAAI,CAAC,CAAA,CAAA;AAEjE,EAAO,OAAA,EAAE,SAAS,OAAQ,EAAA,CAAA;AAC5B;;;;"}
@@ -1,147 +1,132 @@
1
1
  import { useCallback, useRef, useState, useEffect, useLayoutEffect } from 'react';
2
2
  import ResizeObserver from 'resize-observer-polyfill';
3
3
 
4
- // https://github.com/saltycrane/use-fit-text
5
4
  const LOG_LEVEL = {
6
- debug: 10,
7
- info: 20,
8
- warn: 30,
9
- error: 40,
10
- none: 100,
5
+ debug: 10,
6
+ info: 20,
7
+ warn: 30,
8
+ error: 40,
9
+ none: 100
11
10
  };
12
- // Suppress `useLayoutEffect` warning when rendering on the server
13
- // https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85
14
- const useIsoLayoutEffect = typeof window !== "undefined" &&
15
- window.document &&
16
- window.document.createElement !== undefined
17
- ? useLayoutEffect
18
- : useEffect;
19
- const useFitText = ({ logLevel: logLevelOption = "info", maxFontSize = 100, minFontSize = 20, onFinish, onStart, resolution = 5, } = {}) => {
20
- const logLevel = LOG_LEVEL[logLevelOption];
21
- const initState = useCallback(() => {
22
- return {
23
- calcKey: 0,
24
- fontSize: maxFontSize,
25
- fontSizePrev: minFontSize,
26
- fontSizeMax: maxFontSize,
27
- fontSizeMin: minFontSize,
28
- };
29
- }, [maxFontSize, minFontSize]);
30
- const ref = useRef(null);
31
- const innerHtmlPrevRef = useRef();
32
- const isCalculatingRef = useRef(false);
33
- const [state, setState] = useState(initState);
34
- const { calcKey, fontSize, fontSizeMax, fontSizeMin, fontSizePrev } = state;
35
- // Montior div size changes and recalculate on resize
36
- let animationFrameId = null;
37
- const [ro] = useState(() => new ResizeObserver(() => {
38
- animationFrameId = window.requestAnimationFrame(() => {
39
- if (isCalculatingRef.current) {
40
- return;
41
- }
42
- onStart && onStart();
43
- isCalculatingRef.current = true;
44
- // `calcKey` is used in the dependencies array of
45
- // `useIsoLayoutEffect` below. It is incremented so that the font size
46
- // will be recalculated even if the previous state didn't change (e.g.
47
- // when the text fit initially).
48
- setState({
49
- ...initState(),
50
- calcKey: calcKey + 1,
51
- });
52
- });
53
- }));
54
- useEffect(() => {
55
- if (ref.current) {
56
- ro.observe(ref.current);
57
- }
58
- return () => {
59
- animationFrameId && window.cancelAnimationFrame(animationFrameId);
60
- ro.disconnect();
61
- };
62
- }, [animationFrameId, ro]);
63
- // Recalculate when the div contents change
64
- const innerHtml = ref.current && ref.current.innerHTML;
65
- useEffect(() => {
66
- if (calcKey === 0 || isCalculatingRef.current)
67
- return;
68
- if (innerHtml !== innerHtmlPrevRef.current) {
69
- onStart && onStart();
70
- setState({
71
- ...initState(),
72
- calcKey: calcKey + 1,
73
- });
74
- }
75
- innerHtmlPrevRef.current = innerHtml;
76
- }, [calcKey, initState, innerHtml, onStart]);
77
- // Check overflow and resize font
78
- useIsoLayoutEffect(() => {
79
- // Don't start calculating font size until the `resizeKey` is incremented
80
- // above in the `ResizeObserver` callback. This avoids an extra resize
81
- // on initialization.
82
- if (calcKey === 0) {
83
- return;
84
- }
85
- const isWithinResolution = Math.abs(fontSize - fontSizePrev) <= resolution;
86
- const isOverflow = !!ref.current &&
87
- (ref.current.scrollHeight > ref.current.offsetHeight ||
88
- ref.current.scrollWidth > ref.current.offsetWidth);
89
- const isFailed = isOverflow && fontSize === fontSizePrev;
90
- const isAsc = fontSize > fontSizePrev;
91
- // Return if the font size has been adjusted "enough" (change within `resolution`)
92
- // reduce font size by one increment if it's overflowing.
93
- if (isWithinResolution) {
94
- if (isFailed) {
95
- isCalculatingRef.current = false;
96
- if (logLevel <= LOG_LEVEL.info) {
97
- console.info(`[use-fit-text] reached \`minFontSize = ${minFontSize}\` without fitting text`);
98
- }
99
- }
100
- else if (isOverflow) {
101
- setState({
102
- fontSize: isAsc ? fontSizePrev : fontSizeMin,
103
- fontSizeMax,
104
- fontSizeMin,
105
- fontSizePrev,
106
- calcKey,
107
- });
108
- }
109
- else {
110
- isCalculatingRef.current = false;
111
- onFinish && onFinish(fontSize);
112
- }
113
- return;
11
+ const useIsoLayoutEffect = typeof window !== "undefined" && window.document && window.document.createElement !== void 0 ? useLayoutEffect : useEffect;
12
+ const useFitText = ({
13
+ logLevel: logLevelOption = "info",
14
+ maxFontSize = 100,
15
+ minFontSize = 20,
16
+ onFinish,
17
+ onStart,
18
+ resolution = 5
19
+ } = {}) => {
20
+ const logLevel = LOG_LEVEL[logLevelOption];
21
+ const initState = useCallback(() => {
22
+ return {
23
+ calcKey: 0,
24
+ fontSize: maxFontSize,
25
+ fontSizePrev: minFontSize,
26
+ fontSizeMax: maxFontSize,
27
+ fontSizeMin: minFontSize
28
+ };
29
+ }, [maxFontSize, minFontSize]);
30
+ const ref = useRef(null);
31
+ const innerHtmlPrevRef = useRef();
32
+ const isCalculatingRef = useRef(false);
33
+ const [state, setState] = useState(initState);
34
+ const { calcKey, fontSize, fontSizeMax, fontSizeMin, fontSizePrev } = state;
35
+ let animationFrameId = null;
36
+ const [ro] = useState(
37
+ () => new ResizeObserver(() => {
38
+ animationFrameId = window.requestAnimationFrame(() => {
39
+ if (isCalculatingRef.current) {
40
+ return;
114
41
  }
115
- // Binary search to adjust font size
116
- let delta;
117
- let newMax = fontSizeMax;
118
- let newMin = fontSizeMin;
119
- if (isOverflow) {
120
- delta = isAsc ? fontSizePrev - fontSize : fontSizeMin - fontSize;
121
- newMax = Math.min(fontSizeMax, fontSize);
122
- }
123
- else {
124
- delta = isAsc ? fontSizeMax - fontSize : fontSizePrev - fontSize;
125
- newMin = Math.max(fontSizeMin, fontSize);
42
+ onStart && onStart();
43
+ isCalculatingRef.current = true;
44
+ setState({
45
+ ...initState(),
46
+ calcKey: calcKey + 1
47
+ });
48
+ });
49
+ })
50
+ );
51
+ useEffect(() => {
52
+ if (ref.current) {
53
+ ro.observe(ref.current);
54
+ }
55
+ return () => {
56
+ animationFrameId && window.cancelAnimationFrame(animationFrameId);
57
+ ro.disconnect();
58
+ };
59
+ }, [animationFrameId, ro]);
60
+ const innerHtml = ref.current && ref.current.innerHTML;
61
+ useEffect(() => {
62
+ if (calcKey === 0 || isCalculatingRef.current) return;
63
+ if (innerHtml !== innerHtmlPrevRef.current) {
64
+ onStart && onStart();
65
+ setState({
66
+ ...initState(),
67
+ calcKey: calcKey + 1
68
+ });
69
+ }
70
+ innerHtmlPrevRef.current = innerHtml;
71
+ }, [calcKey, initState, innerHtml, onStart]);
72
+ useIsoLayoutEffect(() => {
73
+ if (calcKey === 0) {
74
+ return;
75
+ }
76
+ const isWithinResolution = Math.abs(fontSize - fontSizePrev) <= resolution;
77
+ const isOverflow = !!ref.current && (ref.current.scrollHeight > ref.current.offsetHeight || ref.current.scrollWidth > ref.current.offsetWidth);
78
+ const isFailed = isOverflow && fontSize === fontSizePrev;
79
+ const isAsc = fontSize > fontSizePrev;
80
+ if (isWithinResolution) {
81
+ if (isFailed) {
82
+ isCalculatingRef.current = false;
83
+ if (logLevel <= LOG_LEVEL.info) {
84
+ console.info(
85
+ `[use-fit-text] reached \`minFontSize = ${minFontSize}\` without fitting text`
86
+ );
126
87
  }
88
+ } else if (isOverflow) {
127
89
  setState({
128
- calcKey,
129
- fontSize: fontSize + delta / 2,
130
- fontSizeMax: newMax,
131
- fontSizeMin: newMin,
132
- fontSizePrev: fontSize,
90
+ fontSize: isAsc ? fontSizePrev : fontSizeMin,
91
+ fontSizeMax,
92
+ fontSizeMin,
93
+ fontSizePrev,
94
+ calcKey
133
95
  });
134
- }, [
135
- calcKey,
136
- fontSize,
137
- fontSizeMax,
138
- fontSizeMin,
139
- fontSizePrev,
140
- onFinish,
141
- ref,
142
- resolution,
143
- ]);
144
- return { fontSize, ref };
96
+ } else {
97
+ isCalculatingRef.current = false;
98
+ onFinish && onFinish(fontSize);
99
+ }
100
+ return;
101
+ }
102
+ let delta;
103
+ let newMax = fontSizeMax;
104
+ let newMin = fontSizeMin;
105
+ if (isOverflow) {
106
+ delta = isAsc ? fontSizePrev - fontSize : fontSizeMin - fontSize;
107
+ newMax = Math.min(fontSizeMax, fontSize);
108
+ } else {
109
+ delta = isAsc ? fontSizeMax - fontSize : fontSizePrev - fontSize;
110
+ newMin = Math.max(fontSizeMin, fontSize);
111
+ }
112
+ setState({
113
+ calcKey,
114
+ fontSize: fontSize + delta / 2,
115
+ fontSizeMax: newMax,
116
+ fontSizeMin: newMin,
117
+ fontSizePrev: fontSize
118
+ });
119
+ }, [
120
+ calcKey,
121
+ fontSize,
122
+ fontSizeMax,
123
+ fontSizeMin,
124
+ fontSizePrev,
125
+ onFinish,
126
+ ref,
127
+ resolution
128
+ ]);
129
+ return { fontSize, ref };
145
130
  };
146
131
 
147
132
  export { useFitText as default };
@@ -1 +1 @@
1
- {"version":3,"file":"useFitText.js","sources":["../../../src/hooks/useFitText.tsx"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useFitText.js","sources":["../../../src/hooks/useFitText.tsx"],"sourcesContent":["// https://github.com/saltycrane/use-fit-text\n\nimport {\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport ResizeObserver from \"resize-observer-polyfill\";\n\nexport type TLogLevel = \"debug\" | \"info\" | \"warn\" | \"error\" | \"none\";\n\nexport type TOptions = {\n logLevel?: TLogLevel;\n maxFontSize?: number;\n minFontSize?: number;\n onFinish?: (fontSize: number) => void;\n onStart?: () => void;\n resolution?: number;\n};\n\nconst LOG_LEVEL: Record<TLogLevel, number> = {\n debug: 10,\n info: 20,\n warn: 30,\n error: 40,\n none: 100,\n};\n\n// Suppress `useLayoutEffect` warning when rendering on the server\n// https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useIsoLayoutEffect =\n typeof window !== \"undefined\" &&\n window.document &&\n window.document.createElement !== undefined\n ? useLayoutEffect\n : useEffect;\n\nconst useFitText = ({\n logLevel: logLevelOption = \"info\",\n maxFontSize = 100,\n minFontSize = 20,\n onFinish,\n onStart,\n resolution = 5,\n}: TOptions = {}) => {\n const logLevel = LOG_LEVEL[logLevelOption];\n\n const initState = useCallback(() => {\n return {\n calcKey: 0,\n fontSize: maxFontSize,\n fontSizePrev: minFontSize,\n fontSizeMax: maxFontSize,\n fontSizeMin: minFontSize,\n };\n }, [maxFontSize, minFontSize]);\n\n const ref = useRef<HTMLDivElement>(null);\n const innerHtmlPrevRef = useRef<string | null>();\n const isCalculatingRef = useRef(false);\n const [state, setState] = useState(initState);\n const { calcKey, fontSize, fontSizeMax, fontSizeMin, fontSizePrev } = state;\n\n // Montior div size changes and recalculate on resize\n let animationFrameId: number | null = null;\n const [ro] = useState(\n () =>\n new ResizeObserver(() => {\n animationFrameId = window.requestAnimationFrame(() => {\n if (isCalculatingRef.current) {\n return;\n }\n onStart && onStart();\n isCalculatingRef.current = true;\n // `calcKey` is used in the dependencies array of\n // `useIsoLayoutEffect` below. It is incremented so that the font size\n // will be recalculated even if the previous state didn't change (e.g.\n // when the text fit initially).\n setState({\n ...initState(),\n calcKey: calcKey + 1,\n });\n });\n }),\n );\n\n useEffect(() => {\n if (ref.current) {\n ro.observe(ref.current);\n }\n return () => {\n animationFrameId && window.cancelAnimationFrame(animationFrameId);\n ro.disconnect();\n };\n }, [animationFrameId, ro]);\n\n // Recalculate when the div contents change\n const innerHtml = ref.current && ref.current.innerHTML;\n useEffect(() => {\n if (calcKey === 0 || isCalculatingRef.current) return;\n\n if (innerHtml !== innerHtmlPrevRef.current) {\n onStart && onStart();\n setState({\n ...initState(),\n calcKey: calcKey + 1,\n });\n }\n innerHtmlPrevRef.current = innerHtml;\n }, [calcKey, initState, innerHtml, onStart]);\n\n // Check overflow and resize font\n useIsoLayoutEffect(() => {\n // Don't start calculating font size until the `resizeKey` is incremented\n // above in the `ResizeObserver` callback. This avoids an extra resize\n // on initialization.\n if (calcKey === 0) {\n return;\n }\n\n const isWithinResolution = Math.abs(fontSize - fontSizePrev) <= resolution;\n const isOverflow =\n !!ref.current &&\n (ref.current.scrollHeight > ref.current.offsetHeight ||\n ref.current.scrollWidth > ref.current.offsetWidth);\n const isFailed = isOverflow && fontSize === fontSizePrev;\n const isAsc = fontSize > fontSizePrev;\n\n // Return if the font size has been adjusted \"enough\" (change within `resolution`)\n // reduce font size by one increment if it's overflowing.\n if (isWithinResolution) {\n if (isFailed) {\n isCalculatingRef.current = false;\n if (logLevel <= LOG_LEVEL.info) {\n console.info(\n `[use-fit-text] reached \\`minFontSize = ${minFontSize}\\` without fitting text`,\n );\n }\n } else if (isOverflow) {\n setState({\n fontSize: isAsc ? fontSizePrev : fontSizeMin,\n fontSizeMax,\n fontSizeMin,\n fontSizePrev,\n calcKey,\n });\n } else {\n isCalculatingRef.current = false;\n onFinish && onFinish(fontSize);\n }\n return;\n }\n\n // Binary search to adjust font size\n let delta: number;\n let newMax = fontSizeMax;\n let newMin = fontSizeMin;\n if (isOverflow) {\n delta = isAsc ? fontSizePrev - fontSize : fontSizeMin - fontSize;\n newMax = Math.min(fontSizeMax, fontSize);\n } else {\n delta = isAsc ? fontSizeMax - fontSize : fontSizePrev - fontSize;\n newMin = Math.max(fontSizeMin, fontSize);\n }\n setState({\n calcKey,\n fontSize: fontSize + delta / 2,\n fontSizeMax: newMax,\n fontSizeMin: newMin,\n fontSizePrev: fontSize,\n });\n }, [\n calcKey,\n fontSize,\n fontSizeMax,\n fontSizeMin,\n fontSizePrev,\n onFinish,\n ref,\n resolution,\n ]);\n\n return { fontSize, ref };\n};\n\nexport default useFitText;\n"],"names":[],"mappings":"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"}
@@ -3,11 +3,10 @@ import { useEffect, useRef } from 'react';
3
3
 
4
4
  const KEYCODE_TAB = 9;
5
5
  function useFocusTrap() {
6
- const elRef = useRef(null);
7
- function handleFocus(e) {
8
- if (!elRef.current)
9
- return;
10
- var focusableEls = elRef.current.querySelectorAll(`
6
+ const elRef = useRef(null);
7
+ function handleFocus(e) {
8
+ if (!elRef.current) return;
9
+ var focusableEls = elRef.current.querySelectorAll(`
11
10
  a[href]:not(:disabled),
12
11
  button:not(:disabled),
13
12
  textarea:not(:disabled),
@@ -16,41 +15,38 @@ function useFocusTrap() {
16
15
  input[type="checkbox"]:not(:disabled),
17
16
  select:not(:disabled)
18
17
  `), firstFocusableEl = focusableEls[0], lastFocusableEl = focusableEls[focusableEls.length - 1];
19
- var isTabPressed = e.key === "Tab" || e.keyCode === KEYCODE_TAB;
20
- if (!isTabPressed) {
21
- return;
22
- }
23
- if (e.shiftKey) {
24
- /* shift + tab */ if (document.activeElement === firstFocusableEl) {
25
- lastFocusableEl.focus();
26
- e.preventDefault();
27
- }
28
- } /* tab */
29
- else {
30
- if (document.activeElement === lastFocusableEl) {
31
- firstFocusableEl.focus();
32
- e.preventDefault();
33
- }
34
- }
18
+ var isTabPressed = e.key === "Tab" || e.keyCode === KEYCODE_TAB;
19
+ if (!isTabPressed) {
20
+ return;
35
21
  }
36
- useEffect(() => {
37
- const el = elRef.current;
38
- if (el == null)
39
- return;
40
- el.addEventListener("keydown", handleFocus);
41
- el.focus({ preventScroll: true });
42
- return () => el.removeEventListener("keydown", handleFocus);
43
- }, []);
44
- return elRef;
22
+ if (e.shiftKey) {
23
+ if (document.activeElement === firstFocusableEl) {
24
+ lastFocusableEl.focus();
25
+ e.preventDefault();
26
+ }
27
+ } else {
28
+ if (document.activeElement === lastFocusableEl) {
29
+ firstFocusableEl.focus();
30
+ e.preventDefault();
31
+ }
32
+ }
33
+ }
34
+ useEffect(() => {
35
+ const el = elRef.current;
36
+ if (el == null) return;
37
+ el.addEventListener("keydown", handleFocus);
38
+ el.focus({ preventScroll: true });
39
+ return () => el.removeEventListener("keydown", handleFocus);
40
+ }, []);
41
+ return elRef;
45
42
  }
46
43
  function FocusTrap(props) {
47
- const elRef = useFocusTrap();
48
- useEffect(() => {
49
- if (!elRef.current)
50
- return;
51
- elRef.current.focus({ preventScroll: true });
52
- }, []); // eslint-disable-line react-hooks/exhaustive-deps
53
- return (jsx("div", { ref: elRef, tabIndex: 0, children: props.children }));
44
+ const elRef = useFocusTrap();
45
+ useEffect(() => {
46
+ if (!elRef.current) return;
47
+ elRef.current.focus({ preventScroll: true });
48
+ }, []);
49
+ return /* @__PURE__ */ jsx("div", { ref: elRef, tabIndex: 0, children: props.children });
54
50
  }
55
51
 
56
52
  export { FocusTrap as default };
@@ -1 +1 @@
1
- {"version":3,"file":"useFocusTrap.js","sources":["../../../src/hooks/useFocusTrap.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;AAIA,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB,SAAS,YAAY,GAAA;AACnB,IAAA,MAAM,KAAK,GAAG,MAAM,CAAM,IAAI,CAAC,CAAC;IAEhC,SAAS,WAAW,CAAC,CAAM,EAAA;QACzB,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,OAAO;AAC3B,QAAA,IAAI,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;;;;;;;;AAQ/C,MAAA,CAAA,CAAC,EACF,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,EAClC,eAAe,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAE1D,QAAA,IAAI,YAAY,GAAG,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,WAAW,CAAC;QAEhE,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO;SACR;AAED,QAAA,IAAI,CAAC,CAAC,QAAQ,EAAE;8BACI,IAAI,QAAQ,CAAC,aAAa,KAAK,gBAAgB,EAAE;gBACjE,eAAe,CAAC,KAAK,EAAE,CAAC;gBACxB,CAAC,CAAC,cAAc,EAAE,CAAC;aACpB;AACH,SAAC;aAAgB;AACf,YAAA,IAAI,QAAQ,CAAC,aAAa,KAAK,eAAe,EAAE;gBAC9C,gBAAgB,CAAC,KAAK,EAAE,CAAC;gBACzB,CAAC,CAAC,cAAc,EAAE,CAAC;aACpB;SACF;KACF;IAED,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;QACzB,IAAI,EAAE,IAAI,IAAI;YAAE,OAAO;AACvB,QAAA,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC5C,EAAE,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAClC,OAAO,MAAM,EAAE,CAAC,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;KAC7D,EAAE,EAAE,CAAC,CAAC;AAEP,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAEuB,SAAA,SAAS,CAAC,KAAU,EAAA;AAC1C,IAAA,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAE7B,SAAS,CAAC,MAAK;QACb,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,OAAO;QAC3B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/C,KAAC,EAAE,EAAE,CAAC,CAAC;AAEP,IAAA,QACEA,GAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,YACzB,KAAK,CAAC,QAAQ,EAAA,CACX,EACN;AACJ;;;;"}
1
+ {"version":3,"file":"useFocusTrap.js","sources":["../../../src/hooks/useFocusTrap.tsx"],"sourcesContent":["// Based on https://hiddedevries.nl/en/blog/2017-01-29-using-javascript-to-trap-focus-in-an-element\n\nimport { useEffect, useRef } from \"react\";\n\nconst KEYCODE_TAB = 9;\n\nfunction useFocusTrap() {\n const elRef = useRef<any>(null);\n\n function handleFocus(e: any) {\n if (!elRef.current) return;\n var focusableEls = elRef.current.querySelectorAll(`\n a[href]:not(:disabled),\n button:not(:disabled),\n textarea:not(:disabled),\n input[type=\"text\"]:not(:disabled),\n input[type=\"radio\"]:not(:disabled),\n input[type=\"checkbox\"]:not(:disabled),\n select:not(:disabled)\n `),\n firstFocusableEl = focusableEls[0],\n lastFocusableEl = focusableEls[focusableEls.length - 1];\n\n var isTabPressed = e.key === \"Tab\" || e.keyCode === KEYCODE_TAB;\n\n if (!isTabPressed) {\n return;\n }\n\n if (e.shiftKey) {\n /* shift + tab */ if (document.activeElement === firstFocusableEl) {\n lastFocusableEl.focus();\n e.preventDefault();\n }\n } /* tab */ else {\n if (document.activeElement === lastFocusableEl) {\n firstFocusableEl.focus();\n e.preventDefault();\n }\n }\n }\n\n useEffect(() => {\n const el = elRef.current;\n if (el == null) return;\n el.addEventListener(\"keydown\", handleFocus);\n el.focus({ preventScroll: true });\n return () => el.removeEventListener(\"keydown\", handleFocus);\n }, []);\n\n return elRef;\n}\n\nexport default function FocusTrap(props: any) {\n const elRef = useFocusTrap();\n\n useEffect(() => {\n if (!elRef.current) return;\n elRef.current.focus({ preventScroll: true });\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n <div ref={elRef} tabIndex={0}>\n {props.children}\n </div>\n );\n}\n"],"names":[],"mappings":";;;AAIA,MAAM,WAAc,GAAA,CAAA,CAAA;AAEpB,SAAS,YAAe,GAAA;AACtB,EAAM,MAAA,KAAA,GAAQ,OAAY,IAAI,CAAA,CAAA;AAE9B,EAAA,SAAS,YAAY,CAAQ,EAAA;AAC3B,IAAI,IAAA,CAAC,MAAM,OAAS,EAAA,OAAA;AACpB,IAAI,IAAA,YAAA,GAAe,KAAM,CAAA,OAAA,CAAQ,gBAAiB,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQ/C,CAAA,CAAA,EACD,mBAAmB,YAAa,CAAA,CAAC,GACjC,eAAkB,GAAA,YAAA,CAAa,YAAa,CAAA,MAAA,GAAS,CAAC,CAAA,CAAA;AAExD,IAAA,IAAI,YAAe,GAAA,CAAA,CAAE,GAAQ,KAAA,KAAA,IAAS,EAAE,OAAY,KAAA,WAAA,CAAA;AAEpD,IAAA,IAAI,CAAC,YAAc,EAAA;AACjB,MAAA,OAAA;AAAA,KACF;AAEA,IAAA,IAAI,EAAE,QAAU,EAAA;AACI,MAAI,IAAA,QAAA,CAAS,kBAAkB,gBAAkB,EAAA;AACjE,QAAA,eAAA,CAAgB,KAAM,EAAA,CAAA;AACtB,QAAA,CAAA,CAAE,cAAe,EAAA,CAAA;AAAA,OACnB;AAAA,KACe,MAAA;AACf,MAAI,IAAA,QAAA,CAAS,kBAAkB,eAAiB,EAAA;AAC9C,QAAA,gBAAA,CAAiB,KAAM,EAAA,CAAA;AACvB,QAAA,CAAA,CAAE,cAAe,EAAA,CAAA;AAAA,OACnB;AAAA,KACF;AAAA,GACF;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,KAAK,KAAM,CAAA,OAAA,CAAA;AACjB,IAAA,IAAI,MAAM,IAAM,EAAA,OAAA;AAChB,IAAG,EAAA,CAAA,gBAAA,CAAiB,WAAW,WAAW,CAAA,CAAA;AAC1C,IAAA,EAAA,CAAG,KAAM,CAAA,EAAE,aAAe,EAAA,IAAA,EAAM,CAAA,CAAA;AAChC,IAAA,OAAO,MAAM,EAAA,CAAG,mBAAoB,CAAA,SAAA,EAAW,WAAW,CAAA,CAAA;AAAA,GAC5D,EAAG,EAAE,CAAA,CAAA;AAEL,EAAO,OAAA,KAAA,CAAA;AACT,CAAA;AAEA,SAAwB,UAAU,KAAY,EAAA;AAC5C,EAAA,MAAM,QAAQ,YAAa,EAAA,CAAA;AAE3B,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,CAAC,MAAM,OAAS,EAAA,OAAA;AACpB,IAAA,KAAA,CAAM,OAAQ,CAAA,KAAA,CAAM,EAAE,aAAA,EAAe,MAAM,CAAA,CAAA;AAAA,GAC7C,EAAG,EAAE,CAAA,CAAA;AAEL,EAAA,2BACG,KAAI,EAAA,EAAA,GAAA,EAAK,OAAO,QAAU,EAAA,CAAA,EACxB,gBAAM,QACT,EAAA,CAAA,CAAA;AAEJ;;;;"}