eros-sdk-react
Version:
eros sdk
145 lines (144 loc) • 4.47 kB
JavaScript
// src/utils/index.tsx
import moment from "moment";
import { jsx, jsxs } from "react/jsx-runtime";
var getVersion = () => {
return "0.0.2";
};
function encodeBase64(input) {
return btoa(unescape(encodeURIComponent(input)));
}
function decodeBase64(input) {
return decodeURIComponent(escape(atob(input)));
}
var isValidEmail = (email) => {
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
};
var isValidUsername = (username) => {
return /^[a-zA-Z0-9_-]+$/.test(username);
};
var deepMerge = (target, source) => {
for (const key in source) {
if (source[key] instanceof Object && key in target) {
target[key] = deepMerge(target[key], source[key]);
} else {
target[key] = source[key];
}
}
return target;
};
function truncateAddress(address, startLen = 4, endLen = 4) {
if (address.length <= startLen + endLen) {
return address;
}
const start = address.slice(0, startLen);
const end = address.slice(-endLen);
return `${start}...${end}`;
}
function firstUpperCase(str) {
return str.toString()[0].toUpperCase() + str.toString().slice(1);
}
function getAppClientId() {
return "react-sdk-" + getVersion();
}
function convertScientificToDecimal(num) {
let str = num.toFixed(12);
str = str.replace(/0+$/, "");
str = str.replace(/\.$/, "");
return str;
}
var NumberFormatter = ({
value,
prefix = "",
suffix = "",
separator = true,
fixNum = 2,
tFixNum = 4,
intClassName = "",
decimalClassName = "",
prefixClassName = "",
className = ""
}) => {
const numberValue = typeof value === "number" ? convertScientificToDecimal(value) : value ? value : "0";
const [intPart, decimalPart] = numberValue.toString().split(".");
const intFormat = separator ? intPart.replace(/\B(?=(\d{3})+(?!\d))/g, ",") : intPart;
if (Math.abs(parseFloat(numberValue)) >= 1) {
return /* @__PURE__ */ jsxs("span", { className, children: [
prefix && /* @__PURE__ */ jsx("span", { className: prefixClassName, children: prefix }),
/* @__PURE__ */ jsx("span", { className: intClassName, children: intFormat }),
decimalPart ? /* @__PURE__ */ jsxs("span", { className: decimalClassName, children: [
".",
decimalPart.substring(0, fixNum)
] }) : "",
suffix
] });
}
if (decimalPart) {
let zeroCount = 0;
for (let i = 0; i < decimalPart.length; i++) {
if (decimalPart[i] === "0") {
zeroCount++;
} else {
break;
}
}
if (zeroCount < tFixNum) {
return /* @__PURE__ */ jsxs("span", { className, children: [
prefix && /* @__PURE__ */ jsx("span", { className: prefixClassName, children: prefix }),
/* @__PURE__ */ jsx("span", { className: intClassName, children: intFormat }),
/* @__PURE__ */ jsxs("span", { className: decimalClassName, children: [
".",
decimalPart.substring(0, tFixNum)
] }),
suffix
] });
}
return /* @__PURE__ */ jsxs("span", { className, children: [
prefix && /* @__PURE__ */ jsx("span", { className: prefixClassName, children: prefix }),
/* @__PURE__ */ jsx("span", { className: intClassName, children: intFormat }),
/* @__PURE__ */ jsxs("span", { className: decimalClassName, children: [
".0",
/* @__PURE__ */ jsx("sub", { children: zeroCount }),
decimalPart?.substring(zeroCount, zeroCount + tFixNum - 2)
] }),
suffix
] });
}
return /* @__PURE__ */ jsxs("span", { className, children: [
prefix && /* @__PURE__ */ jsx("span", { className: prefixClassName, children: prefix }),
/* @__PURE__ */ jsx("span", { className: intClassName, children: intPart }),
suffix
] });
};
function formatAddress(address, pre = 4, after = 5) {
return `${address.substring(0, pre)}...${address.substring(address.length - after, address.length)}`;
}
var formatDate = (value, formatString = "YYYY-MM-DD HH:mm:ss") => {
if (value) {
return moment.unix(value).format(formatString);
}
return "--";
};
var isInTgApp = () => {
return !!window.TelegramWebviewProxy;
};
function bytesToBase64(bytes) {
const binString = String.fromCodePoint(...bytes);
return btoa(binString);
}
export {
getVersion,
encodeBase64,
decodeBase64,
isValidEmail,
isValidUsername,
deepMerge,
truncateAddress,
firstUpperCase,
getAppClientId,
NumberFormatter,
formatAddress,
formatDate,
isInTgApp,
bytesToBase64
};
//# sourceMappingURL=chunk-IZOOVZAD.mjs.map