UNPKG

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
"use strict"; 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