@rabbitio/ui-kit 1.0.0-beta.82 → 1.0.0-beta.84

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 (210) hide show
  1. package/coverage/clover.xml +1272 -546
  2. package/coverage/coverage-final.json +27 -17
  3. package/coverage/index.html +125 -50
  4. package/coverage/rabbit-ui-kit/index.html +1 -1
  5. package/coverage/rabbit-ui-kit/index.js.html +1 -1
  6. package/coverage/rabbit-ui-kit/src/common-apis/adapters/analyticsAdapters/googleAnalyticsAdapter.js.html +1 -1
  7. package/coverage/rabbit-ui-kit/src/common-apis/adapters/analyticsAdapters/index.html +1 -1
  8. package/coverage/rabbit-ui-kit/src/common-apis/adapters/analyticsAdapters/mixpanelAdapter.js.html +1 -1
  9. package/coverage/rabbit-ui-kit/src/common-apis/adapters/axiosAdapter.js.html +1 -1
  10. package/coverage/rabbit-ui-kit/src/common-apis/adapters/index.html +1 -1
  11. package/coverage/rabbit-ui-kit/src/common-apis/adapters/qrUtils.js.html +1 -1
  12. package/coverage/rabbit-ui-kit/src/common-apis/amountUtils.js.html +1 -1
  13. package/coverage/rabbit-ui-kit/src/common-apis/errorUtils.js.html +13 -13
  14. package/coverage/rabbit-ui-kit/src/common-apis/external-apis/apiGroups.js.html +1 -1
  15. package/coverage/rabbit-ui-kit/src/common-apis/external-apis/index.html +1 -1
  16. package/coverage/rabbit-ui-kit/src/common-apis/external-apis/ipAddressProviders.js.html +1 -1
  17. package/coverage/rabbit-ui-kit/src/common-apis/fiatCurrenciesService.js.html +1 -1
  18. package/coverage/rabbit-ui-kit/src/common-apis/globalConstants.jsx.html +1 -1
  19. package/coverage/rabbit-ui-kit/src/common-apis/index.html +1 -1
  20. package/coverage/rabbit-ui-kit/src/common-apis/models/blockchain.js.html +1 -1
  21. package/coverage/rabbit-ui-kit/src/common-apis/models/coin.js.html +1 -1
  22. package/coverage/rabbit-ui-kit/src/common-apis/models/index.html +1 -1
  23. package/coverage/rabbit-ui-kit/src/common-apis/models/protocol.js.html +1 -1
  24. package/coverage/rabbit-ui-kit/src/common-apis/utils/cache.js.html +1 -1
  25. package/coverage/rabbit-ui-kit/src/common-apis/utils/emailAPI.js.html +1 -1
  26. package/coverage/rabbit-ui-kit/src/common-apis/utils/index.html +1 -1
  27. package/coverage/rabbit-ui-kit/src/common-apis/utils/logging/index.html +1 -1
  28. package/coverage/rabbit-ui-kit/src/common-apis/utils/logging/logger.js.html +4 -4
  29. package/coverage/rabbit-ui-kit/src/common-apis/utils/logging/logsStorage.js.html +3 -3
  30. package/coverage/rabbit-ui-kit/src/common-apis/utils/postponeExecution.js.html +1 -1
  31. package/coverage/rabbit-ui-kit/src/common-apis/utils/safeStringify.js.html +27 -27
  32. package/coverage/rabbit-ui-kit/src/index.html +5 -5
  33. package/coverage/rabbit-ui-kit/src/index.js.html +16 -4
  34. package/coverage/rabbit-ui-kit/src/robust-api-caller/cacheAndConcurrentRequestsResolver.js.html +1 -1
  35. package/coverage/rabbit-ui-kit/src/robust-api-caller/cachedRobustExternalApiCallerService.js.html +1 -1
  36. package/coverage/rabbit-ui-kit/src/robust-api-caller/cancelProcessing.js.html +1 -1
  37. package/coverage/rabbit-ui-kit/src/robust-api-caller/concurrentCalculationsMetadataHolder.js.html +1 -1
  38. package/coverage/rabbit-ui-kit/src/robust-api-caller/externalApiProvider.js.html +1 -1
  39. package/coverage/rabbit-ui-kit/src/robust-api-caller/externalServicesStatsCollector.js.html +1 -1
  40. package/coverage/rabbit-ui-kit/src/robust-api-caller/index.html +1 -1
  41. package/coverage/rabbit-ui-kit/src/robust-api-caller/robustExternalAPICallerService.js.html +1 -1
  42. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/index.html +28 -28
  43. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/letsExchangeSwapProvider.js.html +37 -7
  44. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/swapProvider.js.html +58 -16
  45. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/swapspaceSwapProvider.js.html +79 -31
  46. package/coverage/rabbit-ui-kit/src/swaps-lib/models/baseSwapCreationInfo.js.html +1 -1
  47. package/coverage/rabbit-ui-kit/src/swaps-lib/models/existingSwap.js.html +1 -1
  48. package/coverage/rabbit-ui-kit/src/swaps-lib/models/existingSwapWithFiatData.js.html +1 -1
  49. package/coverage/rabbit-ui-kit/src/swaps-lib/models/index.html +22 -7
  50. package/coverage/rabbit-ui-kit/src/swaps-lib/models/partner.js.html +106 -0
  51. package/coverage/rabbit-ui-kit/src/swaps-lib/models/swapProviderCoinInfo.js.html +1 -1
  52. package/coverage/rabbit-ui-kit/src/swaps-lib/services/index.html +5 -5
  53. package/coverage/rabbit-ui-kit/src/swaps-lib/services/publicSwapService.js.html +78 -12
  54. package/coverage/rabbit-ui-kit/src/swaps-lib/utils/index.html +1 -1
  55. package/coverage/rabbit-ui-kit/src/swaps-lib/utils/swapUtils.js.html +2 -2
  56. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/arrowIcon.jsx.html +1 -1
  57. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/arrowTosca.jsx.html +1 -1
  58. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/arrowWhite.jsx.html +1 -1
  59. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/darkRectangle.jsx.html +1 -1
  60. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/determinedError.jsx.html +1 -1
  61. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/failedValidationIcon.jsx.html +1 -1
  62. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/index.html +35 -5
  63. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/infoIcon.jsx.html +1 -1
  64. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/messageIcon.jsx.html +346 -0
  65. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/noticeQuestionIcon.jsx.html +1 -1
  66. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/successfulValidationIcon.jsx.html +1 -1
  67. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/supportDialogImage.jsx.html +268 -0
  68. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/walletIcon.jsx.html +1 -1
  69. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/AssetIcon/AssetIcon.jsx.html +1 -1
  70. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/AssetIcon/index.html +1 -1
  71. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/AssetSelection/AssetSelection.jsx.html +1 -1
  72. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/AssetSelection/index.html +1 -1
  73. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/BackgroundTitle/BackgroundTitle.jsx.html +1 -1
  74. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/BackgroundTitle/index.html +1 -1
  75. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/InformationMessage/InformationMessage.jsx.html +1 -1
  76. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/InformationMessage/index.html +1 -1
  77. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Input/Input.jsx.html +1 -1
  78. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Input/index.html +1 -1
  79. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/LoadingDots/LoadingDots.jsx.html +1 -1
  80. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/LoadingDots/index.html +1 -1
  81. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/NoticeIcon/NoticeIcon.jsx.html +1 -1
  82. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/NoticeIcon/index.html +1 -1
  83. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/QrCode/QrCode.jsx.html +1 -1
  84. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/QrCode/index.html +1 -1
  85. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/RateSelector/RateSelector.jsx.html +3 -3
  86. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/RateSelector/index.html +1 -1
  87. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/SupportChat/SupportChat.jsx.html +1 -1
  88. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/SupportChat/index.html +1 -1
  89. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Textarea/Textarea.jsx.html +1 -1
  90. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Textarea/index.html +1 -1
  91. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/TitleBox/TitleBox.jsx.html +1 -1
  92. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/TitleBox/index.html +1 -1
  93. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Tooltip/Tooltip.jsx.html +1 -1
  94. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Tooltip/index.html +1 -1
  95. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/TwoLinesOfText/LinesOfText.jsx.html +1 -1
  96. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/TwoLinesOfText/index.html +1 -1
  97. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Validation/Validation.jsx.html +12 -18
  98. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Validation/index.html +5 -5
  99. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/Button/Button.jsx.html +1 -1
  100. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/Button/index.html +1 -1
  101. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/Close/Close.jsx.html +1 -1
  102. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/Close/index.html +1 -1
  103. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/LinkButton/LinkButton.jsx.html +1 -1
  104. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/LinkButton/index.html +1 -1
  105. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/RadioButtonWithText/RadioButtonWithText.jsx.html +1 -1
  106. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/RadioButtonWithText/index.html +1 -1
  107. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/AmountInput/AmountInput.jsx.html +79 -52
  108. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/AmountInput/index.html +5 -5
  109. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/CoinPicker/CoinPicker.jsx.html +87 -231
  110. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/CoinPicker/index.html +5 -5
  111. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/ColoredNotice/ColoredNotice.jsx.html +211 -0
  112. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/ColoredNotice/index.html +116 -0
  113. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/LineWithIconLink/LineWithIconLink.jsx.html +1 -1
  114. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/LineWithIconLink/index.html +1 -1
  115. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/LogoCarousel/LogoCarousel.jsx.html +196 -0
  116. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/LogoCarousel/index.html +116 -0
  117. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/SearchableCoinsList/SearchableCoinsList.jsx.html +496 -0
  118. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/SearchableCoinsList/index.html +116 -0
  119. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/TitledLineWithIconLink/TitledLineWithIconLink.jsx.html +1 -1
  120. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/TitledLineWithIconLink/index.html +1 -1
  121. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/CoinPickerDialogStep/CoinPickerDialogStep.jsx.html +1 -1
  122. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/CoinPickerDialogStep/index.html +1 -1
  123. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/Dialog.jsx.html +1 -1
  124. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/DialogButtons/DialogButtons.jsx.html +34 -4
  125. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/DialogButtons/index.html +5 -5
  126. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/DialogStep/DialogStep.jsx.html +52 -4
  127. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/DialogStep/index.html +5 -5
  128. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/index.html +1 -1
  129. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/SwapForm/SwapForm.jsx.html +85 -16
  130. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/SwapForm/index.html +5 -5
  131. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/WaitlistSubscription/WaitlistSubscription.jsx.html +559 -0
  132. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/WaitlistSubscription/index.html +116 -0
  133. package/coverage/rabbit-ui-kit/src/ui-kit/components/templates/DeterminedErrorDialogStep/DeterminedErrorDialogStep.jsx.html +1 -1
  134. package/coverage/rabbit-ui-kit/src/ui-kit/components/templates/DeterminedErrorDialogStep/index.html +1 -1
  135. package/coverage/rabbit-ui-kit/src/ui-kit/hooks/index.html +1 -1
  136. package/coverage/rabbit-ui-kit/src/ui-kit/hooks/useCallHandlingErrors.js.html +1 -1
  137. package/coverage/rabbit-ui-kit/src/ui-kit/hooks/useIsHydrated.js.html +1 -1
  138. package/coverage/rabbit-ui-kit/src/ui-kit/hooks/useReferredState.js.html +1 -1
  139. package/coverage/rabbit-ui-kit/src/ui-kit/utils/index.html +1 -1
  140. package/coverage/rabbit-ui-kit/src/ui-kit/utils/inputValueProviders.js.html +1 -1
  141. package/coverage/rabbit-ui-kit/src/ui-kit/utils/textUtils.js.html +1 -1
  142. package/coverage/rabbit-ui-kit/src/ui-kit/utils/uiUtils.js.html +1 -1
  143. package/coverage/rabbit-ui-kit/src/ui-kit/utils/urlQueryUtils.js.html +1 -1
  144. package/coverage/rabbit-ui-kit/stories/atoms/BackgroundTitle.stories.jsx.html +1 -1
  145. package/coverage/rabbit-ui-kit/stories/atoms/LinesOfText.stories.jsx.html +1 -1
  146. package/coverage/rabbit-ui-kit/stories/atoms/LoadingDots.stories.jsx.html +1 -1
  147. package/coverage/rabbit-ui-kit/stories/atoms/QrCode.stories.jsx.html +1 -1
  148. package/coverage/rabbit-ui-kit/stories/atoms/RateSelector.stories.jsx.html +1 -1
  149. package/coverage/rabbit-ui-kit/stories/atoms/Validation.stories.jsx.html +1 -1
  150. package/coverage/rabbit-ui-kit/stories/atoms/buttons/Button.stories.jsx.html +1 -1
  151. package/coverage/rabbit-ui-kit/stories/atoms/buttons/Close.stories.jsx.html +1 -1
  152. package/coverage/rabbit-ui-kit/stories/atoms/buttons/LinkButton.stories.jsx.html +1 -1
  153. package/coverage/rabbit-ui-kit/stories/atoms/buttons/index.html +1 -1
  154. package/coverage/rabbit-ui-kit/stories/atoms/index.html +1 -1
  155. package/coverage/rabbit-ui-kit/stories/molecules/CoinPicker.stories.jsx.html +1 -1
  156. package/coverage/rabbit-ui-kit/stories/molecules/ColoredNotice.stories.jsx.html +178 -0
  157. package/coverage/rabbit-ui-kit/stories/molecules/LineWithIconLink.stories.jsx.html +1 -1
  158. package/coverage/rabbit-ui-kit/stories/molecules/LogoCarousel.stories.jsx.html +160 -0
  159. package/coverage/rabbit-ui-kit/stories/molecules/TitledLineWithIconLink.stories.jsx.html +1 -1
  160. package/coverage/rabbit-ui-kit/stories/molecules/index.html +35 -5
  161. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/Dialog.stories.jsx.html +1 -1
  162. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogButtons/DialogButtons.stories.jsx.html +1 -1
  163. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogButtons/index.html +1 -1
  164. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogStep/DialogStep.stories.jsx.html +1 -1
  165. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogStep/index.html +1 -1
  166. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/index.html +1 -1
  167. package/coverage/rabbit-ui-kit/stories/organisms/WaitlistSubscription.stories.jsx.html +151 -0
  168. package/coverage/rabbit-ui-kit/stories/organisms/index.html +116 -0
  169. package/coverage/rabbit-ui-kit/stories/stubs/coins.jsx.html +1 -1
  170. package/coverage/rabbit-ui-kit/stories/stubs/exampleContent.jsx.html +1 -1
  171. package/coverage/rabbit-ui-kit/stories/stubs/index.html +1 -1
  172. package/coverage/rabbit-ui-kit/stories/templates/DeterminedErrorDialogStep.stories.jsx.html +1 -1
  173. package/coverage/rabbit-ui-kit/stories/templates/index.html +1 -1
  174. package/dist/global.css.map +1 -1
  175. package/dist/index.cjs +1151 -536
  176. package/dist/index.cjs.map +1 -1
  177. package/dist/index.css +93 -0
  178. package/dist/index.css.map +1 -1
  179. package/dist/index.modern.js +955 -447
  180. package/dist/index.modern.js.map +1 -1
  181. package/dist/index.module.js +1148 -537
  182. package/dist/index.module.js.map +1 -1
  183. package/dist/index.umd.js +1151 -536
  184. package/dist/index.umd.js.map +1 -1
  185. package/package.json +1 -1
  186. package/src/index.js +4 -0
  187. package/src/swaps-lib/external-apis/letsExchangeSwapProvider.js +13 -3
  188. package/src/swaps-lib/external-apis/swapProvider.js +22 -8
  189. package/src/swaps-lib/external-apis/swapspaceSwapProvider.js +23 -7
  190. package/src/swaps-lib/models/partner.js +7 -0
  191. package/src/swaps-lib/services/publicSwapService.js +30 -8
  192. package/src/swaps-lib/utils/swapUtils.js +1 -1
  193. package/src/ui-kit/assets/styles/global.scss +4 -7
  194. package/src/ui-kit/assets/wrappedImages/messageIcon.jsx +87 -0
  195. package/src/ui-kit/assets/wrappedImages/supportDialogImage.jsx +61 -0
  196. package/src/ui-kit/components/atoms/RateSelector/RateSelector.jsx +2 -2
  197. package/src/ui-kit/components/atoms/Validation/Validation.jsx +7 -9
  198. package/src/ui-kit/components/atoms/Validation/validation.module.scss +4 -0
  199. package/src/ui-kit/components/molecules/AmountInput/AmountInput.jsx +57 -48
  200. package/src/ui-kit/components/molecules/AmountInput/amount-input.module.scss +33 -0
  201. package/src/ui-kit/components/molecules/CoinPicker/CoinPicker.jsx +84 -132
  202. package/src/ui-kit/components/molecules/ColoredNotice/ColoredNotice.jsx +42 -0
  203. package/src/ui-kit/components/molecules/ColoredNotice/colored-notice.module.scss +20 -0
  204. package/src/ui-kit/components/molecules/LogoCarousel/LogoCarousel.jsx +37 -0
  205. package/src/ui-kit/components/molecules/LogoCarousel/logo-carousel.module.scss +64 -0
  206. package/src/ui-kit/components/molecules/SearchableCoinsList/SearchableCoinsList.jsx +137 -0
  207. package/src/ui-kit/components/organisms/Dialog/DialogButtons/DialogButtons.jsx +10 -0
  208. package/src/ui-kit/components/organisms/Dialog/DialogStep/DialogStep.jsx +16 -0
  209. package/src/ui-kit/components/organisms/SwapForm/SwapForm.jsx +35 -12
  210. package/src/ui-kit/components/organisms/WaitlistSubscription/WaitlistSubscription.jsx +158 -0
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">0% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>0/511</span>
28
+ <span class='fraction'>0/463</span>
29
29
  </div>
