@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
57 lines • 2.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatAddress = formatAddress;
exports.addressSplit = addressSplit;
/**
* Format an address for display by showing a shortened version with ellipsis.
*
* @param address - The address string to format
* @param options - Optional configuration
* @param options.prefixLength - Number of characters at the start (default: 4)
* @param options.suffixLength - Number of characters at the end (default: 4)
* @param options.separator - Ellipsis string (default: "...")
* @param options.threshold - Minimum length before truncating (default: prefixLength + separator.length + suffixLength)
* @returns Formatted address string (e.g. "0x1234...5678")
*/
function formatAddress(address, options = {}) {
const { prefixLength = 4, suffixLength = 4, separator = "...", threshold = prefixLength + separator.length + suffixLength, } = options;
if (!address || address.length <= threshold) {
return address;
}
return `${address.slice(0, prefixLength)}${separator}${address.slice(-suffixLength)}`;
}
/**
* Split an address into start, middle, and end sections
*
* @param address - The address string to split
* @param size - The number of characters to include in the start and end sections
* @returns An object containing the start, middle, and end portions of the address
* @example
* addressSplit("HelloWorld", 2) // => { start: "He", middle: "lloWor", end: "ld" }
*/
function addressSplit(address, size) {
if (!address) {
return { start: "", middle: "", end: "" };
}
if (size < 0) {
return { start: "", middle: address, end: "" };
}
else if (size === 0) {
return { start: "", middle: address, end: "" };
}
// Handle edge case of address length smaller than or equal to size * 2
// In this case, we can't extract both start and end without overlapping
if (address.length <= size * 2) {
const halfLength = Math.floor(address.length / 2);
return {
start: address.slice(0, halfLength),
middle: "",
end: address.slice(halfLength),
};
}
const start = address.slice(0, size);
const end = address.slice(-size);
const middle = address.slice(size, -size);
return { start, middle, end };
}
//# sourceMappingURL=addressUtils.js.map