maisonsport-common-ui
Version:
Suite of styled-components to be consumed by the React-Native App and by the Web (via React-Native for Web)
61 lines (47 loc) • 2.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getRandomColor = getRandomColor;
exports.isSingleEmoji = isSingleEmoji;
exports.commonValidators = exports.debounceDefaults = void 0;
var _emojiRegex = _interopRequireDefault(require("emoji-regex"));
var _emailValidator = _interopRequireDefault(require("email-validator"));
var _equals = _interopRequireDefault(require("validator/lib/equals"));
var _isMobilePhone = _interopRequireDefault(require("validator/lib/isMobilePhone"));
var _theme = _interopRequireDefault(require("../theme"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/* eslint-disable import/prefer-default-export */
const defaultColors = [_theme.default.colors.primary, _theme.default.colors.darkPrimary, _theme.default.colors.lightPrimary, _theme.default.colors.darkGrey, _theme.default.colors.dustyBlue, _theme.default.colors.red, _theme.default.colors.lightRed, _theme.default.colors.green, _theme.default.colors.darkGreen, _theme.default.colors.lightGreen];
const debounceDefaults = {
onChange: 300
};
exports.debounceDefaults = debounceDefaults;
function stringAsciiPRNG(value, m) {
const charCodes = [...value].map(letter => letter.charCodeAt(0));
const len = charCodes.length;
const a = len % (m - 1) + 1;
const c = charCodes.reduce((current, next) => current + next) % m;
let random = charCodes[0] % m; // eslint-disable-next-line no-plusplus
for (let i = 0; i < len; i++) random = (a * random + c) % m;
return random;
}
function getRandomColor(value, colors = defaultColors) {
if (!value) return 'primary';
const colorIndex = stringAsciiPRNG(value, colors.length);
return colors[colorIndex];
}
function isSingleEmoji(content) {
if (typeof content !== 'string') return content;
const reg = new RegExp("^(".concat((0, _emojiRegex.default)().source, ")$"));
return content.trim().match(reg);
}
const commonValidators = {
email: _emailValidator.default.validate,
equals: _equals.default,
isMobilePhone: value => (0, _isMobilePhone.default)(value, 'any', {
strictMode: true
})
};
exports.commonValidators = commonValidators;
//# sourceMappingURL=functions.js.map