import React, {useMemo } from "react";
import { processOptions } from "../../_core";
import * as ReactShare from "react-share";
/**
* Componente que renderiza un icono de red social. Docs: https://github.com/nygardk/react-share
* @name Reactor.Components.Social.SocialIcon
* @param {("email"|"facebook"|"facebookMessenger"|"hatena"|"instapaper"|"line"|"linkedin"|"livejournal"|"mailru"|"ok"|"pinterest"|"pocket"|"reddit"|"telegram"|"tumblr"|"twitter"|"viber"|"vk"|"weibo"|"whatsapp"|"workplace")} name Nombre de la red social
* @param {string} options Opciones del componente, ver en la documentacion los posibles parametros
* @class
* @example
<social_icon></social_icon>
*/
export const SocialIcon = ({ name, options, children }) => {
const Component = useMemo(() => icons[name], [name]);
const objOptions = useMemo(() => processOptions(options), [options]);
return (
<Component {...objOptions}>
{children}
</Component>
)
}
const icons = {
email: ReactShare.EmailIcon,
facebook: ReactShare.FacebookIcon,
facebookMessenger: ReactShare.FacebookMessengerIcon,
hatena: ReactShare.HatenaIcon,
instapaper: ReactShare.InstapaperIcon,
line: ReactShare.LineIcon,
linkedin: ReactShare.LinkedinIcon,
livejournal: ReactShare.LivejournalIcon,
mailru: ReactShare.MailruIcon,
ok: ReactShare.OKIcon,
pinterest: ReactShare.PinterestIcon,
pocket: ReactShare.PocketIcon,
reddit: ReactShare.RedditIcon,
telegram: ReactShare.TelegramIcon,
tumblr: ReactShare.TumblrIcon,
twitter: ReactShare.TwitterIcon,
viber: ReactShare.ViberIcon,
vk: ReactShare.VKIcon,
weibo: ReactShare.WeiboIcon,
whatsapp: ReactShare.WhatsappIcon,
workplace: ReactShare.WorkplaceIcon
};