@thespidercode/openbook-swap
Version:
Ready-to-use swap tool using Openbook DEX
67 lines (66 loc) • 4.06 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TokenQuote = void 0;
const react_1 = require("react");
const react_2 = __importDefault(require("react"));
const pair_search_1 = require("./pair-search");
const react_currency_input_field_1 = __importDefault(require("react-currency-input-field"));
function TokenQuote(props) {
const pairToken = (0, react_1.useMemo)(() => {
return props.pair.base.mint.toString() == props.token.mint.toString() ? props.pair.quote : props.pair.base;
}, [props.token]);
const options = (0, react_1.useMemo)(() => {
const visited = new Set();
const response = [];
props.markets.forEach((market) => {
if (!visited.has(market.base.name)) {
response.push({
value: market.base.mint.toString(),
label: market.base.name,
imageUrl: market.base.logo,
pair: market
});
visited.add(market.base.name);
}
if (!visited.has(market.quote.name)) {
response.push({
value: market.quote.mint.toString(),
label: market.quote.name,
imageUrl: market.quote.logo,
pair: market
});
visited.add(market.quote.name);
}
});
return response.filter((option) => option.value !== pairToken.mint.toString());
}, [pairToken]);
const currentOption = (0, react_1.useMemo)(() => {
try {
return options.find((option) => option.value === props.token.mint.toString()) ?? null;
}
catch (error) {
return null;
}
}, [options]);
return (react_2.default.createElement("div", { className: "flex row between mt-3 responsive-column" },
react_2.default.createElement("div", { className: "flex column center responsive-row" },
react_2.default.createElement(pair_search_1.PairSearch, { currentOption: currentOption, options: options, setPair: props.setPair })),
Number(props.amountNumber?.toFixed(2)) < 0.01 &&
Number(props.amountNumber) > 0 ?
(react_2.default.createElement("div", { className: `input-wrapper no-input-section` },
props.amountNumber * props.token.price >= 0.0001 ?
react_2.default.createElement("span", { className: "token-dollars-value" }, `≈$${Number(props.amountNumber * props.token.price).toLocaleString(undefined, { minimumFractionDigits: 4 })}`) :
react_2.default.createElement("span", { className: "token-dollars-value" }, '<$0.0001'),
react_2.default.createElement("span", { className: `input-style small-sign-position ${props.amountNumber > 0 ? 'move-top' : ''}` }, '<'),
react_2.default.createElement(react_currency_input_field_1.default, { className: `${props.amountNumber > 0 ? 'move-top' : ''}`, disabled: true, placeholder: "0.00", value: 0.01, decimalsLimit: 10, allowNegativeValue: false, step: props.token.name == 'BONK' ? 1000 : 0.01 }))) :
(react_2.default.createElement("div", { className: `input-wrapper no-input-section` },
props.amountNumber > 0 &&
react_2.default.createElement("span", { className: "token-dollars-value" },
"\u2248$",
Number(props.amountNumber * props.token.price).toLocaleString(undefined, { minimumFractionDigits: 2 })),
react_2.default.createElement(react_currency_input_field_1.default, { className: `${props.amountNumber > 0 ? 'move-top' : ''}`, disabled: true, placeholder: "0.00", value: props.amountNumber?.toFixed(2), decimalsLimit: 10, allowNegativeValue: false, step: props.token.name == 'BONK' ? 1000 : 0.01 })))));
}
exports.TokenQuote = TokenQuote;