react-native-ui-lib
Version:
<p align="center"> <img src="https://user-images.githubusercontent.com/1780255/105469025-56759000-5ca0-11eb-993d-3568c1fd54f4.png" height="250px" style="display:block"/> </p> <p align="center">UI Toolset & Components Library for React Native</p> <p a
69 lines (62 loc) • 1.88 kB
JavaScript
import _ from 'lodash';
import URL from 'url-parse';
import Colors from "../style/colors";
export function hashStringToNumber(str) {
let hash = 5381;
for (let i = 0; i < str.length; i++) {
const char = str.charCodeAt(i);
hash = (hash << 5) + hash + char;
/* hash * 33 + c */
// eslint-disable-line
}
return hash;
}
export function getAvatarColors() {
return [Colors.blue20, Colors.cyan20, Colors.green20, Colors.yellow20, Colors.orange20, Colors.red20, Colors.purple20, Colors.violet20];
}
export function getColorById(id, avatarColors = getAvatarColors()) {
if (!id) {
return avatarColors[0];
}
const hashedId = hashStringToNumber(id);
const colorIndex = Math.abs(hashedId % avatarColors.length);
return avatarColors[colorIndex];
}
export function getInitials(name, limit = 2) {
let initials = '';
if (name && _.isString(name)) {
const nameSplitted = _.chain(name).split(/\s+/g).filter(word => word.length > 0).take(limit).value();
_.each(nameSplitted, str => {
initials += str[0];
});
}
return _.toUpper(initials);
}
export function getBackgroundColor(name, avatarColors, hashFunction, defaultColor) {
if (!name || !avatarColors || !hashFunction) {
return defaultColor;
}
const hash = hashFunction(name);
const index = Math.abs(hash % avatarColors.length);
return avatarColors[index];
}
export function isGravatarUrl(url) {
const {
hostname,
pathname
} = new URL(url);
return _.split(hostname, '.').includes('gravatar') && pathname.startsWith('/avatar/');
}
export function isBlankGravatarUrl(url) {
return isGravatarUrl(url) && _.endsWith(url, '?d=blank');
}
export function patchGravatarUrl(gravatarUrl) {
const url = new URL(gravatarUrl, true);
const {
query
} = url;
query.d = '404';
delete query.default;
url.set('query', query);
return url.toString();
}