30
30
 
31
31
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">0% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>0/511</span>
49
+ <span class='fraction'>0/463</span>
50
50
  </div>
51
51
 
52
52
 
@@ -526,103 +526,7 @@
526
526
  <a name='L461'></a><a href='#L461'>461</a>
527
527
  <a name='L462'></a><a href='#L462'>462</a>
528
528
  <a name='L463'></a><a href='#L463'>463</a>
529
- <a name='L464'></a><a href='#L464'>464</a>
530
- <a name='L465'></a><a href='#L465'>465</a>
531
- <a name='L466'></a><a href='#L466'>466</a>
532
- <a name='L467'></a><a href='#L467'>467</a>
533
- <a name='L468'></a><a href='#L468'>468</a>
534
- <a name='L469'></a><a href='#L469'>469</a>
535
- <a name='L470'></a><a href='#L470'>470</a>
536
- <a name='L471'></a><a href='#L471'>471</a>
537
- <a name='L472'></a><a href='#L472'>472</a>
538
- <a name='L473'></a><a href='#L473'>473</a>
539
- <a name='L474'></a><a href='#L474'>474</a>
540
- <a name='L475'></a><a href='#L475'>475</a>
541
- <a name='L476'></a><a href='#L476'>476</a>
542
- <a name='L477'></a><a href='#L477'>477</a>
543
- <a name='L478'></a><a href='#L478'>478</a>
544
- <a name='L479'></a><a href='#L479'>479</a>
545
- <a name='L480'></a><a href='#L480'>480</a>
546
- <a name='L481'></a><a href='#L481'>481</a>
547
- <a name='L482'></a><a href='#L482'>482</a>
548
- <a name='L483'></a><a href='#L483'>483</a>
549
- <a name='L484'></a><a href='#L484'>484</a>
550
- <a name='L485'></a><a href='#L485'>485</a>
551
- <a name='L486'></a><a href='#L486'>486</a>
552
- <a name='L487'></a><a href='#L487'>487</a>
553
- <a name='L488'></a><a href='#L488'>488</a>
554
- <a name='L489'></a><a href='#L489'>489</a>
555
- <a name='L490'></a><a href='#L490'>490</a>
556
- <a name='L491'></a><a href='#L491'>491</a>
557
- <a name='L492'></a><a href='#L492'>492</a>
558
- <a name='L493'></a><a href='#L493'>493</a>
559
- <a name='L494'></a><a href='#L494'>494</a>
560
- <a name='L495'></a><a href='#L495'>495</a>
561
- <a name='L496'></a><a href='#L496'>496</a>
562
- <a name='L497'></a><a href='#L497'>497</a>
563
- <a name='L498'></a><a href='#L498'>498</a>
564
- <a name='L499'></a><a href='#L499'>499</a>
565
- <a name='L500'></a><a href='#L500'>500</a>
566
- <a name='L501'></a><a href='#L501'>501</a>
567
- <a name='L502'></a><a href='#L502'>502</a>
568
- <a name='L503'></a><a href='#L503'>503</a>
569
- <a name='L504'></a><a href='#L504'>504</a>
570
- <a name='L505'></a><a href='#L505'>505</a>
571
- <a name='L506'></a><a href='#L506'>506</a>
572
- <a name='L507'></a><a href='#L507'>507</a>
573
- <a name='L508'></a><a href='#L508'>508</a>
574
- <a name='L509'></a><a href='#L509'>509</a>
575
- <a name='L510'></a><a href='#L510'>510</a>
576
- <a name='L511'></a><a href='#L511'>511</a>
577
- <a name='L512'></a><a href='#L512'>512</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
578
- <span class="cline-any cline-no">&nbsp;</span>
579
- <span class="cline-any cline-no">&nbsp;</span>
580
- <span class="cline-any cline-no">&nbsp;</span>
581
- <span class="cline-any cline-no">&nbsp;</span>
582
- <span class="cline-any cline-no">&nbsp;</span>
583
- <span class="cline-any cline-no">&nbsp;</span>
584
- <span class="cline-any cline-no">&nbsp;</span>
585
- <span class="cline-any cline-no">&nbsp;</span>
586
- <span class="cline-any cline-no">&nbsp;</span>
587
- <span class="cline-any cline-no">&nbsp;</span>
588
- <span class="cline-any cline-no">&nbsp;</span>
589
- <span class="cline-any cline-no">&nbsp;</span>
590
- <span class="cline-any cline-no">&nbsp;</span>
591
- <span class="cline-any cline-no">&nbsp;</span>
592
- <span class="cline-any cline-no">&nbsp;</span>
593
- <span class="cline-any cline-no">&nbsp;</span>
594
- <span class="cline-any cline-no">&nbsp;</span>
595
- <span class="cline-any cline-no">&nbsp;</span>
596
- <span class="cline-any cline-no">&nbsp;</span>
597
- <span class="cline-any cline-no">&nbsp;</span>
598
- <span class="cline-any cline-no">&nbsp;</span>
599
- <span class="cline-any cline-no">&nbsp;</span>
600
- <span class="cline-any cline-no">&nbsp;</span>
601
- <span class="cline-any cline-no">&nbsp;</span>
602
- <span class="cline-any cline-no">&nbsp;</span>
603
- <span class="cline-any cline-no">&nbsp;</span>
604
- <span class="cline-any cline-no">&nbsp;</span>
605
- <span class="cline-any cline-no">&nbsp;</span>
606
- <span class="cline-any cline-no">&nbsp;</span>
607
- <span class="cline-any cline-no">&nbsp;</span>
608
- <span class="cline-any cline-no">&nbsp;</span>
609
- <span class="cline-any cline-no">&nbsp;</span>
610
- <span class="cline-any cline-no">&nbsp;</span>
611
- <span class="cline-any cline-no">&nbsp;</span>
612
- <span class="cline-any cline-no">&nbsp;</span>
613
- <span class="cline-any cline-no">&nbsp;</span>
614
- <span class="cline-any cline-no">&nbsp;</span>
615
- <span class="cline-any cline-no">&nbsp;</span>
616
- <span class="cline-any cline-no">&nbsp;</span>
617
- <span class="cline-any cline-no">&nbsp;</span>
618
- <span class="cline-any cline-no">&nbsp;</span>
619
- <span class="cline-any cline-no">&nbsp;</span>
620
- <span class="cline-any cline-no">&nbsp;</span>
621
- <span class="cline-any cline-no">&nbsp;</span>
622
- <span class="cline-any cline-no">&nbsp;</span>
623
- <span class="cline-any cline-no">&nbsp;</span>
624
- <span class="cline-any cline-no">&nbsp;</span>
625
- <span class="cline-any cline-no">&nbsp;</span>
529
+ <a name='L464'></a><a href='#L464'>464</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
626
530
  <span class="cline-any cline-no">&nbsp;</span>
