@rabbitio/ui-kit 1.0.0-beta.83 → 1.0.0-beta.85

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 (216) hide show
  1. package/coverage/base.css +224 -0
  2. package/coverage/block-navigation.js +87 -0
  3. package/coverage/clover.xml +15720 -0
  4. package/coverage/coverage-final.json +112 -0
  5. package/coverage/favicon.png +0 -0
  6. package/coverage/index.html +986 -0
  7. package/coverage/prettify.css +1 -0
  8. package/coverage/prettify.js +2 -0
  9. package/coverage/rabbit-ui-kit/index.html +116 -0
  10. package/coverage/rabbit-ui-kit/index.js.html +88 -0
  11. package/coverage/rabbit-ui-kit/src/common-apis/adapters/analyticsAdapters/googleAnalyticsAdapter.js.html +148 -0
  12. package/coverage/rabbit-ui-kit/src/common-apis/adapters/analyticsAdapters/index.html +131 -0
  13. package/coverage/rabbit-ui-kit/src/common-apis/adapters/analyticsAdapters/mixpanelAdapter.js.html +199 -0
  14. package/coverage/rabbit-ui-kit/src/common-apis/adapters/axiosAdapter.js.html +190 -0
  15. package/coverage/rabbit-ui-kit/src/common-apis/adapters/index.html +131 -0
  16. package/coverage/rabbit-ui-kit/src/common-apis/adapters/qrUtils.js.html +139 -0
  17. package/coverage/rabbit-ui-kit/src/common-apis/amountUtils.js.html +1162 -0
  18. package/coverage/rabbit-ui-kit/src/common-apis/errorUtils.js.html +211 -0
  19. package/coverage/rabbit-ui-kit/src/common-apis/external-apis/apiGroups.js.html +250 -0
  20. package/coverage/rabbit-ui-kit/src/common-apis/external-apis/index.html +131 -0
  21. package/coverage/rabbit-ui-kit/src/common-apis/external-apis/ipAddressProviders.js.html +352 -0
  22. package/coverage/rabbit-ui-kit/src/common-apis/fiatCurrenciesService.js.html +544 -0
  23. package/coverage/rabbit-ui-kit/src/common-apis/globalConstants.jsx.html +94 -0
  24. package/coverage/rabbit-ui-kit/src/common-apis/index.html +161 -0
  25. package/coverage/rabbit-ui-kit/src/common-apis/models/blockchain.js.html +115 -0
  26. package/coverage/rabbit-ui-kit/src/common-apis/models/coin.js.html +544 -0
  27. package/coverage/rabbit-ui-kit/src/common-apis/models/index.html +146 -0
  28. package/coverage/rabbit-ui-kit/src/common-apis/models/protocol.js.html +100 -0
  29. package/coverage/rabbit-ui-kit/src/common-apis/utils/cache.js.html +811 -0
  30. package/coverage/rabbit-ui-kit/src/common-apis/utils/emailAPI.js.html +133 -0
  31. package/coverage/rabbit-ui-kit/src/common-apis/utils/index.html +161 -0
  32. package/coverage/rabbit-ui-kit/src/common-apis/utils/logging/index.html +131 -0
  33. package/coverage/rabbit-ui-kit/src/common-apis/utils/logging/logger.js.html +208 -0
  34. package/coverage/rabbit-ui-kit/src/common-apis/utils/logging/logsStorage.js.html +268 -0
  35. package/coverage/rabbit-ui-kit/src/common-apis/utils/postponeExecution.js.html +118 -0
  36. package/coverage/rabbit-ui-kit/src/common-apis/utils/safeStringify.js.html +235 -0
  37. package/coverage/rabbit-ui-kit/src/index.html +116 -0
  38. package/coverage/rabbit-ui-kit/src/index.js.html +358 -0
  39. package/coverage/rabbit-ui-kit/src/robust-api-caller/cacheAndConcurrentRequestsResolver.js.html +1570 -0
  40. package/coverage/rabbit-ui-kit/src/robust-api-caller/cachedRobustExternalApiCallerService.js.html +526 -0
  41. package/coverage/rabbit-ui-kit/src/robust-api-caller/cancelProcessing.js.html +172 -0
  42. package/coverage/rabbit-ui-kit/src/robust-api-caller/concurrentCalculationsMetadataHolder.js.html +310 -0
  43. package/coverage/rabbit-ui-kit/src/robust-api-caller/externalApiProvider.js.html +553 -0
  44. package/coverage/rabbit-ui-kit/src/robust-api-caller/externalServicesStatsCollector.js.html +319 -0
  45. package/coverage/rabbit-ui-kit/src/robust-api-caller/index.html +206 -0
  46. package/coverage/rabbit-ui-kit/src/robust-api-caller/robustExternalAPICallerService.js.html +997 -0
  47. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/index.html +146 -0
  48. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/letsExchangeSwapProvider.js.html +1543 -0
  49. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/swapProvider.js.html +1705 -0
  50. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/swapspaceSwapProvider.js.html +1801 -0
  51. package/coverage/rabbit-ui-kit/src/swaps-lib/models/baseSwapCreationInfo.js.html +223 -0
  52. package/coverage/rabbit-ui-kit/src/swaps-lib/models/existingSwap.js.html +304 -0
  53. package/coverage/rabbit-ui-kit/src/swaps-lib/models/existingSwapWithFiatData.js.html +469 -0
  54. package/coverage/rabbit-ui-kit/src/swaps-lib/models/index.html +176 -0
  55. package/coverage/rabbit-ui-kit/src/swaps-lib/models/partner.js.html +106 -0
  56. package/coverage/rabbit-ui-kit/src/swaps-lib/models/swapProviderCoinInfo.js.html +193 -0
  57. package/coverage/rabbit-ui-kit/src/swaps-lib/services/index.html +116 -0
  58. package/coverage/rabbit-ui-kit/src/swaps-lib/services/publicSwapService.js.html +2161 -0
  59. package/coverage/rabbit-ui-kit/src/swaps-lib/utils/index.html +116 -0
  60. package/coverage/rabbit-ui-kit/src/swaps-lib/utils/swapUtils.js.html +670 -0
  61. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/arrowIcon.jsx.html +124 -0
  62. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/arrowTosca.jsx.html +127 -0
  63. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/arrowWhite.jsx.html +127 -0
  64. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/darkRectangle.jsx.html +106 -0
  65. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/determinedError.jsx.html +439 -0
  66. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/failedValidationIcon.jsx.html +202 -0
  67. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/index.html +281 -0
  68. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/infoIcon.jsx.html +133 -0
  69. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/messageIcon.jsx.html +346 -0
  70. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/noticeQuestionIcon.jsx.html +247 -0
  71. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/successfulValidationIcon.jsx.html +163 -0
  72. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/supportDialogImage.jsx.html +268 -0
  73. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/walletIcon.jsx.html +151 -0
  74. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/AssetIcon/AssetIcon.jsx.html +256 -0
  75. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/AssetIcon/index.html +116 -0
  76. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/AssetSelection/AssetSelection.jsx.html +289 -0
  77. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/AssetSelection/index.html +116 -0
  78. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/BackgroundTitle/BackgroundTitle.jsx.html +187 -0
  79. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/BackgroundTitle/index.html +116 -0
  80. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/InformationMessage/InformationMessage.jsx.html +238 -0
  81. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/InformationMessage/index.html +116 -0
  82. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Input/Input.jsx.html +634 -0
  83. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Input/index.html +116 -0
  84. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/LoadingDots/LoadingDots.jsx.html +196 -0
  85. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/LoadingDots/index.html +116 -0
  86. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/NoticeIcon/NoticeIcon.jsx.html +277 -0
  87. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/NoticeIcon/index.html +116 -0
  88. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/QrCode/QrCode.jsx.html +217 -0
  89. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/QrCode/index.html +116 -0
  90. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/RateSelector/RateSelector.jsx.html +175 -0
  91. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/RateSelector/index.html +116 -0
  92. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/SupportChat/SupportChat.jsx.html +217 -0
  93. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/SupportChat/index.html +116 -0
  94. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Textarea/Textarea.jsx.html +529 -0
  95. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Textarea/index.html +116 -0
  96. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/TitleBox/TitleBox.jsx.html +508 -0
  97. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/TitleBox/index.html +116 -0
  98. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Tooltip/Tooltip.jsx.html +316 -0
  99. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Tooltip/index.html +116 -0
  100. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/TwoLinesOfText/LinesOfText.jsx.html +313 -0
  101. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/TwoLinesOfText/index.html +116 -0
  102. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Validation/Validation.jsx.html +202 -0
  103. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Validation/index.html +116 -0
  104. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/Button/Button.jsx.html +712 -0
  105. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/Button/index.html +116 -0
  106. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/Close/Close.jsx.html +259 -0
  107. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/Close/index.html +116 -0
  108. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/LinkButton/LinkButton.jsx.html +421 -0
  109. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/LinkButton/index.html +116 -0
  110. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/RadioButtonWithText/RadioButtonWithText.jsx.html +415 -0
  111. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/RadioButtonWithText/index.html +116 -0
  112. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/AmountInput/AmountInput.jsx.html +1087 -0
  113. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/AmountInput/index.html +116 -0
  114. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/CoinPicker/CoinPicker.jsx.html +1474 -0
  115. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/CoinPicker/index.html +116 -0
  116. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/ColoredNotice/ColoredNotice.jsx.html +211 -0
  117. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/ColoredNotice/index.html +116 -0
  118. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/LineWithIconLink/LineWithIconLink.jsx.html +190 -0
  119. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/LineWithIconLink/index.html +116 -0
  120. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/LogoCarousel/LogoCarousel.jsx.html +283 -0
  121. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/LogoCarousel/index.html +116 -0
  122. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/SearchableCoinsList/SearchableCoinsList.jsx.html +496 -0
  123. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/SearchableCoinsList/index.html +116 -0
  124. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/TitledLineWithIconLink/TitledLineWithIconLink.jsx.html +181 -0
  125. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/TitledLineWithIconLink/index.html +116 -0
  126. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/CoinPickerDialogStep/CoinPickerDialogStep.jsx.html +283 -0
  127. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/CoinPickerDialogStep/index.html +116 -0
  128. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/Dialog.jsx.html +1567 -0
  129. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/DialogButtons/DialogButtons.jsx.html +481 -0
  130. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/DialogButtons/index.html +116 -0
  131. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/DialogStep/DialogStep.jsx.html +1747 -0
  132. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/DialogStep/index.html +116 -0
  133. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/index.html +116 -0
  134. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/SwapForm/SwapForm.jsx.html +4168 -0
  135. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/SwapForm/index.html +116 -0
  136. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/WaitlistSubscription/WaitlistSubscription.jsx.html +559 -0
  137. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/WaitlistSubscription/index.html +116 -0
  138. package/coverage/rabbit-ui-kit/src/ui-kit/components/templates/DeterminedErrorDialogStep/DeterminedErrorDialogStep.jsx.html +316 -0
  139. package/coverage/rabbit-ui-kit/src/ui-kit/components/templates/DeterminedErrorDialogStep/index.html +116 -0
  140. package/coverage/rabbit-ui-kit/src/ui-kit/hooks/index.html +146 -0
  141. package/coverage/rabbit-ui-kit/src/ui-kit/hooks/useCallHandlingErrors.js.html +151 -0
  142. package/coverage/rabbit-ui-kit/src/ui-kit/hooks/useIsHydrated.js.html +121 -0
  143. package/coverage/rabbit-ui-kit/src/ui-kit/hooks/useReferredState.js.html +157 -0
  144. package/coverage/rabbit-ui-kit/src/ui-kit/utils/index.html +161 -0
  145. package/coverage/rabbit-ui-kit/src/ui-kit/utils/inputValueProviders.js.html +235 -0
  146. package/coverage/rabbit-ui-kit/src/ui-kit/utils/textUtils.js.html +139 -0
  147. package/coverage/rabbit-ui-kit/src/ui-kit/utils/uiUtils.js.html +121 -0
  148. package/coverage/rabbit-ui-kit/src/ui-kit/utils/urlQueryUtils.js.html +271 -0
  149. package/coverage/rabbit-ui-kit/stories/atoms/BackgroundTitle.stories.jsx.html +202 -0
  150. package/coverage/rabbit-ui-kit/stories/atoms/LinesOfText.stories.jsx.html +283 -0
  151. package/coverage/rabbit-ui-kit/stories/atoms/LoadingDots.stories.jsx.html +226 -0
  152. package/coverage/rabbit-ui-kit/stories/atoms/QrCode.stories.jsx.html +175 -0
  153. package/coverage/rabbit-ui-kit/stories/atoms/RateSelector.stories.jsx.html +136 -0
  154. package/coverage/rabbit-ui-kit/stories/atoms/Validation.stories.jsx.html +178 -0
  155. package/coverage/rabbit-ui-kit/stories/atoms/buttons/Button.stories.jsx.html +883 -0
  156. package/coverage/rabbit-ui-kit/stories/atoms/buttons/Close.stories.jsx.html +211 -0
  157. package/coverage/rabbit-ui-kit/stories/atoms/buttons/LinkButton.stories.jsx.html +301 -0
  158. package/coverage/rabbit-ui-kit/stories/atoms/buttons/index.html +146 -0
  159. package/coverage/rabbit-ui-kit/stories/atoms/index.html +191 -0
  160. package/coverage/rabbit-ui-kit/stories/molecules/CoinPicker.stories.jsx.html +322 -0
  161. package/coverage/rabbit-ui-kit/stories/molecules/ColoredNotice.stories.jsx.html +178 -0
  162. package/coverage/rabbit-ui-kit/stories/molecules/LineWithIconLink.stories.jsx.html +154 -0
  163. package/coverage/rabbit-ui-kit/stories/molecules/LogoCarousel.stories.jsx.html +160 -0
  164. package/coverage/rabbit-ui-kit/stories/molecules/TitledLineWithIconLink.stories.jsx.html +160 -0
  165. package/coverage/rabbit-ui-kit/stories/molecules/index.html +176 -0
  166. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/Dialog.stories.jsx.html +523 -0
  167. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogButtons/DialogButtons.stories.jsx.html +328 -0
  168. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogButtons/index.html +116 -0
  169. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogStep/DialogStep.stories.jsx.html +337 -0
  170. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogStep/index.html +116 -0
  171. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/index.html +116 -0
  172. package/coverage/rabbit-ui-kit/stories/organisms/WaitlistSubscription.stories.jsx.html +151 -0
  173. package/coverage/rabbit-ui-kit/stories/organisms/index.html +116 -0
  174. package/coverage/rabbit-ui-kit/stories/stubs/coins.jsx.html +6880 -0
  175. package/coverage/rabbit-ui-kit/stories/stubs/exampleContent.jsx.html +145 -0
  176. package/coverage/rabbit-ui-kit/stories/stubs/index.html +131 -0
  177. package/coverage/rabbit-ui-kit/stories/templates/DeterminedErrorDialogStep.stories.jsx.html +190 -0
  178. package/coverage/rabbit-ui-kit/stories/templates/index.html +116 -0
  179. package/coverage/sort-arrow-sprite.png +0 -0
  180. package/coverage/sorter.js +196 -0
  181. package/dist/global.css.map +1 -1
  182. package/dist/index.cjs +1139 -496
  183. package/dist/index.cjs.map +1 -1
  184. package/dist/index.css +111 -0
  185. package/dist/index.css.map +1 -1
  186. package/dist/index.modern.js +950 -420
  187. package/dist/index.modern.js.map +1 -1
  188. package/dist/index.module.js +1136 -497
  189. package/dist/index.module.js.map +1 -1
  190. package/dist/index.umd.js +1139 -496
  191. package/dist/index.umd.js.map +1 -1
  192. package/package.json +1 -1
  193. package/src/index.js +4 -0
  194. package/src/swaps-lib/external-apis/letsExchangeSwapProvider.js +11 -0
  195. package/src/swaps-lib/external-apis/swapProvider.js +8 -0
  196. package/src/swaps-lib/external-apis/swapspaceSwapProvider.js +20 -1
  197. package/src/swaps-lib/models/partner.js +7 -0
  198. package/src/swaps-lib/services/publicSwapService.js +17 -0
  199. package/src/ui-kit/assets/styles/global.scss +4 -7
  200. package/src/ui-kit/assets/wrappedImages/messageIcon.jsx +87 -0
  201. package/src/ui-kit/assets/wrappedImages/supportDialogImage.jsx +61 -0
  202. package/src/ui-kit/components/atoms/RateSelector/RateSelector.jsx +2 -2
  203. package/src/ui-kit/components/atoms/Validation/Validation.jsx +7 -9
  204. package/src/ui-kit/components/atoms/Validation/validation.module.scss +4 -0
  205. package/src/ui-kit/components/molecules/AmountInput/AmountInput.jsx +57 -48
  206. package/src/ui-kit/components/molecules/AmountInput/amount-input.module.scss +34 -0
  207. package/src/ui-kit/components/molecules/CoinPicker/CoinPicker.jsx +84 -132
  208. package/src/ui-kit/components/molecules/ColoredNotice/ColoredNotice.jsx +42 -0
  209. package/src/ui-kit/components/molecules/ColoredNotice/colored-notice.module.scss +20 -0
  210. package/src/ui-kit/components/molecules/LogoCarousel/LogoCarousel.jsx +66 -0
  211. package/src/ui-kit/components/molecules/LogoCarousel/logo-carousel.module.scss +87 -0
  212. package/src/ui-kit/components/molecules/SearchableCoinsList/SearchableCoinsList.jsx +137 -0
  213. package/src/ui-kit/components/organisms/Dialog/DialogButtons/DialogButtons.jsx +10 -0
  214. package/src/ui-kit/components/organisms/Dialog/DialogStep/DialogStep.jsx +16 -0
  215. package/src/ui-kit/components/organisms/SwapForm/SwapForm.jsx +35 -12
  216. package/src/ui-kit/components/organisms/WaitlistSubscription/WaitlistSubscription.jsx +158 -0
@@ -1,7 +1,7 @@
1
1
  import React, { useState, useRef, useEffect, useCallback, forwardRef } from 'react';
2
2
  import { CSSTransition } from 'react-transition-group';
3
3
  import AnimateHeight from 'react-animate-height';
4
- import ResizeObserver from 'resize-observer-polyfill';
4
+ import ResizeObserver$1 from 'resize-observer-polyfill';
5
5
  import { clearAllBodyScrollLocks, enableBodyScroll, disableBodyScroll } from 'body-scroll-lock';
6
6
  import animateScrollTo from 'animated-scroll-to';
7
7
  import copy from 'clipboard-copy';
@@ -1414,7 +1414,7 @@ SupportChat.defaultProps = {
1414
1414
  locale: "en"
1415
1415
  };
1416
1416
 
1417
- var s$m = {"asset-icon":"_0RwWA","small":"_QL4L6","asset-icon-primary":"_ltTJa","asset-icon-secondary":"_3rtPy"};
1417
+ var s$o = {"asset-icon":"_0RwWA","small":"_QL4L6","asset-icon-primary":"_ltTJa","asset-icon-secondary":"_3rtPy"};
1418
1418
 
