UNPKG

@thespidercode/openbook-swap

Version:
67 lines (66 loc) 4.06 kB
"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;