627
531
  <span class="cline-any cline-no">&nbsp;</span>
628
532
  <span class="cline-any cline-no">&nbsp;</span>
@@ -1102,6 +1006,7 @@
1102
1006
  <span class="cstat-no" title="statement not covered" >import { AssetIcon } from "../../atoms/AssetIcon/AssetIcon.jsx";</span>
1103
1007
  <span class="cstat-no" title="statement not covered" >import { Button } from "../../atoms/buttons/Button/Button.jsx";</span>
1104
1008
  <span class="cstat-no" title="statement not covered" >import { LoadingDots } from "../../atoms/LoadingDots/LoadingDots.jsx";</span>
1009
+ <span class="cstat-no" title="statement not covered" >import { SearchableCoinsList } from "../SearchableCoinsList/SearchableCoinsList.jsx";</span>
1105
1010
  <span class="cstat-no" title="statement not covered" ></span>
1106
1011
  <span class="cstat-no" title="statement not covered" >export const COIN_PICKER_MODES = {</span>
1107
1012
  <span class="cstat-no" title="statement not covered" > BUTTON: "BUTTON",</span>
@@ -1179,7 +1084,6 @@
1179
1084
  <span class="cstat-no" title="statement not covered" > const handleError = useCallHandlingErrors();</span>
1180
1085
  <span class="cstat-no" title="statement not covered" ></span>
1181
1086
  <span class="cstat-no" title="statement not covered" > const [coins, setCoins] = useState(null);</span>
1182
- <span class="cstat-no" title="statement not covered" > const [filteredCoins, setFilteredCoins] = useState([]);</span>
1183
1087
  <span class="cstat-no" title="statement not covered" > const [initiallyEnabledCoins, setInitiallyEnabledCoins] = useReferredState({});</span>
1184
1088
  <span class="cstat-no" title="statement not covered" > const [currentlyEnabledCoins, setCurrentlyEnabledCoins] = useReferredState({});</span>
1185
1089
  <span class="cstat-no" title="statement not covered" > const [searchFieldValue, setSearchFieldValue] = useState("");</span>
@@ -1189,9 +1093,9 @@
1189
1093
  <span class="cstat-no" title="statement not covered" > const [coinsContent, setCoinsContent] = useState(null);</span>
1190
1094
  <span class="cstat-no" title="statement not covered" > const [isCoinsDataReloadable, setIsCoinsDataReloadable] = useState(false);</span>
1191
1095
  <span class="cstat-no" title="statement not covered" ></span>
1192
- <span class="cstat-no" title="statement not covered" > const [limitedCoinsNumber, setLimitedCoinsNumber] = useState(0);</span>
1193
- <span class="cstat-no" title="statement not covered" > const [displayedCoins, setDisplayedCoins] = useState([]);</span>
1194
1096
  <span class="cstat-no" title="statement not covered" > const [isListFull, setIsListFull] = useState(true);</span>
1097
+ <span class="cstat-no" title="statement not covered" > const [isSearchResultEmpty, setIsSearchResultEmpty] = useState(false);</span>
1098
+ <span class="cstat-no" title="statement not covered" > const [triggerLoadMoreCoins, setTriggerLoadMoreCoins] = useState(0);</span>
1195
1099
  <span class="cstat-no" title="statement not covered" ></span>
1196
1100
  <span class="cstat-no" title="statement not covered" > const searchRef = useRef();</span>
1197
1101
  <span class="cstat-no" title="statement not covered" > const scrollContainerRef = useRef();</span>
@@ -1245,58 +1149,11 @@
1245
1149
  <span class="cstat-no" title="statement not covered" > handleClick(coin.ticker);</span>
1246
1150
  <span class="cstat-no" title="statement not covered" > };</span>
