UNPKG

@thespidercode/openbook-swap

Version:
62 lines (61 loc) 3.43 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TokenInput = 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 TokenInput(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; }, [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 })), react_2.default.createElement("div", { className: `input-wrapper` }, (props.amount && Number(props.amount) > 0) && react_2.default.createElement("span", { className: "token-dollars-value" }, "\u2248$", Number(Number(props.amount) * props.token.price).toLocaleString(undefined, { minimumFractionDigits: 2 })), react_2.default.createElement("div", { className: `balance-buttons ${Number(props.amount) > 0 || !props.balance ? 'no-display' : ''}` }, react_2.default.createElement("button", { onClick: () => props.onValueChange((props.balance ? (props.balance / 2) : 0).toFixed(3)) }, "HALF"), react_2.default.createElement("button", { onClick: () => props.onValueChange(props.balance ? props.balance : 0) }, "MAX")), react_2.default.createElement(react_currency_input_field_1.default, { className: `${props.amount && Number(props.amount) > 0 ? 'move-top' : ''}`, disabled: false, placeholder: "0.00", value: props.amount, decimalsLimit: 10, allowNegativeValue: false, step: props.token.name == 'BONK' ? 1000 : 0.01, onValueChange: props.onValueChange })))); } exports.TokenInput = TokenInput;