import React, {useEffect, useMemo } from "react";
import { processOptions } from "../../_core";
import * as ReactShare from "react-share";
/**
* Componente que renderiza boton para compartir en un red social. <a href="https://github.com/nygardk/react-share" target="_new">Documentacion de react-share</a>
* @name Reactor.Components.Social.SocialButton
* @param {("email"|"facebook"|"hatena"|"instapaper"|"line"|"linkedin"|"livejournal"|"mailru"|"ok"|"pinterest"|"pocket"|"reddit"|"telegram"|"tumblr"|"twitter"|"viber"|"vk"|"whatsapp"|"workplace")} name Nombre de la red social que se va a compartir con este botón
* @param {string} options Json string con los parametros aceptados por el componente de red social que se está llamando (cada uno tiene parametros distintos ver la documentación)
* @param {("true"|"false")} debug Si es true se envia a la consola información de depuración. Por defecto es false
* @class
* @example
<social_button name="" href="NombreOperacion" data='{"param": "value"}'>Instagram</social_button>
*/
export const SocialButton = ({ name, options, children, debug = "false" }) => {
const Component = useMemo(() => buttons[name], [name]);
const objOptions = useMemo(() => processOptions(options), [options]);
useEffect(()=>{
debug === "true" && console.log({name, options, objOptions})
}, [])
return (
<Component {...objOptions}>
{children}
</Component>
)
}
const buttons = {
email: ReactShare.EmailShareButton,
facebook: ReactShare.FacebookShareButton,
hatena: ReactShare.HatenaShareButton,
instapaper: ReactShare.InstapaperShareButton,
line: ReactShare.LineShareButton,
linkedin: ReactShare.LinkedinShareButton,
livejournal: ReactShare.LivejournalShareButton,
mailru: ReactShare.MailruShareButton,
ok: ReactShare.OKShareButton,
pinterest: ReactShare.PinterestShareButton,
pocket: ReactShare.PocketShareButton,
reddit: ReactShare.RedditShareButton,
telegram: ReactShare.TelegramShareButton,
tumblr: ReactShare.TumblrShareButton,
twitter: ReactShare.TwitterShareButton,
viber: ReactShare.ViberShareButton,
vk: ReactShare.VKShareButton,
whatsapp: ReactShare.WhatsappShareButton,
workplace: ReactShare.WorkplaceShareButton,
};