UNPKG

ngx-avatar-2

Version:

A universal avatar component for Angular applications that fetches / generates avatar based on the information you have about the user.

34 lines 4.07 kB
import { Md5 } from 'ts-md5'; import { AvatarSource } from './avatar-source.enum'; function isRetina() { if (typeof window !== 'undefined' && window !== null) { if (window.devicePixelRatio > 1.25) { return true; } const mediaQuery = '(-webkit-min-device-pixel-ratio: 1.25), (min--moz-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 5/4), (min-resolution: 1.25dppx)'; if (window.matchMedia && window.matchMedia(mediaQuery).matches) { return true; } } return false; } /** * Gravatar source implementation. * Fetch avatar source based on gravatar email */ export class Gravatar { value; sourceType = AvatarSource.GRAVATAR; sourceId; constructor(value) { this.value = value; this.sourceId = value.match('^[a-f0-9]{32}$') ? value : Md5.hashStr(value).toString(); } getAvatar(size) { const avatarSize = isRetina() ? size * 2 : size; return `https://secure.gravatar.com/avatar/${this.sourceId}?s=${avatarSize}&d=404`; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhdmF0YXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYXZhdGFyLTIvc3JjL2xpYi9zb3VyY2VzL2dyYXZhdGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFN0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXBELFNBQVMsUUFBUTtJQUNmLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7UUFDcEQsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxFQUFFO1lBQ2xDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxNQUFNLFVBQVUsR0FBRywySUFBMkksQ0FBQztRQUMvSixJQUFJLE1BQU0sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLEVBQUU7WUFDOUQsT0FBTyxJQUFJLENBQUM7U0FDYjtLQUNGO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7SUFJQTtJQUhWLFVBQVUsR0FBaUIsWUFBWSxDQUFDLFFBQVEsQ0FBQztJQUNuRCxRQUFRLENBQVM7SUFFeEIsWUFBbUIsS0FBYTtRQUFiLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1lBQzNDLENBQUMsQ0FBQyxLQUFLO1lBQ1AsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVNLFNBQVMsQ0FBQyxJQUFZO1FBQzNCLE1BQU0sVUFBVSxHQUFHLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDaEQsT0FBTyxzQ0FDTCxJQUFJLENBQUMsUUFDUCxNQUFNLFVBQVUsUUFBUSxDQUFDO0lBQzNCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1kNSB9IGZyb20gJ3RzLW1kNSc7XG5pbXBvcnQgeyBTb3VyY2UgfSBmcm9tICcuL3NvdXJjZSc7XG5pbXBvcnQgeyBBdmF0YXJTb3VyY2UgfSBmcm9tICcuL2F2YXRhci1zb3VyY2UuZW51bSc7XG5cbmZ1bmN0aW9uIGlzUmV0aW5hKCk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93ICE9PSBudWxsKSB7XG4gICAgaWYgKHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvID4gMS4yNSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgbWVkaWFRdWVyeSA9ICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAxLjI1KSwgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogMS4yNSksICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiA1LzQpLCAobWluLXJlc29sdXRpb246IDEuMjVkcHB4KSc7XG4gICAgaWYgKHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKG1lZGlhUXVlcnkpLm1hdGNoZXMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiAgR3JhdmF0YXIgc291cmNlIGltcGxlbWVudGF0aW9uLlxuICogIEZldGNoIGF2YXRhciBzb3VyY2UgYmFzZWQgb24gZ3JhdmF0YXIgZW1haWxcbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXZhdGFyIGltcGxlbWVudHMgU291cmNlIHtcbiAgcmVhZG9ubHkgc291cmNlVHlwZTogQXZhdGFyU291cmNlID0gQXZhdGFyU291cmNlLkdSQVZBVEFSO1xuICBwdWJsaWMgc291cmNlSWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuc291cmNlSWQgPSB2YWx1ZS5tYXRjaCgnXlthLWYwLTldezMyfSQnKVxuICAgICAgPyB2YWx1ZVxuICAgICAgOiBNZDUuaGFzaFN0cih2YWx1ZSkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBdmF0YXIoc2l6ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBhdmF0YXJTaXplID0gaXNSZXRpbmEoKSA/IHNpemUgKiAyIDogc2l6ZTtcbiAgICByZXR1cm4gYGh0dHBzOi8vc2VjdXJlLmdyYXZhdGFyLmNvbS9hdmF0YXIvJHtcbiAgICAgIHRoaXMuc291cmNlSWRcbiAgICB9P3M9JHthdmF0YXJTaXplfSZkPTQwNGA7XG4gIH1cbn1cbiJdfQ==