1419
1419
  /**
1420
1420
  * AssetIcon component to display an icon for an asset.
@@ -1437,16 +1437,16 @@ const AssetIcon = ({
1437
1437
  e.target.src = _fallbackSrc;
1438
1438
  };
1439
1439
  return /*#__PURE__*/React.createElement("div", {
1440
- className: s$m["asset-icon"] + (_small ? " " + s$m["small"] : "")
1440
+ className: s$o["asset-icon"] + (_small ? " " + s$o["small"] : "")
1441
1441
  }, /*#__PURE__*/React.createElement("img", {
1442
1442
  src: assetIconSrc,
1443
- className: s$m["asset-icon-primary"] + (_small ? " " + s$m["small"] : ""),
1443
+ className: s$o["asset-icon-primary"] + (_small ? " " + s$o["small"] : ""),
1444
1444
  alt: " ",
1445
1445
  onError: handleFailedLoad,
1446
1446
  loading: "lazy"
1447
1447
  }), _assetIconProtocolSrc ? /*#__PURE__*/React.createElement("img", {
1448
1448
  src: _assetIconProtocolSrc,
1449
- className: s$m["asset-icon-secondary"] + (_small ? " " + s$m["small"] : ""),
1449
+ className: s$o["asset-icon-secondary"] + (_small ? " " + s$o["small"] : ""),
1450
1450
  alt: " ",
1451
1451
  onError: handleFailedLoad,
1452
1452
  loading: "lazy"
@@ -1604,7 +1604,7 @@ function useCallHandlingErrors() {
1604
1604
  }, []);
1605
1605
  }
1606
1606
 
1607
- var s$l = {"link-button-text":"_1Qn04","link-button":"_UDMz-","disabled":"_UtHO6","icon-rotate-90deg":"_v0g-W","icon-rotate-180deg":"_oxet9","icon-rotate-270deg":"_0aAbG","colored":"_UlsXW"};
1607
+ var s$n = {"link-button-text":"_1Qn04","link-button":"_UDMz-","disabled":"_UtHO6","icon-rotate-90deg":"_v0g-W","icon-rotate-180deg":"_oxet9","icon-rotate-270deg":"_0aAbG","colored":"_UlsXW"};
1608
1608
 
1609
1609
  const ICON_ROTATE_OPTIONS = {
1610
1610
  rotate0: "0deg",
@@ -1661,14 +1661,14 @@ const LinkButton = ({
1661
1661
  return isLoading ? /*#__PURE__*/React.createElement(LoadingDots, {
1662
1662
  isColored: true
1663
1663
  }) : /*#__PURE__*/React.createElement("div", {
1664
- className: s$l["link-button"] + ` ${processedIconRotation && processedIconRotation !== ICON_ROTATE_OPTIONS.rotate0 ? " " + s$l["icon-rotate-" + processedIconRotation] : ""} ${_isDisabled ? " " + s$l["disabled"] : ""}`,
1664
+ className: s$n["link-button"] + ` ${processedIconRotation && processedIconRotation !== ICON_ROTATE_OPTIONS.rotate0 ? " " + s$n["icon-rotate-" + processedIconRotation] : ""} ${_isDisabled ? " " + s$n["disabled"] : ""}`,
1665
1665
  onClick: handleClick
1666
1666
  }, icon ? /*#__PURE__*/React.createElement("img", {
1667
1667
  src: icon,
1668
1668
  alt: "link button alt",
1669
1669
  loading: "lazy"
1670
1670
  }) : null, IconComponent ? /*#__PURE__*/React.createElement(IconComponent, null) : null, /*#__PURE__*/React.createElement("p", {
1671
- className: s$l["link-button-text"] + ` ${_isColored ? s$l["colored"] : ""} ${_isDisabled ? s$l["disabled"] : ""}`
1671
+ className: s$n["link-button-text"] + ` ${_isColored ? s$n["colored"] : ""} ${_isDisabled ? s$n["disabled"] : ""}`
1672
1672
  }, _content));
1673
1673
  };
1674
1674
  LinkButton.propTypes = {
@@ -1691,7 +1691,7 @@ LinkButton.defaultProps = {
1691
1691
  iconRotate: ICON_ROTATE_OPTIONS.rotate0
1692
1692
  };
1693
1693
 
1694
- var s$k = {"dialog-buttons":"_UtFG3","hide-on-mobiles":"_fVQUd","space-between-layout":"_zVTkC"};
1694
+ var s$m = {"dialog-buttons":"_UtFG3","hide-on-mobiles":"_fVQUd","space-between-layout":"_zVTkC"};
1695
1695
 
1696
1696
  /**
1697
1697
  * Renders a dialog component with configurable primary and secondary buttons.
@@ -1702,11 +1702,13 @@ var s$k = {"dialog-buttons":"_UtFG3","hide-on-mobiles":"_fVQUd","space-between-l
1702
1702
  * @param {Object} props - Props for configuring the DialogButtons.
1703
1703
  * @param {string} [props.primaryButtonTitle] - The text to display on the primary button.
1704
1704
  * @param {Function} props.primaryButtonOnClick - Function to call when the primary button is clicked.
1705
+ * @param {boolean} props.primaryButtonEnabled - Determines whether the secondary button is enabled.
1705
1706
  * @param {boolean} [props.primaryButtonLoader=false] - Whether to show a loader on the primary button.
1706
1707
  * @param {string} [props.primaryButtonTo] - The URL or route the primary button should navigate to.
1707
1708
  * @param {Function} [props.primaryButtonSetClickTrigger] - Additional click handling logic for the primary button.
1708
1709
  * @param {string} [props.secondaryButtonTitle] - The text to display on the secondary button.
1709
1710
  * @param {Function} props.secondaryButtonOnClick - Function to call when the secondary button is clicked.
1711
+ * @param {boolean} props.secondaryButtonEnabled - Determines whether the primary button is enabled.
1710
1712
  * @param {string} [props.secondaryButtonTo] - The URL or route the secondary button should navigate to.
1711
1713
  * @param {boolean} [props.secondaryButtonBig=false] - Makes the secondary button larger for visual emphasis.
1712
1714
  * @param {boolean} [props.withBackgroundImage=false] - Indicates if the button should adjust its styling for background images.
@@ -1716,11 +1718,13 @@ var s$k = {"dialog-buttons":"_UtFG3","hide-on-mobiles":"_fVQUd","space-between-l
1716
1718
  const DialogButtons = ({
1717
1719
  primaryButtonTitle,
1718
1720
  primaryButtonOnClick,
1721
+ primaryButtonEnabled,
1719
1722
  primaryButtonLoader: _primaryButtonLoader = false,
1720
1723
  primaryButtonTo,
1721
1724
  primaryButtonSetClickTrigger,
1722
1725
  secondaryButtonTitle,
1723
1726
  secondaryButtonOnClick,
1727
+ secondaryButtonEnabled,
1724
1728
  secondaryButtonTo,
1725
1729
  secondaryButtonBig: _secondaryButtonBig = false,
1726
1730
  withBackgroundImage: _withBackgroundImage = false,
@@ -1728,7 +1732,7 @@ const DialogButtons = ({
1728
1732
  }) => {
1729
1733
  const callHandlingErrors = useCallHandlingErrors();
1730
1734
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
1731
- className: s$k["dialog-buttons"] + (_hideOnMobiles ? " " + s$k["hide-on-mobiles"] : "") + (_secondaryButtonBig ? " " + s$k["space-between-layout"] : "")
1735
+ className: s$m["dialog-buttons"] + (_hideOnMobiles ? " " + s$m["hide-on-mobiles"] : "") + (_secondaryButtonBig ? " " + s$m["space-between-layout"] : "")
1732
1736
  }, secondaryButtonTitle ? secondaryButtonTo ? /*#__PURE__*/React.createElement(Button, {
1733
1737
  mode: "primary-transparent",
1734
1738
  to: secondaryButtonTo,
@@ -1737,7 +1741,8 @@ const DialogButtons = ({
1737
1741
  fullWidthOnMobiles: true,
1738
1742
  content: secondaryButtonTitle,
1739
1743
  onClick: secondaryButtonOnClick,
1740
- handleError: callHandlingErrors
1744
+ handleError: callHandlingErrors,
1745
+ isDisabled: !secondaryButtonEnabled
1741
1746
  }) : _secondaryButtonBig ? /*#__PURE__*/React.createElement(Button, {
1742
1747
  mode: "transparent",
1743
1748
  size: "lg",
@@ -1745,11 +1750,13 @@ const DialogButtons = ({
1745
1750
  fullWidthOnMobiles: true,
1746
1751
  content: secondaryButtonTitle,
1747
1752
  onClick: secondaryButtonOnClick,
1748
- handleError: callHandlingErrors
1753
+ handleError: callHandlingErrors,
1754
+ isDisabled: !secondaryButtonEnabled
1749
1755
  }) : /*#__PURE__*/React.createElement(LinkButton, {
1750
1756
  onClick: secondaryButtonOnClick,
1751
1757
  content: secondaryButtonTitle,
1752
- isColored: !_withBackgroundImage
1758
+ isColored: !_withBackgroundImage,
1759
+ isDisabled: !secondaryButtonEnabled
1753
1760
  }) : null, primaryButtonTitle ? /*#__PURE__*/React.createElement(Button, {
1754
1761
  mode: "primary",
1755
1762
  size: "lg",
@@ -1759,17 +1766,20 @@ const DialogButtons = ({
1759
1766
  fullWidthOnMobiles: true,
1760
1767
  content: primaryButtonTitle,
1761
1768
  setClickTrigger: primaryButtonSetClickTrigger,
1762
- handleError: callHandlingErrors
1769
+ handleError: callHandlingErrors,
1770
+ isDisabled: !primaryButtonEnabled
1763
1771
  }) : null));
1764
1772
  };
1765
1773
  DialogButtons.propTypes = {
1766
1774
  primaryButtonTitle: PropTypes.string,
1767
1775
  primaryButtonOnClick: PropTypes.func,
1776
+ primaryButtonEnabled: PropTypes.bool,
1768
1777
  primaryButtonLoader: PropTypes.bool,
1769
1778
  primaryButtonTo: PropTypes.string,
1770
1779
  primaryButtonSetClickTrigger: PropTypes.func,
1771
1780
  secondaryButtonTitle: PropTypes.string,
1772
1781
  secondaryButtonOnClick: PropTypes.func,
1782
+ secondaryButtonEnabled: PropTypes.bool,
1773
1783
  secondaryButtonTo: PropTypes.string,
1774
1784
  secondaryButtonBig: PropTypes.bool,
1775
1785
  withBackgroundImage: PropTypes.bool,
@@ -1782,7 +1792,7 @@ DialogButtons.defaultProps = {
1782
1792
  hideOnMobiles: false
1783
1793
  };
1784
1794
 
1785
- var s$j = {"background-title":"_Gzho7","background-title-wrapper":"_Rvcyg","small-margins":"_WjuWI","background-title-wrapper-text":"_cAVcA"};
1795
+ var s$l = {"background-title":"_Gzho7","background-title-wrapper":"_Rvcyg","small-margins":"_WjuWI","background-title-wrapper-text":"_cAVcA"};
1786
1796
 
1787
1797
  /**
1788
1798
  * Component for displaying a title with a fancy background text, which
@@ -1798,11 +1808,11 @@ const BackgroundTitle = ({
1798
1808
  smallMargins: _smallMargins = false
1799
1809
  }) => {
1800
1810
  return /*#__PURE__*/React.createElement("div", {
1801
- className: s$j["background-title"]
1811
+ className: s$l["background-title"]
1802
1812
  }, /*#__PURE__*/React.createElement("div", {
1803
- className: s$j["background-title-wrapper"] + (_smallMargins ? " " + s$j["small-margins"] : "")
1813
+ className: s$l["background-title-wrapper"] + (_smallMargins ? " " + s$l["small-margins"] : "")
1804
1814
  }, /*#__PURE__*/React.createElement("div", {
1805
- className: s$j["background-title-wrapper-text"] + (_smallMargins ? " " + s$j["small-margins"] : "")
1815
+ className: s$l["background-title-wrapper-text"] + (_smallMargins ? " " + s$l["small-margins"] : "")
1806
1816
  }, text)));
1807
1817
  };
1808
1818
  BackgroundTitle.propTypes = {
@@ -1813,7 +1823,7 @@ BackgroundTitle.defaultProps = {
1813
1823
  smallMargins: false
1814
1824
  };
1815
1825
 
1816
- var s$i = {"close":"_yMoDc","large":"_clOG2","white":"_145xN","dark-invert":"_-CvSS","dark":"_tTNnu"};
1826
+ var s$k = {"close":"_yMoDc","large":"_clOG2","white":"_145xN","dark-invert":"_-CvSS","dark":"_tTNnu"};
1817
1827
 
1818
1828
  const CLOSE_COLORS = {
1819
1829
  WHITE: "white",
@@ -1839,7 +1849,7 @@ const Close = ({
1839
1849
  }) => {
1840
1850
  const callHandlingErrors = useCallHandlingErrors();
1841
1851
  return /*#__PURE__*/React.createElement("svg", {
1842
- className: s$i["close"] + " " + s$i[_color] + (_large ? " " + s$i["large"] : ""),
1852
+ className: s$k["close"] + " " + s$k[_color] + (_large ? " " + s$k["large"] : ""),
1843
1853
  onClick: e => callHandlingErrors(_onClick, e),
1844
1854
  style: {
1845
1855
  cursor: "pointer"
@@ -1863,7 +1873,7 @@ Close.defaultProps = {
1863
1873
  large: false
1864
1874
  };
1865
1875
 
1866
- var s$h = {"validation-text":"_VIr-M","validation":"_L3OdW"};
1876
+ var s$j = {"validation-text":"_VIr-M","validation":"_L3OdW"};
1867
1877
 
1868
1878
  var SuccessfulValidationIcon = (() => /*#__PURE__*/React.createElement("svg", {
1869
1879
  width: "27",
@@ -1957,15 +1967,15 @@ const Validation = ({
1957
1967
  isSuccessAlert
1958
1968
  }) => {
1959
1969
  return /*#__PURE__*/React.createElement("div", {
1960
- className: s$h["validation"]
1961
- }, /*#__PURE__*/React.createElement("div", null, isSuccessAlert ?
1970
+ className: s$j["validation"]
1971
+ }, isSuccessAlert ?
1962
1972
  /*#__PURE__*/
1963
1973
  // <img src={successfulValidationIcon} alt="validation icon" />
1964
1974
  React.createElement(SuccessfulValidationIcon, null) :
1965
1975
  /*#__PURE__*/
1966
1976
  // <img src={failedValidationIcon} alt="validation icon" />
1967
- React.createElement(FailedValidationIcon, null)), /*#__PURE__*/React.createElement("span", {
1968
- className: s$h["validation-text"]
1977
+ React.createElement(FailedValidationIcon, null), /*#__PURE__*/React.createElement("span", {
1978
+ className: s$j["validation-text"]
1969
1979
  }, _text));
1970
1980
  };
1971
1981
  Validation.propTypes = {
@@ -2049,7 +2059,7 @@ function logErrorOrOutputToConsole(e) {
2049
2059
  }
2050
2060
  }
2051
2061
 
2052
- var s$g = {"dialog":"_AyHwj","hidden":"_hX4Lf","vertical-overflow-disabled":"_gRENy","inline":"_Da-tZ","dialog-transition-enter":"_0YlL9","scrollable":"_LaCqO","dialog-transition-enter-active":"_j35L1","dialog-transition-exit":"_lGJtS","dialog-transition-exit-active":"_Vg6Z2","fixed-buttons-container":"_ZNfnj","fixed-buttons-container-enter":"_vi-ug","fixed-buttons-container-enter-active":"_rIo-s","fixed-buttons-container-enter-done":"_5aNZC","fixed-buttons-container-exit":"_3ImpU","fixed-buttons-container-exit-active":"_dk-DE","fixed-buttons-container-exit-done":"_h9qrO","dialog-wrapper":"_HhhGp","animation-disabled":"_f8vf5","wide":"_hVh9o","dialog-wrapper-rah-content":"_ioVHo","dialog-wrapper-controls-top-padding":"_1bNLu","dialog-wrapper-close":"_nCuuj"};
2062
+ var s$i = {"dialog":"_AyHwj","hidden":"_hX4Lf","vertical-overflow-disabled":"_gRENy","inline":"_Da-tZ","dialog-transition-enter":"_0YlL9","scrollable":"_LaCqO","dialog-transition-enter-active":"_j35L1","dialog-transition-exit":"_lGJtS","dialog-transition-exit-active":"_Vg6Z2","fixed-buttons-container":"_ZNfnj","fixed-buttons-container-enter":"_vi-ug","fixed-buttons-container-enter-active":"_rIo-s","fixed-buttons-container-enter-done":"_5aNZC","fixed-buttons-container-exit":"_3ImpU","fixed-buttons-container-exit-active":"_dk-DE","fixed-buttons-container-exit-done":"_h9qrO","dialog-wrapper":"_HhhGp","animation-disabled":"_f8vf5","wide":"_hVh9o","dialog-wrapper-rah-content":"_ioVHo","dialog-wrapper-controls-top-padding":"_1bNLu","dialog-wrapper-close":"_nCuuj"};
2053
2063
 
2054
2064
  const DIALOG_SIZES = {
2055
2065
  small: {
@@ -2288,7 +2298,7 @@ const Dialog = ({
2288
2298
  }, [animationConfiguration]);
2289
2299
  useEffect(() => {
2290
2300
  if (currentStepRef.current) {
2291
- resizeObserverRef.current = new ResizeObserver((entries = []) => {
2301
+ resizeObserverRef.current = new ResizeObserver$1((entries = []) => {
2292
2302
  entries.forEach(entry => {
2293
2303
  const {
2294
2304
  width,
@@ -2365,10 +2375,10 @@ const Dialog = ({
2365
2375
  in: showDialogProcessed,
2366
2376
  timeout: DIALOG_TRANSITION_STEP_DURATION,
2367
2377
  classNames: _inline ? undefined : {
2368
- enter: s$g["dialog-transition-enter"],
2369
- enterActive: s$g["dialog-transition-enter-active"],
2370
- exit: s$g["dialog-transition-exit"],
2371
- exitActive: s$g["dialog-transition-exit-active"]
2378
+ enter: s$i["dialog-transition-enter"],
2379
+ enterActive: s$i["dialog-transition-enter-active"],
2380
+ exit: s$i["dialog-transition-exit"],
2381
+ exitActive: s$i["dialog-transition-exit-active"]
2372
2382
  },
2373
2383
  unmountOnExit: true,
2374
2384
  onExited: () => {
@@ -2387,13 +2397,13 @@ const Dialog = ({
2387
2397
  disableBodyScroll(dialogRef.current);
2388
2398
  }
2389
2399
  }, /*#__PURE__*/React.createElement("div", {
2390
- className: s$g["dialog"] + " " + (dialogVerticalHeight > 1 || !isMultiStep ? "" : " " + s$g["hidden"]) + (animationConfiguration.dialogContainerOverflowDisabled ? " " + s$g["vertical-overflow-disabled"] : "") + (_inline ? " " + s$g["inline"] : ""),
2400
+ className: s$i["dialog"] + " " + (dialogVerticalHeight > 1 || !isMultiStep ? "" : " " + s$i["hidden"]) + (animationConfiguration.dialogContainerOverflowDisabled ? " " + s$i["vertical-overflow-disabled"] : "") + (_inline ? " " + s$i["inline"] : ""),
2391
2401
  ref: dialogRef
2392
2402
  }, /*#__PURE__*/React.createElement("div", {
2393
- className: s$g["scrollable"] + (_inline ? " " + s$g["inline"] : ""),
2403
+ className: s$i["scrollable"] + (_inline ? " " + s$i["inline"] : ""),
2394
2404
  ref: scrollableRef
2395
2405
  }, /*#__PURE__*/React.createElement("div", {
2396
- className: s$g["dialog-wrapper"] + (animationConfiguration.wrapperWidthAnimationEnabled ? "" : " " + s$g["animation-disabled"]) + (_inline ? " " + s$g["inline"] : ""),
2406
+ className: s$i["dialog-wrapper"] + (animationConfiguration.wrapperWidthAnimationEnabled ? "" : " " + s$i["animation-disabled"]) + (_inline ? " " + s$i["inline"] : ""),
2397
2407
  ref: dialogWrapperRef,
2398
2408
  style: dialogConfiguration.customWidth !== "" ? {
2399
2409
  maxWidth: dialogConfiguration.customWidth
@@ -2404,9 +2414,9 @@ const Dialog = ({
2404
2414
  duration: animationConfiguration.animateHeightTransitionEnabled ? animationConfiguration.animateHeightTransitionSpeed : 0,
2405
2415
  delay: animationConfiguration.animateHeightTransitionEnabled ? animationConfiguration.animateHeightDelay : 0,
2406
2416
  height: isMultiStep ? dialogVerticalHeight : "auto",
2407
- contentClassName: s$g["dialog-wrapper-rah-content"]
2417
+ contentClassName: s$i["dialog-wrapper-rah-content"]
2408
2418
  }, _inline ? "" : /*#__PURE__*/React.createElement("div", {
2409
- className: s$g["dialog-wrapper-close"]
2419
+ className: s$i["dialog-wrapper-close"]
2410
2420
  }, /*#__PURE__*/React.createElement(Close, {
2411
2421
  color: "dark",
2412
2422
  onClick: e => _onClose(),
@@ -2417,16 +2427,16 @@ const Dialog = ({
2417
2427
  // classNames={s["fixed-buttons-container"]}
2418
2428
  ,
2419
2429
  classNames: {
2420
- enter: s$g["fixed-buttons-container-enter"],
2421
- enterActive: s$g["fixed-buttons-container-enter-active"],
2422
- enterDone: s$g["fixed-buttons-container-enter-done"],
2423
- exit: s$g["fixed-buttons-container-exit"],
2424
- exitActive: s$g["fixed-buttons-container-exit-active"],
2425
- exitDone: s$g["fixed-buttons-container-exit-done"]
2430
+ enter: s$i["fixed-buttons-container-enter"],
2431
+ enterActive: s$i["fixed-buttons-container-enter-active"],
2432
+ enterDone: s$i["fixed-buttons-container-enter-done"],
2433
+ exit: s$i["fixed-buttons-container-exit"],
2434
+ exitActive: s$i["fixed-buttons-container-exit-active"],
2435
+ exitDone: s$i["fixed-buttons-container-exit-done"]
2426
2436
  },
2427
2437
  unmountOnExit: true
2428
2438
  }, /*#__PURE__*/React.createElement("div", {
2429
- className: s$g["fixed-buttons-container"]
2439
+ className: s$i["fixed-buttons-container"]
2430
2440
  }, /*#__PURE__*/React.createElement(DialogButtons, buttonsConfiguration)))));
2431
2441
  };
2432
2442
  Dialog.propTypes = {
@@ -2479,7 +2489,7 @@ var arrowWhite = (() => /*#__PURE__*/React.createElement("svg", {
2479
2489
  "stroke-linejoin": "round"
2480
2490
  })));
2481
2491
 
2482
- var s$f = {"dialog-step":"_0e-Qk","dialog":"_hKHTW","hidden":"_OT1zR","vertical-overflow-disabled":"_r1zu9","inline":"_Fl90j","dialog-transition-enter":"_I2XgD","scrollable":"_bzLMI","dialog-transition-enter-active":"_oVr8Y","dialog-transition-exit":"_Z16VM","dialog-transition-exit-active":"_n15oq","fixed-buttons-container":"_wROD2","fixed-buttons-container-enter":"_sjNeR","fixed-buttons-container-enter-active":"_ClXNv","fixed-buttons-container-enter-done":"_RFDsV","fixed-buttons-container-exit":"_biF1s","fixed-buttons-container-exit-active":"_rnsbL","fixed-buttons-container-exit-done":"_fq5hb","dialog-wrapper":"_f3-0r","animation-disabled":"_WC3TT","wide":"_KzekW","dialog-wrapper-rah-content":"_RQkF-","dialog-wrapper-controls-top-padding":"_4IXJZ","dialog-wrapper-close":"_ursQ7","single-step":"_uhIvi","current":"_cf5Kv","with-background":"_50qat","prev":"_XwrWV","next":"_rWauR","dialog-step-background-image":"_BGO3z","dialog-step-background-image-desktop":"_JHVKU","dialog-step-background-image-mobile":"_XCWwZ","primary":"_CZCMe","dialog-step-wrapper":"_abWKW","slideToLeft":"_gUTFZ","slideToRight":"_IvqZI","appear-from-left":"_kCimd","slideFromLeft":"_Qn75y","appear-from-right":"_IJNy-","slideFromRight":"_-pa-6","dialog-step-wrapper-back-button":"_RtjTj","dialog-step-wrapper-header":"_-n02U","text-left":"_KgtZY","with-background-image":"_Lvz6f","dialog-step-wrapper-header-logo":"_ICMMd","dialog-step-wrapper-header-title":"_Sit8v","without-logo":"_GuW8x","close-button-padding":"_ovES2","no-close-button-padding":"_sFNQz","dialog-step-wrapper-header-title-icon":"_Ygqlx","dialog-step-wrapper-header-title-coin-icon":"_wQKfR","dialog-step-wrapper-header-title-loading":"_pR41Y","dialog-step-wrapper-header-title-text-content":"_-kVUI","white":"_JShTb","dialog-step-wrapper-header-text":"_a7sff","break-words":"_I16HH","small-margin":"_w6f6j","no-margin":"_RF8u-","dialog-step-wrapper-content":"_dgGiX","align-left":"_9c1qs","align-center":"_z0o-e","align-right":"_-6p5j","dialog-step-wrapper-buttons":"_uuxmx","big-margin":"_U-vR6"};
2492
+ var s$h = {"dialog-step":"_0e-Qk","dialog":"_hKHTW","hidden":"_OT1zR","vertical-overflow-disabled":"_r1zu9","inline":"_Fl90j","dialog-transition-enter":"_I2XgD","scrollable":"_bzLMI","dialog-transition-enter-active":"_oVr8Y","dialog-transition-exit":"_Z16VM","dialog-transition-exit-active":"_n15oq","fixed-buttons-container":"_wROD2","fixed-buttons-container-enter":"_sjNeR","fixed-buttons-container-enter-active":"_ClXNv","fixed-buttons-container-enter-done":"_RFDsV","fixed-buttons-container-exit":"_biF1s","fixed-buttons-container-exit-active":"_rnsbL","fixed-buttons-container-exit-done":"_fq5hb","dialog-wrapper":"_f3-0r","animation-disabled":"_WC3TT","wide":"_KzekW","dialog-wrapper-rah-content":"_RQkF-","dialog-wrapper-controls-top-padding":"_4IXJZ","dialog-wrapper-close":"_ursQ7","single-step":"_uhIvi","current":"_cf5Kv","with-background":"_50qat","prev":"_XwrWV","next":"_rWauR","dialog-step-background-image":"_BGO3z","dialog-step-background-image-desktop":"_JHVKU","dialog-step-background-image-mobile":"_XCWwZ","primary":"_CZCMe","dialog-step-wrapper":"_abWKW","slideToLeft":"_gUTFZ","slideToRight":"_IvqZI","appear-from-left":"_kCimd","slideFromLeft":"_Qn75y","appear-from-right":"_IJNy-","slideFromRight":"_-pa-6","dialog-step-wrapper-back-button":"_RtjTj","dialog-step-wrapper-header":"_-n02U","text-left":"_KgtZY","with-background-image":"_Lvz6f","dialog-step-wrapper-header-logo":"_ICMMd","dialog-step-wrapper-header-title":"_Sit8v","without-logo":"_GuW8x","close-button-padding":"_ovES2","no-close-button-padding":"_sFNQz","dialog-step-wrapper-header-title-icon":"_Ygqlx","dialog-step-wrapper-header-title-coin-icon":"_wQKfR","dialog-step-wrapper-header-title-loading":"_pR41Y","dialog-step-wrapper-header-title-text-content":"_-kVUI","white":"_JShTb","dialog-step-wrapper-header-text":"_a7sff","break-words":"_I16HH","small-margin":"_w6f6j","no-margin":"_RF8u-","dialog-step-wrapper-content":"_dgGiX","align-left":"_9c1qs","align-center":"_z0o-e","align-right":"_-6p5j","dialog-step-wrapper-buttons":"_uuxmx","big-margin":"_U-vR6"};
2483
2493
 
2484
2494
  const DIALOG_STEP_CLASS = "dialog-step";
2485
2495
 
@@ -2500,9 +2510,11 @@ const DIALOG_STEP_CLASS = "dialog-step";
2500
2510
  * @param {string} props.subtitle - Step subtitle.
2501
2511
  * @param {string} props.backButtonText - Secondary button title.
2502
2512
  * @param {function} props.backButtonClick - Secondary button click handler.
2513
+ * @param {boolean} props.backButtonEnabled - Determines whether the secondary button is enabled.
2503
2514
  * @param {string} props.backButtonTo - Secondary button link.
2504
2515
  * @param {string} props.confirmButtonText - Primary button title.
2505
2516
  * @param {function} props.confirmButtonClick - Primary button click handler.
2517
+ * @param {boolean} props.confirmButtonEnabled - Determines whether the primary button is enabled.
2506
2518
  * @param {string} props.confirmButtonLink - Primary button link.
2507
2519
  * @param {boolean} props.primaryButtonLoader - Enable loader for the primary button.
2508
2520
  * @param {boolean} props.fixedButtons - Enable fixed buttons in the bottom for mobile devices.
@@ -2539,9 +2551,11 @@ const DialogStep = ({
2539
2551
  subtitle: _subtitle = "",
2540
2552
  backButtonText: _backButtonText = "",
2541
2553
  backButtonClick: _backButtonClick = () => {},
2554
+ backButtonEnabled: _backButtonEnabled = true,
2542
2555
  backButtonTo: _backButtonTo = "",
2543
2556
  confirmButtonText: _confirmButtonText = "",
2544
2557
  confirmButtonClick: _confirmButtonClick = () => {},
2558
+ confirmButtonEnabled: _confirmButtonEnabled = true,
2545
2559
  confirmButtonLink: _confirmButtonLink = "",
2546
2560
  primaryButtonLoader: _primaryButtonLoader = false,
2547
2561
  fixedButtons: _fixedButtons = false,
@@ -2597,10 +2611,10 @@ const DialogStep = ({
2597
2611
  // eslint-disable-next-line react-hooks/exhaustive-deps
2598
2612
  }, []);
2599
2613
  const handleTransitionEnd = event => {
2600
- if (isMultiStep && isCurrentStep(_stepName) && event.propertyName === "opacity" && event.target.classList[0] === s$f[DIALOG_STEP_CLASS]) {
2614
+ if (isMultiStep && isCurrentStep(_stepName) && event.propertyName === "opacity" && event.target.classList[0] === s$h[DIALOG_STEP_CLASS]) {
2601
2615
  disableAnimation(animationConfiguration.animateHeightTransitionEnabled);
2602
2616
  }
2603
- if (isMultiStep && unmountOnAnimationEndTrigger && event.propertyName === "opacity" && event.target.classList[0] === s$f[DIALOG_STEP_CLASS]) {
2617
+ if (isMultiStep && unmountOnAnimationEndTrigger && event.propertyName === "opacity" && event.target.classList[0] === s$h[DIALOG_STEP_CLASS]) {
2604
2618
  clearButtonsConfiguration();
2605
2619
  scrollDialogToTop();
2606
2620
  setStepMounted(false);
@@ -2631,11 +2645,13 @@ const DialogStep = ({
2631
2645
  updateButtonsConfiguration({
2632
2646
  primaryButtonTitle: _confirmButtonText,
2633
2647
  primaryButtonOnClick: resetButtonLoader => _confirmButtonClick(resetButtonLoader),
2648
+ primaryButtonEnabled: _confirmButtonEnabled,
2634
2649
  primaryButtonLoader: _primaryButtonLoader,
2635
2650
  primaryButtonTo: _confirmButtonLink,
2636
2651
  primaryButtonSetClickTrigger: _setClickTrigger,
2637
2652
  secondaryButtonTitle: _backButtonText,
2638
2653
  secondaryButtonOnClick: _backButtonClick,
2654
+ secondaryButtonEnabled: _backButtonEnabled,
2639
2655
  secondaryButtonTo: _backButtonTo,
2640
2656
  fixedButtonsEnabled: _fixedButtons
2641
2657
  }, _stepName);
@@ -2660,45 +2676,47 @@ const DialogStep = ({
2660
2676
  updateButtonsConfiguration({
2661
2677
  primaryButtonTitle: _confirmButtonText,
2662
2678
  primaryButtonOnClick: resetButtonLoader => _confirmButtonClick(resetButtonLoader),
2679
+ primaryButtonEnabled: _confirmButtonEnabled,
2663
2680
  primaryButtonLoader: _primaryButtonLoader,
2664
2681
  primaryButtonTo: _confirmButtonLink,
2665
2682
  primaryButtonSetClickTrigger: _setClickTrigger,
2666
2683
  secondaryButtonTitle: _backButtonText,
2667
2684
  secondaryButtonOnClick: _backButtonClick,
2685
+ secondaryButtonEnabled: _backButtonEnabled,
2668
2686
  secondaryButtonTo: _backButtonTo,
2669
2687
  fixedButtonsEnabled: _fixedButtons
2670
2688
  }, _stepName);
2671
2689
  }
2672
2690
  // eslint-disable-next-line react-hooks/exhaustive-deps
2673
- }, [_confirmButtonText, _confirmButtonClick, _primaryButtonLoader, _confirmButtonLink, _setClickTrigger, _backButtonText, _backButtonClick, _backButtonTo, currentStep]);
2691
+ }, [_confirmButtonText, _confirmButtonClick, _confirmButtonEnabled, _primaryButtonLoader, _confirmButtonLink, _setClickTrigger, _backButtonText, _backButtonClick, _backButtonEnabled, _backButtonTo, currentStep]);
2674
2692
  const {
2675
2693
  assetIconSrc,
2676
2694
  assetIconProtocolSrc,
2677
2695
  fallbackSrc
2678
2696
  } = titleIconCoin && _coinToIconPaths ? _coinToIconPaths(titleIconCoin) : {};
2679
2697
  return /*#__PURE__*/React.createElement("div", {
2680
- className: s$f[DIALOG_STEP_CLASS] + " " + s$f[stepClass] + (!isMultiStep || !(animationConfiguration != null && animationConfiguration.currentStepAnimationEnabled) ? " " + s$f["animation-disabled"] : "") + (!isMultiStep ? " " + s$f["single-step"] : "") + (backgroundImage || backgroundImageMobile ? " " + s$f["with-background"] : "") + (inline ? " " + s$f["inline"] : ""),
2698
+ className: s$h[DIALOG_STEP_CLASS] + " " + s$h[stepClass] + (!isMultiStep || !(animationConfiguration != null && animationConfiguration.currentStepAnimationEnabled) ? " " + s$h["animation-disabled"] : "") + (!isMultiStep ? " " + s$h["single-step"] : "") + (backgroundImage || backgroundImageMobile ? " " + s$h["with-background"] : "") + (inline ? " " + s$h["inline"] : ""),
2681
2699
  ref: currentStepRef,
2682
2700
  onTransitionEnd: handleTransitionEnd,
2683
2701
  style: height ? {
2684
2702
  height: height
2685
2703
  } : null
2686
2704
  }, stepMounted ? /*#__PURE__*/React.createElement(React.Fragment, null, backgroundImage || backgroundImageMobile ? /*#__PURE__*/React.createElement("div", {
2687
- className: s$f["dialog-step-background-image"] + " " + s$f[stepClass]
2705
+ className: s$h["dialog-step-background-image"] + " " + s$h[stepClass]
2688
2706
  }, backgroundImage ? /*#__PURE__*/React.createElement("img", {
2689
2707
  src: backgroundImage,
2690
- className: s$f["dialog-step-background-image-desktop"] + " " + stepClass + (!backgroundImageMobile ? " " + s$f["primary"] : ""),
2708
+ className: s$h["dialog-step-background-image-desktop"] + " " + stepClass + (!backgroundImageMobile ? " " + s$h["primary"] : ""),
2691
2709
  alt: "dialog step background",
2692
2710
  loading: "lazy"
2693
2711
  }) : null, backgroundImageMobile ? /*#__PURE__*/React.createElement("img", {
2694
2712
  src: backgroundImageMobile,
2695
- className: s$f["dialog-step-background-image-mobile"] + " " + stepClass + (!backgroundImage ? " " + s$f["primary"] : ""),
2713
+ className: s$h["dialog-step-background-image-mobile"] + " " + stepClass + (!backgroundImage ? " " + s$h["primary"] : ""),
2696
2714
  alt: "dialog step background",
2697
2715
  loading: "lazy"
2698
2716
  }) : null) : null, /*#__PURE__*/React.createElement("div", {
2699
- className: s$f["dialog-step-wrapper"] + " " + s$f[stepClass] + " " + s$f[wrapperDirectionSubclass] + (inline ? " " + s$f["inline"] : "")
2717
+ className: s$h["dialog-step-wrapper"] + " " + s$h[stepClass] + " " + s$h[wrapperDirectionSubclass] + (inline ? " " + s$h["inline"] : "")
2700
2718
  }, isMultiStep && showCornerButtonForStep(_stepName, _showCornerBackButton) ? /*#__PURE__*/React.createElement("div", {
2701
- className: s$f["dialog-step-wrapper-back-button"]
2719
+ className: s$h["dialog-step-wrapper-back-button"]
2702
2720
  }, /*#__PURE__*/React.createElement(LinkButton, {
2703
2721
  onClick: _cornerBackButtonClick ? _cornerBackButtonClick : previousStep,
2704
2722
  content: _cornerBackButtonTitle ? _cornerBackButtonTitle :
@@ -2708,52 +2726,54 @@ const DialogStep = ({
2708
2726
  iconRotate: ICON_ROTATE_OPTIONS.rotate90,
2709
2727
  isColored: backgroundImage || backgroundImageMobile ? false : undefined
2710
2728
  })) : null, /*#__PURE__*/React.createElement("div", {
2711
- className: s$f["dialog-step-wrapper-header"] + (_headerTitleLeft ? " " + s$f["text-left"] : "") + (backgroundImage || backgroundImageMobile ? " " + s$f["with-background-image"] : "")
2729
+ className: s$h["dialog-step-wrapper-header"] + (_headerTitleLeft ? " " + s$h["text-left"] : "") + (backgroundImage || backgroundImageMobile ? " " + s$h["with-background-image"] : "")
2712
2730
  }, _image ? /*#__PURE__*/React.createElement("img", {
2713
2731
  src: _image,
2714
2732
  alt: "dialog popup logo",
2715
- className: s$f["dialog-step-wrapper-header-logo"],
2733
+ className: s$h["dialog-step-wrapper-header-logo"],
2716
2734
  loading: "lazy"
2717
2735
  }) : ImageRaw ? /*#__PURE__*/React.createElement("div", {
2718
- className: s$f["dialog-step-wrapper-header-logo"]
2736
+ className: s$h["dialog-step-wrapper-header-logo"]
2719
2737
  }, /*#__PURE__*/React.createElement(ImageRaw, null)) : null, /*#__PURE__*/React.createElement("div", {
2720
- className: s$f["dialog-step-wrapper-header-title"] + (!isTopImagePassed ? " " + s$f["without-logo"] : "") + (!isTopImagePassed && _headerTitleLeft ? " " + s$f["close-button-padding"] : "") + (inline ? " " + s$f["no-close-button-padding"] : "")
2738
+ className: s$h["dialog-step-wrapper-header-title"] + (!isTopImagePassed ? " " + s$h["without-logo"] : "") + (!isTopImagePassed && _headerTitleLeft ? " " + s$h["close-button-padding"] : "") + (inline ? " " + s$h["no-close-button-padding"] : "")
2721
2739
  }, titleIconCoin ? /*#__PURE__*/React.createElement("div", {
2722
- className: s$f["dialog-step-wrapper-header-title-coin-icon"]
2740
+ className: s$h["dialog-step-wrapper-header-title-coin-icon"]
2723
2741
  }, /*#__PURE__*/React.createElement(AssetIcon, {
2724
2742
  assetIconSrc: assetIconSrc,
2725
2743
  assetIconProtocolSrc: assetIconProtocolSrc,
2726
2744
  fallbackSrc: fallbackSrc
2727
2745
  })) : _titleIcon ? /*#__PURE__*/React.createElement("div", {
2728
- className: s$f["dialog-step-wrapper-header-title-icon"]
2746
+ className: s$h["dialog-step-wrapper-header-title-icon"]
2729
2747
  }, /*#__PURE__*/React.createElement("img", {
2730
2748
  src: _titleIcon,
2731
2749
  alt: "coin icon to send",
2732
2750
  loading: "lazy"
2733
2751
  })) : null, _titleLoadingDots ? /*#__PURE__*/React.createElement("div", {
2734
- className: s$f["dialog-step-wrapper-header-title-loading"]
2752
+ className: s$h["dialog-step-wrapper-header-title-loading"]
2735
2753
  }, /*#__PURE__*/React.createElement(LoadingDots, {
2736
2754
  isColored: true
2737
2755
  })) : "", /*#__PURE__*/React.createElement("div", {
2738
- className: s$f["dialog-step-wrapper-header-title-text"]
2756
+ className: s$h["dialog-step-wrapper-header-title-text"]
2739
2757
  }, !isTopImagePassed && _showBackgroundTitle ? /*#__PURE__*/React.createElement(BackgroundTitle, {
2740
2758
  text: _title
2741
2759
  }) : null, /*#__PURE__*/React.createElement("h5", {
2742
- className: s$f["dialog-step-wrapper-header-title-text-content"] + (!isTopImagePassed ? " " + s$f["without-logo"] : "") + (backgroundImage || backgroundImageMobile ? " " + s$f["white"] : "")
2760
+ className: s$h["dialog-step-wrapper-header-title-text-content"] + (!isTopImagePassed ? " " + s$h["without-logo"] : "") + (backgroundImage || backgroundImageMobile ? " " + s$h["white"] : "")
2743
2761
  }, _title))), _subtitle ? /*#__PURE__*/React.createElement("p", {
2744
- className: s$f["dialog-step-wrapper-header-text"] + ` ${!isTopImagePassed ? s$f["without-logo"] : ""} ${_subtitleSmallMargin ? s$f["small-margin"] : ""}${_subtitleNoMargin ? s$f["no-margin"] : ""} ${_headerTitleLeft ? s$f["text-left"] : ""} ${_breakSubtitleWords ? s$f["break-words"] : ""} ${backgroundImage || backgroundImageMobile ? s$f["white"] : ""}`
2762
+ className: s$h["dialog-step-wrapper-header-text"] + ` ${!isTopImagePassed ? s$h["without-logo"] : ""} ${_subtitleSmallMargin ? s$h["small-margin"] : ""}${_subtitleNoMargin ? s$h["no-margin"] : ""} ${_headerTitleLeft ? s$h["text-left"] : ""} ${_breakSubtitleWords ? s$h["break-words"] : ""} ${backgroundImage || backgroundImageMobile ? s$h["white"] : ""}`
2745
2763
  }, _subtitle) : null), /*#__PURE__*/React.createElement("div", {
2746
- className: s$f["dialog-step-wrapper-content"] + " " + s$f["align-" + _contentAlign]
2764
+ className: s$h["dialog-step-wrapper-content"] + " " + s$h["align-" + _contentAlign]
2747
2765
  }, _children), _backButtonText || _confirmButtonText ? /*#__PURE__*/React.createElement("div", {
2748
- className: s$f["dialog-step-wrapper-buttons"] + ` ${_bigButtonMargins ? s$f["big-margin"] : ""} ${_noButtonMargins ? s$f["no-margin"] : ""} ${_isSecondaryButtonBig ? s$f["space-between-layout"] : ""}`
2766
+ className: s$h["dialog-step-wrapper-buttons"] + ` ${_bigButtonMargins ? s$h["big-margin"] : ""} ${_noButtonMargins ? s$h["no-margin"] : ""} ${_isSecondaryButtonBig ? s$h["space-between-layout"] : ""}`
2749
2767
  }, /*#__PURE__*/React.createElement(DialogButtons, {
2750
2768
  primaryButtonTitle: _confirmButtonText,
2751
2769
  primaryButtonOnClick: resetButtonLoader => _confirmButtonClick(resetButtonLoader),
2770
+ primaryButtonEnabled: _confirmButtonEnabled,
2752
2771
  primaryButtonLoader: _primaryButtonLoader,
2753
2772
  primaryButtonTo: _confirmButtonLink,
2754
2773
  primaryButtonSetClickTrigger: _setClickTrigger,
2755
2774
  secondaryButtonTitle: _backButtonText,
2756
2775
  secondaryButtonOnClick: _backButtonClick,
2776
+ secondaryButtonEnabled: _backButtonEnabled,
2757
2777
  secondaryButtonTo: _backButtonTo,
2758
2778
  secondaryButtonBig: _isSecondaryButtonBig,
2759
2779
  withBackgroundImage: !!backgroundImage || !!backgroundImageMobile,
@@ -2773,9 +2793,11 @@ DialogStep.propTypes = {
2773
2793
  subtitle: PropTypes.string,
2774
2794
  backButtonText: PropTypes.string,
2775
2795
  backButtonClick: PropTypes.func,
2796
+ backButtonEnabled: PropTypes.bool,
2776
2797
  backButtonTo: PropTypes.string,
2777
2798
  confirmButtonText: PropTypes.string,
2778
2799
  confirmButtonClick: PropTypes.func,
2800
+ confirmButtonEnabled: PropTypes.bool,
2779
2801
  confirmButtonLink: PropTypes.string,
2780
2802
  primaryButtonLoader: PropTypes.bool,
2781
2803
  fixedButtons: PropTypes.bool,
@@ -2809,9 +2831,11 @@ DialogStep.defaultProps = {
2809
2831
  subtitle: "",
2810
2832
  backButtonText: "",
2811
2833
  backButtonClick: () => {},
2834
+ backButtonEnabled: true,
2812
2835
  backButtonTo: "",
2813
2836
  confirmButtonText: "",
2814
2837
  confirmButtonClick: () => {},
2838
+ confirmButtonEnabled: true,
2815
2839
  confirmButtonLink: "",
2816
2840
  primaryButtonLoader: false,
2817
2841
  fixedButtons: false,
@@ -2834,7 +2858,7 @@ DialogStep.defaultProps = {
2834
2858
  isSecondaryButtonBig: false
2835
2859
  };
2836
2860
 
2837
- var s$e = {"asset-selection":"_xevLY","disabled":"_DZRfD","active":"_oBw9O","asset-selection-protocol-wrapper":"_ixAiH","asset-selection-icon-wrapper":"_gJ5LN","arrow":"_W8Ibq"};
2861
+ var s$g = {"asset-selection":"_xevLY","disabled":"_DZRfD","active":"_oBw9O","asset-selection-protocol-wrapper":"_ixAiH","asset-selection-icon-wrapper":"_gJ5LN","arrow":"_W8Ibq"};
2838
2862
 
2839
2863
  var ArrowIcon = (() => /*#__PURE__*/React.createElement("svg", {
2840
2864
  width: "16",
@@ -2872,19 +2896,19 @@ const AssetSelection = ({
2872
2896
  }) => {
2873
2897
  const handleError = useCallHandlingErrors();
2874
2898
  return /*#__PURE__*/React.createElement("div", {
2875
- className: s$e["asset-selection"] + " " + (_disabled ? s$e["disabled"] : ""),
2899
+ className: s$g["asset-selection"] + " " + (_disabled ? s$g["disabled"] : ""),
2876
2900
  onClick: _disabled ? () => {} : e => handleError(_handleClick, e)
2877
2901
  }, /*#__PURE__*/React.createElement("div", {
2878
- className: s$e["asset-selection-icon-wrapper"]
2902
+ className: s$g["asset-selection-icon-wrapper"]
2879
2903
  }, /*#__PURE__*/React.createElement(AssetIcon, {
2880
2904
  small: true,
2881
2905
  assetIconSrc: assetIconSrc,
2882
2906
  assetIconProtocolSrc: _assetIconProtocolSrc,
2883
2907
  fallbackSrc: fallbackSrc
2884
2908
  })), protocolName ? /*#__PURE__*/React.createElement("div", {
2885
- className: s$e["asset-selection-protocol-wrapper"]
2909
+ className: s$g["asset-selection-protocol-wrapper"]
2886
2910
  }, protocolName) : "", /*#__PURE__*/React.createElement("div", {
2887
- className: s$e["arrow"]
2911
+ className: s$g["arrow"]
2888
2912
  }, /*#__PURE__*/React.createElement(ArrowIcon, null)));
2889
2913
  };
2890
2914
  AssetSelection.propTypes = {
@@ -2901,7 +2925,7 @@ AssetSelection.defaultProps = {
2901
2925
  assetIconProtocolSrc: null
2902
2926
  };
2903
2927
 
2904
- var s$d = {"tooltip":"_8eyAx","enter":"_RpNdl","enter-active":"_BJddw","exit":"_BTWC-","exit-active":"_nxU2j","top-left":"_pPuyF","enter-done":"_UTN4U","top-right":"_2ppAB","left":"_--VUv","bottom":"_a1OJb","right":"_KNVu3","wide":"_s17pG","ignore-pointer":"_RCyas","tooltip-enter":"_3372j","tooltip-enter-active":"_-RNGY","tooltip-enter-done":"_90MOt","tooltip-exit":"_QT297","tooltip-exit-active":"_a0CNW"};
2928
+ var s$f = {"tooltip":"_8eyAx","enter":"_RpNdl","enter-active":"_BJddw","exit":"_BTWC-","exit-active":"_nxU2j","top-left":"_pPuyF","enter-done":"_UTN4U","top-right":"_2ppAB","left":"_--VUv","bottom":"_a1OJb","right":"_KNVu3","wide":"_s17pG","ignore-pointer":"_RCyas","tooltip-enter":"_3372j","tooltip-enter-active":"_-RNGY","tooltip-enter-done":"_90MOt","tooltip-exit":"_QT297","tooltip-exit-active":"_a0CNW"};
2905
2929
 
2906
2930
  var DarkRectangle = (() => /*#__PURE__*/React.createElement("svg", {
2907
2931
  width: "25",
@@ -2955,7 +2979,7 @@ const Tooltip = ({
2955
2979
  timeout: 400,
2956
2980
  unmountOnExit: true
2957
2981
  }, /*#__PURE__*/React.createElement("span", {
2958
- className: `${s$d["tooltip"]} ${_wide ? s$d["wide"] : ""} ${s$d[_position]} ${_ignorePointerEvents ? s$d["ignore-pointer"] : ""}`,
2982
+ className: `${s$f["tooltip"]} ${_wide ? s$f["wide"] : ""} ${s$f[_position]} ${_ignorePointerEvents ? s$f["ignore-pointer"] : ""}`,
2959
2983
  onClick: e => handleError(onClick, e),
2960
2984
  onDoubleClick: e => handleError(e => e.stopPropagation(), e)
2961
2985
  }, /*#__PURE__*/React.createElement(DarkRectangle, null), children));
@@ -2975,7 +2999,7 @@ Tooltip.defaultProps = {
2975
2999
  ignorePointerEvents: false
2976
3000
  };
2977
3001
 
2978
- var s$c = {"notice-icon-image":"_MdvCj","notice-icon":"_lFNkE","notice-icon-tooltip":"_l38uS"};
3002
+ var s$e = {"notice-icon-image":"_MdvCj","notice-icon":"_lFNkE","notice-icon-tooltip":"_l38uS"};
2979
3003
 
2980
3004
  const handleClickOutside = (exceptionsRefs, callback) => {
2981
3005
  function handleClick(event) {
@@ -3068,18 +3092,18 @@ const NoticeIcon = ({
3068
3092
  useEffect(() => handleClickOutside([noticeRef], () => setShowTooltip(false)), []);
3069
3093
  return /*#__PURE__*/React.createElement("div", {
3070
3094
  ref: noticeRef,
3071
- className: s$c["notice-icon"]
3095
+ className: s$e["notice-icon"]
3072
3096
  }, _titleNoticeIcon ? /*#__PURE__*/React.createElement("img", {
3073
3097
  src: _titleNoticeIcon,
3074
3098
  alt: "title icon",
3075
3099
  onClick: () => setShowTooltip(prev => !prev),
3076
- className: s$c["notice-icon-image"],
3100
+ className: s$e["notice-icon-image"],
3077
3101
  loading: "lazy"
3078
3102
  }) : /*#__PURE__*/React.createElement("div", {
3079
- className: s$c["notice-icon-image"],
3103
+ className: s$e["notice-icon-image"],
3080
3104
  onClick: () => setShowTooltip(prev => !prev)
3081
3105
  }, /*#__PURE__*/React.createElement(NoticeQuestionIcon, null)), /*#__PURE__*/React.createElement("div", {
3082
- className: s$c["notice-icon-tooltip"]
3106
+ className: s$e["notice-icon-tooltip"]
3083
3107
  }, /*#__PURE__*/React.createElement(Tooltip, {
3084
3108
  showTooltip: showTooltip,
3085
3109
  handleClick: () => setShowTooltip(false),
@@ -3097,7 +3121,7 @@ NoticeIcon.defaultProps = {
3097
3121
  tooltipPosition: TOOLTIP_POSITIONS.TOP
3098
3122
  };
3099
3123
 
3100
- var s$b = {"title-box":"_2Kb-x","full-width":"_-5MIw","title-box-wrapper":"_f8RmO","title-box-wrapper-title":"_Oxg7u","transparent-title":"_NwGqA","title-box-wrapper-link-button":"_f-4ZL"};
3124
+ var s$d = {"title-box":"_2Kb-x","full-width":"_-5MIw","title-box-wrapper":"_f8RmO","title-box-wrapper-title":"_Oxg7u","transparent-title":"_NwGqA","title-box-wrapper-link-button":"_f-4ZL"};
3101
3125
 
3102
3126
  /**
3103
3127
  * Copies given text to clipboard inside browser.
@@ -3153,7 +3177,7 @@ const TitleBox = ({
3153
3177
  copyButtonTooltipContent
3154
3178
  }) => {
3155
3179
  const handleError = useCallHandlingErrors();
3156
- const transparentTitleClass = _transparentTitle ? s$b["transparent-title"] : "";
3180
+ const transparentTitleClass = _transparentTitle ? s$d["transparent-title"] : "";
3157
3181
  const [showCopyNotice, setShowCopyNotice] = useState(false);
3158
3182
  const handleCopyButton = e => {
3159
3183
  handleError(() => {
@@ -3165,19 +3189,19 @@ const TitleBox = ({
3165
3189
  }, e);
3166
3190
  };
3167
3191
  return /*#__PURE__*/React.createElement("div", {
3168
- className: `${s$b["title-box"]} ${_fullWidth ? s$b["full-width"] : ""}`
3192
+ className: `${s$d["title-box"]} ${_fullWidth ? s$d["full-width"] : ""}`
3169
3193
  }, _title || _titleNoticeText || _linkText ? /*#__PURE__*/React.createElement("div", {
3170
- className: s$b["title-box-wrapper"]
3194
+ className: s$d["title-box-wrapper"]
3171
3195
  }, _bigTitle ? /*#__PURE__*/React.createElement("h5", {
3172
- className: s$b["title-box-wrapper-title"] + " " + transparentTitleClass
3196
+ className: s$d["title-box-wrapper-title"] + " " + transparentTitleClass
3173
3197
  }, _title) : /*#__PURE__*/React.createElement("h6", {
3174
- className: s$b["title-box-wrapper-title"] + " " + transparentTitleClass
3198
+ className: s$d["title-box-wrapper-title"] + " " + transparentTitleClass
3175
3199
  }, _title), _titleNoticeText ? /*#__PURE__*/React.createElement(NoticeIcon, {
3176
3200
  noticeText: _titleNoticeText,
3177
3201
  titleNoticeIcon: titleNoticeIcon,
3178
3202
  tooltipPosition: titleNoticePosition
3179
3203
  }) : null, copyButtonContent && copyButtonText ? /*#__PURE__*/React.createElement("div", {
3180
- className: s$b["title-box-wrapper-link-button"]
3204
+ className: s$d["title-box-wrapper-link-button"]
3181
3205
  }, /*#__PURE__*/React.createElement(LinkButton, {
3182
3206
  content: copyButtonText,
3183
3207
  onClick: handleCopyButton,
@@ -3187,7 +3211,7 @@ const TitleBox = ({
3187
3211
  position: TOOLTIP_POSITIONS.TOP_LEFT,
3188
3212
  showTooltip: showCopyNotice
3189
3213
  }, copyButtonTooltipContent)) : _linkText ? /*#__PURE__*/React.createElement("div", {
3190
- className: s$b["title-box-wrapper-link-button"]
3214
+ className: s$d["title-box-wrapper-link-button"]
3191
3215
  }, /*#__PURE__*/React.createElement(LinkButton, {
3192
3216
  content: _linkText,
3193
3217
  onClick: _linkButtonClick,
@@ -3225,7 +3249,7 @@ TitleBox.defaultProps = {
3225
3249
  transparentTitle: false
3226
3250
  };
3227
3251
 
3228
- var s$a = {"amount-input-container-input-wrapper":"_OQ-ym","requested-amount-fiat-skeleton-content":"_zck4j","requested-amount-coin-skeleton-content":"_rZsYH","amount-input-container":"_AQaqi","upper-form-position":"_FjX1X","lower-form-position":"_g5zUv","error-encountered":"_XjaEm","focus":"_-jHS0","disabled":"_3y8Yo","bottom-margin":"_3RoIe","asset-balance":"_Z9fcv","red":"_EXTAF","requested-amount-coin":"_AV4qa","requested-amount-coin-currency":"_OGQ9l","requested-amount-coin-input":"_KY6tO","requested-amount-coin-skeleton":"_gIBI7","requested-amount-fiat":"_gwWcz","requested-amount-fiat-currency":"_RACoB","requested-amount-fiat-input":"_L5lVd","requested-amount-fiat-placeholder":"_HV2XM","requested-amount-fiat-skeleton":"_63hUZ"};
3252
+ var s$c = {"amount-input-container-input-wrapper":"_OQ-ym","requested-amount-fiat-skeleton-content":"_zck4j","requested-amount-coin-skeleton-content":"_rZsYH","amount-input-container":"_AQaqi","upper-form-position":"_FjX1X","lower-form-position":"_g5zUv","error-encountered":"_XjaEm","focus":"_-jHS0","disabled":"_3y8Yo","bottom-margin":"_3RoIe","asset-balance":"_Z9fcv","red":"_EXTAF","requested-amount-coin":"_AV4qa","requested-amount-coin-currency":"_OGQ9l","requested-amount-coin-input":"_KY6tO","requested-amount-coin-skeleton":"_gIBI7","requested-amount-fiat":"_gwWcz","requested-amount-fiat-enter":"_Q3eUh","requested-amount-fiat-enter-active":"_ijYoP","requested-amount-fiat-exit":"_czDtf","requested-amount-fiat-exit-active":"_Hav2r","requested-amount-fiat-currency":"_RACoB","requested-amount-fiat-input":"_L5lVd","requested-amount-fiat-placeholder":"_HV2XM","requested-amount-fiat-skeleton":"_63hUZ"};
3229
3253
 
3230
3254
  var WalletIcon = (() => /*#__PURE__*/React.createElement("svg", {
3231
3255
  width: "16",
@@ -3797,38 +3821,48 @@ const AmountInput = /*#__PURE__*/React.forwardRef(({
3797
3821
  linkText: _isSendAll !== null ? _isSendAll ? _linkButtonActiveText : _linkButtonInactiveText : null,
3798
3822
  linkButtonClick: _handleSendAllClick
3799
3823
  }, /*#__PURE__*/React.createElement("div", {
3800
- className: [s$a["amount-input-container"], isInFocus ? s$a["focus"] : "", errorEncountered || highlightInput ? s$a["error-encountered"] : "", upperFormPosition ? s$a["upper-form-position"] : "", lowerFormPosition ? s$a["lower-form-position"] : ""].join(" ")
3824
+ className: [s$c["amount-input-container"], isInFocus ? s$c["focus"] : "", errorEncountered || highlightInput ? s$c["error-encountered"] : "", upperFormPosition ? s$c["upper-form-position"] : "", lowerFormPosition ? s$c["lower-form-position"] : ""].join(" ")
3801
3825
  }, /*#__PURE__*/React.createElement("div", {
3802
- className: `${s$a["amount-input-container-input-wrapper"]} ${disabled ? s$a["disabled"] : ""}
3803
- ${children ? s$a["bottom-margin"] : ""}`
3826
+ className: `${s$c["amount-input-container-input-wrapper"]} ${disabled ? s$c["disabled"] : ""}
3827
+ ${children ? s$c["bottom-margin"] : ""}`
3804
3828
  }, _showBalance ? /*#__PURE__*/React.createElement("div", {
3805
- className: s$a["asset-balance"] + " " + (highlightBalance ? s$a["red"] : "")
3829
+ className: s$c["asset-balance"] + " " + (highlightBalance ? s$c["red"] : "")
3806
3830
  }, /*#__PURE__*/React.createElement(WalletIcon, null), /*#__PURE__*/React.createElement("p", null, (_assetBalance == null ? void 0 : _assetBalance.assetAmount) != null && (_assetBalance == null ? void 0 : _assetBalance.fiatAmount) != null && ticker && _fiatCurrencyCode ? /*#__PURE__*/React.createElement(React.Fragment, null, AmountUtils.cryptoFull(_assetBalance.assetAmount, tickerPrintable, assetDecimalPlaces), /*#__PURE__*/React.createElement("span", null, " ~ " + AmountUtils.fiat(_assetBalance.fiatAmount, _fiatCurrencyCode))) : _balanceLoaderText)) : "", /*#__PURE__*/React.createElement("div", {
3807
- className: s$a["requested-amount-coin"]
3831
+ className: s$c["requested-amount-coin"]
3808
3832
  }, /*#__PURE__*/React.createElement("span", {
3809
- className: s$a["requested-amount-coin-currency"]
3833
+ className: s$c["requested-amount-coin-currency"]
3810
3834
  }, tickerPrintable ? (_estimateAmount ? "~ " : "") + tickerPrintable : ""), !_isLoading ? /*#__PURE__*/React.createElement("input", {
3811
3835
  type: "text",
3812
3836
  inputMode: "decimal",
3813
3837
  value: coinAmountValue,
3814
3838
  onChange: e => handleChangeAmount(e.target.value),
3815
3839
  placeholder: coinAmountPlaceholder,
3816
- className: s$a["requested-amount-coin-input"],
3840
+ className: s$c["requested-amount-coin-input"],
3817
3841
  disabled: disabled || locked,
3818
3842
  onFocus: e => callHandlingErrors(() => setIsInFocus(true), e),
3819
3843
  onBlur: e => callHandlingErrors(() => setIsInFocus(false), e)
3820
3844
  }) : /*#__PURE__*/React.createElement("div", {
3821
- className: s$a["requested-amount-coin-skeleton"]
3845
+ className: s$c["requested-amount-coin-skeleton"]
3822
3846
  }, /*#__PURE__*/React.createElement("span", {
3823
- className: s$a["requested-amount-coin-skeleton-content"] + " " + "skeleton-dark"
3824
- }))), _fiatCurrencyCode !== null ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
3825
- className: s$a["requested-amount-fiat"] + (interactedWith ? " " + s$a["interacted"] : "")
3847
+ className: s$c["requested-amount-coin-skeleton-content"] + " " + "skeleton-dark"
3848
+ }))), /*#__PURE__*/React.createElement(CSSTransition, {
3849
+ in: _fiatCurrencyCode !== null,
3850
+ timeout: 200,
3851
+ classNames: {
3852
+ enter: s$c["requested-amount-fiat-enter"],
3853
+ enterActive: s$c["requested-amount-fiat-enter-active"],
3854
+ exit: s$c["requested-amount-fiat-exit"],
3855
+ exitActive: s$c["requested-amount-fiat-exit-active"]
3856
+ },
3857
+ unmountOnExit: true
3858
+ }, /*#__PURE__*/React.createElement("div", {
3859
+ className: s$c["requested-amount-fiat"] + (interactedWith ? " " + s$c["interacted"] : "")
3826
3860
  }, interactedWith ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
3827
- className: s$a["requested-amount-fiat-currency"]
3861
+ className: s$c["requested-amount-fiat-currency"]
3828
3862
  }, (_estimateAmount ? "~ " : "") + _fiatCurrencyCode), !_isLoading && _cryptoAssetToFiatRate != null ? /*#__PURE__*/React.createElement("input", {
3829
3863
  type: "text",
3830
3864
  inputMode: "decimal",
3831
- className: s$a["requested-amount-fiat-input"],
3865
+ className: s$c["requested-amount-fiat-input"],
3832
3866
  value: fiatAmountValue,
3833
3867
  disabled: disabled || locked,
3834
3868
  onChange: e => handleChangeAmountFiat(e.target.value),
@@ -3837,14 +3871,14 @@ const AmountInput = /*#__PURE__*/React.forwardRef(({
3837
3871
  onFocus: e => callHandlingErrors(() => setIsInFocus(true), e),
3838
3872
  onBlur: e => callHandlingErrors(() => setIsInFocus(false), e)
3839
3873
  }) : /*#__PURE__*/React.createElement("div", {
3840
- className: s$a["requested-amount-fiat-skeleton"]
3874
+ className: s$c["requested-amount-fiat-skeleton"]
3841
3875
  }, /*#__PURE__*/React.createElement("span", {
3842
- className: s$a["requested-amount-fiat-skeleton-content"] + " " + "skeleton-dark"
3876
+ className: s$c["requested-amount-fiat-skeleton-content"] + " " + "skeleton-dark"
3843
3877
  }))) : /*#__PURE__*/React.createElement("span", {
3844
- className: s$a["requested-amount-fiat-placeholder"],
3878
+ className: s$c["requested-amount-fiat-placeholder"],
3845
3879
  onClick: e => callHandlingErrors(() => handleFiatInteraction(), e)
3846
- }, _fiatInputPlaceholderText))) : null), _showChangeAssetButton && ticker ? /*#__PURE__*/React.createElement("div", {
3847
- className: s$a["amount-input-container-button-wrapper"],
3880
+ }, _fiatInputPlaceholderText)))), _showChangeAssetButton && ticker ? /*#__PURE__*/React.createElement("div", {
3881
+ className: s$c["amount-input-container-button-wrapper"],
3848
3882
  ref: buttonForwardRef
3849
3883
  }, /*#__PURE__*/React.createElement(AssetSelection, {
3850
3884
  assetIconSrc: assetIconSrc,
@@ -3858,9 +3892,9 @@ const AmountInput = /*#__PURE__*/React.forwardRef(({
3858
3892
  }) : null);
3859
3893
  });
3860
3894
 
3861
- var s$9 = {"swap-form-inputs-separator":"_2vSSb","disabled":"_t1R13","swap-form":"_Uwb2p","swap-form-inputs":"_kkR8O","swap-form-information-field":"_ZUAfe","semi-transparent":"_1mu0j","interactable":"_S9zQS","red":"_SbQSO","swap-form-address-field":"_c8Nfv","swap-form-rate-selector":"_Fo9O-","swap-form-validation-text":"_8iEHB","swap-form-button-container":"_cVVfG","swap-form-button-container-consent-text":"_UNMjb","swap-form-button-container-consent-text-link":"_-g020"};
3895
+ var s$b = {"swap-form-inputs-separator":"_2vSSb","disabled":"_t1R13","swap-form":"_Uwb2p","swap-form-inputs":"_kkR8O","swap-form-information-field":"_ZUAfe","semi-transparent":"_1mu0j","interactable":"_S9zQS","red":"_SbQSO","swap-form-address-field":"_c8Nfv","swap-form-rate-selector":"_Fo9O-","swap-form-validation-text":"_8iEHB","swap-form-button-container":"_cVVfG","swap-form-button-container-consent-text":"_UNMjb","swap-form-button-container-consent-text-link":"_-g020"};
3862
3896
 
3863
- var s$8 = {"textarea-input":"_EJFn-","textarea":"_YjRAf","full-height":"_kDp5e","textarea-input-label":"_XQC6S","adaptive-height":"_UnSJE","small-text":"_WtRnB","disabled":"_IO5nl","error-encountered":"_00pBS"};
3897
+ var s$a = {"textarea-input":"_EJFn-","textarea":"_YjRAf","full-height":"_kDp5e","textarea-input-label":"_XQC6S","adaptive-height":"_UnSJE","small-text":"_WtRnB","disabled":"_IO5nl","error-encountered":"_00pBS"};
3864
3898
 
3865
3899
  /**
3866
3900
  * A textarea component with optional adaptive height and validation messaging.
@@ -3907,12 +3941,12 @@ const Textarea = /*#__PURE__*/forwardRef(({
3907
3941
  if (((_e$target = e.target) == null ? void 0 : _e$target.value.indexOf("\n")) === -1 || !_ignoreEnter) _onChange(e);
3908
3942
  };
3909
3943
  return /*#__PURE__*/React.createElement("div", {
3910
- className: s$8["textarea"] + ` ${_fullHeight ? " " + s$8["full-height"] : ""}`
3944
+ className: s$a["textarea"] + ` ${_fullHeight ? " " + s$a["full-height"] : ""}`
3911
3945
  }, _label ? /*#__PURE__*/React.createElement("label", {
3912
3946
  htmlFor: _id,
3913
- className: s$8["textarea-input-label"]
3947
+ className: s$a["textarea-input-label"]
3914
3948
  }, _label) : null, _adaptiveHeight ? /*#__PURE__*/React.createElement(TextareaAutosize, {
3915
- className: s$8["textarea-input"] + " " + s$8["adaptive-height"] + (_disabled ? " " + s$8["disabled"] : "") + (_errorEncountered ? " " + s$8["error-encountered"] : ""),
3949
+ className: s$a["textarea-input"] + " " + s$a["adaptive-height"] + (_disabled ? " " + s$a["disabled"] : "") + (_errorEncountered ? " " + s$a["error-encountered"] : ""),
3916
3950
  minRows: 1,
3917
3951
  maxRows: 3,
3918
3952
  onChange: e => callHandlingErrors(onChangeProxy, e),
@@ -3924,7 +3958,7 @@ const Textarea = /*#__PURE__*/forwardRef(({
3924
3958
  disabled: _disabled
3925
3959
  }) : /*#__PURE__*/React.createElement("textarea", {
3926
3960
  name: _name,
3927
- className: s$8["textarea-input"] + ` ${_fullHeight ? s$8["full-height"] : ""} ${_smallText ? s$8["small-text"] : ""} ${_disabled ? s$8["disabled"] : ""}`,
3961
+ className: s$a["textarea-input"] + ` ${_fullHeight ? s$a["full-height"] : ""} ${_smallText ? s$a["small-text"] : ""} ${_disabled ? s$a["disabled"] : ""}`,
3928
3962
  onChange: e => callHandlingErrors(_onChange, e),
3929
3963
  placeholder: _placeholder,
3930
3964
  value: _value,
@@ -3972,7 +4006,7 @@ Textarea.defaultProps = {
3972
4006
  ignoreEnter: false
3973
4007
  };
3974
4008
 
3975
- var s$7 = {"rate-selector":"_bqJFm","rate-selector-item":"_te8yb","selected":"_HU2Oq","rate-selector-item-text":"_ew-Z1"};
4009
+ var s$9 = {"rate-selector":"_bqJFm","rate-selector-item":"_te8yb","selected":"_HU2Oq","rate-selector-item-text":"_ew-Z1"};
3976
4010
 
3977
4011
  // TODO: [dev] add JSDoc
3978
4012
  const RateSelector = ({
@@ -3984,17 +4018,17 @@ const RateSelector = ({
3984
4018
  }
3985
4019
  }) => {
3986
4020
  return /*#__PURE__*/React.createElement("div", {
3987
- className: s$7["rate-selector"]
4021
+ className: s$9["rate-selector"]
3988
4022
  }, /*#__PURE__*/React.createElement("div", {
3989
- className: `${s$7["rate-selector-item"]} ${!_isFixed ? s$7["selected"] : ""}`,
3990
- onClick: () => _setIsFixed(false)
4023
+ className: `${s$9["rate-selector-item"]} ${!_isFixed ? s$9["selected"] : ""}`,
4024
+ onClick: () => _isFixed ? _setIsFixed(false) : null
3991
4025
  }, /*#__PURE__*/React.createElement("div", {
3992
- className: s$7["rate-selector-item-text"]
4026
+ className: s$9["rate-selector-item-text"]
3993
4027
  }, _translations.floatingRate)), /*#__PURE__*/React.createElement("div", {
3994
- className: `${s$7["rate-selector-item"]} ${_isFixed ? s$7["selected"] : ""}`,
3995
- onClick: () => _setIsFixed(true)
4028
+ className: `${s$9["rate-selector-item"]} ${_isFixed ? s$9["selected"] : ""}`,
4029
+ onClick: () => !_isFixed ? _setIsFixed(true) : null
3996
4030
  }, /*#__PURE__*/React.createElement("div", {
3997
- className: s$7["rate-selector-item-text"]
4031
+ className: s$9["rate-selector-item-text"]
3998
4032
  }, _translations.fixedRate)));
3999
4033
  };
4000
4034
 
@@ -4419,17 +4453,17 @@ const SwapForm = ({
4419
4453
  setMaximumAmountValid(!maximumAmount.current || BigNumber(amount).eq("0") || BigNumber(amount).lte(maximumAmount.current.crypto));
4420
4454
  setMinimalAmountValid(!minimalAmount.current || BigNumber(amount).eq("0") || BigNumber(amount).gte((_minimalAmount$curren5 = minimalAmount.current) == null ? void 0 : _minimalAmount$curren5.crypto));
4421
4455
  };
4422
- const requestDataRefresh = (amount, immediately = false, isSwapAll = false) => {
4456
+ const requestDataRefresh = (amount, immediately = false, isSwapAll = false, ignoreEmptyAmount = false) => {
4423
4457
  try {
4424
4458
  clearTimeout(dataUpdateTimeoutId.current);
4425
4459
  if (isSwapAll) {
4426
4460
  loadFullEstimation(null);
4427
4461
  return;
4428
4462
  }
4429
- if (!amount) {
4463
+ if (!amount && !ignoreEmptyAmount) {
4430
4464
  return;
4431
4465
  }
4432
- if (BigNumber(amount).eq("0")) {
4466
+ if (BigNumber(amount).eq("0") || amount == null || amount === "") {
4433
4467
  if (immediately) {
4434
4468
  loadMinimalAmountAndSwapRate(true);
4435
4469
  } else {
@@ -4564,7 +4598,7 @@ const SwapForm = ({
4564
4598
  setIsPairSupported(true);
4565
4599
  setIsSwapCalculated(false);
4566
4600
  const swapData = await _retrieveInitialSwapData(sendingAssetTicker, receivingAssetTicker);
4567
- if (sendAssetAmount.current != null && !isCalledForClearedInput) {
4601
+ if ((isFixedRate.current && isLastEditedReceiving.current ? receiveAssetAmount.current != null : sendAssetAmount.current != null) && !isCalledForClearedInput) {
4568
4602
  // Means user already entered amount after starting the form initialization
4569
4603
  return;
4570
4604
  }
@@ -4604,7 +4638,7 @@ const SwapForm = ({
4604
4638
  };
4605
4639
  const handleRateModeChanged = isFixed => {
4606
4640
  setIsFixedRate(isFixed);
4607
- requestDataRefresh(isLastEditedReceiving.current ? receiveAssetAmount.current : sendAssetAmount.current, true);
4641
+ requestDataRefresh(isLastEditedReceiving.current ? receiveAssetAmount.current : sendAssetAmount.current, true, null, true);
4608
4642
  };
4609
4643
  useEffect(() => {
4610
4644
  if (isSwapAll.current === true) {
@@ -4621,9 +4655,10 @@ const SwapForm = ({
4621
4655
  }, [isFixedRate.current]);
4622
4656
  useEffect(() => {
4623
4657
  if (!sendingAssetTicker || !receivingAssetTicker) return;
4624
- const isCurrentAmountNotZero = sendAssetAmount.current && !BigNumber("0").eq(sendAssetAmount.current);
4658
+ const currentAmount = isLastEditedReceiving.current ? receiveAssetAmount.current : sendAssetAmount.current;
4659
+ const isCurrentAmountNotZero = currentAmount && !BigNumber("0").eq(currentAmount);
4625
4660
  if (isCurrentAmountNotZero) {
4626
- loadFullEstimation(isLastEditedReceiving.current ? receiveAssetAmount.current : sendAssetAmount.current);
4661
+ loadFullEstimation(currentAmount);
4627
4662
  } else {
4628
4663
  loadMinimalAmountAndSwapRate(true);
4629
4664
  }
@@ -4703,7 +4738,7 @@ const SwapForm = ({
4703
4738
  // eslint-disable-next-line react-hooks/exhaustive-deps
4704
4739
  }, [updateSendInputTo, updateReceiveInputTo]);
4705
4740
  useEffect(() => {
4706
- if (swapRate != null && sendAssetAmount.current != null) {
4741
+ if (swapRate != null && (isLastEditedReceiving.current ? receiveAssetAmount.current : sendAssetAmount.current) != null) {
4707
4742
  if (isLastEditedReceiving.current) {
4708
4743
  setUpdateSendInputTo(AmountUtils.trim(BigNumber(receiveAssetAmount.current).div(swapRate), _sendingAssetDecimalCount));
4709
4744
  } else {
@@ -4734,20 +4769,20 @@ const SwapForm = ({
4734
4769
  const recipientAddressExtraIdName = _getExtraIdNameByTicker(receivingAssetTicker);
4735
4770
  const refundAddressExtraIdName = _getExtraIdNameByTicker(sendingAssetTicker);
4736
4771
  return /*#__PURE__*/React.createElement("div", {
4737
- className: s$9["swap-form"]
4772
+ className: s$b["swap-form"]
4738
4773
  }, /*#__PURE__*/React.createElement(TitleBox, {
4739
4774
  linkButtonClick: BigNumber(sendingAssetBalance == null ? void 0 : sendingAssetBalance.assetAmount).eq(0) ? null : resetButtonLoader => handleSwapAllClick(resetButtonLoader),
4740
4775
  linkText: !_formHasBalance ? "" : isSwapAll.current ? _translations.swapAllButtonTitles.cancel : _translations.swapAllButtonTitles.enable,
4741
4776
  linkButtonLoader: true,
4742
4777
  isLinkButtonDisabled: isLoading.current || sendingAssetTicker === receivingAssetTicker || BigNumber(sendingAssetBalance == null ? void 0 : sendingAssetBalance.assetAmount).eq(0)
4743
4778
  }, displayRateSelector ? /*#__PURE__*/React.createElement("div", {
4744
- className: s$9["swap-form-rate-selector"]
4779
+ className: s$b["swap-form-rate-selector"]
4745
4780
  }, /*#__PURE__*/React.createElement(RateSelector, {
4746
4781
  isFixed: (_isFixedRate$current2 = isFixedRate.current) != null ? _isFixedRate$current2 : IS_FIXED_BY_DEFAULT,
4747
4782
  setIsFixed: handleRateModeChanged,
4748
4783
  translations: _translations.rateSelector
4749
4784
  })) : "", /*#__PURE__*/React.createElement("div", {
4750
- className: s$9["swap-form-inputs"]
4785
+ className: s$b["swap-form-inputs"]
4751
4786
  }, /*#__PURE__*/React.createElement(AmountInput, {
4752
4787
  ticker: sendingAssetTicker,
4753
4788
  tickerPrintable: sendingAssetTickerPrintable,
@@ -4770,12 +4805,12 @@ const SwapForm = ({
4770
4805
  ref: _fromAssetSelectionButtonRef,
4771
4806
  isLoading: isLastEditedReceiving.current ? isLoading.current : false,
4772
4807
  cryptoAssetToFiatRate: _sendingAssetToFiatRate,
4773
- fiatCurrencyCode: _formHasFiat ? _fiatCurrencyCode : null,
4808
+ fiatCurrencyCode: _formHasFiat && (isLoading.current || _sendingAssetToFiatRate != null) ? _fiatCurrencyCode : null,
4774
4809
  fiatCurrencyDecimals: _fiatCurrencyDecimals,
4775
4810
  balanceLoaderText: _translations.input.balanceLoaderText,
4776
4811
  fiatInputPlaceholderText: _translations.input.fiatPlaceholder
4777
4812
  }), /*#__PURE__*/React.createElement("div", {
4778
- className: s$9["swap-form-inputs-separator"] + " " + (isLoading.current || sendingAssetTicker === null || receivingAssetTicker === null ? s$9["disabled"] : "")
4813
+ className: s$b["swap-form-inputs-separator"] + " " + (isLoading.current || sendingAssetTicker === null || receivingAssetTicker === null ? s$b["disabled"] : "")
4779
4814
  }, /*#__PURE__*/React.createElement("img", {
4780
4815
  src: swapSeparatorIconSrc,
4781
4816
  alt: "swap icon",
@@ -4791,7 +4826,7 @@ const SwapForm = ({
4791
4826
  assetIconProtocolSrc: _receivingAssetProtocolIconSrc,
4792
4827
  fallbackAssetIconSrc: _fallBackAssetIconSrc,
4793
4828
  disabled: isSwapAll.current || sendingAssetTicker === null || receivingAssetTicker === null,
4794
- locked: !_formHasBalance && !isFixedRate.current,
4829
+ locked: !_formHasBalance,
4795
4830
  handleCoinAmountChange: handleReceiveAssetAmountChange,
4796
4831
  handleChangeAssetClick: handleChangeReceivingAssetClick,
4797
4832
  updateAssetInputTo: updateReceiveInputTo,
@@ -4804,26 +4839,26 @@ const SwapForm = ({
4804
4839
  ref: _toAssetSelectionButtonRef,
4805
4840
  isLoading: isLastEditedReceiving.current ? false : isLoading.current,
4806
4841
  cryptoAssetToFiatRate: _receivingAssetToFiatRate,
4807
- fiatCurrencyCode: _formHasFiat ? _fiatCurrencyCode : null,
4842
+ fiatCurrencyCode: _formHasFiat && (isLoading.current || _receivingAssetToFiatRate != null) ? _fiatCurrencyCode : null,
4808
4843
  fiatCurrencyDecimals: _fiatCurrencyDecimals,
4809
4844
  balanceLoaderText: _translations.input.balanceLoaderText,
4810
4845
  fiatInputPlaceholderText: _translations.input.fiatPlaceholder
4811
4846
  })), /*#__PURE__*/React.createElement("div", {
4812
- className: s$9["swap-form-information-field"]
4847
+ className: s$b["swap-form-information-field"]
4813
4848
  }, /*#__PURE__*/React.createElement("p", null, !isPairSupported ? _translations.informationBlock.pairNotAvailable : transactionFee && minimalAmountValid ? /*#__PURE__*/React.createElement(React.Fragment, null, _translations.informationBlock.transactionFee, /*#__PURE__*/React.createElement("span", null, AmountUtils.crypto(transactionFee == null ? void 0 : transactionFee.crypto, sendingAssetFeeCoinTickerPrintable)), (transactionFee == null ? void 0 : transactionFee.fiat) != null && (transactionFee == null ? void 0 : transactionFee.fiat) !== "" ? /*#__PURE__*/React.createElement("span", {
4814
4849
  className: "semi-transparent"
4815
4850
  }, " ~ " + AmountUtils.fiat(transactionFee == null ? void 0 : transactionFee.fiat, _fiatCurrencyCode)) : "") : !isLoading.current && (isSwapCalculated || !minimalAmount.current && swapRate) ? /*#__PURE__*/React.createElement(React.Fragment, null, _translations.informationBlock.swapRate, /*#__PURE__*/React.createElement("span", null, AmountUtils.composeRateText(sendingAssetTickerPrintable, receivingAssetTickerPrintable, swapRate, _receivingAssetDecimalCount, (_isFixedRate$current3 = isFixedRate.current) != null ? _isFixedRate$current3 : IS_FIXED_BY_DEFAULT))) : minimalAmount.current || maximumAmount.current ? !maximumAmountValid && maximumAmount.current != null ? /*#__PURE__*/React.createElement(React.Fragment, null, _translations.informationBlock.maximumAmount, /*#__PURE__*/React.createElement("span", {
4816
- className: s$9["interactable"] + " " + s$9["red"],
4851
+ className: s$b["interactable"] + " " + s$b["red"],
4817
4852
  onClick: isLoading.current ? () => {} : e => callHandlingErrors(handleMaximumAmountClick, e)
4818
4853
  }, AmountUtils.crypto((_maximumAmount$curren6 = maximumAmount.current) == null ? void 0 : _maximumAmount$curren6.crypto, isLastEditedReceiving.current ? receivingAssetTickerPrintable : sendingAssetTickerPrintable)), ((_maximumAmount$curren7 = maximumAmount.current) == null ? void 0 : _maximumAmount$curren7.fiat) != null && ((_maximumAmount$curren8 = maximumAmount.current) == null ? void 0 : _maximumAmount$curren8.fiat) !== "" ? /*#__PURE__*/React.createElement("span", {
4819
4854
  className: "semi-transparent"
4820
4855
  }, " ~ " + AmountUtils.fiat(maximumAmount.current.fiat, _fiatCurrencyCode)) : "") : !minimalAmount.current ? "" : /*#__PURE__*/React.createElement(React.Fragment, null, _translations.informationBlock.minimumAmount, /*#__PURE__*/React.createElement("span", {
4821
- className: s$9["interactable"] + " " + (!minimalAmountValid ? s$9["red"] : ""),
4856
+ className: s$b["interactable"] + " " + (!minimalAmountValid ? s$b["red"] : ""),
4822
4857
  onClick: isLoading.current ? () => {} : e => callHandlingErrors(handleMinimalAmountClick, e)
4823
4858
  }, AmountUtils.crypto(minimalAmount.current.crypto, isLastEditedReceiving.current ? receivingAssetTickerPrintable : sendingAssetTickerPrintable)), ((_minimalAmount$curren7 = minimalAmount.current) == null ? void 0 : _minimalAmount$curren7.fiat) != null && minimalAmount.current.fiat !== "" ? /*#__PURE__*/React.createElement("span", {
4824
4859
  className: "semi-transparent"
4825
- }, " ~ " + AmountUtils.fiat(minimalAmount.current.fiat, _fiatCurrencyCode)) : "") : isLoading.current ? sendAssetAmount.current || isSwapAll.current ? _translations.informationBlock[_formHasBalance ? "calculatingNetworkFee" : "calculatingSwapRates"] : _translations.informationBlock.loadingMinimalAmount : "")), isAddressFieldEnabled ? /*#__PURE__*/React.createElement("div", {
4826
- className: s$9["swap-form-address-field"]
4860
+ }, " ~ " + AmountUtils.fiat(minimalAmount.current.fiat, _fiatCurrencyCode)) : "") : isLoading.current ? sendAssetAmount.current || receiveAssetAmount.current || isSwapAll.current ? _translations.informationBlock[_formHasBalance ? "calculatingNetworkFee" : "calculatingSwapRates"] : _translations.informationBlock.loadingMinimalAmount : "")), isAddressFieldEnabled ? /*#__PURE__*/React.createElement("div", {
4861
+ className: s$b["swap-form-address-field"]
4827
4862
  }, /*#__PURE__*/React.createElement(TitleBox, {
4828
4863
  title: _translations.addressFields.addressTitle
4829
4864
  }, /*#__PURE__*/React.createElement(Textarea, {
@@ -4861,20 +4896,20 @@ const SwapForm = ({
4861
4896
  adaptiveHeight: true,
4862
4897
  placeholder: _translations.addressFields.extraIdPlaceholder
4863
4898
  })) : null) : null) : null, validationContent ? /*#__PURE__*/React.createElement("div", {
4864
- className: s$9["swap-form-validation-text"]
4899
+ className: s$b["swap-form-validation-text"]
4865
4900
  }, /*#__PURE__*/React.createElement(Validation, {
4866
4901
  text: validationContent
4867
4902
  })) : "", /*#__PURE__*/React.createElement("div", {
4868
- className: s$9["swap-form-button-container"]
4903
+ className: s$b["swap-form-button-container"]
4869
4904
  }, !_termsOfUseUrl || !_privacyPolicyUrl ? null : /*#__PURE__*/React.createElement("p", {
4870
- className: s$9["swap-form-button-container-consent-text"]
4905
+ className: s$b["swap-form-button-container-consent-text"]
4871
4906
  }, _translations.consents.consentText + " ", /*#__PURE__*/React.createElement("a", {
4872
4907
  href: _termsOfUseUrl,
4873
- className: s$9["swap-form-button-container-consent-text-link"],
4908
+ className: s$b["swap-form-button-container-consent-text-link"],
4874
4909
  target: "_blank"
4875
4910
  }, _translations.consents.termsOfUse), " " + _translations.consents.and + " ", /*#__PURE__*/React.createElement("a", {
4876
4911
  href: _privacyPolicyUrl,
4877
- className: s$9["swap-form-button-container-consent-text-link"],
4912
+ className: s$b["swap-form-button-container-consent-text-link"],
4878
4913
  target: "_blank"
4879
4914
  }, _translations.consents.privacyPolicy), "."), /*#__PURE__*/React.createElement(Button, {
4880
4915
  size: "lg",
@@ -4982,7 +5017,7 @@ async function generateQrAndShowInCanvas(encodingString) {
4982
5017
  }
4983
5018
  }
4984
5019
 
4985
- var s$6 = {"qr-code":"_VZ0dT","fill":"_hFE1l"};
5020
+ var s$8 = {"qr-code":"_VZ0dT","fill":"_hFE1l"};
4986
5021
 
4987
5022
  /**
4988
5023
  * QrCode component renders a QR code for a provided crypto address.
@@ -5011,7 +5046,7 @@ const QrCode = ({
5011
5046
  })();
5012
5047
  }, [address]);
5013
5048
  return /*#__PURE__*/React.createElement("div", {
5014
- className: s$6["qr-code"] + (_fill ? " " + s$6["fill"] : ""),
5049
+ className: s$8["qr-code"] + (_fill ? " " + s$8["fill"] : ""),
5015
5050
  ref: canvasRef
5016
5051
  });
5017
5052
  };
@@ -5023,7 +5058,7 @@ QrCode.defaultProps = {
5023
5058
  fill: false
5024
5059
  };
5025
5060
 
5026
- var s$5 = {"first-line-text":"_IGz2I","wrap":"_eKd8P","break":"_mT5i4","full-text":"_PVKxC","shorted":"_wB5qV","horizontal":"_lqJz-","line":"_MGRy0","second-line-text":"_hdF64"};
5061
+ var s$7 = {"first-line-text":"_IGz2I","wrap":"_eKd8P","break":"_mT5i4","full-text":"_PVKxC","shorted":"_wB5qV","horizontal":"_lqJz-","line":"_MGRy0","second-line-text":"_hdF64"};
5027
5062
 
5028
5063
  /**
5029
5064
  * Renders up to three lines of text with configurable options for horizontal layout, text wrapping, and breaking.
@@ -5053,19 +5088,19 @@ const LinesOfText = ({
5053
5088
  breakFirstLine: _breakFirstLine = false
5054
5089
  }) => {
5055
5090
  return _defaultTextContent ? /*#__PURE__*/React.createElement("div", {
5056
- className: s$5["centered-vertically"]
5091
+ className: s$7["centered-vertically"]
5057
5092
  }, _defaultTextContent) : /*#__PURE__*/React.createElement("div", {
5058
- className: _isHorizontal ? s$5["horizontal"] : ""
5093
+ className: _isHorizontal ? s$7["horizontal"] : ""
5059
5094
  }, /*#__PURE__*/React.createElement("h5", {
5060
- className: s$5["first-line-text"]
5095
+ className: s$7["first-line-text"]
5061
5096
  }, /*#__PURE__*/React.createElement("span", {
5062
- className: `${_isFirstLineTextReducible ? s$5["shorted"] : s$5["full-text"]} ${_wrapFirstLine ? " " + s$5["wrap"] : ""} ${_breakFirstLine ? " " + s$5["break"] : ""}`
5097
+ className: `${_isFirstLineTextReducible ? s$7["shorted"] : s$7["full-text"]} ${_wrapFirstLine ? " " + s$7["wrap"] : ""} ${_breakFirstLine ? " " + s$7["break"] : ""}`
5063
5098
  }, _firstLineText), `\u00A0${_firstLineNotReducibleSuffix}`), _isHorizontal ? /*#__PURE__*/React.createElement("div", {
5064
5099
  className: "line"
5065
5100
  }) : null, _secondLineText ? /*#__PURE__*/React.createElement("p", {
5066
- className: s$5["second-line-text"]
5101
+ className: s$7["second-line-text"]
5067
5102
  }, _secondLineText) : null, _thirdLineText ? /*#__PURE__*/React.createElement("p", {
5068
- className: s$5["second-line-text"]
5103
+ className: s$7["second-line-text"]
5069
5104
  }, _thirdLineText) : null);
5070
5105
  };
5071
5106
  LinesOfText.propTypes = {
@@ -5091,7 +5126,7 @@ LinesOfText.defaultProps = {
5091
5126
  breakFirstLine: false
5092
5127
  };
5093
5128
 
5094
- var s$4 = {"line-with-icon-link-icon":"_8HT4K","line-with-icon-link":"_m8MBC","line-with-icon-link-text":"_M7e-R"};
5129
+ var s$6 = {"line-with-icon-link-icon":"_8HT4K","line-with-icon-link":"_m8MBC","line-with-icon-link-text":"_M7e-R"};
5095
5130
 
5096
5131
  /**
5097
5132
  * Renders a line with text and an accompanying icon that serves as a link.
@@ -5107,9 +5142,9 @@ const LineWithIconLink = ({
5107
5142
  url
5108
5143
  }) => {
5109
5144
  return /*#__PURE__*/React.createElement("div", {
5110
- className: s$4["line-with-icon-link"]
5145
+ className: s$6["line-with-icon-link"]
5111
5146
  }, /*#__PURE__*/React.createElement("h5", {
5112
- className: s$4["line-with-icon-link-text"]
5147
+ className: s$6["line-with-icon-link-text"]
5113
5148
  }, text), /*#__PURE__*/React.createElement("a", {
5114
5149
  href: url,
5115
5150
  target: "_blank",
@@ -5351,7 +5386,7 @@ TitledLineWithIconLink.propTypes = {
5351
5386
  };
5352
5387
  TitledLineWithIconLink.defaultProps = {};
5353
5388
 
5354
- var s$3 = {"radio-button-with-text-container":"_n8DcU","radio-button-with-text":"_BcSKE","selected":"_orWq2","disabled":"_2bALK","hide":"_-LxGT","radio-button-with-text-wrapper":"_cRkxm","radio-button-with-text-content":"_gUlt9","radio-button-with-text-dots":"_pyIax","show":"_EOvAZ"};
5389
+ var s$5 = {"radio-button-with-text-container":"_n8DcU","radio-button-with-text":"_BcSKE","selected":"_orWq2","disabled":"_2bALK","hide":"_-LxGT","radio-button-with-text-wrapper":"_cRkxm","radio-button-with-text-content":"_gUlt9","radio-button-with-text-dots":"_pyIax","show":"_EOvAZ"};
5355
5390
 
5356
5391
  /**
5357
5392
  * RadioButtonWithText component with a label and optional tooltip.
@@ -5395,26 +5430,26 @@ const RadioButtonWithText = ({
5395
5430
  }
5396
5431
  };
5397
5432
  return /*#__PURE__*/React.createElement("div", {
5398
- className: s$3["radio-button-with-text-container"]
5433
+ className: s$5["radio-button-with-text-container"]
5399
5434
  }, /*#__PURE__*/React.createElement("label", {
5400
5435
  htmlFor: "radio-button-with-text-" + _id,
5401
- className: [s$3["radio-button-with-text"], _isSwitchedOn ? s$3["selected"] : "", isLoading ? s$3["hide"] : "", _isDisabled ? s$3["disabled"] : ""].join(" "),
5436
+ className: [s$5["radio-button-with-text"], _isSwitchedOn ? s$5["selected"] : "", isLoading ? s$5["hide"] : "", _isDisabled ? s$5["disabled"] : ""].join(" "),
5402
5437
  onMouseEnter: e => handleError(onMouseEnter, e),
5403
5438
  onMouseLeave: e => handleError(onMouseLeave, e)
5404
5439
  }, _tooltipText && showTooltip ? /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Tooltip, {
5405
5440
  showTooltip: showTooltip,
5406
5441
  handleClick: () => setShowTooltip(false)
5407
5442
  }, _tooltipText)) : null, /*#__PURE__*/React.createElement("div", {
5408
- className: s$3["radio-button-with-text-dots"] + (isLoading ? s$3["show"] : "")
5443
+ className: s$5["radio-button-with-text-dots"] + (isLoading ? s$5["show"] : "")
5409
5444
  }, /*#__PURE__*/React.createElement(LoadingDots, null)), /*#__PURE__*/React.createElement("div", {
5410
- className: s$3["radio-button-with-text-content"] + " " + ("")
5445
+ className: s$5["radio-button-with-text-content"] + " " + ("")
5411
5446
  }, /*#__PURE__*/React.createElement("input", {
5412
5447
  id: "radio-button-with-text-" + _id,
5413
5448
  type: "checkbox",
5414
5449
  value: _isSwitchedOn,
5415
5450
  onChange: handleChange
5416
5451
  }), /*#__PURE__*/React.createElement("span", {
5417
- className: s$3["radio-button-with-text-wrapper"]
5452
+ className: s$5["radio-button-with-text-wrapper"]
5418
5453
  }, _text))));
5419
5454
  };
5420
5455
  RadioButtonWithText.propTypes = {
@@ -5433,7 +5468,7 @@ RadioButtonWithText.defaultProps = {
5433
5468
  id: ""
5434
5469
  };
5435
5470
 
5436
- var s$2 = {"information-message":"_95-Ev","data-loaded":"_-kB8A","big-image":"_2LO1t","information-message-text":"_BiT68","white-text":"_-BraU"};
5471
+ var s$4 = {"information-message":"_95-Ev","data-loaded":"_-kB8A","big-image":"_2LO1t","information-message-text":"_BiT68","white-text":"_-BraU"};
5437
5472
 
5438
5473
  var InfoIcon = (() => /*#__PURE__*/React.createElement("svg", {
5439
5474
  width: "24",
@@ -5470,13 +5505,13 @@ const InformationMessage = ({
5470
5505
  children: _children = null
5471
5506
  }) => {
5472
5507
  return /*#__PURE__*/React.createElement("div", {
5473
- className: s$2["information-message"] + (_bigImage ? " " + s$2["big-image"] : "")
5508
+ className: s$4["information-message"] + (_bigImage ? " " + s$4["big-image"] : "")
5474
5509
  }, _icon ? /*#__PURE__*/React.createElement("img", {
5475
5510
  src: _icon,
5476
5511
  alt: "info icon",
5477
5512
  loading: "lazy"
5478
5513
  }) : /*#__PURE__*/React.createElement(InfoIcon, null), /*#__PURE__*/React.createElement("p", {
5479
- className: s$2["information-message-text"] + (_whiteText ? " " + s$2["white-text"] : "")
5514
+ className: s$4["information-message-text"] + (_whiteText ? " " + s$4["white-text"] : "")
5480
5515
  }, _text, _children));
5481
5516
  };
5482
5517
  InformationMessage.propTypes = {
@@ -5494,7 +5529,7 @@ InformationMessage.defaultProps = {
5494
5529
  children: null
5495
5530
  };
5496
5531
 
5497
- var s$1 = {"input":"_ulRDR","big-height":"_F2P0V","small-height":"_-B-mJ","disabled":"_nGsPr","fill-width":"_5xJbH","error-encountered":"_zp1RY","input-clear-button":"_iqmlY","image-background":"_YK4ec","image-background-clear-button":"_VOvdT","input-label":"_bICe7"};
5532
+ var s$3 = {"input":"_ulRDR","big-height":"_F2P0V","small-height":"_-B-mJ","disabled":"_nGsPr","fill-width":"_5xJbH","error-encountered":"_zp1RY","input-clear-button":"_iqmlY","image-background":"_YK4ec","image-background-clear-button":"_VOvdT","input-label":"_bICe7"};
5498
5533
 
5499
5534
  /**
5500
5535
  * Input component for forms.
@@ -5558,12 +5593,12 @@ const Input = /*#__PURE__*/forwardRef(({
5558
5593
  }
5559
5594
  };
5560
5595
  return /*#__PURE__*/React.createElement("div", {
5561
- className: [s$1["input"], _isBigHeight ? s$1["big-height"] : "", _isSmallHeight ? s$1["small-height"] : "", _disabled ? s$1["disabled"] : "", _fillWidth ? s$1["fill-width"] : "", _imageBackground ? s$1["image-background"] : ""].join(" ")
5596
+ className: [s$3["input"], _isBigHeight ? s$3["big-height"] : "", _isSmallHeight ? s$3["small-height"] : "", _disabled ? s$3["disabled"] : "", _fillWidth ? s$3["fill-width"] : "", _imageBackground ? s$3["image-background"] : ""].join(" ")
5562
5597
  }, _label ? /*#__PURE__*/React.createElement("label", {
5563
5598
  htmlFor: _id,
5564
- className: s$1["input-label"]
5599
+ className: s$3["input-label"]
5565
5600
  }, _label) : null, _clearButton ? /*#__PURE__*/React.createElement("div", {
5566
- className: s$1["input-clear-button"]
5601
+ className: s$3["input-clear-button"]
5567
5602
  }, /*#__PURE__*/React.createElement(Close, {
5568
5603
  onClick: handleClearButtonClick,
5569
5604
  color: "dark-invert"
@@ -5573,7 +5608,7 @@ const Input = /*#__PURE__*/forwardRef(({
5573
5608
  name: _name,
5574
5609
  onChange: e => handleError(_onChange, e),
5575
5610
  placeholder: _placeholder,
5576
- className: _className + (_errorEncountered ? " " + s$1["error-encountered"] : ""),
5611
+ className: _className + (_errorEncountered ? " " + s$3["error-encountered"] : ""),
5577
5612
  defaultValue: _defaultValue,
5578
5613
  disabled: _disabled,
5579
5614
  onKeyUp: event => _onKeyUp(event),
@@ -5585,7 +5620,7 @@ const Input = /*#__PURE__*/forwardRef(({
5585
5620
  name: _name,
5586
5621
  onChange: e => handleError(_onChange, e),
5587
5622
  placeholder: _placeholder,
5588
- className: _className + (_errorEncountered ? " " + s$1["error-encountered"] : ""),
5623
+ className: _className + (_errorEncountered ? " " + s$3["error-encountered"] : ""),
5589
5624
  value: _value,
5590
5625
  disabled: _disabled,
5591
5626
  onKeyUp: event => _onKeyUp(event),
@@ -5640,11 +5675,253 @@ Input.defaultProps = {
5640
5675
  errorEncountered: false
5641
5676
  };
5642
5677
 
5643
- var s = {"coin-picker":"_mvuzQ","loading":"_18kIX","item":"_fSxCX","link":"_rOS3q","content":"_ONDTD","name":"_GlPf1","amount":"_kiTZB","icon":"_jrdDI","coin-picker-search":"_9BFcQ","coin-picker-wrapper":"_6Melc","fixed-height":"_pSvdH","reached-top":"_SQFMD","reached-bottom":"_CTcCE","coin-picker-wrapper-content":"_uK6LL","coin-picker-wrapper-content-bottom-message":"_TxE8d","coin-picker-wrapper-content-bottom-message-link":"_jX5uW","coin-picker-wrapper-content-assets":"_YA-nb","outline":"_665-T","disabled":"_hBmLs","toggle-container":"_KZMGR","arrow":"_dgQQJ","coin-picker-wrapper-content-load-more-button":"_DjR6l","coin-picker-wrapper-content-asset-not-found":"_0PUY9"};
5678
+ var s$2 = {"coin-picker":"_mvuzQ","loading":"_18kIX","item":"_fSxCX","link":"_rOS3q","content":"_ONDTD","name":"_GlPf1","amount":"_kiTZB","icon":"_jrdDI","coin-picker-search":"_9BFcQ","coin-picker-wrapper":"_6Melc","fixed-height":"_pSvdH","reached-top":"_SQFMD","reached-bottom":"_CTcCE","coin-picker-wrapper-content":"_uK6LL","coin-picker-wrapper-content-bottom-message":"_TxE8d","coin-picker-wrapper-content-bottom-message-link":"_jX5uW","coin-picker-wrapper-content-assets":"_YA-nb","outline":"_665-T","disabled":"_hBmLs","toggle-container":"_KZMGR","arrow":"_dgQQJ","coin-picker-wrapper-content-load-more-button":"_DjR6l","coin-picker-wrapper-content-asset-not-found":"_0PUY9"};
5644
5679
 
5645
5680
  const FALLBACK_ASSET_ICON_URL = "https://rabbit.io/asset-icons/fallback.svg";
5646
5681
  const DEFAULT_CRYPTO_DECIMAL_COUNT = 8;
5647
5682
 
5683
+ /**
5684
+ * The model for cryptocurrency coins.
5685
+ *
5686
+ * WARNING: this class should not be instantiated directly. Use only predefined singleton Coin (or descendants) instances.
5687
+ */
5688
+ class Coin {
5689
+ /**
5690
+ * Creates new coin
5691
+ *
5692
+ * @param latinName {string} the coin name in latin symbols like "Bitcoin"
5693
+ * @param ticker {string} the coin symbol/ticker/code like 'BTC'. Always upper case. A unique coin identifier
5694
+ * @param tickerPrintable {string} ticker but in printable format. Useful for tokens based on external blockchains
5695
+ * like ERC20 or TRC20. It is not friendly to display USDTERC20 or BUSDTRC20 - more neat options are just
5696
+ * USDT and BUSD. Note that you should always care about user's understanding of what coin he/she is working
5697
+ * with as printable ticker for USDTERC20 and USDTTRC20 are the same.
5698
+ * @param digitsCountAfterComma {number} count of digits after the comma. E.g. 8 for bitcoin
5699
+ * @param maxValue {number|null} max possible value for cryptocurrency. Null means that the currency has no max possible value
5700
+ * @param atomName {string} name of the coin's atomic value. Like 'satoshi' for bitcoin
5701
+ * @param mainnet {Network} main network for this coin
5702
+ * @param testnet {Network} test network for this coin
5703
+ * @param minConfirmations {number} min confirmations count to treat the coin's transaction confirmed
5704
+ * @param payableEntityStringForFeeRate {string|null} the payable fee entity like byte for bitcoin or gas for ether if present
5705
+ * @param feeOptionsTimeStringsSortedDesc {string[]} array of 4 strings for fee options when sending coins. Should be sorted from the highest time to the smallest
5706
+ * @param feeRatesExpirationTimeMs {number} number of milliseconds to treat the fee rates as expired
5707
+ * @param blockchain {Blockchain} blockchain object
5708
+ * @param [protocol] {Protocol|null} token/coin protocol if relevant
5709
+ * @param [tokenAddress] {string|null} address of contract of this token (if the coin is token)
5710
+ * @param [doesUseLowerCaseAddresses] {boolean} flag to clarify whether we can use lower case addresses to ensure more robust comparisons
5711
+ * @param [doesUseOutputs=false] {boolean} true if this coin uses inputs/outputs concept and false if it uses just balances
5712
+ */
5713
+ constructor(latinName, ticker, tickerPrintable, digitsCountAfterComma, maxValue, atomName, mainnet, testnet, minConfirmations, payableEntityStringForFeeRate, feeOptionsTimeStringsSortedDesc, feeRatesExpirationTimeMs, blockchain, protocol = null, tokenAddress = null, doesUseLowerCaseAddresses = true, doesUseOutputs = false) {
5714
+ this.latinName = latinName;
5715
+ this.ticker = ticker;
5716
+ this.tickerPrintable = tickerPrintable;
5717
+ this.digits = digitsCountAfterComma;
5718
+ this.maxValue = maxValue;
5719
+ this.atomName = atomName;
5720
+ this.mainnet = mainnet;
5721
+ this.testnet = testnet;
5722
+ this.minConfirmations = minConfirmations;
5723
+ this.payableEntityStringForFeeRate = payableEntityStringForFeeRate;
5724
+ this.feeOptionsTimeStringsSortedDesc = feeOptionsTimeStringsSortedDesc;
5725
+ this.feeRatesExpirationTimeMs = feeRatesExpirationTimeMs;
5726
+ this.protocol = protocol;
5727
+ this.blockchain = blockchain;
5728
+ // TODO: [bug, critical] use testnet property for testnet contract address as it blocks the app work in testnets
5729
+ this.tokenAddress = tokenAddress;
5730
+ this.feeCoin = this;
5731
+ this._significantDigits = 8;
5732
+ this.doesUseLowerCaseAddresses = doesUseLowerCaseAddresses;
5733
+ this.doesUseOutputs = doesUseOutputs;
5734
+ }
5735
+
5736
+ /**
5737
+ * Sets fee coin
5738
+ *
5739
+ * @param feeCoin {Coin} some tokens use another coin to charge transaction fee as they work on top of some external
5740
+ * blockchain. So pass here the coin the token uses for fee charging. Like for ERC20 token the fee coin is ETH.
5741
+ * By default, the creating coin will be set as a value for this field.
5742
+ */
5743
+ setFeeCoin(feeCoin) {
5744
+ this.feeCoin = feeCoin;
5745
+ }
5746
+
5747
+ /**
5748
+ * Checks whether this coin uses another coin (blockchain) to charge fee for transactions (means works on base of
5749
+ * some external blockchain).
5750
+ *
5751
+ * @return {boolean} true if this coin uses external blockchain to perform transactions and charge fee
5752
+ */
5753
+ doesUseDifferentCoinFee() {
5754
+ return this.feeCoin !== this;
5755
+ }
5756
+
5757
+ /**
5758
+ * Converts the given atoms string/number to string representing the same amount in coin itself - floating point number
5759
+ *
5760
+ * @param atoms {string} atoms positive integer amount
5761
+ * @return {string} coin amount floating point number as a string
5762
+ */
5763
+ atomsToCoinAmount(atoms) {
5764
+ throw new Error("Not implemented in base Coin");
5765
+ }
5766
+
5767
+ /**
5768
+ * Converts the given coins amount string/number to string representing the same amount in coin atoms - integer number
5769
+ *
5770
+ * @param coinsAmount {string} coins positive floating point amount
5771
+ * @return {string} coin atoms amount integer number as a string
5772
+ */
5773
+ coinAmountToAtoms(coinsAmount) {
5774
+ throw new Error("Not implemented in base Coin");
5775
+ }
5776
+
5777
+ /**
5778
+ * Composes URL to view the tx with given id in the external blockchain explorer
5779
+ *
5780
+ * @param txId {string} id of transaction
5781
+ * @return {string} URL string
5782
+ */
5783
+ composeUrlToTransactionExplorer(txId) {
5784
+ throw new Error("Not implemented in base Coin");
5785
+ }
5786
+
5787
+ /**
5788
+ * Most of the cryptocurrencies has specific fee rate or fee price metric. This value usually has specific measure
5789
+ * like satoshi/byte or gWei/gas. This function adds the described denomination string to the given amount
5790
+ * as a suffix and returns the result string ready to be show to a user.
5791
+ *
5792
+ * @param coinAtomsString {string} coin atoms positive integer amount
5793
+ * @return {string} string of coin amount and fee rate units
5794
+ */
5795
+ coinAtomsFeeRateToCommonlyUsedAmountFormatWithDenominationString(coinAtomsString) {
5796
+ throw new Error("Not implemented in base Coin");
5797
+ }
5798
+
5799
+ /**
5800
+ * Check whether this coin support transaction prioritisation during the sending process.
5801
+ *
5802
+ * @return {boolean} true if support transaction prioritisation and false otherwise
5803
+ */
5804
+ doesSupportTransactionPrioritisation() {
5805
+ return Array.isArray(this.feeOptionsTimeStringsSortedDesc);
5806
+ }
5807
+ tickerAndProtocol() {
5808
+ try {
5809
+ var _ref;
5810
+ return `${this.tickerPrintable}${this.protocol ? (_ref = " " + this.protocol.protocol) != null ? _ref : "" : ""}`;
5811
+ } catch (e) {
5812
+ improveAndRethrow(e, "tickerAndProtocol");
5813
+ }
5814
+ }
5815
+ }
5816
+
5817
+ /**
5818
+ * A component that displays a list of coins that can be searched and filtered.
5819
+ *
5820
+ * @param {Object} props - The properties object.
5821
+ * @param {Coin[]} props.coinsList - The list of all available coins.
5822
+ * @param {Array<{coin: Coin, component: React.Component}>} props.coinsBundle - The bundle of coin components to be displayed.
5823
+ * @param {string} props.searchQuery - The search query to filter coins.
5824
+ * @param {boolean} props.partialLoadingEnabled - Determines if partial loading is enabled.
5825
+ * @param {number} props.partialLoadingIncrement - The increment of coins to load when loading more.
5826
+ * @param {Function} props.onListUpdated - Callback when the list of displayed coins is updated.
5827
+ * @param {Function} props.setIsListFull - Callback to set if the list is fully displayed.
5828
+ * @param {Function} props.setIsSearchResultEmpty - Callback to set if the search result is empty.
5829
+ * @param {number} props.triggerLoadMoreCoins - Triggers loading more coins.
5830
+ */
5831
+ const SearchableCoinsList = ({
5832
+ coinsList,
5833
+ coinsBundle,
5834
+ searchQuery,
5835
+ partialLoadingEnabled: _partialLoadingEnabled = true,
5836
+ partialLoadingIncrement: _partialLoadingIncrement = 100,
5837
+ onListUpdated: _onListUpdated = () => {},
5838
+ setIsListFull: _setIsListFull = () => {},
5839
+ setIsSearchResultEmpty: _setIsSearchResultEmpty = () => {},
5840
+ triggerLoadMoreCoins
5841
+ }) => {
5842
+ const [filteredCoins, setFilteredCoins] = useState([]);
5843
+ const [limitedCoinsNumber, setLimitedCoinsNumber] = useReferredState(0);
5844
+ const [displayedCoins, setDisplayedCoins] = useState([]);
5845
+ const handleSearchAsset = value => {
5846
+ const searchTerm = value.trim().toLowerCase();
5847
+ if (searchTerm !== "") {
5848
+ const searchWords = searchTerm.split(/\s+/); // Split search terms on whitespace
5849
+
5850
+ const filteredAndSortedCoins = coinsList.filter(coin => {
5851
+ // Check if all search words are found in any of the given properties
5852
+ return searchWords.every(word => {
5853
+ var _coin$latinName, _coin$ticker, _coin$tickerPrintable;
5854
+ return (coin == null || (_coin$latinName = coin.latinName) == null ? void 0 : _coin$latinName.toLowerCase().includes(word)) || (coin == null || (_coin$ticker = coin.ticker) == null ? void 0 : _coin$ticker.toLowerCase().includes(word)) || (coin == null || (_coin$tickerPrintable = coin.tickerPrintable) == null ? void 0 : _coin$tickerPrintable.toLowerCase().includes(word));
5855
+ });
5856
+ }).sort((a, b) => {
5857
+ // Check for exact matches
5858
+ const aMatch = a.latinName.toLowerCase() === searchTerm || a.ticker.toLowerCase() === searchTerm || a.tickerPrintable.toLowerCase() === searchTerm ? 1 : 0;
5859
+ const bMatch = b.latinName.toLowerCase() === searchTerm || b.ticker.toLowerCase() === searchTerm || b.tickerPrintable.toLowerCase() === searchTerm ? 1 : 0;
5860
+ if (bMatch - aMatch !== 0) {
5861
+ // Prioritize exact matches to the top
5862
+ return bMatch - aMatch;
5863
+ } else {
5864
+ // Sort remaining items alphabetically by latinName
5865
+ return a.latinName.toLowerCase().localeCompare(b.latinName.toLowerCase());
5866
+ }
5867
+ });
5868
+ setFilteredCoins(filteredAndSortedCoins);
5869
+ } else {
5870
+ setFilteredCoins(coinsList); // Reset to original list if search term is empty
5871
+ }
5872
+ };
5873
+ const updateDisplayedCoins = () => {
5874
+ const fullList = limitedCoinsNumber.current >= filteredCoins.length;
5875
+ setDisplayedCoins(fullList ? filteredCoins : filteredCoins.slice(0, limitedCoinsNumber.current));
5876
+ _setIsListFull(fullList);
5877
+ };
5878
+ const displayMoreCoins = () => {
5879
+ setLimitedCoinsNumber(prev => prev + _partialLoadingIncrement);
5880
+ updateDisplayedCoins();
5881
+ };
5882
+
5883
+ // eslint-disable-next-line react-hooks/exhaustive-deps
5884
+ useEffect(() => _onListUpdated(), [displayedCoins]);
5885
+
5886
+ // eslint-disable-next-line react-hooks/exhaustive-deps
5887
+ useEffect(() => displayMoreCoins(), [triggerLoadMoreCoins]);
5888
+ useEffect(() => {
5889
+ if ((filteredCoins == null ? void 0 : filteredCoins.length) > _partialLoadingIncrement && _partialLoadingEnabled) {
5890
+ setLimitedCoinsNumber(_partialLoadingIncrement);
5891
+ updateDisplayedCoins();
5892
+ } else {
5893
+ setLimitedCoinsNumber(0);
5894
+ setDisplayedCoins(filteredCoins);
5895
+ _setIsListFull(true);
5896
+ }
5897
+ _setIsSearchResultEmpty((filteredCoins == null ? void 0 : filteredCoins.length) === 0 && searchQuery !== "");
5898
+ // eslint-disable-next-line react-hooks/exhaustive-deps
5899
+ }, [filteredCoins]);
5900
+ useEffect(() => {
5901
+ if (coinsBundle != null) handleSearchAsset(searchQuery);
5902
+ // eslint-disable-next-line react-hooks/exhaustive-deps
5903
+ }, [coinsList, searchQuery]);
5904
+ return displayedCoins.map(coin => coinsBundle.find(bundleItem => bundleItem.coin.ticker === coin.ticker).component).map(Item => /*#__PURE__*/React.createElement(Item, null));
5905
+ };
5906
+ SearchableCoinsList.propTypes = {
5907
+ coinsList: PropTypes.array.isRequired,
5908
+ coinsBundle: PropTypes.array.isRequired,
5909
+ searchQuery: PropTypes.string.isRequired,
5910
+ partialLoadingEnabled: PropTypes.bool,
5911
+ partialLoadingIncrement: PropTypes.number,
5912
+ onListUpdated: PropTypes.func,
5913
+ setIsListFull: PropTypes.func,
5914
+ setIsSearchResultEmpty: PropTypes.func,
5915
+ triggerLoadMoreCoins: PropTypes.number
5916
+ };
5917
+ SearchableCoinsList.defaultProps = {
5918
+ partialLoadingEnabled: true,
5919
+ partialLoadingIncrement: 100,
5920
+ onListUpdated: () => {},
5921
+ setIsListFull: () => {},
5922
+ setIsSearchResultEmpty: () => {}
5923
+ };
5924
+
5648
5925
  const COIN_PICKER_MODES = {
5649
5926
  BUTTON: "BUTTON",
5650
5927
  CHECKBOX: "CHECKBOX"
@@ -5719,7 +5996,6 @@ const CoinPicker = ({
5719
5996
  }) => {
5720
5997
  const handleError = useCallHandlingErrors();
5721
5998
  const [coins, setCoins] = useState(null);
5722
- const [filteredCoins, setFilteredCoins] = useState([]);
5723
5999
  const [initiallyEnabledCoins, setInitiallyEnabledCoins] = useReferredState({});
5724
6000
  const [currentlyEnabledCoins, setCurrentlyEnabledCoins] = useReferredState({});
5725
6001
  const [searchFieldValue, setSearchFieldValue] = useState("");
@@ -5727,9 +6003,9 @@ const CoinPicker = ({
5727
6003
  const [searchEnabled, setSearchEnabled] = useState(false);
5728
6004
  const [coinsContent, setCoinsContent] = useState(null);
5729
6005
  const [isCoinsDataReloadable, setIsCoinsDataReloadable] = useState(false);
5730
- const [limitedCoinsNumber, setLimitedCoinsNumber] = useState(0);
5731
- const [displayedCoins, setDisplayedCoins] = useState([]);
5732
6006
  const [isListFull, setIsListFull] = useState(true);
6007
+ const [isSearchResultEmpty, setIsSearchResultEmpty] = useState(false);
6008
+ const [triggerLoadMoreCoins, setTriggerLoadMoreCoins] = useState(0);
5733
6009
  const searchRef = useRef();
5734
6010
  const scrollContainerRef = useRef();
5735
6011
  const skeletonItemsCount = (initiallyEnabledCoinsList == null ? void 0 : initiallyEnabledCoinsList.length) || (_partialLoadingEnabled ? _partialLoadingIncrement : 6);
@@ -5772,42 +6048,11 @@ const CoinPicker = ({
5772
6048
  if (_mode === COIN_PICKER_MODES.CHECKBOX) handleToggleClick(coin.ticker);
5773
6049
  _handleClick(coin.ticker);
5774
6050
  };
5775
- const handleSearchAsset = value => {
5776
- // TODO: [refactoring, high] use unified search function. task_id=be0475316f374dd4a926c948d969e704
5777
- setSearchFieldValue(value); // Trim the input to handle leading/trailing spaces
5778
- const searchTerm = value.trim().toLowerCase();
5779
- if (searchTerm !== "") {
5780
- const searchWords = searchTerm.split(/\s+/); // Split search terms on whitespace
5781
-
5782
- const filteredAndSortedCoins = coins.filter(coin => {
5783
- // Check if all search words are found in any of the given properties
5784
- return searchWords.every(word => {
5785
- var _coin$latinName, _coin$ticker, _coin$tickerPrintable;
5786
- return (coin == null || (_coin$latinName = coin.latinName) == null ? void 0 : _coin$latinName.toLowerCase().includes(word)) || (coin == null || (_coin$ticker = coin.ticker) == null ? void 0 : _coin$ticker.toLowerCase().includes(word)) || (coin == null || (_coin$tickerPrintable = coin.tickerPrintable) == null ? void 0 : _coin$tickerPrintable.toLowerCase().includes(word));
5787
- });
5788
- }).sort((a, b) => {
5789
- // Check for exact matches
5790
- const aMatch = a.latinName.toLowerCase() === searchTerm || a.ticker.toLowerCase() === searchTerm || a.tickerPrintable.toLowerCase() === searchTerm ? 1 : 0;
5791
- const bMatch = b.latinName.toLowerCase() === searchTerm || b.ticker.toLowerCase() === searchTerm || b.tickerPrintable.toLowerCase() === searchTerm ? 1 : 0;
5792
- if (bMatch - aMatch !== 0) {
5793
- // Prioritize exact matches to the top
5794
- return bMatch - aMatch;
5795
- } else {
5796
- // Sort remaining items alphabetically by latinName
5797
- return a.latinName.toLowerCase().localeCompare(b.latinName.toLowerCase());
5798
- }
5799
- });
5800
- setFilteredCoins(filteredAndSortedCoins);
5801
- } else {
5802
- setFilteredCoins(coins); // Reset to original list if search term is empty
5803
- }
5804
- };
5805
6051
  const loadCoinsAndSaveToState = () => {
5806
6052
  (async () => {
5807
6053
  try {
5808
6054
  const data = _loadCoinsAndContent ? await _loadCoinsAndContent() : await defaultLoadCoinsAndContent();
5809
6055
  setCoins(data.coins);
5810
- setFilteredCoins(data.coins);
5811
6056
  setCoinsContent(data.content);
5812
6057
  setIsCoinsDataReloadable(!!data.isCoinsDataReloadable);
5813
6058
  } catch (e) {
@@ -5846,43 +6091,22 @@ const CoinPicker = ({
5846
6091
  setSearchEnabled(_search ? true : _searchAdaptive && initiallyEnabledCoinsList ? initiallyEnabledCoinsList.length > 6 : false);
5847
6092
  // eslint-disable-next-line react-hooks/exhaustive-deps
5848
6093
  }, [_search, _searchAdaptive, coins]);
5849
- useEffect(() => {
5850
- if ((filteredCoins == null ? void 0 : filteredCoins.length) > _partialLoadingIncrement && _partialLoadingEnabled) {
5851
- setLimitedCoinsNumber(_partialLoadingIncrement);
5852
- } else {
5853
- setLimitedCoinsNumber(0);
5854
- setDisplayedCoins(filteredCoins);
5855
- setIsListFull(true);
5856
- }
5857
- // eslint-disable-next-line react-hooks/exhaustive-deps
5858
- }, [filteredCoins]);
5859
- useEffect(() => {
5860
- if (limitedCoinsNumber > 0) {
5861
- const coinsToDisplay = filteredCoins.slice(0, limitedCoinsNumber);
5862
- setDisplayedCoins(coinsToDisplay);
5863
- setIsListFull(coinsToDisplay.length === filteredCoins.length);
5864
- }
5865
- // eslint-disable-next-line react-hooks/exhaustive-deps
5866
- }, [limitedCoinsNumber]);
5867
- const displayMoreCoins = () => {
5868
- setLimitedCoinsNumber(prev => prev + _partialLoadingIncrement);
5869
- };
5870
6094
  const skeleton = () => {
5871
6095
  let skeletonItems = [];
5872
6096
  for (let i = 0; i < skeletonItemsCount; i++) {
5873
6097
  skeletonItems.push( /*#__PURE__*/React.createElement("div", {
5874
- className: s["item"],
6098
+ className: s$2["item"],
5875
6099
  key: "coin-picker-skeleton-" + i
5876
6100
  }, /*#__PURE__*/React.createElement("div", {
5877
- className: s["link"] + " " + s["loading"]
6101
+ className: s$2["link"] + " " + s$2["loading"]
5878
6102
  }, /*#__PURE__*/React.createElement("div", {
5879
- className: s["icon"] + " " + "skeleton-dark"
6103
+ className: s$2["icon"] + " " + "skeleton-dark"
5880
6104
  }), /*#__PURE__*/React.createElement("div", {
5881
- className: s["content"]
6105
+ className: s$2["content"]
5882
6106
  }, /*#__PURE__*/React.createElement("div", {
5883
- className: s["name"] + " " + "skeleton-dark"
6107
+ className: s$2["name"] + " " + "skeleton-dark"
5884
6108
  }), /*#__PURE__*/React.createElement("div", {
5885
- className: s["amount"] + " " + "skeleton-dark"
6109
+ className: s$2["amount"] + " " + "skeleton-dark"
5886
6110
  })))));
5887
6111
  }
5888
6112
  return skeletonItems;
@@ -5890,87 +6114,101 @@ const CoinPicker = ({
5890
6114
  const handleScroll = () => {
5891
6115
  var _scrollContainerRef$c, _scrollContainerRef$c2, _scrollContainerRef$c3, _scrollContainerRef$c4, _scrollContainerRef$c5, _scrollContainerRef$c6, _scrollContainerRef$c7;
5892
6116
  if (scrollWrapperClass !== "") setScrollWrapperClass("");
5893
- if (((_scrollContainerRef$c = scrollContainerRef.current) == null ? void 0 : _scrollContainerRef$c.scrollTop) === 0) setScrollWrapperClass(s["reached-top"] + (((_scrollContainerRef$c2 = scrollContainerRef.current) == null ? void 0 : _scrollContainerRef$c2.scrollHeight) - ((_scrollContainerRef$c3 = scrollContainerRef.current) == null ? void 0 : _scrollContainerRef$c3.clientHeight) === 0 ? " " + s["reached-bottom"] : ""));
5894
- if (((_scrollContainerRef$c4 = scrollContainerRef.current) == null ? void 0 : _scrollContainerRef$c4.scrollTop) > 0 && ((_scrollContainerRef$c5 = scrollContainerRef.current) == null ? void 0 : _scrollContainerRef$c5.scrollTop) === ((_scrollContainerRef$c6 = scrollContainerRef.current) == null ? void 0 : _scrollContainerRef$c6.scrollHeight) - ((_scrollContainerRef$c7 = scrollContainerRef.current) == null ? void 0 : _scrollContainerRef$c7.clientHeight)) setScrollWrapperClass(s["reached-bottom"]);
6117
+ if (((_scrollContainerRef$c = scrollContainerRef.current) == null ? void 0 : _scrollContainerRef$c.scrollTop) === 0) setScrollWrapperClass(s$2["reached-top"] + (((_scrollContainerRef$c2 = scrollContainerRef.current) == null ? void 0 : _scrollContainerRef$c2.scrollHeight) - ((_scrollContainerRef$c3 = scrollContainerRef.current) == null ? void 0 : _scrollContainerRef$c3.clientHeight) === 0 ? " " + s$2["reached-bottom"] : ""));
6118
+ if (((_scrollContainerRef$c4 = scrollContainerRef.current) == null ? void 0 : _scrollContainerRef$c4.scrollTop) > 0 && ((_scrollContainerRef$c5 = scrollContainerRef.current) == null ? void 0 : _scrollContainerRef$c5.scrollTop) === ((_scrollContainerRef$c6 = scrollContainerRef.current) == null ? void 0 : _scrollContainerRef$c6.scrollHeight) - ((_scrollContainerRef$c7 = scrollContainerRef.current) == null ? void 0 : _scrollContainerRef$c7.clientHeight)) setScrollWrapperClass(s$2["reached-bottom"]);
5895
6119
  };
6120
+ const displayMoreCoins = () => setTriggerLoadMoreCoins(prev => prev + 1);
5896
6121
 
5897
6122
  // eslint-disable-next-line react-hooks/exhaustive-deps
5898
6123
  useEffect(handleScroll, []);
5899
-
5900
- // eslint-disable-next-line react-hooks/exhaustive-deps
5901
- useEffect(handleScroll, [filteredCoins]);
5902
6124
  const shouldShowSkeleton = coins == null;
5903
6125
  return coins ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
5904
- className: s["coin-picker"] + (shouldShowSkeleton ? " " + s["loading"] : "")
6126
+ className: s$2["coin-picker"] + (shouldShowSkeleton ? " " + s$2["loading"] : "")
5905
6127
  }, searchEnabled ? /*#__PURE__*/React.createElement("div", {
5906
- className: s["coin-picker-search"]
6128
+ className: s$2["coin-picker-search"]
5907
6129
  }, /*#__PURE__*/React.createElement(Input, {
5908
6130
  value: searchFieldValue,
5909
- onChange: e => handleSearchAsset(e.target.value),
6131
+ onChange: e => {
6132
+ setSearchFieldValue(e.target.value);
6133
+ handleScroll();
6134
+ },
5910
6135
  placeholder: _texts.searchPlaceholder,
5911
6136
  isSmallHeight: true,
5912
6137
  clearButton: true,
5913
6138
  ref: searchRef,
5914
6139
  disabled: shouldShowSkeleton
5915
6140
  })) : "", /*#__PURE__*/React.createElement("div", {
5916
- className: s["coin-picker-wrapper"] + " " + scrollWrapperClass + (searchEnabled ? " " + s["fixed-height"] : "")
6141
+ className: s$2["coin-picker-wrapper"] + " " + scrollWrapperClass + (searchEnabled ? " " + s$2["fixed-height"] : "")
5917
6142
  }, /*#__PURE__*/React.createElement("div", {
5918
- className: s["coin-picker-wrapper-content"] + (searchEnabled ? " " + s["fixed-height"] : ""),
6143
+ className: s$2["coin-picker-wrapper-content"] + (searchEnabled ? " " + s$2["fixed-height"] : ""),
5919
6144
  ref: scrollContainerRef,
5920
6145
  onScroll: handleScroll
5921
6146
  }, /*#__PURE__*/React.createElement("div", {
5922
- className: s["coin-picker-wrapper-content-assets"]
5923
- }, shouldShowSkeleton ? skeleton() : displayedCoins.map((coin, index) => {
5924
- var _coinsContent$find$su, _coinsContent$find;
5925
- const {
5926
- assetIconSrc,
5927
- assetIconProtocolSrc
5928
- } = _coinToIconPaths(coin);
5929
- return /*#__PURE__*/React.createElement("div", {
5930
- className: s["item"],
5931
- key: `picker-${coin.ticker}-${index}`,
5932
- onClick: e => handleError(() => handleCoinClick(coin), e)
5933
- }, /*#__PURE__*/React.createElement("div", {
5934
- className: s["link"] + (currentlyEnabledCoins.current[coin.ticker] !== initiallyEnabledCoins.current[coin.ticker] ? " " + s["outline"] : "")
5935
- }, /*#__PURE__*/React.createElement(AssetIcon, {
5936
- assetIconSrc: assetIconSrc,
5937
- assetIconProtocolSrc: assetIconProtocolSrc,
5938
- fallbackSrc: FALLBACK_ASSET_ICON_URL
5939
- }), /*#__PURE__*/React.createElement("div", {
5940
- className: s["content"],
5941
- key: coin.ticker
5942
- }, /*#__PURE__*/React.createElement("p", {
5943
- className: s["name"]
5944
- }, coin.latinName), /*#__PURE__*/React.createElement("p", {
5945
- className: s["amount"]
5946
- }, (_coinsContent$find$su = coinsContent == null || (_coinsContent$find = coinsContent.find(i => i.coin === coin)) == null ? void 0 : _coinsContent$find.subtitle) != null ? _coinsContent$find$su : "")), _mode === COIN_PICKER_MODES.BUTTON ? /*#__PURE__*/React.createElement("div", {
5947
- className: s["arrow"]
5948
- }, /*#__PURE__*/React.createElement(ArrowIcon, null)) : _mode === COIN_PICKER_MODES.CHECKBOX ? /*#__PURE__*/React.createElement("div", {
5949
- className: s["toggle-container"]
5950
- }, /*#__PURE__*/React.createElement(RadioButtonWithText, {
5951
- onStateChange: resetButtonLoader => handleToggleClick(coin.ticker, resetButtonLoader),
5952
- isSwitchedOn: currentlyEnabledCoins.current[coin.ticker],
5953
- id: index
5954
- })) : ""));
5955
- })), (filteredCoins == null ? void 0 : filteredCoins.length) === 0 && searchFieldValue !== "" ? /*#__PURE__*/React.createElement("div", {
5956
- className: s["coin-picker-wrapper-content-asset-not-found"]
6147
+ className: s$2["coin-picker-wrapper-content-assets"]
6148
+ }, shouldShowSkeleton ? skeleton() : /*#__PURE__*/React.createElement(SearchableCoinsList, {
6149
+ searchQuery: searchFieldValue,
6150
+ onListUpdated: () => handleScroll(),
6151
+ setIsListFull: setIsListFull,
6152
+ setIsSearchResultEmpty: setIsSearchResultEmpty,
6153
+ triggerLoadMoreCoins: triggerLoadMoreCoins,
6154
+ coinsList: coins,
6155
+ coinsBundle: coins == null ? void 0 : coins.map((coin, index) => {
6156
+ return {
6157
+ coin: coin,
6158
+ component: () => {
6159
+ var _coinsContent$find$su, _coinsContent$find;
6160
+ const {
6161
+ assetIconSrc,
6162
+ assetIconProtocolSrc
6163
+ } = _coinToIconPaths(coin);
6164
+ return /*#__PURE__*/React.createElement("div", {
6165
+ className: s$2["item"],
6166
+ key: `picker-${coin.ticker}-${index}`,
6167
+ onClick: e => handleError(() => handleCoinClick(coin), e)
6168
+ }, /*#__PURE__*/React.createElement("div", {
6169
+ className: s$2["link"] + (currentlyEnabledCoins.current[coin.ticker] !== initiallyEnabledCoins.current[coin.ticker] ? " " + s$2["outline"] : "")
6170
+ }, /*#__PURE__*/React.createElement(AssetIcon, {
6171
+ assetIconSrc: assetIconSrc,
6172
+ assetIconProtocolSrc: assetIconProtocolSrc,
6173
+ fallbackSrc: FALLBACK_ASSET_ICON_URL
6174
+ }), /*#__PURE__*/React.createElement("div", {
6175
+ className: s$2["content"],
6176
+ key: coin.ticker
6177
+ }, /*#__PURE__*/React.createElement("p", {
6178
+ className: s$2["name"]
6179
+ }, coin.latinName), /*#__PURE__*/React.createElement("p", {
6180
+ className: s$2["amount"]
6181
+ }, (_coinsContent$find$su = coinsContent == null || (_coinsContent$find = coinsContent.find(i => i.coin === coin)) == null ? void 0 : _coinsContent$find.subtitle) != null ? _coinsContent$find$su : "")), _mode === COIN_PICKER_MODES.BUTTON ? /*#__PURE__*/React.createElement("div", {
6182
+ className: s$2["arrow"]
6183
+ }, /*#__PURE__*/React.createElement(ArrowIcon, null)) : _mode === COIN_PICKER_MODES.CHECKBOX ? /*#__PURE__*/React.createElement("div", {
6184
+ className: s$2["toggle-container"]
6185
+ }, /*#__PURE__*/React.createElement(RadioButtonWithText, {
6186
+ onStateChange: resetButtonLoader => handleToggleClick(coin.ticker, resetButtonLoader),
6187
+ isSwitchedOn: currentlyEnabledCoins.current[coin.ticker],
6188
+ id: index
6189
+ })) : ""));
6190
+ }
6191
+ };
6192
+ })
6193
+ })), isSearchResultEmpty ? /*#__PURE__*/React.createElement("div", {
6194
+ className: s$2["coin-picker-wrapper-content-asset-not-found"]
5957
6195
  }, /*#__PURE__*/React.createElement("h6", null, _texts.noAssetsMessage)) : "", _partialLoadingEnabled && !isListFull ? /*#__PURE__*/React.createElement("div", {
5958
- className: s["coin-picker-wrapper-content-load-more-button"]
6196
+ className: s$2["coin-picker-wrapper-content-load-more-button"]
5959
6197
  }, /*#__PURE__*/React.createElement(Button, {
5960
6198
  mode: "primary-transparent",
5961
6199
  size: "sm",
5962
6200
  loader: false,
5963
6201
  content: _texts.loadMoreButton,
5964
- onClick: displayMoreCoins,
6202
+ onClick: () => displayMoreCoins(),
5965
6203
  handleError: handleError
5966
6204
  })) : "", searchEnabled && _showRequestMissingCoinsInfoMessage ? /*#__PURE__*/React.createElement("div", {
5967
- className: s["coin-picker-wrapper-content-bottom-message"]
6205
+ className: s$2["coin-picker-wrapper-content-bottom-message"]
5968
6206
  }, /*#__PURE__*/React.createElement(InformationMessage, {
5969
6207
  text: /*#__PURE__*/React.createElement(React.Fragment, null, _texts.assetSuggestionMessage.part1, /*#__PURE__*/React.createElement("a", {
5970
6208
  target: "_blank",
5971
6209
  rel: "noreferrer",
5972
6210
  href: _supportUrl,
5973
- className: s["coin-picker-wrapper-content-bottom-message-link"]
6211
+ className: s$2["coin-picker-wrapper-content-bottom-message-link"]
5974
6212
  }, " " + _texts.assetSuggestionMessage.part2 + " "), _texts.assetSuggestionMessage.part3)
5975
6213
  })) : "")))) : /*#__PURE__*/React.createElement(LoadingDots, null);
5976
6214
  };
@@ -6076,12 +6314,390 @@ const CoinPickerDialogStep = ({
6076
6314
  }));
6077
6315
  };
6078
6316
 
6079
- const PARAMETER_VALUES_SEPARATOR = "|*|"; // Sting that with high probability will not be in the user's data
6317
+ var s$1 = {"colored-notice":"_ZE1ju","colored-notice-text":"_aN0LH"};
6080
6318
 
6081
6319
  /**
6082
- * Adds specified parameter with values to the URL query string
6320
+ * ColoredNotice component displays a notice with optional text and a button.
6083
6321
  *
6084
- * @param parameterName - String - name of the parameter
6322
+ * @component
6323
+ * @param {Object} props - The component props.
6324
+ * @param {string} [props.text] - The text to be displayed in the notice.
6325
+ * @param {string} [props.buttonTitle] - The title of the button.
6326
+ * @param {function} [props.onButtonClick] - Callback function to be called when the button is clicked.
6327
+ * @returns {JSX.Element} The ColoredNotice component.
6328
+ */
6329
+ const ColoredNotice = ({
6330
+ text: _text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor.",
6331
+ buttonTitle,
6332
+ onButtonClick: _onButtonClick = () => {}
6333
+ }) => {
6334
+ return /*#__PURE__*/React.createElement("div", {
6335
+ className: s$1["colored-notice"]
6336
+ }, /*#__PURE__*/React.createElement("p", {
6337
+ className: s$1["colored-notice-text"]
6338
+ }, _text), buttonTitle ? /*#__PURE__*/React.createElement(Button, {
6339
+ mode: "primary",
6340
+ size: "sm",
6341
+ content: buttonTitle,
6342
+ loader: false,
6343
+ onClick: _onButtonClick
6344
+ }) : null);
6345
+ };
6346
+ ColoredNotice.propTypes = {
6347
+ text: PropTypes.string,
6348
+ buttonTitle: PropTypes.string,
6349
+ onButtonClick: PropTypes.func
6350
+ };
6351
+ ColoredNotice.defaultProps = {
6352
+ text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor.",
6353
+ onButtonClick: () => {}
6354
+ };
6355
+
6356
+ var messageIcon = (() => /*#__PURE__*/React.createElement("svg", {
6357
+ width: "130",
6358
+ height: "130",
6359
+ viewBox: "0 0 130 130",
6360
+ fill: "none",
6361
+ xmlns: "http://www.w3.org/2000/svg"
6362
+ }, /*#__PURE__*/React.createElement("path", {
6363
+ "fill-rule": "evenodd",
6364
+ "clip-rule": "evenodd",
6365
+ d: "M65 130C100.899 130 130 100.899 130 65C130 29.1015 100.899 0 65 0C29.1015 0 0 29.1015 0 65C0 100.899 29.1015 130 65 130Z",
6366
+ fill: "#2294F0"
6367
+ }), /*#__PURE__*/React.createElement("mask", {
6368
+ id: "mask0",
6369
+ style: {
6370
+ maskType: "alpha"
6371
+ },
6372
+ maskUnits: "userSpaceOnUse",
6373
+ x: "0",
6374
+ y: "0",
6375
+ width: "130",
6376
+ height: "130"
6377
+ }, /*#__PURE__*/React.createElement("path", {
6378
+ "fill-rule": "evenodd",
6379
+ "clip-rule": "evenodd",
6380
+ d: "M65 130C100.899 130 130 100.899 130 65C130 29.1015 100.899 0 65 0C29.1015 0 0 29.1015 0 65C0 100.899 29.1015 130 65 130Z",
6381
+ fill: "white"
6382
+ })), /*#__PURE__*/React.createElement("g", {
6383
+ mask: "url(#mask0)"
6384
+ }, /*#__PURE__*/React.createElement("rect", {
6385
+ opacity: "0.3",
6386
+ x: "3.25",
6387
+ y: "150.776",
6388
+ width: "227.136",
6389
+ height: "25.2373",
6390
+ transform: "rotate(-45 3.25 150.776)",
6391
+ fill: "white"
6392
+ }), /*#__PURE__*/React.createElement("rect", {
6393
+ opacity: "0.3",
6394
+ x: "-48.4546",
6395
+ y: "126.52",
6396
+ width: "227.136",
6397
+ height: "25.2373",
6398
+ transform: "rotate(-45 -48.4546 126.52)",
6399
+ fill: "white"
6400
+ }), /*#__PURE__*/React.createElement("rect", {
6401
+ x: "27.75",
6402
+ y: "29.5",
6403
+ width: "74.5",
6404
+ height: "81.5",
6405
+ rx: "12",
6406
+ fill: "white"
6407
+ }), /*#__PURE__*/React.createElement("path", {
6408
+ d: "M27.75 41.5C27.75 34.8726 33.1226 29.5 39.75 29.5H90.25C96.8774 29.5 102.25 34.8726 102.25 41.5V118C102.25 124.627 96.8774 130 90.25 130H39.75C33.1226 130 27.75 124.627 27.75 118V41.5Z",
6409
+ fill: "white"
6410
+ }), /*#__PURE__*/React.createElement("path", {
6411
+ "fill-rule": "evenodd",
6412
+ "clip-rule": "evenodd",
6413
+ d: "M51.5 63.5C58.1274 63.5 63.5 58.1274 63.5 51.5C63.5 44.8726 58.1274 39.5 51.5 39.5C44.8726 39.5 39.5 44.8726 39.5 51.5C39.5 58.1274 44.8726 63.5 51.5 63.5Z",
6414
+ fill: "#2294F0"
6415
+ }), /*#__PURE__*/React.createElement("path", {
6416
+ d: "M50.072 49.088H52.03V54.5H50.072V49.088ZM52.074 46.382V48.153H50.028V46.382H52.074Z",
6417
+ fill: "white"
6418
+ }), /*#__PURE__*/React.createElement("path", {
6419
+ opacity: "0.2",
6420
+ d: "M41 74.5H63",
6421
+ stroke: "#2294F0",
6422
+ "stroke-width": "4",
6423
+ "stroke-linecap": "round",
6424
+ "stroke-linejoin": "round"
6425
+ }), /*#__PURE__*/React.createElement("path", {
6426
+ opacity: "0.2",
6427
+ d: "M41 84.6157H84.1426",
6428
+ stroke: "#2294F0",
6429
+ "stroke-width": "4",
6430
+ "stroke-linecap": "round",
6431
+ "stroke-linejoin": "round"
6432
+ }), /*#__PURE__*/React.createElement("path", {
6433
+ opacity: "0.2",
6434
+ d: "M41 94.7314H84.1426",
6435
+ stroke: "#2294F0",
6436
+ "stroke-width": "4",
6437
+ "stroke-linecap": "round",
6438
+ "stroke-linejoin": "round"
6439
+ }), /*#__PURE__*/React.createElement("path", {
6440
+ opacity: "0.2",
6441
+ d: "M41 104.731H84.1426",
6442
+ stroke: "#2294F0",
6443
+ "stroke-width": "4",
6444
+ "stroke-linecap": "round",
6445
+ "stroke-linejoin": "round"
6446
+ }))));
6447
+
6448
+ var supportDialogImage = (() => /*#__PURE__*/React.createElement("svg", {
6449
+ width: "130",
6450
+ height: "130",
6451
+ viewBox: "0 0 130 130",
6452
+ fill: "none",
6453
+ xmlns: "http://www.w3.org/2000/svg"
6454
+ }, /*#__PURE__*/React.createElement("path", {
6455
+ "fill-rule": "evenodd",
6456
+ "clip-rule": "evenodd",
6457
+ d: "M65 130C100.899 130 130 100.899 130 65C130 29.1015 100.899 0 65 0C29.1015 0 0 29.1015 0 65C0 100.899 29.1015 130 65 130Z",
6458
+ fill: "#AFEBC3"
6459
+ }), /*#__PURE__*/React.createElement("mask", {
6460
+ id: "mask0",
6461
+ "mask-type": "alpha",
6462
+ maskUnits: "userSpaceOnUse",
6463
+ x: "0",
6464
+ y: "0",
6465
+ width: "130",
6466
+ height: "130"
6467
+ }, /*#__PURE__*/React.createElement("path", {
6468
+ "fill-rule": "evenodd",
6469
+ "clip-rule": "evenodd",
6470
+ d: "M65 130C100.899 130 130 100.899 130 65C130 29.1015 100.899 0 65 0C29.1015 0 0 29.1015 0 65C0 100.899 29.1015 130 65 130Z",
6471
+ fill: "white"
6472
+ })), /*#__PURE__*/React.createElement("g", {
6473
+ mask: "url(#mask0)"
6474
+ }, /*#__PURE__*/React.createElement("rect", {
6475
+ opacity: "0.3",
6476
+ x: "3.25",
6477
+ y: "150.776",
6478
+ width: "227.136",
6479
+ height: "25.2373",
6480
+ transform: "rotate(-45 3.25 150.776)",
6481
+ fill: "white"
6482
+ }), /*#__PURE__*/React.createElement("rect", {
6483
+ opacity: "0.3",
6484
+ x: "-48.4545",
6485
+ y: "126.52",
6486
+ width: "227.136",
6487
+ height: "25.2373",
6488
+ transform: "rotate(-45 -48.4545 126.52)",
6489
+ fill: "white"
6490
+ }), /*#__PURE__*/React.createElement("path", {
6491
+ d: "M9.69092 69.153C9.69092 66.0864 11.2523 63.2309 13.8339 61.576L55.8257 34.6583C61.4168 31.0742 68.5832 31.0742 74.1743 34.6583L116.166 61.576C118.748 63.2309 120.309 66.0864 120.309 69.153V126.495C120.309 131.466 116.28 135.495 111.309 135.495H18.6909C13.7204 135.495 9.69092 131.466 9.69092 126.495V69.153Z",
6492
+ fill: "#14A957"
6493
+ }), /*#__PURE__*/React.createElement("path", {
6494
+ d: "M30.9045 51.8818H97.9136V117.118H30.9045V51.8818Z",
6495
+ fill: "white"
6496
+ }), /*#__PURE__*/React.createElement("path", {
6497
+ opacity: "0.1",
6498
+ d: "M63.8182 107.167C76.8722 107.167 87.4545 96.5849 87.4545 83.5308C87.4545 70.4768 76.8722 59.8945 63.8182 59.8945C50.7642 59.8945 40.1818 70.4768 40.1818 83.5308C40.1818 96.5849 50.7642 107.167 63.8182 107.167Z",
6499
+ fill: "#24BE6A"
6500
+ }), /*#__PURE__*/React.createElement("path", {
6501
+ d: "M58.2093 83.4849L63.0246 88.3002L71.3036 79.047",
6502
+ stroke: "#24BE6A",
6503
+ "stroke-width": "3.76358",
6504
+ "stroke-linecap": "round",
6505
+ "stroke-linejoin": "round"
6506
+ }), /*#__PURE__*/React.createElement("path", {
6507
+ d: "M9.69092 70.2531C9.69092 68.672 11.4391 67.7161 12.7703 68.5694L65 102.05L117.23 68.5694C118.561 67.7161 120.309 68.672 120.309 70.2531V128.859C120.309 133.83 116.28 137.859 111.309 137.859H18.6909C13.7204 137.859 9.69092 133.83 9.69092 128.859V70.2531Z",
6508
+ fill: "#24BE6A"
6509
+ }))));
6510
+
6511
+ /**
6512
+ * Saves a user's subscription to receive notifications about a specific coin.
6513
+ * This function sends an email to subscribe the user to notifications for the specified coin.
6514
+ *
6515
+ * @function
6516
+ * @name saveSubscription
6517
+ * @param {Coin} coin - The coin object containing information about the coin, including its ticker symbol.
6518
+ * @param {string} address - The email address of the user who wishes to subscribe.
6519
+ * @returns {Promise<boolean>} A promise that resolves to `true` if the subscription email was sent successfully, or `false` if an error occurred during the process.
6520
+ */
6521
+
6522
+ /**
6523
+ * WaitlistSubscription component handles user subscription to a waitlist for coin notifications.
6524
+ * It displays a notice with a button to open a dialog where the user can enter their email to subscribe.
6525
+ *
6526
+ * @component
6527
+ * @param {Object} props - The component props.
6528
+ * @param {Coin} props.coin - The coin object containing information about the coin.
6529
+ * @param {Object} props.translations - The text translations for the component.
6530
+ * @param {saveSubscription} props.saveSubscription - Function to handle/save the subscription.
6531
+ * @returns {JSX.Element} The WaitlistSubscription component.
6532
+ */
6533
+ const WaitlistSubscription = ({
6534
+ coin,
6535
+ translations,
6536
+ saveSubscription
6537
+ }) => {
6538
+ const [controls, initControls] = useState();
6539
+ const [showDialog, setShowDialog] = useState(false);
6540
+ const [inputValue, setInputValue] = useState("");
6541
+ const [isEmailValid, setIsEmailValid] = useState(false);
6542
+ const [errorEncountered, setErrorEncountered] = useState(false);
6543
+ const defaultTranslations = {
6544
+ coloredNotice: {
6545
+ text: "This is a pre-listed coin, meaning that the swap is not yet available. As soon as this coin allows exchanges, it will be automatically enabled. If you want to get a notification as soon as this coin becomes available for swap - sign up for the waitlist below!",
6546
+ buttonTitle: "Subscribe for updates"
6547
+ },
6548
+ signUpStep: {
6549
+ title: coin.latinName + " (" + coin.ticker + ") listing notification",
6550
+ subtitle: "To be notified as soon as " + coin.latinName + " becomes available for swaps, please provide your email address. We’ll send you a single notification when it’s listed.",
6551
+ actionButtonTitle: "Subscribe",
6552
+ inputTitle: "Your email address:",
6553
+ error: "Something went wrong. Please try again later."
6554
+ },
6555
+ successStep: {
6556
+ title: "Subscribed successfully!",
6557
+ subtitle: "We’ll notify you as soon as " + coin.latinName + " becomes available for swaps. Keep an eye on your inbox for the update.",
6558
+ actionButtonTitle: "Close"
6559
+ }
6560
+ };
6561
+ const t = translations != null ? translations : defaultTranslations;
6562
+ const STEPS = {
6563
+ signUp: "signUp",
6564
+ success: "success"
6565
+ };
6566
+ const subscribe = async resetButtonLoader => {
6567
+ try {
6568
+ setErrorEncountered(false);
6569
+ const result = await saveSubscription(coin, inputValue);
6570
+ if (result) {
6571
+ controls == null || controls.goToStep(STEPS.success);
6572
+ } else {
6573
+ setErrorEncountered(true);
6574
+ }
6575
+ resetButtonLoader();
6576
+ } catch (e) {
6577
+ resetButtonLoader();
6578
+ logErrorOrOutputToConsole(e);
6579
+ setShowDialog(false);
6580
+ }
6581
+ };
6582
+ const openDialog = () => {
6583
+ setErrorEncountered(false);
6584
+ setInputValue("");
6585
+ setIsEmailValid(false);
6586
+ controls == null || controls.toFirstStep(false);
6587
+ setShowDialog(true);
6588
+ };
6589
+ useEffect(() => {
6590
+ setIsEmailValid(/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/.test(inputValue));
6591
+ // eslint-disable-next-line react-hooks/exhaustive-deps
6592
+ }, [inputValue]);
6593
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Dialog, {
6594
+ initControls: controls => initControls(controls),
6595
+ showDialog: showDialog,
6596
+ onClose: () => setShowDialog(false)
6597
+ }, /*#__PURE__*/React.createElement(DialogStep, {
6598
+ stepName: STEPS.signUp,
6599
+ controls: controls,
6600
+ title: t.signUpStep.title,
6601
+ subtitle: t.signUpStep.subtitle,
6602
+ confirmButtonClick: subscribe,
6603
+ confirmButtonEnabled: isEmailValid,
6604
+ confirmButtonText: t.signUpStep.actionButtonTitle,
6605
+ primaryButtonLoader: true,
6606
+ subtitleSmallMargin: true,
6607
+ showBackgroundTitle: false,
6608
+ ImageRaw: messageIcon
6609
+ }, /*#__PURE__*/React.createElement(TitleBox, {
6610
+ title: t.signUpStep.inputTitle
6611
+ }, /*#__PURE__*/React.createElement(Input, {
6612
+ type: "text",
6613
+ onChange: e => setInputValue(e.target.value),
6614
+ value: inputValue
6615
+ }), errorEncountered ? /*#__PURE__*/React.createElement(Validation, {
6616
+ text: t.signUpStep.error
6617
+ }) : null)), /*#__PURE__*/React.createElement(DialogStep, {
6618
+ stepName: STEPS.success,
6619
+ controls: controls,
6620
+ title: t.successStep.title,
6621
+ subtitle: t.successStep.subtitle,
6622
+ confirmButtonClick: () => setShowDialog(false),
6623
+ confirmButtonText: t.successStep.actionButtonTitle,
6624
+ showBackgroundTitle: false,
6625
+ ImageRaw: supportDialogImage,
6626
+ showCornerBackButton: false,
6627
+ subtitleSmallMargin: true
6628
+ })), /*#__PURE__*/React.createElement(ColoredNotice, {
6629
+ text: t.coloredNotice.text,
6630
+ buttonTitle: t.coloredNotice.buttonTitle,
6631
+ onButtonClick: openDialog
6632
+ }));
6633
+ };
6634
+ WaitlistSubscription.propTypes = {
6635
+ coin: PropTypes.object.isRequired,
6636
+ translations: PropTypes.object
6637
+ };
6638
+
6639
+ var s = {"logo-carousel":"_CgRBd","logo-carousel-wrapper":"_cVsiX","slide":"_Gu7XN","logo-carousel-slide":"_hIh2D","clickable":"_VuuGX","easeIn":"_i56By"};
6640
+
6641
+ /**
6642
+ * LogoCarousel component renders a set of logos in a sliding carousel.
6643
+ *
6644
+ * @component
6645
+ *
6646
+ * @param {Object} props - The props object for this component.
6647
+ * @param {Array<{logo: string, url: string}>} props.logos - Array of objects representing logos and their corresponding URLs.
6648
+ */
6649
+ const LogoCarousel = ({
6650
+ logos
6651
+ }) => {
6652
+ var _wrapperRef$current;
6653
+ const [multiplier, setMultiplier] = useState();
6654
+ const [width, setWidth] = useState(0);
6655
+ const wrapperRef = useRef();
6656
+ useEffect(() => {
6657
+ const resizeObserver = new ResizeObserver(entries => entries.map(entry => setWidth(entry.contentRect.width)));
6658
+ if (wrapperRef.current) resizeObserver.observe(wrapperRef.current);
6659
+ return () => {
6660
+ if (wrapperRef.current) resizeObserver.unobserve(wrapperRef.current);
6661
+ };
6662
+ }, []);
6663
+ useEffect(() => {
6664
+ setMultiplier(wrapperRef.current.clientWidth / 120);
6665
+ // eslint-disable-next-line react-hooks/exhaustive-deps
6666
+ }, [wrapperRef, wrapperRef == null || (_wrapperRef$current = wrapperRef.current) == null ? void 0 : _wrapperRef$current.clientWidth, logos, width]);
6667
+ return /*#__PURE__*/React.createElement("div", {
6668
+ className: s["logo-carousel"]
6669
+ }, /*#__PURE__*/React.createElement("div", {
6670
+ className: s["logo-carousel-wrapper"],
6671
+ ref: wrapperRef,
6672
+ style: {
6673
+ animationDuration: multiplier + "s"
6674
+ }
6675
+ }, [...Array(2)].map((z, i) => /*#__PURE__*/React.createElement("div", {
6676
+ className: s["logo-carousel-slide"],
6677
+ key: "logo-carousel-slide-" + i
6678
+ }, logos.map((item, index) => /*#__PURE__*/React.createElement("a", {
6679
+ key: "logo-carousel-slide-" + i + "-" + index,
6680
+ className: item != null && item.url ? s["clickable"] : null,
6681
+ href: item == null ? void 0 : item.url,
6682
+ target: "_blank"
6683
+ }, /*#__PURE__*/React.createElement("img", {
6684
+ src: item.logo,
6685
+ alt: "logo"
6686
+ })))))));
6687
+ };
6688
+ LogoCarousel.propTypes = {
6689
+ logos: PropTypes.arrayOf(PropTypes.shape({
6690
+ logo: PropTypes.string.isRequired,
6691
+ url: PropTypes.string.isRequired
6692
+ })).isRequired
6693
+ };
6694
+
6695
+ const PARAMETER_VALUES_SEPARATOR = "|*|"; // Sting that with high probability will not be in the user's data
6696
+
6697
+ /**
6698
+ * Adds specified parameter with values to the URL query string
6699
+ *
6700
+ * @param parameterName - String - name of the parameter
6085
6701
  * @param values - Array of String values
6086
6702
  * @param updateURLCallback - callback that will be called with the updated query string. Can be used to save it to URL
6087
6703
  */
@@ -6150,140 +6766,6 @@ class Protocol {
6150
6766
  }
6151
6767
  }
6152
6768
 
6153
- /**
6154
- * The model for cryptocurrency coins.
6155
- *
6156
- * WARNING: this class should not be instantiated directly. Use only predefined singleton Coin (or descendants) instances.
6157
- */
6158
- class Coin {
6159
- /**
6160
- * Creates new coin
6161
- *
6162
- * @param latinName {string} the coin name in latin symbols like "Bitcoin"
6163
- * @param ticker {string} the coin symbol/ticker/code like 'BTC'. Always upper case. A unique coin identifier
6164
- * @param tickerPrintable {string} ticker but in printable format. Useful for tokens based on external blockchains
6165
- * like ERC20 or TRC20. It is not friendly to display USDTERC20 or BUSDTRC20 - more neat options are just
6166
- * USDT and BUSD. Note that you should always care about user's understanding of what coin he/she is working
6167
- * with as printable ticker for USDTERC20 and USDTTRC20 are the same.
6168
- * @param digitsCountAfterComma {number} count of digits after the comma. E.g. 8 for bitcoin
6169
- * @param maxValue {number|null} max possible value for cryptocurrency. Null means that the currency has no max possible value
6170
- * @param atomName {string} name of the coin's atomic value. Like 'satoshi' for bitcoin
6171
- * @param mainnet {Network} main network for this coin
6172
- * @param testnet {Network} test network for this coin
6173
- * @param minConfirmations {number} min confirmations count to treat the coin's transaction confirmed
6174
- * @param payableEntityStringForFeeRate {string|null} the payable fee entity like byte for bitcoin or gas for ether if present
6175
- * @param feeOptionsTimeStringsSortedDesc {string[]} array of 4 strings for fee options when sending coins. Should be sorted from the highest time to the smallest
6176
- * @param feeRatesExpirationTimeMs {number} number of milliseconds to treat the fee rates as expired
6177
- * @param blockchain {Blockchain} blockchain object
6178
- * @param [protocol] {Protocol|null} token/coin protocol if relevant
6179
- * @param [tokenAddress] {string|null} address of contract of this token (if the coin is token)
6180
- * @param [doesUseLowerCaseAddresses] {boolean} flag to clarify whether we can use lower case addresses to ensure more robust comparisons
6181
- * @param [doesUseOutputs=false] {boolean} true if this coin uses inputs/outputs concept and false if it uses just balances
6182
- */
6183
- constructor(latinName, ticker, tickerPrintable, digitsCountAfterComma, maxValue, atomName, mainnet, testnet, minConfirmations, payableEntityStringForFeeRate, feeOptionsTimeStringsSortedDesc, feeRatesExpirationTimeMs, blockchain, protocol = null, tokenAddress = null, doesUseLowerCaseAddresses = true, doesUseOutputs = false) {
6184
- this.latinName = latinName;
6185
- this.ticker = ticker;
6186
- this.tickerPrintable = tickerPrintable;
6187
- this.digits = digitsCountAfterComma;
6188
- this.maxValue = maxValue;
6189
- this.atomName = atomName;
6190
- this.mainnet = mainnet;
6191
- this.testnet = testnet;
6192
- this.minConfirmations = minConfirmations;
6193
- this.payableEntityStringForFeeRate = payableEntityStringForFeeRate;
6194
- this.feeOptionsTimeStringsSortedDesc = feeOptionsTimeStringsSortedDesc;
6195
- this.feeRatesExpirationTimeMs = feeRatesExpirationTimeMs;
6196
- this.protocol = protocol;
6197
- this.blockchain = blockchain;
6198
- // TODO: [bug, critical] use testnet property for testnet contract address as it blocks the app work in testnets
6199
- this.tokenAddress = tokenAddress;
6200
- this.feeCoin = this;
6201
- this._significantDigits = 8;
6202
- this.doesUseLowerCaseAddresses = doesUseLowerCaseAddresses;
6203
- this.doesUseOutputs = doesUseOutputs;
6204
- }
6205
-
6206
- /**
6207
- * Sets fee coin
6208
- *
6209
- * @param feeCoin {Coin} some tokens use another coin to charge transaction fee as they work on top of some external
6210
- * blockchain. So pass here the coin the token uses for fee charging. Like for ERC20 token the fee coin is ETH.
6211
- * By default, the creating coin will be set as a value for this field.
6212
- */
6213
- setFeeCoin(feeCoin) {
6214
- this.feeCoin = feeCoin;
6215
- }
6216
-
6217
- /**
6218
- * Checks whether this coin uses another coin (blockchain) to charge fee for transactions (means works on base of
6219
- * some external blockchain).
6220
- *
6221
- * @return {boolean} true if this coin uses external blockchain to perform transactions and charge fee
6222
- */
6223
- doesUseDifferentCoinFee() {
6224
- return this.feeCoin !== this;
6225
- }
6226
-
6227
- /**
6228
- * Converts the given atoms string/number to string representing the same amount in coin itself - floating point number
6229
- *
6230
- * @param atoms {string} atoms positive integer amount
6231
- * @return {string} coin amount floating point number as a string
6232
- */
6233
- atomsToCoinAmount(atoms) {
6234
- throw new Error("Not implemented in base Coin");
6235
- }
6236
-
6237
- /**
6238
- * Converts the given coins amount string/number to string representing the same amount in coin atoms - integer number
6239
- *
6240
- * @param coinsAmount {string} coins positive floating point amount
6241
- * @return {string} coin atoms amount integer number as a string
6242
- */
6243
- coinAmountToAtoms(coinsAmount) {
6244
- throw new Error("Not implemented in base Coin");
6245
- }
6246
-
6247
- /**
6248
- * Composes URL to view the tx with given id in the external blockchain explorer
6249
- *
6250
- * @param txId {string} id of transaction
6251
- * @return {string} URL string
6252
- */
6253
- composeUrlToTransactionExplorer(txId) {
6254
- throw new Error("Not implemented in base Coin");
6255
- }
6256
-
6257
- /**
6258
- * Most of the cryptocurrencies has specific fee rate or fee price metric. This value usually has specific measure
6259
- * like satoshi/byte or gWei/gas. This function adds the described denomination string to the given amount
6260
- * as a suffix and returns the result string ready to be show to a user.
6261
- *
6262
- * @param coinAtomsString {string} coin atoms positive integer amount
6263
- * @return {string} string of coin amount and fee rate units
6264
- */
6265
- coinAtomsFeeRateToCommonlyUsedAmountFormatWithDenominationString(coinAtomsString) {
6266
- throw new Error("Not implemented in base Coin");
6267
- }
6268
-
6269
- /**
6270
- * Check whether this coin support transaction prioritisation during the sending process.
6271
- *
6272
- * @return {boolean} true if support transaction prioritisation and false otherwise
6273
- */
6274
- doesSupportTransactionPrioritisation() {
6275
- return Array.isArray(this.feeOptionsTimeStringsSortedDesc);
6276
- }
6277
- tickerAndProtocol() {
6278
- try {
6279
- var _ref;
6280
- return `${this.tickerPrintable}${this.protocol ? (_ref = " " + this.protocol.protocol) != null ? _ref : "" : ""}`;
6281
- } catch (e) {
6282
- improveAndRethrow(e, "tickerAndProtocol");
6283
- }
6284
- }
6285
- }
6286
-
6287
6769
  /**
6288
6770
  * TODO: [tests, critical] Ued by payments logic
6289
6771
  *
@@ -8382,6 +8864,13 @@ class SwapProvider {
8382
8864
  }
8383
8865
  return coinName;
8384
8866
  }
8867
+
8868
+ /**
8869
+ * @return {Promise<Partner[]>}
8870
+ */
8871
+ async getPartnersList() {
8872
+ return [];
8873
+ }
8385
8874
  }
8386
8875
  SwapProvider.COMMON_ERRORS = {
8387
8876
  REQUESTS_LIMIT_EXCEEDED: "requestsLimitExceeded"
@@ -8400,6 +8889,7 @@ SwapProvider.SWAP_STATUSES = {
8400
8889
  WAITING_FOR_PAYMENT: "waiting_for_payment",
8401
8890
  CONFIRMING: "confirming",
8402
8891
  PAYMENT_RECEIVED: "payment_received",
8892
+ VERIFYING: "verifying",
8403
8893
  EXCHANGING: "exchanging",
8404
8894
  COMPLETED: "completed",
8405
8895
  REFUNDED: "refunded",
@@ -8407,6 +8897,14 @@ SwapProvider.SWAP_STATUSES = {
8407
8897
  FAILED: "failed"
8408
8898
  };
8409
8899
 
8900
+ class Partner {
8901
+ constructor(name, url, logoUrl) {
8902
+ this.name = name;
8903
+ this.url = url;
8904
+ this.logoUrl = logoUrl;
8905
+ }
8906
+ }
8907
+
8410
8908
  const BANNED_PARTNERS = ["stealthex", "changee", "coincraddle", "easybit"];
8411
8909
  class SwapspaceSwapProvider extends SwapProvider {
8412
8910
  constructor(apiKeysProxyUrl, cache, customCoinBuilder = (coin, network) => null, useRestrictedCoinsSet = true) {
@@ -8720,7 +9218,7 @@ class SwapspaceSwapProvider extends SwapProvider {
8720
9218
  case "finished":
8721
9219
  return SwapProvider.SWAP_STATUSES.COMPLETED;
8722
9220
  case "verifying":
8723
- return SwapProvider.SWAP_STATUSES.EXCHANGING;
9221
+ return SwapProvider.SWAP_STATUSES.VERIFYING;
8724
9222
  case "refunded":
8725
9223
  return SwapProvider.SWAP_STATUSES.REFUNDED;
8726
9224
  case "expired":
@@ -8787,6 +9285,19 @@ class SwapspaceSwapProvider extends SwapProvider {
8787
9285
  improveAndRethrow(e, loggerSource);
8788
9286
  }
8789
9287
  }
9288
+ async getPartnersList() {
9289
+ try {
9290
+ await this._fetchPartnersListIfNeeded();
9291
+ return this._partners.filter(p => !BANNED_PARTNERS.find(banned => banned === p.path)).map(p => {
9292
+ var _p$image;
9293
+ return new Partner(p.name, null,
9294
+ // No data in swapspace
9295
+ p != null && (_p$image = p.image) != null && _p$image.default ? "https://storage.swapspace.co" + p.image.default : null);
9296
+ });
9297
+ } catch (e) {
9298
+ improveAndRethrow(e, "swapspace.getPartnersList");
9299
+ }
9300
+ }
8790
9301
  }
8791
9302
 
8792
9303
  class SwapUtils {
@@ -9275,6 +9786,9 @@ class LetsExchangeSwapProvider extends SwapProvider {
9275
9786
  throw new Error(`Unknown LetsExchange status: ${status}`);
9276
9787
  }
9277
9788
  }
9789
+ async getPartnersList() {
9790
+ return [new Partner("LetsExchange", "https://letsexchange.io/", "https://letsexchange.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F02e45813-b375-49d8-b2b0-092ce1847fff%2F55ebbc3c-4ee6-4fa7-847b-f673e82594f3%2Flets-logo-basic__on-light.svg?table=block&id=bec5952a-2f9c-47fb-8cc0-86e1391a7f60&spaceId=02e45813-b375-49d8-b2b0-092ce1847fff&userId=&cache=v2")];
9791
+ }
9278
9792
  }
9279
9793
  LetsExchangeSwapProvider.AFFILIATE_ID = "0zbj9hf7xg7jgdgv";
9280
9794
 
@@ -9807,6 +10321,22 @@ class PublicSwapService {
9807
10321
  improveAndRethrow(e, "getExtraIdNameIfPresentForAsset");
9808
10322
  }
9809
10323
  }
10324
+ async getPartnersList() {
10325
+ try {
10326
+ let allPartners = [this._swapProvider, this._fixedSwapProvider].map(provider => provider.getPartnersList());
10327
+ allPartners = await Promise.all(allPartners);
10328
+ allPartners = allPartners.flat().flat();
10329
+ return allPartners.reduce((prev, cur) => {
10330
+ if (!prev.find(partner => partner.name.toLowerCase() === cur.name.toLowerCase())) {
10331
+ prev.push(cur);
10332
+ }
10333
+ return prev;
10334
+ }, []);
10335
+ } catch (e) {
10336
+ Logger.logError(e, "getPartnersList");
10337
+ }
10338
+ return [];
10339
+ }
9810
10340
  }
9811
10341
  PublicSwapService.PUBLIC_SWAP_CREATED_ANALYTICS_EVENT = "public_swap_created_event";
9812
10342
  PublicSwapService.PUBLIC_SWAP_SUCCEED_ANALYTICS_EVENT = "public_swap_succeed_event";
@@ -9822,5 +10352,5 @@ PublicSwapService.PUBLIC_SWAP_DETAILS_FAIL_REASONS = {
9822
10352
  };
9823
10353
  PublicSwapService._fiatDecimalsCount = FiatCurrenciesService.getCurrencyDecimalCountByCode("USD");
9824
10354
 
9825
- export { AmountInput, AmountUtils, ApiGroup, ApiGroups, AssetIcon, AssetSelection, AxiosAdapter, BackgroundTitle, BaseSwapCreationInfo, Blockchain, Button, CLOSE_COLORS, COIN_PICKER_MODES, Cache, CacheAndConcurrentRequestsResolver, CachedRobustExternalApiCallerService, CancelProcessing, Close, Coin, CoinPicker, CoinPickerDialogStep, ConcurrentCalculationsMetadataHolder, DEFAULT_CRYPTO_DECIMAL_COUNT, DIALOG_SIZES, DIALOG_STEP_CLASS, DIALOG_TRANSITION_STEP_DURATION, DeterminedErrorDialogStep, Dialog, DialogButtons, DialogStep, EmailsApi, ExistingSwap, ExistingSwapWithFiatData, ExternalApiProvider, FALLBACK_ASSET_ICON_URL, FiatCurrenciesService, GoogleAnalyticsAdapter, ICON_ROTATE_OPTIONS, InformationMessage, Input, InputValuesProviders, IpAddressProvider, LineWithIconLink, LinesOfText, LinkButton, LoadingDots, Logger, LogsStorage, MixpanelAdapter, NoticeIcon, Protocol, PublicSwapService, QrCode, RadioButtonWithText, RobustExternalAPICallerService, SupportChat, SwapForm, SwapProvider, SwapUtils, SwapspaceSwapProvider, TOOLTIP_POSITIONS, Textarea, TitleBox, TitledLineWithIconLink, Tooltip, Validation, copyBrowserTextToClipboard, getQueryParameterSingleValue, getQueryParameterValues, handleClickOutside, improveAndRethrow, logErrorOrOutputToConsole, postponeExecution, removeQueryParameterAndValues, safeStringify, saveQueryParameterAndValues, useCallHandlingErrors, useIsHydrated, useReferredState };
10355
+ export { AmountInput, AmountUtils, ApiGroup, ApiGroups, AssetIcon, AssetSelection, AxiosAdapter, BackgroundTitle, BaseSwapCreationInfo, Blockchain, Button, CLOSE_COLORS, COIN_PICKER_MODES, Cache, CacheAndConcurrentRequestsResolver, CachedRobustExternalApiCallerService, CancelProcessing, Close, Coin, CoinPicker, CoinPickerDialogStep, ColoredNotice, ConcurrentCalculationsMetadataHolder, DEFAULT_CRYPTO_DECIMAL_COUNT, DIALOG_SIZES, DIALOG_STEP_CLASS, DIALOG_TRANSITION_STEP_DURATION, DeterminedErrorDialogStep, Dialog, DialogButtons, DialogStep, EmailsApi, ExistingSwap, ExistingSwapWithFiatData, ExternalApiProvider, FALLBACK_ASSET_ICON_URL, FiatCurrenciesService, GoogleAnalyticsAdapter, ICON_ROTATE_OPTIONS, InformationMessage, Input, InputValuesProviders, IpAddressProvider, LineWithIconLink, LinesOfText, LinkButton, LoadingDots, Logger, LogoCarousel, LogsStorage, MixpanelAdapter, NoticeIcon, Protocol, PublicSwapService, QrCode, RadioButtonWithText, RobustExternalAPICallerService, SearchableCoinsList, SupportChat, SwapForm, SwapProvider, SwapUtils, SwapspaceSwapProvider, TOOLTIP_POSITIONS, Textarea, TitleBox, TitledLineWithIconLink, Tooltip, Validation, WaitlistSubscription, copyBrowserTextToClipboard, getQueryParameterSingleValue, getQueryParameterValues, handleClickOutside, improveAndRethrow, logErrorOrOutputToConsole, postponeExecution, removeQueryParameterAndValues, safeStringify, saveQueryParameterAndValues, useCallHandlingErrors, useIsHydrated, useReferredState };
9826
10356
  //# sourceMappingURL=index.modern.js.map