1247
1151
  <span class="cstat-no" title="statement not covered" ></span>
1248
- <span class="cstat-no" title="statement not covered" > const handleSearchAsset = value =&gt; {</span>
1249
- <span class="cstat-no" title="statement not covered" > // TODO: [refactoring, high] use unified search function. task_id=be0475316f374dd4a926c948d969e704</span>
1250
- <span class="cstat-no" title="statement not covered" > setSearchFieldValue(value); // Trim the input to handle leading/trailing spaces</span>
1251
- <span class="cstat-no" title="statement not covered" > const searchTerm = value.trim().toLowerCase();</span>
1252
- <span class="cstat-no" title="statement not covered" > if (searchTerm !== "") {</span>
1253
- <span class="cstat-no" title="statement not covered" > const searchWords = searchTerm.split(/\s+/); // Split search terms on whitespace</span>
1254
- <span class="cstat-no" title="statement not covered" ></span>
1255
- <span class="cstat-no" title="statement not covered" > const filteredAndSortedCoins = coins</span>
1256
- <span class="cstat-no" title="statement not covered" > .filter(coin =&gt; {</span>
1257
- <span class="cstat-no" title="statement not covered" > // Check if all search words are found in any of the given properties</span>
1258
- <span class="cstat-no" title="statement not covered" > return searchWords.every(</span>
1259
- <span class="cstat-no" title="statement not covered" > word =&gt;</span>
1260
- <span class="cstat-no" title="statement not covered" > coin?.latinName?.toLowerCase().includes(word) ||</span>
1261
- <span class="cstat-no" title="statement not covered" > coin?.ticker?.toLowerCase().includes(word) ||</span>
1262
- <span class="cstat-no" title="statement not covered" > coin?.tickerPrintable?.toLowerCase().includes(word)</span>
1263
- <span class="cstat-no" title="statement not covered" > );</span>
1264
- <span class="cstat-no" title="statement not covered" > })</span>
1265
- <span class="cstat-no" title="statement not covered" > .sort((a, b) =&gt; {</span>
1266
- <span class="cstat-no" title="statement not covered" > // Check for exact matches</span>
1267
- <span class="cstat-no" title="statement not covered" > const aMatch =</span>
1268
- <span class="cstat-no" title="statement not covered" > a.latinName.toLowerCase() === searchTerm ||</span>
1269
- <span class="cstat-no" title="statement not covered" > a.ticker.toLowerCase() === searchTerm ||</span>
1270
- <span class="cstat-no" title="statement not covered" > a.tickerPrintable.toLowerCase() === searchTerm</span>
1271
- <span class="cstat-no" title="statement not covered" > ? 1</span>
1272
- <span class="cstat-no" title="statement not covered" > : 0;</span>
1273
- <span class="cstat-no" title="statement not covered" > const bMatch =</span>
1274
- <span class="cstat-no" title="statement not covered" > b.latinName.toLowerCase() === searchTerm ||</span>
1275
- <span class="cstat-no" title="statement not covered" > b.ticker.toLowerCase() === searchTerm ||</span>
1276
- <span class="cstat-no" title="statement not covered" > b.tickerPrintable.toLowerCase() === searchTerm</span>
1277
- <span class="cstat-no" title="statement not covered" > ? 1</span>
1278
- <span class="cstat-no" title="statement not covered" > : 0;</span>
1279
- <span class="cstat-no" title="statement not covered" > if (bMatch - aMatch !== 0) {</span>
1280
- <span class="cstat-no" title="statement not covered" > // Prioritize exact matches to the top</span>
1281
- <span class="cstat-no" title="statement not covered" > return bMatch - aMatch;</span>
1282
- <span class="cstat-no" title="statement not covered" > } else {</span>
1283
- <span class="cstat-no" title="statement not covered" > // Sort remaining items alphabetically by latinName</span>
1284
- <span class="cstat-no" title="statement not covered" > return a.latinName.toLowerCase().localeCompare(b.latinName.toLowerCase());</span>
1285
- <span class="cstat-no" title="statement not covered" > }</span>
1286
- <span class="cstat-no" title="statement not covered" > });</span>
1287
- <span class="cstat-no" title="statement not covered" ></span>
1288
- <span class="cstat-no" title="statement not covered" > setFilteredCoins(filteredAndSortedCoins);</span>
1289
- <span class="cstat-no" title="statement not covered" > } else {</span>
1290
- <span class="cstat-no" title="statement not covered" > setFilteredCoins(coins); // Reset to original list if search term is empty</span>
1291
- <span class="cstat-no" title="statement not covered" > }</span>
1292
- <span class="cstat-no" title="statement not covered" > };</span>
1293
- <span class="cstat-no" title="statement not covered" ></span>
1294
1152
  <span class="cstat-no" title="statement not covered" > const loadCoinsAndSaveToState = () =&gt; {</span>
1295
1153
  <span class="cstat-no" title="statement not covered" > (async () =&gt; {</span>
1296
1154
  <span class="cstat-no" title="statement not covered" > try {</span>
1297
1155
  <span class="cstat-no" title="statement not covered" > const data = loadCoinsAndContent ? await loadCoinsAndContent() : await defaultLoadCoinsAndContent();</span>
1298
1156
  <span class="cstat-no" title="statement not covered" > setCoins(data.coins);</span>
1299
- <span class="cstat-no" title="statement not covered" > setFilteredCoins(data.coins);</span>
1300
1157
  <span class="cstat-no" title="statement not covered" > setCoinsContent(data.content);</span>
1301
1158
  <span class="cstat-no" title="statement not covered" > setIsCoinsDataReloadable(!!data.isCoinsDataReloadable);</span>
1302
1159
  <span class="cstat-no" title="statement not covered" > } catch (e) {</span>
@@ -1343,30 +1200,6 @@
1343
1200
  <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line react-hooks/exhaustive-deps</span>
1344
1201
  <span class="cstat-no" title="statement not covered" > }, [search, searchAdaptive, coins]);</span>
1345
1202
  <span class="cstat-no" title="statement not covered" ></span>
1346
- <span class="cstat-no" title="statement not covered" > useEffect(() =&gt; {</span>
1347
- <span class="cstat-no" title="statement not covered" > if (filteredCoins?.length &gt; partialLoadingIncrement &amp;&amp; partialLoadingEnabled) {</span>
1348
- <span class="cstat-no" title="statement not covered" > setLimitedCoinsNumber(partialLoadingIncrement);</span>
1349
- <span class="cstat-no" title="statement not covered" > } else {</span>
1350
- <span class="cstat-no" title="statement not covered" > setLimitedCoinsNumber(0);</span>
1351
- <span class="cstat-no" title="statement not covered" > setDisplayedCoins(filteredCoins);</span>
1352
- <span class="cstat-no" title="statement not covered" > setIsListFull(true);</span>
1353
- <span class="cstat-no" title="statement not covered" > }</span>
1354
- <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line react-hooks/exhaustive-deps</span>
1355
- <span class="cstat-no" title="statement not covered" > }, [filteredCoins]);</span>
1356
- <span class="cstat-no" title="statement not covered" ></span>
1357
- <span class="cstat-no" title="statement not covered" > useEffect(() =&gt; {</span>
1358
- <span class="cstat-no" title="statement not covered" > if (limitedCoinsNumber &gt; 0) {</span>
1359
- <span class="cstat-no" title="statement not covered" > const coinsToDisplay = filteredCoins.slice(0, limitedCoinsNumber);</span>
1360
- <span class="cstat-no" title="statement not covered" > setDisplayedCoins(coinsToDisplay);</span>
1361
- <span class="cstat-no" title="statement not covered" > setIsListFull(coinsToDisplay.length === filteredCoins.length);</span>
1362
- <span class="cstat-no" title="statement not covered" > }</span>
1363
- <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line react-hooks/exhaustive-deps</span>
1364
- <span class="cstat-no" title="statement not covered" > }, [limitedCoinsNumber]);</span>
1365
- <span class="cstat-no" title="statement not covered" ></span>
1366
- <span class="cstat-no" title="statement not covered" > const displayMoreCoins = () =&gt; {</span>
1367
- <span class="cstat-no" title="statement not covered" > setLimitedCoinsNumber(prev =&gt; prev + partialLoadingIncrement);</span>
1368
- <span class="cstat-no" title="statement not covered" > };</span>
1369
- <span class="cstat-no" title="statement not covered" ></span>
1370
1203
  <span class="cstat-no" title="statement not covered" > const skeleton = () =&gt; {</span>
1371
1204
  <span class="cstat-no" title="statement not covered" > let skeletonItems = [];</span>
1372
1205
  <span class="cstat-no" title="statement not covered" > for (let i = 0; i &lt; skeletonItemsCount; i++) {</span>
@@ -1404,11 +1237,10 @@
1404
1237
  <span class="cstat-no" title="statement not covered" > setScrollWrapperClass(s["reached-bottom"]);</span>
1405
1238
  <span class="cstat-no" title="statement not covered" > };</span>
1406
1239
  <span class="cstat-no" title="statement not covered" ></span>
1407
- <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line react-hooks/exhaustive-deps</span>
1408
- <span class="cstat-no" title="statement not covered" > useEffect(handleScroll, []);</span>
1240
+ <span class="cstat-no" title="statement not covered" > const displayMoreCoins = () =&gt; setTriggerLoadMoreCoins(prev =&gt; prev + 1);</span>
1409
1241
  <span class="cstat-no" title="statement not covered" ></span>
1410
1242
  <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line react-hooks/exhaustive-deps</span>
1411
- <span class="cstat-no" title="statement not covered" > useEffect(handleScroll, [filteredCoins]);</span>
1243
+ <span class="cstat-no" title="statement not covered" > useEffect(handleScroll, []);</span>
1412
1244
  <span class="cstat-no" title="statement not covered" ></span>
1413
1245
  <span class="cstat-no" title="statement not covered" > const shouldShowSkeleton = coins == null;</span>
1414
1246
  <span class="cstat-no" title="statement not covered" ></span>
@@ -1419,7 +1251,10 @@
1419
1251
  <span class="cstat-no" title="statement not covered" > &lt;div className={s["coin-picker-search"]}&gt;</span>
1420
1252
  <span class="cstat-no" title="statement not covered" > &lt;Input</span>
1421
1253
  <span class="cstat-no" title="statement not covered" > value={searchFieldValue}</span>
1422
- <span class="cstat-no" title="statement not covered" > onChange={e =&gt; handleSearchAsset(e.target.value)}</span>
1254
+ <span class="cstat-no" title="statement not covered" > onChange={e =&gt; {</span>
1255
+ <span class="cstat-no" title="statement not covered" > setSearchFieldValue(e.target.value);</span>
1256
+ <span class="cstat-no" title="statement not covered" > handleScroll();</span>
1257
+ <span class="cstat-no" title="statement not covered" > }}</span>
1423
1258
  <span class="cstat-no" title="statement not covered" > placeholder={texts.searchPlaceholder}</span>
1424
1259
  <span class="cstat-no" title="statement not covered" > isSmallHeight={true}</span>
1425
1260
  <span class="cstat-no" title="statement not covered" > clearButton</span>
@@ -1444,61 +1279,82 @@
1444
1279
  <span class="cstat-no" title="statement not covered" > onScroll={handleScroll}</span>
1445
1280
  <span class="cstat-no" title="statement not covered" > &gt;</span>
1446
1281
  <span class="cstat-no" title="statement not covered" > &lt;div className={s["coin-picker-wrapper-content-assets"]}&gt;</span>
1447
- <span class="cstat-no" title="statement not covered" > {shouldShowSkeleton</span>
1448
- <span class="cstat-no" title="statement not covered" > ? skeleton()</span>
1449
- <span class="cstat-no" title="statement not covered" > : displayedCoins.map((coin, index) =&gt; {</span>
1450
- <span class="cstat-no" title="statement not covered" > const { assetIconSrc, assetIconProtocolSrc } = coinToIconPaths(coin);</span>
1282
+ <span class="cstat-no" title="statement not covered" > {shouldShowSkeleton ? (</span>
1283
+ <span class="cstat-no" title="statement not covered" > skeleton()</span>
1284
+ <span class="cstat-no" title="statement not covered" > ) : (</span>
1285
+ <span class="cstat-no" title="statement not covered" > &lt;SearchableCoinsList</span>
1286
+ <span class="cstat-no" title="statement not covered" > searchQuery={searchFieldValue}</span>
1287
+ <span class="cstat-no" title="statement not covered" > onListUpdated={() =&gt; handleScroll()}</span>
1288
+ <span class="cstat-no" title="statement not covered" > setIsListFull={setIsListFull}</span>
1289
+ <span class="cstat-no" title="statement not covered" > setIsSearchResultEmpty={setIsSearchResultEmpty}</span>
1290
+ <span class="cstat-no" title="statement not covered" > triggerLoadMoreCoins={triggerLoadMoreCoins}</span>
1291
+ <span class="cstat-no" title="statement not covered" > coinsList={allCoins}</span>
1292
+ <span class="cstat-no" title="statement not covered" > coinsBundle={allCoins.map((coin, index) =&gt; {</span>
1293
+ <span class="cstat-no" title="statement not covered" > return {</span>
1294
+ <span class="cstat-no" title="statement not covered" > coin: coin,</span>
1295
+ <span class="cstat-no" title="statement not covered" > component: () =&gt; {</span>
1296
+ <span class="cstat-no" title="statement not covered" > const { assetIconSrc, assetIconProtocolSrc } = coinToIconPaths(coin);</span>
1451
1297
  <span class="cstat-no" title="statement not covered" ></span>
1452
- <span class="cstat-no" title="statement not covered" > return (</span>
1453
- <span class="cstat-no" title="statement not covered" > &lt;div</span>
1454
- <span class="cstat-no" title="statement not covered" > className={s["item"]}</span>
1455
- <span class="cstat-no" title="statement not covered" > key={`picker-${coin.ticker}-${index}`}</span>
1456
- <span class="cstat-no" title="statement not covered" > onClick={e =&gt; handleError(() =&gt; handleCoinClick(coin), e)}</span>
1457
- <span class="cstat-no" title="statement not covered" > &gt;</span>
1458
- <span class="cstat-no" title="statement not covered" > &lt;div</span>
1459
- <span class="cstat-no" title="statement not covered" > className={</span>
1460
- <span class="cstat-no" title="statement not covered" > s["link"] +</span>
1461
- <span class="cstat-no" title="statement not covered" > (currentlyEnabledCoins.current[coin.ticker] !==</span>
1462
- <span class="cstat-no" title="statement not covered" > initiallyEnabledCoins.current[coin.ticker]</span>
1463
- <span class="cstat-no" title="statement not covered" > ? " " + s["outline"]</span>
1464
- <span class="cstat-no" title="statement not covered" > : "")</span>
1465
- <span class="cstat-no" title="statement not covered" > }</span>
1466
- <span class="cstat-no" title="statement not covered" > &gt;</span>
1467
- <span class="cstat-no" title="statement not covered" > &lt;AssetIcon</span>
1468
- <span class="cstat-no" title="statement not covered" > assetIconSrc={assetIconSrc}</span>
1469
- <span class="cstat-no" title="statement not covered" > assetIconProtocolSrc={assetIconProtocolSrc}</span>
1470
- <span class="cstat-no" title="statement not covered" > fallbackSrc={FALLBACK_ASSET_ICON_URL}</span>
1471
- <span class="cstat-no" title="statement not covered" > /&gt;</span>
1472
- <span class="cstat-no" title="statement not covered" > &lt;div className={s["content"]} key={coin.ticker}&gt;</span>
1473
- <span class="cstat-no" title="statement not covered" > &lt;p className={s["name"]}&gt;{coin.latinName}&lt;/p&gt;</span>
1474
- <span class="cstat-no" title="statement not covered" > &lt;p className={s["amount"]}&gt;</span>
1475
- <span class="cstat-no" title="statement not covered" > {coinsContent?.find(i =&gt; i.coin === coin)?.subtitle ?? ""}</span>
1476
- <span class="cstat-no" title="statement not covered" > &lt;/p&gt;</span>
1477
- <span class="cstat-no" title="statement not covered" > &lt;/div&gt;</span>
1478
- <span class="cstat-no" title="statement not covered" > {mode === COIN_PICKER_MODES.BUTTON ? (</span>
1479
- <span class="cstat-no" title="statement not covered" > &lt;div className={s["arrow"]}&gt;</span>
1480
- <span class="cstat-no" title="statement not covered" > &lt;ArrowIcon /&gt;</span>
1481
- <span class="cstat-no" title="statement not covered" > &lt;/div&gt;</span>
1482
- <span class="cstat-no" title="statement not covered" > ) : mode === COIN_PICKER_MODES.CHECKBOX ? (</span>
1483
- <span class="cstat-no" title="statement not covered" > &lt;div className={s["toggle-container"]}&gt;</span>
1484
- <span class="cstat-no" title="statement not covered" > &lt;RadioButtonWithText</span>
1485
- <span class="cstat-no" title="statement not covered" > onStateChange={resetButtonLoader =&gt;</span>
1486
- <span class="cstat-no" title="statement not covered" > handleToggleClick(coin.ticker, resetButtonLoader)</span>
1487
- <span class="cstat-no" title="statement not covered" > }</span>
1488
- <span class="cstat-no" title="statement not covered" > isSwitchedOn={currentlyEnabledCoins.current[coin.ticker]}</span>
1489
- <span class="cstat-no" title="statement not covered" > id={index}</span>
1490
- <span class="cstat-no" title="statement not covered" > /&gt;</span>
1491
- <span class="cstat-no" title="statement not covered" > &lt;/div&gt;</span>
1492
- <span class="cstat-no" title="statement not covered" > ) : (</span>
1493
- <span class="cstat-no" title="statement not covered" > ""</span>
1494
- <span class="cstat-no" title="statement not covered" > )}</span>
1495
- <span class="cstat-no" title="statement not covered" > &lt;/div&gt;</span>
1496
- <span class="cstat-no" title="statement not covered" > &lt;/div&gt;</span>
1497
- <span class="cstat-no" title="statement not covered" > );</span>
1498
- <span class="cstat-no" title="statement not covered" > })}</span>
1298
+ <span class="cstat-no" title="statement not covered" > return (</span>
1299
+ <span class="cstat-no" title="statement not covered" > &lt;div</span>
1300
+ <span class="cstat-no" title="statement not covered" > className={s["item"]}</span>
1301
+ <span class="cstat-no" title="statement not covered" > key={`picker-${coin.ticker}-${index}`}</span>
1302
+ <span class="cstat-no" title="statement not covered" > onClick={e =&gt; handleError(() =&gt; handleCoinClick(coin), e)}</span>
1303
+ <span class="cstat-no" title="statement not covered" > &gt;</span>
1304
+ <span class="cstat-no" title="statement not covered" > &lt;div</span>
1305
+ <span class="cstat-no" title="statement not covered" > className={</span>
1306
+ <span class="cstat-no" title="statement not covered" > s["link"] +</span>
1307
+ <span class="cstat-no" title="statement not covered" > (currentlyEnabledCoins.current[coin.ticker] !==</span>
1308
+ <span class="cstat-no" title="statement not covered" > initiallyEnabledCoins.current[coin.ticker]</span>
1309
+ <span class="cstat-no" title="statement not covered" > ? " " + s["outline"]</span>
1310
+ <span class="cstat-no" title="statement not covered" > : "")</span>
1311
+ <span class="cstat-no" title="statement not covered" > }</span>
1312
+ <span class="cstat-no" title="statement not covered" > &gt;</span>
1313
+ <span class="cstat-no" title="statement not covered" > &lt;AssetIcon</span>
1314
+ <span class="cstat-no" title="statement not covered" > assetIconSrc={assetIconSrc}</span>
1315
+ <span class="cstat-no" title="statement not covered" > assetIconProtocolSrc={assetIconProtocolSrc}</span>
1316
+ <span class="cstat-no" title="statement not covered" > fallbackSrc={FALLBACK_ASSET_ICON_URL}</span>
1317
+ <span class="cstat-no" title="statement not covered" > /&gt;</span>
1318
+ <span class="cstat-no" title="statement not covered" > &lt;div className={s["content"]} key={coin.ticker}&gt;</span>
1319
+ <span class="cstat-no" title="statement not covered" > &lt;p className={s["name"]}&gt;{coin.latinName}&lt;/p&gt;</span>
1320
+ <span class="cstat-no" title="statement not covered" > &lt;p className={s["amount"]}&gt;</span>
1321
+ <span class="cstat-no" title="statement not covered" > {coinsContent?.find(i =&gt; i.coin === coin)</span>
1322
+ <span class="cstat-no" title="statement not covered" > ?.subtitle ?? ""}</span>
1323
+ <span class="cstat-no" title="statement not covered" > &lt;/p&gt;</span>
1324
+ <span class="cstat-no" title="statement not covered" > &lt;/div&gt;</span>
1325
+ <span class="cstat-no" title="statement not covered" > {mode === COIN_PICKER_MODES.BUTTON ? (</span>
1326
+ <span class="cstat-no" title="statement not covered" > &lt;div className={s["arrow"]}&gt;</span>
1327
+ <span class="cstat-no" title="statement not covered" > &lt;ArrowIcon /&gt;</span>
1328
+ <span class="cstat-no" title="statement not covered" > &lt;/div&gt;</span>
1329
+ <span class="cstat-no" title="statement not covered" > ) : mode === COIN_PICKER_MODES.CHECKBOX ? (</span>
1330
+ <span class="cstat-no" title="statement not covered" > &lt;div className={s["toggle-container"]}&gt;</span>
1331
+ <span class="cstat-no" title="statement not covered" > &lt;RadioButtonWithText</span>
1332
+ <span class="cstat-no" title="statement not covered" > onStateChange={resetButtonLoader =&gt;</span>
1333
+ <span class="cstat-no" title="statement not covered" > handleToggleClick(</span>
1334
+ <span class="cstat-no" title="statement not covered" > coin.ticker,</span>
1335
+ <span class="cstat-no" title="statement not covered" > resetButtonLoader</span>
1336
+ <span class="cstat-no" title="statement not covered" > )</span>
1337
+ <span class="cstat-no" title="statement not covered" > }</span>
1338
+ <span class="cstat-no" title="statement not covered" > isSwitchedOn={</span>
1339
+ <span class="cstat-no" title="statement not covered" > currentlyEnabledCoins.current[coin.ticker]</span>
1340
+ <span class="cstat-no" title="statement not covered" > }</span>
1341
+ <span class="cstat-no" title="statement not covered" > id={index}</span>
1342
+ <span class="cstat-no" title="statement not covered" > /&gt;</span>
1343
+ <span class="cstat-no" title="statement not covered" > &lt;/div&gt;</span>
1344
+ <span class="cstat-no" title="statement not covered" > ) : (</span>
1345
+ <span class="cstat-no" title="statement not covered" > ""</span>
1346
+ <span class="cstat-no" title="statement not covered" > )}</span>
1347
+ <span class="cstat-no" title="statement not covered" > &lt;/div&gt;</span>
1348
+ <span class="cstat-no" title="statement not covered" > &lt;/div&gt;</span>
1349
+ <span class="cstat-no" title="statement not covered" > );</span>
1350
+ <span class="cstat-no" title="statement not covered" > },</span>
1351
+ <span class="cstat-no" title="statement not covered" > };</span>
1352
+ <span class="cstat-no" title="statement not covered" > })}</span>
1353
+ <span class="cstat-no" title="statement not covered" > /&gt;</span>
1354
+ <span class="cstat-no" title="statement not covered" > )}</span>
1499
1355
  <span class="cstat-no" title="statement not covered" > &lt;/div&gt;</span>
1500
1356
  <span class="cstat-no" title="statement not covered" ></span>
1501
- <span class="cstat-no" title="statement not covered" > {filteredCoins?.length === 0 &amp;&amp; searchFieldValue !== "" ? (</span>
1357
+ <span class="cstat-no" title="statement not covered" > {isSearchResultEmpty ? (</span>
1502
1358
  <span class="cstat-no" title="statement not covered" > &lt;div className={s["coin-picker-wrapper-content-asset-not-found"]}&gt;</span>
1503
1359
  <span class="cstat-no" title="statement not covered" > &lt;h6&gt;{texts.noAssetsMessage}&lt;/h6&gt;</span>
1504
1360
  <span class="cstat-no" title="statement not covered" > &lt;/div&gt;</span>
@@ -1512,7 +1368,7 @@
1512
1368
  <span class="cstat-no" title="statement not covered" > size="sm"</span>
1513
1369
  <span class="cstat-no" title="statement not covered" > loader={false}</span>
1514
1370
  <span class="cstat-no" title="statement not covered" > content={texts.loadMoreButton}</span>
1515
- <span class="cstat-no" title="statement not covered" > onClick={displayMoreCoins}</span>
1371
+ <span class="cstat-no" title="statement not covered" > onClick={() =&gt; displayMoreCoins()}</span>
1516
1372
  <span class="cstat-no" title="statement not covered" > handleError={handleError}</span>
1517
1373
  <span class="cstat-no" title="statement not covered" > /&gt;</span>
1518
1374
  <span class="cstat-no" title="statement not covered" > &lt;/div&gt;</span>
@@ -1603,7 +1459,7 @@
1603
1459
  <div class='footer quiet pad2 space-top1 center small'>
1604
1460
  Code coverage generated by
1605
1461
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1606
- at 2024-07-24T08:32:25.930Z
1462
+ at 2024-08-14T12:55:43.144Z
1607
1463
  </div>
1608
1464
  <script src="../../../../../../prettify.js"></script>
1609
1465
  <script>
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">0% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>0/511</span>
28
+ <span class='fraction'>0/463</span>
29
29
  </div>
30
30
 
31
31
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">0% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>0/511</span>
49
+ <span class='fraction'>0/463</span>
50
50
  </div>
51
51
 
52
52
 
@@ -84,13 +84,13 @@
84
84
  <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
85
85
  </td>
86
86
  <td data-value="0" class="pct low">0%</td>
87
- <td data-value="511" class="abs low">0/511</td>
87
+ <td data-value="463" class="abs low">0/463</td>
88
88
  <td data-value="0" class="pct low">0%</td>
89
89
  <td data-value="1" class="abs low">0/1</td>
90
90
  <td data-value="0" class="pct low">0%</td>
91
91
  <td data-value="1" class="abs low">0/1</td>
92
92
  <td data-value="0" class="pct low">0%</td>
93
- <td data-value="511" class="abs low">0/511</td>
93
+ <td data-value="463" class="abs low">0/463</td>
94
94
  </tr>
95
95
 
96
96
  </tbody>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2024-07-24T08:32:25.930Z
104
+ at 2024-08-14T12:55:43.144Z
105
105
  </div>
106
106
  <script src="../../../../../../prettify.js"></script>
107
107
  <script>