79 lines
2.8 KiB
JavaScript
79 lines
2.8 KiB
JavaScript
|
/**
|
||
|
* Limits the length of a string for display purposes, replacing the removed text
|
||
|
* with the replacement entity specified
|
||
|
*
|
||
|
* @param {String} strToShorten - string to shorten.
|
||
|
* @param {Number} maxLength - maximum length of string before appending the replacement entity.
|
||
|
* @param {String} replacement - string to replace the removed text with, defaults to '…'
|
||
|
* @param {Boolean} trimMiddle - if true, maxLength chars form the beginning and end will be
|
||
|
* shown, and the middle of the string will be trimmed, ie '123…789' (maxLength = 3, delimiter = '…')
|
||
|
* @example
|
||
|
* const fullLength = '1234567890';
|
||
|
* limitLength(fullLength, 3);
|
||
|
* // returns '123…'
|
||
|
* @example
|
||
|
* const fullLength = '1234567890';
|
||
|
* limitLength(fullLength, 3, '-', true);
|
||
|
* // returns '123-890'
|
||
|
* @returns {String} the shortened string
|
||
|
*/
|
||
|
export function limitLength (strToShorten, maxLength, replacement, trimMiddle){
|
||
|
if(!strToShorten) return '';
|
||
|
|
||
|
const fullStringLength = strToShorten.length;
|
||
|
const ellips = replacement || '…';
|
||
|
|
||
|
if(trimMiddle && fullStringLength > maxLength * 2){
|
||
|
return [strToShorten.substring(0, maxLength), ellips, strToShorten.substring(fullStringLength - maxLength)].join('');
|
||
|
}
|
||
|
|
||
|
if(fullStringLength > maxLength){
|
||
|
return strToShorten.substring(0, maxLength) + ellips;
|
||
|
}
|
||
|
return strToShorten;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Limits the length of an address for display purposes, replacing the removed hex
|
||
|
* chars with the replacement entity specified
|
||
|
*
|
||
|
* @param {String} address - address to shorten.
|
||
|
* @param {Number} maxLength - maximum hex chars to show before appending the replacement.
|
||
|
* @param {String} replacement - string to replace the removed hex chars with, defaults to '…'
|
||
|
* @example
|
||
|
* const fullLength = '0x3901F05c5e296E97c8Dc2ebEdCCa5F010f895552';
|
||
|
* limitAddressLength(fullLength, 4);
|
||
|
* // returns '0x3901…5552'
|
||
|
* @example
|
||
|
* const fullLength = '0x3901F05c5e296E97c8Dc2ebEdCCa5F010f895552';
|
||
|
* limitAddressLength(fullLength, 3, '-');
|
||
|
* // returns '0x390-552'
|
||
|
* @returns {String} the shortened string
|
||
|
*/
|
||
|
export function limitAddressLength (address, maxLength, replacement){
|
||
|
if(!address) return '';
|
||
|
let prepend0x = false;
|
||
|
|
||
|
if(address.startsWith('0x')){
|
||
|
address = address.substring(2);
|
||
|
prepend0x = true;
|
||
|
}
|
||
|
|
||
|
return `${prepend0x ? '0x': ''}${limitLength(address, maxLength, replacement, true)}`;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Formats an ethereum amount using fixed-point notation.
|
||
|
*
|
||
|
* @param {any} eth - amount of ethereum to display.
|
||
|
* @param {Number} decimals - number of decimal places to display.
|
||
|
* @example
|
||
|
* const eth = 123.12345678901234567890;
|
||
|
* limitAddressLength(eth, 4);
|
||
|
* // returns 123.1234
|
||
|
* @returns {Number} the ethereum amount in fixed-point notation
|
||
|
*/
|
||
|
export function formatEth(eth, decimals){
|
||
|
return Number.parseFloat(eth).toFixed(decimals);
|
||
|
}
|