@yandex/ui
Version:
Yandex UI components
32 lines (31 loc) • 1.77 kB
JavaScript
import { __assign, __rest } from "tslib";
import React, { useEffect } from 'react';
import { cn } from '@bem-react/classname';
import './UserPic.css';
export var cnUserPic = cn('UserPic');
var getAvatarURL = function (host, avatarId, isRetina) {
if (host === void 0) { host = 'https://avatars.mds.yandex.net'; }
if (avatarId === void 0) { avatarId = '0/0-0'; }
return host + "/get-yapic/" + avatarId + "/" + (isRetina ? 'islands-retina-middle' : 'islands-middle');
};
/**
* Компонент для создания иконки авторизованного пользователя (аватарки).
* @param {IUserPicProps} props
*/
export var UserPic = function (_a) {
var host = _a.host, avatarId = _a.avatarId, lodpiUrl = _a.lodpiUrl, hidpiUrl = _a.hidpiUrl, plus = _a.plus, className = _a.className, innerRef = _a.innerRef, addonAfter = _a.addonAfter,
// @ts-ignore
size = _a.size, props = __rest(_a, ["host", "avatarId", "lodpiUrl", "hidpiUrl", "plus", "className", "innerRef", "addonAfter", "size"]);
useEffect(function () {
console.assert(size !== undefined, 'Модификатор size скоро станет обязательным, добавьте пожалуйста размер');
}, []);
if (!lodpiUrl) {
lodpiUrl = getAvatarURL(host, avatarId, false);
hidpiUrl = getAvatarURL(host, avatarId, true);
}
var srcSet = hidpiUrl ? lodpiUrl + " 1x, " + hidpiUrl + " 2x" : undefined;
return (React.createElement("div", { className: cnUserPic({ hasPlus: plus }, [className]), ref: innerRef },
React.createElement("img", __assign({}, props, { src: lodpiUrl, className: cnUserPic('Image'), srcSet: srcSet })),
addonAfter));
};
UserPic.displayName = cnUserPic();