UNPKG

ngx-avatars

Version:

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

104 lines 12 kB
import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { AvatarConfigService } from './avatar-config.service'; import { AvatarSource } from './sources/avatar-source.enum'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common/http"; import * as i2 from "./avatar-config.service"; /** * list of Supported avatar sources */ export const defaultSources = [ AvatarSource.FACEBOOK, AvatarSource.GOOGLE, AvatarSource.TWITTER, AvatarSource.INSTAGRAM, AvatarSource.VKONTAKTE, AvatarSource.SKYPE, AvatarSource.GRAVATAR, AvatarSource.GITHUB, AvatarSource.CUSTOM, AvatarSource.INITIALS, AvatarSource.VALUE ]; /** * list of default colors */ export const defaultColors = [ '#1abc9c', '#3498db', '#f1c40f', '#8e44ad', '#e74c3c', '#d35400', '#2c3e50', '#7f8c8d' ]; /** * Default disable custom source cache settings */ export const defaultDisableSrcCache = false; /** * Provides utilities methods related to Avatar component */ export class AvatarService { constructor(http, avatarConfigService) { this.http = http; this.avatarConfigService = avatarConfigService; this.avatarSources = defaultSources; this.avatarColors = defaultColors; this.failedSources = new Map(); this.overrideAvatarSources(); this.overrideAvatarColors(); } fetchAvatar(avatarUrl) { return this.http.get(avatarUrl); } getRandomColor(avatarText) { if (!avatarText) { return 'transparent'; } const asciiCodeSum = this.calculateAsciiCode(avatarText); return this.avatarColors[asciiCodeSum % this.avatarColors.length]; } compareSources(sourceType1, sourceType2) { return (this.getSourcePriority(sourceType1) - this.getSourcePriority(sourceType2)); } isSource(source) { return this.avatarSources.includes(source); } isTextAvatar(sourceType) { return [AvatarSource.INITIALS, AvatarSource.VALUE].includes(sourceType); } buildSourceKey(source) { return source.sourceType + '-' + source.sourceId; } sourceHasFailedBefore(source) { return this.failedSources.has(this.buildSourceKey(source)); } markSourceAsFailed(source) { this.failedSources.set(this.buildSourceKey(source), source); } overrideAvatarSources() { this.avatarSources = this.avatarConfigService.getAvatarSources(defaultSources); } overrideAvatarColors() { this.avatarColors = this.avatarConfigService.getAvatarColors(defaultColors); } calculateAsciiCode(value) { return value .split('') .map(letter => letter.charCodeAt(0)) .reduce((previous, current) => previous + current); } getSourcePriority(sourceType) { return this.avatarSources.indexOf(sourceType); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AvatarService, deps: [{ token: i1.HttpClient }, { token: i2.AvatarConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AvatarService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AvatarService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.AvatarConfigService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYXZhdGFycy9zcmMvbGliL2F2YXRhci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSWxELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7OztBQUc1RDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM1QixZQUFZLENBQUMsUUFBUTtJQUNyQixZQUFZLENBQUMsTUFBTTtJQUNuQixZQUFZLENBQUMsT0FBTztJQUNwQixZQUFZLENBQUMsU0FBUztJQUN0QixZQUFZLENBQUMsU0FBUztJQUN0QixZQUFZLENBQUMsS0FBSztJQUNsQixZQUFZLENBQUMsUUFBUTtJQUNyQixZQUFZLENBQUMsTUFBTTtJQUNuQixZQUFZLENBQUMsTUFBTTtJQUNuQixZQUFZLENBQUMsUUFBUTtJQUNyQixZQUFZLENBQUMsS0FBSztDQUNuQixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUc7SUFDM0IsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7Q0FDVixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxLQUFLLENBQUM7QUFFNUM7O0dBRUc7QUFFSCxNQUFNLE9BQU8sYUFBYTtJQU14QixZQUNVLElBQWdCLEVBQ2hCLG1CQUF3QztRQUR4QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFQM0Msa0JBQWEsR0FBbUIsY0FBYyxDQUFDO1FBQy9DLGlCQUFZLEdBQWEsYUFBYSxDQUFDO1FBRTdCLGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFNekQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVNLFdBQVcsQ0FBQyxTQUFpQjtRQUNsQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxjQUFjLENBQUMsVUFBa0I7UUFDdEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFTSxjQUFjLENBQ25CLFdBQXlCLEVBQ3pCLFdBQXlCO1FBRXpCLE9BQU8sQ0FDTCxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUMxRSxDQUFDO0lBQ0osQ0FBQztJQUVNLFFBQVEsQ0FBQyxNQUFjO1FBQzVCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBc0IsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSxZQUFZLENBQUMsVUFBd0I7UUFDMUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRU8sY0FBYyxDQUFDLE1BQWM7UUFDbkMsT0FBTyxNQUFNLENBQUMsVUFBVSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQ25ELENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxNQUFjO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxNQUFjO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FDNUQsY0FBYyxDQUNmLENBQUM7SUFDSixDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRU8sa0JBQWtCLENBQUMsS0FBYTtRQUN0QyxPQUFPLEtBQUs7YUFDVCxLQUFLLENBQUMsRUFBRSxDQUFDO2FBQ1QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNuQyxNQUFNLENBQUMsQ0FBQyxRQUFnQixFQUFFLE9BQWUsRUFBRSxFQUFFLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxVQUF3QjtRQUNoRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7OEdBMUVVLGFBQWE7a0hBQWIsYUFBYSxjQURELE1BQU07OzJGQUNsQixhQUFhO2tCQUR6QixVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IEF2YXRhckNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2F2YXRhci1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IEF2YXRhclNvdXJjZSB9IGZyb20gJy4vc291cmNlcy9hdmF0YXItc291cmNlLmVudW0nO1xyXG5pbXBvcnQgeyBTb3VyY2UgfSBmcm9tICcuL3NvdXJjZXMvc291cmNlJztcclxuXHJcbi8qKlxyXG4gKiBsaXN0IG9mIFN1cHBvcnRlZCBhdmF0YXIgc291cmNlc1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGRlZmF1bHRTb3VyY2VzID0gW1xyXG4gIEF2YXRhclNvdXJjZS5GQUNFQk9PSyxcclxuICBBdmF0YXJTb3VyY2UuR09PR0xFLFxyXG4gIEF2YXRhclNvdXJjZS5UV0lUVEVSLFxyXG4gIEF2YXRhclNvdXJjZS5JTlNUQUdSQU0sXHJcbiAgQXZhdGFyU291cmNlLlZLT05UQUtURSxcclxuICBBdmF0YXJTb3VyY2UuU0tZUEUsXHJcbiAgQXZhdGFyU291cmNlLkdSQVZBVEFSLFxyXG4gIEF2YXRhclNvdXJjZS5HSVRIVUIsXHJcbiAgQXZhdGFyU291cmNlLkNVU1RPTSxcclxuICBBdmF0YXJTb3VyY2UuSU5JVElBTFMsXHJcbiAgQXZhdGFyU291cmNlLlZBTFVFXHJcbl07XHJcblxyXG4vKipcclxuICogbGlzdCBvZiBkZWZhdWx0IGNvbG9yc1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDb2xvcnMgPSBbXHJcbiAgJyMxYWJjOWMnLFxyXG4gICcjMzQ5OGRiJyxcclxuICAnI2YxYzQwZicsXHJcbiAgJyM4ZTQ0YWQnLFxyXG4gICcjZTc0YzNjJyxcclxuICAnI2QzNTQwMCcsXHJcbiAgJyMyYzNlNTAnLFxyXG4gICcjN2Y4YzhkJ1xyXG5dO1xyXG5cclxuLyoqXHJcbiAqIERlZmF1bHQgZGlzYWJsZSBjdXN0b20gc291cmNlIGNhY2hlIHNldHRpbmdzXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgZGVmYXVsdERpc2FibGVTcmNDYWNoZSA9IGZhbHNlO1xyXG5cclxuLyoqXHJcbiAqIFByb3ZpZGVzIHV0aWxpdGllcyBtZXRob2RzIHJlbGF0ZWQgdG8gQXZhdGFyIGNvbXBvbmVudFxyXG4gKi9cclxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXHJcbmV4cG9ydCBjbGFzcyBBdmF0YXJTZXJ2aWNlIHtcclxuICBwdWJsaWMgYXZhdGFyU291cmNlczogQXZhdGFyU291cmNlW10gPSBkZWZhdWx0U291cmNlcztcclxuICBwdWJsaWMgYXZhdGFyQ29sb3JzOiBzdHJpbmdbXSA9IGRlZmF1bHRDb2xvcnM7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZmFpbGVkU291cmNlcyA9IG5ldyBNYXA8c3RyaW5nLCBTb3VyY2U+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBhdmF0YXJDb25maWdTZXJ2aWNlOiBBdmF0YXJDb25maWdTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLm92ZXJyaWRlQXZhdGFyU291cmNlcygpO1xyXG4gICAgdGhpcy5vdmVycmlkZUF2YXRhckNvbG9ycygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZldGNoQXZhdGFyKGF2YXRhclVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChhdmF0YXJVcmwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFJhbmRvbUNvbG9yKGF2YXRhclRleHQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIWF2YXRhclRleHQpIHtcclxuICAgICAgcmV0dXJuICd0cmFuc3BhcmVudCc7XHJcbiAgICB9XHJcbiAgICBjb25zdCBhc2NpaUNvZGVTdW0gPSB0aGlzLmNhbGN1bGF0ZUFzY2lpQ29kZShhdmF0YXJUZXh0KTtcclxuICAgIHJldHVybiB0aGlzLmF2YXRhckNvbG9yc1thc2NpaUNvZGVTdW0gJSB0aGlzLmF2YXRhckNvbG9ycy5sZW5ndGhdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbXBhcmVTb3VyY2VzKFxyXG4gICAgc291cmNlVHlwZTE6IEF2YXRhclNvdXJjZSxcclxuICAgIHNvdXJjZVR5cGUyOiBBdmF0YXJTb3VyY2VcclxuICApOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5nZXRTb3VyY2VQcmlvcml0eShzb3VyY2VUeXBlMSkgLSB0aGlzLmdldFNvdXJjZVByaW9yaXR5KHNvdXJjZVR5cGUyKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc1NvdXJjZShzb3VyY2U6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYXZhdGFyU291cmNlcy5pbmNsdWRlcyhzb3VyY2UgYXMgQXZhdGFyU291cmNlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc1RleHRBdmF0YXIoc291cmNlVHlwZTogQXZhdGFyU291cmNlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gW0F2YXRhclNvdXJjZS5JTklUSUFMUywgQXZhdGFyU291cmNlLlZBTFVFXS5pbmNsdWRlcyhzb3VyY2VUeXBlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRTb3VyY2VLZXkoc291cmNlOiBTb3VyY2UpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHNvdXJjZS5zb3VyY2VUeXBlICsgJy0nICsgc291cmNlLnNvdXJjZUlkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNvdXJjZUhhc0ZhaWxlZEJlZm9yZShzb3VyY2U6IFNvdXJjZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZmFpbGVkU291cmNlcy5oYXModGhpcy5idWlsZFNvdXJjZUtleShzb3VyY2UpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBtYXJrU291cmNlQXNGYWlsZWQoc291cmNlOiBTb3VyY2UpOiB2b2lkIHtcclxuICAgIHRoaXMuZmFpbGVkU291cmNlcy5zZXQodGhpcy5idWlsZFNvdXJjZUtleShzb3VyY2UpLCBzb3VyY2UpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvdmVycmlkZUF2YXRhclNvdXJjZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmF2YXRhclNvdXJjZXMgPSB0aGlzLmF2YXRhckNvbmZpZ1NlcnZpY2UuZ2V0QXZhdGFyU291cmNlcyhcclxuICAgICAgZGVmYXVsdFNvdXJjZXNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG92ZXJyaWRlQXZhdGFyQ29sb3JzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hdmF0YXJDb2xvcnMgPSB0aGlzLmF2YXRhckNvbmZpZ1NlcnZpY2UuZ2V0QXZhdGFyQ29sb3JzKGRlZmF1bHRDb2xvcnMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVBc2NpaUNvZGUodmFsdWU6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdmFsdWVcclxuICAgICAgLnNwbGl0KCcnKVxyXG4gICAgICAubWFwKGxldHRlciA9PiBsZXR0ZXIuY2hhckNvZGVBdCgwKSlcclxuICAgICAgLnJlZHVjZSgocHJldmlvdXM6IG51bWJlciwgY3VycmVudDogbnVtYmVyKSA9PiBwcmV2aW91cyArIGN1cnJlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTb3VyY2VQcmlvcml0eShzb3VyY2VUeXBlOiBBdmF0YXJTb3VyY2UpIHtcclxuICAgIHJldHVybiB0aGlzLmF2YXRhclNvdXJjZXMuaW5kZXhPZihzb3VyY2VUeXBlKTtcclxuICB9XHJcbn1cclxuIl19