@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.
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/clover.xml +15720 -0
- package/coverage/coverage-final.json +112 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +986 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/rabbit-ui-kit/index.html +116 -0
- package/coverage/rabbit-ui-kit/index.js.html +88 -0
- package/coverage/rabbit-ui-kit/src/common-apis/adapters/analyticsAdapters/googleAnalyticsAdapter.js.html +148 -0
- package/coverage/rabbit-ui-kit/src/common-apis/adapters/analyticsAdapters/index.html +131 -0
- package/coverage/rabbit-ui-kit/src/common-apis/adapters/analyticsAdapters/mixpanelAdapter.js.html +199 -0
- package/coverage/rabbit-ui-kit/src/common-apis/adapters/axiosAdapter.js.html +190 -0
- package/coverage/rabbit-ui-kit/src/common-apis/adapters/index.html +131 -0
- package/coverage/rabbit-ui-kit/src/common-apis/adapters/qrUtils.js.html +139 -0
- package/coverage/rabbit-ui-kit/src/common-apis/amountUtils.js.html +1162 -0
- package/coverage/rabbit-ui-kit/src/common-apis/errorUtils.js.html +211 -0
- package/coverage/rabbit-ui-kit/src/common-apis/external-apis/apiGroups.js.html +250 -0
- package/coverage/rabbit-ui-kit/src/common-apis/external-apis/index.html +131 -0
- package/coverage/rabbit-ui-kit/src/common-apis/external-apis/ipAddressProviders.js.html +352 -0
- package/coverage/rabbit-ui-kit/src/common-apis/fiatCurrenciesService.js.html +544 -0
- package/coverage/rabbit-ui-kit/src/common-apis/globalConstants.jsx.html +94 -0
- package/coverage/rabbit-ui-kit/src/common-apis/index.html +161 -0
- package/coverage/rabbit-ui-kit/src/common-apis/models/blockchain.js.html +115 -0
- package/coverage/rabbit-ui-kit/src/common-apis/models/coin.js.html +544 -0
- package/coverage/rabbit-ui-kit/src/common-apis/models/index.html +146 -0
- package/coverage/rabbit-ui-kit/src/common-apis/models/protocol.js.html +100 -0
- package/coverage/rabbit-ui-kit/src/common-apis/utils/cache.js.html +811 -0
- package/coverage/rabbit-ui-kit/src/common-apis/utils/emailAPI.js.html +133 -0
- package/coverage/rabbit-ui-kit/src/common-apis/utils/index.html +161 -0
- package/coverage/rabbit-ui-kit/src/common-apis/utils/logging/index.html +131 -0
- package/coverage/rabbit-ui-kit/src/common-apis/utils/logging/logger.js.html +208 -0
- package/coverage/rabbit-ui-kit/src/common-apis/utils/logging/logsStorage.js.html +268 -0
- package/coverage/rabbit-ui-kit/src/common-apis/utils/postponeExecution.js.html +118 -0
- package/coverage/rabbit-ui-kit/src/common-apis/utils/safeStringify.js.html +235 -0
- package/coverage/rabbit-ui-kit/src/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/index.js.html +358 -0
- package/coverage/rabbit-ui-kit/src/robust-api-caller/cacheAndConcurrentRequestsResolver.js.html +1570 -0
- package/coverage/rabbit-ui-kit/src/robust-api-caller/cachedRobustExternalApiCallerService.js.html +526 -0
- package/coverage/rabbit-ui-kit/src/robust-api-caller/cancelProcessing.js.html +172 -0
- package/coverage/rabbit-ui-kit/src/robust-api-caller/concurrentCalculationsMetadataHolder.js.html +310 -0
- package/coverage/rabbit-ui-kit/src/robust-api-caller/externalApiProvider.js.html +553 -0
- package/coverage/rabbit-ui-kit/src/robust-api-caller/externalServicesStatsCollector.js.html +319 -0
- package/coverage/rabbit-ui-kit/src/robust-api-caller/index.html +206 -0
- package/coverage/rabbit-ui-kit/src/robust-api-caller/robustExternalAPICallerService.js.html +997 -0
- package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/index.html +146 -0
- package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/letsExchangeSwapProvider.js.html +1543 -0
- package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/swapProvider.js.html +1705 -0
- package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/swapspaceSwapProvider.js.html +1801 -0
- package/coverage/rabbit-ui-kit/src/swaps-lib/models/baseSwapCreationInfo.js.html +223 -0
- package/coverage/rabbit-ui-kit/src/swaps-lib/models/existingSwap.js.html +304 -0
- package/coverage/rabbit-ui-kit/src/swaps-lib/models/existingSwapWithFiatData.js.html +469 -0
- package/coverage/rabbit-ui-kit/src/swaps-lib/models/index.html +176 -0
- package/coverage/rabbit-ui-kit/src/swaps-lib/models/partner.js.html +106 -0
- package/coverage/rabbit-ui-kit/src/swaps-lib/models/swapProviderCoinInfo.js.html +193 -0
- package/coverage/rabbit-ui-kit/src/swaps-lib/services/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/swaps-lib/services/publicSwapService.js.html +2161 -0
- package/coverage/rabbit-ui-kit/src/swaps-lib/utils/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/swaps-lib/utils/swapUtils.js.html +670 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/arrowIcon.jsx.html +124 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/arrowTosca.jsx.html +127 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/arrowWhite.jsx.html +127 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/darkRectangle.jsx.html +106 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/determinedError.jsx.html +439 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/failedValidationIcon.jsx.html +202 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/index.html +281 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/infoIcon.jsx.html +133 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/messageIcon.jsx.html +346 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/noticeQuestionIcon.jsx.html +247 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/successfulValidationIcon.jsx.html +163 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/supportDialogImage.jsx.html +268 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/walletIcon.jsx.html +151 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/AssetIcon/AssetIcon.jsx.html +256 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/AssetIcon/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/AssetSelection/AssetSelection.jsx.html +289 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/AssetSelection/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/BackgroundTitle/BackgroundTitle.jsx.html +187 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/BackgroundTitle/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/InformationMessage/InformationMessage.jsx.html +238 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/InformationMessage/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Input/Input.jsx.html +634 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Input/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/LoadingDots/LoadingDots.jsx.html +196 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/LoadingDots/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/NoticeIcon/NoticeIcon.jsx.html +277 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/NoticeIcon/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/QrCode/QrCode.jsx.html +217 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/QrCode/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/RateSelector/RateSelector.jsx.html +175 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/RateSelector/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/SupportChat/SupportChat.jsx.html +217 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/SupportChat/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Textarea/Textarea.jsx.html +529 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Textarea/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/TitleBox/TitleBox.jsx.html +508 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/TitleBox/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Tooltip/Tooltip.jsx.html +316 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Tooltip/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/TwoLinesOfText/LinesOfText.jsx.html +313 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/TwoLinesOfText/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Validation/Validation.jsx.html +202 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Validation/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/Button/Button.jsx.html +712 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/Button/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/Close/Close.jsx.html +259 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/Close/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/LinkButton/LinkButton.jsx.html +421 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/LinkButton/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/RadioButtonWithText/RadioButtonWithText.jsx.html +415 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/RadioButtonWithText/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/AmountInput/AmountInput.jsx.html +1087 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/AmountInput/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/CoinPicker/CoinPicker.jsx.html +1474 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/CoinPicker/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/ColoredNotice/ColoredNotice.jsx.html +211 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/ColoredNotice/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/LineWithIconLink/LineWithIconLink.jsx.html +190 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/LineWithIconLink/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/LogoCarousel/LogoCarousel.jsx.html +283 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/LogoCarousel/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/SearchableCoinsList/SearchableCoinsList.jsx.html +496 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/SearchableCoinsList/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/TitledLineWithIconLink/TitledLineWithIconLink.jsx.html +181 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/TitledLineWithIconLink/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/CoinPickerDialogStep/CoinPickerDialogStep.jsx.html +283 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/CoinPickerDialogStep/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/Dialog.jsx.html +1567 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/DialogButtons/DialogButtons.jsx.html +481 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/DialogButtons/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/DialogStep/DialogStep.jsx.html +1747 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/DialogStep/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/SwapForm/SwapForm.jsx.html +4168 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/SwapForm/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/WaitlistSubscription/WaitlistSubscription.jsx.html +559 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/WaitlistSubscription/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/templates/DeterminedErrorDialogStep/DeterminedErrorDialogStep.jsx.html +316 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/components/templates/DeterminedErrorDialogStep/index.html +116 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/hooks/index.html +146 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/hooks/useCallHandlingErrors.js.html +151 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/hooks/useIsHydrated.js.html +121 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/hooks/useReferredState.js.html +157 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/utils/index.html +161 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/utils/inputValueProviders.js.html +235 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/utils/textUtils.js.html +139 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/utils/uiUtils.js.html +121 -0
- package/coverage/rabbit-ui-kit/src/ui-kit/utils/urlQueryUtils.js.html +271 -0
- package/coverage/rabbit-ui-kit/stories/atoms/BackgroundTitle.stories.jsx.html +202 -0
- package/coverage/rabbit-ui-kit/stories/atoms/LinesOfText.stories.jsx.html +283 -0
- package/coverage/rabbit-ui-kit/stories/atoms/LoadingDots.stories.jsx.html +226 -0
- package/coverage/rabbit-ui-kit/stories/atoms/QrCode.stories.jsx.html +175 -0
- package/coverage/rabbit-ui-kit/stories/atoms/RateSelector.stories.jsx.html +136 -0
- package/coverage/rabbit-ui-kit/stories/atoms/Validation.stories.jsx.html +178 -0
- package/coverage/rabbit-ui-kit/stories/atoms/buttons/Button.stories.jsx.html +883 -0
- package/coverage/rabbit-ui-kit/stories/atoms/buttons/Close.stories.jsx.html +211 -0
- package/coverage/rabbit-ui-kit/stories/atoms/buttons/LinkButton.stories.jsx.html +301 -0
- package/coverage/rabbit-ui-kit/stories/atoms/buttons/index.html +146 -0
- package/coverage/rabbit-ui-kit/stories/atoms/index.html +191 -0
- package/coverage/rabbit-ui-kit/stories/molecules/CoinPicker.stories.jsx.html +322 -0
- package/coverage/rabbit-ui-kit/stories/molecules/ColoredNotice.stories.jsx.html +178 -0
- package/coverage/rabbit-ui-kit/stories/molecules/LineWithIconLink.stories.jsx.html +154 -0
- package/coverage/rabbit-ui-kit/stories/molecules/LogoCarousel.stories.jsx.html +160 -0
- package/coverage/rabbit-ui-kit/stories/molecules/TitledLineWithIconLink.stories.jsx.html +160 -0
- package/coverage/rabbit-ui-kit/stories/molecules/index.html +176 -0
- package/coverage/rabbit-ui-kit/stories/organisms/Dialog/Dialog.stories.jsx.html +523 -0
- package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogButtons/DialogButtons.stories.jsx.html +328 -0
- package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogButtons/index.html +116 -0
- package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogStep/DialogStep.stories.jsx.html +337 -0
- package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogStep/index.html +116 -0
- package/coverage/rabbit-ui-kit/stories/organisms/Dialog/index.html +116 -0
- package/coverage/rabbit-ui-kit/stories/organisms/WaitlistSubscription.stories.jsx.html +151 -0
- package/coverage/rabbit-ui-kit/stories/organisms/index.html +116 -0
- package/coverage/rabbit-ui-kit/stories/stubs/coins.jsx.html +6880 -0
- package/coverage/rabbit-ui-kit/stories/stubs/exampleContent.jsx.html +145 -0
- package/coverage/rabbit-ui-kit/stories/stubs/index.html +131 -0
- package/coverage/rabbit-ui-kit/stories/templates/DeterminedErrorDialogStep.stories.jsx.html +190 -0
- package/coverage/rabbit-ui-kit/stories/templates/index.html +116 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +196 -0
- package/dist/global.css.map +1 -1
- package/dist/index.cjs +1139 -496
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +111 -0
- package/dist/index.css.map +1 -1
- package/dist/index.modern.js +950 -420
- package/dist/index.modern.js.map +1 -1
- package/dist/index.module.js +1136 -497
- package/dist/index.module.js.map +1 -1
- package/dist/index.umd.js +1139 -496
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/index.js +4 -0
- package/src/swaps-lib/external-apis/letsExchangeSwapProvider.js +11 -0
- package/src/swaps-lib/external-apis/swapProvider.js +8 -0
- package/src/swaps-lib/external-apis/swapspaceSwapProvider.js +20 -1
- package/src/swaps-lib/models/partner.js +7 -0
- package/src/swaps-lib/services/publicSwapService.js +17 -0
- package/src/ui-kit/assets/styles/global.scss +4 -7
- package/src/ui-kit/assets/wrappedImages/messageIcon.jsx +87 -0
- package/src/ui-kit/assets/wrappedImages/supportDialogImage.jsx +61 -0
- package/src/ui-kit/components/atoms/RateSelector/RateSelector.jsx +2 -2
- package/src/ui-kit/components/atoms/Validation/Validation.jsx +7 -9
- package/src/ui-kit/components/atoms/Validation/validation.module.scss +4 -0
- package/src/ui-kit/components/molecules/AmountInput/AmountInput.jsx +57 -48
- package/src/ui-kit/components/molecules/AmountInput/amount-input.module.scss +34 -0
- package/src/ui-kit/components/molecules/CoinPicker/CoinPicker.jsx +84 -132
- package/src/ui-kit/components/molecules/ColoredNotice/ColoredNotice.jsx +42 -0
- package/src/ui-kit/components/molecules/ColoredNotice/colored-notice.module.scss +20 -0
- package/src/ui-kit/components/molecules/LogoCarousel/LogoCarousel.jsx +66 -0
- package/src/ui-kit/components/molecules/LogoCarousel/logo-carousel.module.scss +87 -0
- package/src/ui-kit/components/molecules/SearchableCoinsList/SearchableCoinsList.jsx +137 -0
- package/src/ui-kit/components/organisms/Dialog/DialogButtons/DialogButtons.jsx +10 -0
- package/src/ui-kit/components/organisms/Dialog/DialogStep/DialogStep.jsx +16 -0
- package/src/ui-kit/components/organisms/SwapForm/SwapForm.jsx +35 -12
- package/src/ui-kit/components/organisms/WaitlistSubscription/WaitlistSubscription.jsx +158 -0
package/dist/index.modern.js
CHANGED
|
@@ -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$
|
|
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$
|
|
1440
|
+
className: s$o["asset-icon"] + (_small ? " " + s$o["small"] : "")
|
|
1441
1441
|
}, /*#__PURE__*/React.createElement("img", {
|
|
1442
1442
|
src: assetIconSrc,
|
|
1443
|
-
className: s$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
1811
|
+
className: s$l["background-title"]
|
|
1802
1812
|
}, /*#__PURE__*/React.createElement("div", {
|
|
1803
|
-
className: s$
|
|
1813
|
+
className: s$l["background-title-wrapper"] + (_smallMargins ? " " + s$l["small-margins"] : "")
|
|
1804
1814
|
}, /*#__PURE__*/React.createElement("div", {
|
|
1805
|
-
className: s$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
1961
|
-
},
|
|
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)
|
|
1968
|
-
className: s$
|
|
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$
|
|
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$
|
|
2369
|
-
enterActive: s$
|
|
2370
|
-
exit: s$
|
|
2371
|
-
exitActive: s$
|
|
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$
|
|
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$
|
|
2403
|
+
className: s$i["scrollable"] + (_inline ? " " + s$i["inline"] : ""),
|
|
2394
2404
|
ref: scrollableRef
|
|
2395
2405
|
}, /*#__PURE__*/React.createElement("div", {
|
|
2396
|
-
className: s$
|
|
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$
|
|
2417
|
+
contentClassName: s$i["dialog-wrapper-rah-content"]
|
|
2408
2418
|
}, _inline ? "" : /*#__PURE__*/React.createElement("div", {
|
|
2409
|
-
className: s$
|
|
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$
|
|
2421
|
-
enterActive: s$
|
|
2422
|
-
enterDone: s$
|
|
2423
|
-
exit: s$
|
|
2424
|
-
exitActive: s$
|
|
2425
|
-
exitDone: s$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
2733
|
+
className: s$h["dialog-step-wrapper-header-logo"],
|
|
2716
2734
|
loading: "lazy"
|
|
2717
2735
|
}) : ImageRaw ? /*#__PURE__*/React.createElement("div", {
|
|
2718
|
-
className: s$
|
|
2736
|
+
className: s$h["dialog-step-wrapper-header-logo"]
|
|
2719
2737
|
}, /*#__PURE__*/React.createElement(ImageRaw, null)) : null, /*#__PURE__*/React.createElement("div", {
|
|
2720
|
-
className: s$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
2764
|
+
className: s$h["dialog-step-wrapper-content"] + " " + s$h["align-" + _contentAlign]
|
|
2747
2765
|
}, _children), _backButtonText || _confirmButtonText ? /*#__PURE__*/React.createElement("div", {
|
|
2748
|
-
className: s$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
2909
|
+
className: s$g["asset-selection-protocol-wrapper"]
|
|
2886
2910
|
}, protocolName) : "", /*#__PURE__*/React.createElement("div", {
|
|
2887
|
-
className: s$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
3100
|
+
className: s$e["notice-icon-image"],
|
|
3077
3101
|
loading: "lazy"
|
|
3078
3102
|
}) : /*#__PURE__*/React.createElement("div", {
|
|
3079
|
-
className: s$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
3192
|
+
className: `${s$d["title-box"]} ${_fullWidth ? s$d["full-width"] : ""}`
|
|
3169
3193
|
}, _title || _titleNoticeText || _linkText ? /*#__PURE__*/React.createElement("div", {
|
|
3170
|
-
className: s$
|
|
3194
|
+
className: s$d["title-box-wrapper"]
|
|
3171
3195
|
}, _bigTitle ? /*#__PURE__*/React.createElement("h5", {
|
|
3172
|
-
className: s$
|
|
3196
|
+
className: s$d["title-box-wrapper-title"] + " " + transparentTitleClass
|
|
3173
3197
|
}, _title) : /*#__PURE__*/React.createElement("h6", {
|
|
3174
|
-
className: s$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
3803
|
-
${children ? s$
|
|
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$
|
|
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$
|
|
3831
|
+
className: s$c["requested-amount-coin"]
|
|
3808
3832
|
}, /*#__PURE__*/React.createElement("span", {
|
|
3809
|
-
className: s$
|
|
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$
|
|
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$
|
|
3845
|
+
className: s$c["requested-amount-coin-skeleton"]
|
|
3822
3846
|
}, /*#__PURE__*/React.createElement("span", {
|
|
3823
|
-
className: s$
|
|
3824
|
-
}))),
|
|
3825
|
-
|
|
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$
|
|
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$
|
|
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$
|
|
3874
|
+
className: s$c["requested-amount-fiat-skeleton"]
|
|
3841
3875
|
}, /*#__PURE__*/React.createElement("span", {
|
|
3842
|
-
className: s$
|
|
3876
|
+
className: s$c["requested-amount-fiat-skeleton-content"] + " " + "skeleton-dark"
|
|
3843
3877
|
}))) : /*#__PURE__*/React.createElement("span", {
|
|
3844
|
-
className: s$
|
|
3878
|
+
className: s$c["requested-amount-fiat-placeholder"],
|
|
3845
3879
|
onClick: e => callHandlingErrors(() => handleFiatInteraction(), e)
|
|
3846
|
-
}, _fiatInputPlaceholderText)))
|
|
3847
|
-
className: s$
|
|
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$
|
|
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$
|
|
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$
|
|
3944
|
+
className: s$a["textarea"] + ` ${_fullHeight ? " " + s$a["full-height"] : ""}`
|
|
3911
3945
|
}, _label ? /*#__PURE__*/React.createElement("label", {
|
|
3912
3946
|
htmlFor: _id,
|
|
3913
|
-
className: s$
|
|
3947
|
+
className: s$a["textarea-input-label"]
|
|
3914
3948
|
}, _label) : null, _adaptiveHeight ? /*#__PURE__*/React.createElement(TextareaAutosize, {
|
|
3915
|
-
className: s$
|
|
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$
|
|
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$
|
|
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$
|
|
4021
|
+
className: s$9["rate-selector"]
|
|
3988
4022
|
}, /*#__PURE__*/React.createElement("div", {
|
|
3989
|
-
className: `${s$
|
|
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$
|
|
4026
|
+
className: s$9["rate-selector-item-text"]
|
|
3993
4027
|
}, _translations.floatingRate)), /*#__PURE__*/React.createElement("div", {
|
|
3994
|
-
className: `${s$
|
|
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$
|
|
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
|
|
4658
|
+
const currentAmount = isLastEditedReceiving.current ? receiveAssetAmount.current : sendAssetAmount.current;
|
|
4659
|
+
const isCurrentAmountNotZero = currentAmount && !BigNumber("0").eq(currentAmount);
|
|
4625
4660
|
if (isCurrentAmountNotZero) {
|
|
4626
|
-
loadFullEstimation(
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
4903
|
+
className: s$b["swap-form-button-container"]
|
|
4869
4904
|
}, !_termsOfUseUrl || !_privacyPolicyUrl ? null : /*#__PURE__*/React.createElement("p", {
|
|
4870
|
-
className: s$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
5091
|
+
className: s$7["centered-vertically"]
|
|
5057
5092
|
}, _defaultTextContent) : /*#__PURE__*/React.createElement("div", {
|
|
5058
|
-
className: _isHorizontal ? s$
|
|
5093
|
+
className: _isHorizontal ? s$7["horizontal"] : ""
|
|
5059
5094
|
}, /*#__PURE__*/React.createElement("h5", {
|
|
5060
|
-
className: s$
|
|
5095
|
+
className: s$7["first-line-text"]
|
|
5061
5096
|
}, /*#__PURE__*/React.createElement("span", {
|
|
5062
|
-
className: `${_isFirstLineTextReducible ? s$
|
|
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$
|
|
5101
|
+
className: s$7["second-line-text"]
|
|
5067
5102
|
}, _secondLineText) : null, _thirdLineText ? /*#__PURE__*/React.createElement("p", {
|
|
5068
|
-
className: s$
|
|
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$
|
|
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$
|
|
5145
|
+
className: s$6["line-with-icon-link"]
|
|
5111
5146
|
}, /*#__PURE__*/React.createElement("h5", {
|
|
5112
|
-
className: s$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
5599
|
+
className: s$3["input-label"]
|
|
5565
5600
|
}, _label) : null, _clearButton ? /*#__PURE__*/React.createElement("div", {
|
|
5566
|
-
className: s$
|
|
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$
|
|
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$
|
|
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 =>
|
|
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() :
|
|
5924
|
-
|
|
5925
|
-
|
|
5926
|
-
|
|
5927
|
-
|
|
5928
|
-
|
|
5929
|
-
|
|
5930
|
-
|
|
5931
|
-
|
|
5932
|
-
|
|
5933
|
-
|
|
5934
|
-
|
|
5935
|
-
|
|
5936
|
-
|
|
5937
|
-
|
|
5938
|
-
|
|
5939
|
-
|
|
5940
|
-
|
|
5941
|
-
|
|
5942
|
-
|
|
5943
|
-
|
|
5944
|
-
|
|
5945
|
-
|
|
5946
|
-
|
|
5947
|
-
|
|
5948
|
-
|
|
5949
|
-
|
|
5950
|
-
|
|
5951
|
-
|
|
5952
|
-
|
|
5953
|
-
|
|
5954
|
-
|
|
5955
|
-
|
|
5956
|
-
|
|
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
|
-
|
|
6317
|
+
var s$1 = {"colored-notice":"_ZE1ju","colored-notice-text":"_aN0LH"};
|
|
6080
6318
|
|
|
6081
6319
|
/**
|
|
6082
|
-
*
|
|
6320
|
+
* ColoredNotice component displays a notice with optional text and a button.
|
|
6083
6321
|
*
|
|
6084
|
-
* @
|
|
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.
|
|
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
|