react-custom-share
Version:
Social sharing buttons for React
124 lines (101 loc) • 3.92 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _objectToGetParams = require('./objectToGetParams');
var _objectToGetParams2 = _interopRequireDefault(_objectToGetParams);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
var generators = {
email: function email(params) {
var url = params.url,
_params$text = params.text,
text = _params$text === undefined ? '' : _params$text,
_params$longtext = params.longtext,
longtext = _params$longtext === undefined ? '' : _params$longtext;
return 'mailto:' + (0, _objectToGetParams2.default)({
subject: text,
body: longtext + ' \n\n\xBB ' + url
});
},
facebook: function facebook(params) {
var url = params.url,
_params$text2 = params.text,
text = _params$text2 === undefined ? '' : _params$text2,
_params$longtext2 = params.longtext,
longtext = _params$longtext2 === undefined ? '' : _params$longtext2,
_params$hashtag = params.hashtag,
hashtag = _params$hashtag === undefined ? '' : _params$hashtag;
return 'https://www.facebook.com/sharer/sharer.php' + (0, _objectToGetParams2.default)({
u: url,
quote: text || longtext ? text + ' \n' + longtext : '',
hashtag: hashtag
});
},
twitter: function twitter(params) {
var url = params.url,
_params$text3 = params.text,
text = _params$text3 === undefined ? '' : _params$text3,
_params$via = params.via,
via = _params$via === undefined ? '' : _params$via,
_params$hashtags = params.hashtags,
hashtags = _params$hashtags === undefined ? [] : _params$hashtags;
return 'https://twitter.com/share' + (0, _objectToGetParams2.default)({
url: url,
text: text,
via: via,
hashtags: hashtags.join(',')
});
},
googleplus: function googleplus(params) {
var url = params.url;
return 'https://plus.google.com/share' + (0, _objectToGetParams2.default)({
url: url
});
},
linkedin: function linkedin(params) {
var url = params.url,
_params$text4 = params.text,
text = _params$text4 === undefined ? '' : _params$text4,
_params$longtext3 = params.longtext,
longtext = _params$longtext3 === undefined ? '' : _params$longtext3;
return 'https://linkedin.com/shareArticle' + (0, _objectToGetParams2.default)({
url: url,
title: text,
summary: longtext
});
},
pinterest: function pinterest(params) {
var media = params.media,
_params$text5 = params.text,
text = _params$text5 === undefined ? '' : _params$text5;
return 'https://pinterest.com/pin/create/button/' + (0, _objectToGetParams2.default)({
media: media,
description: text
});
}
};
function getNetworkLink(params) {
var network = params.network,
rest = _objectWithoutProperties(params, ['network']);
var url = rest.url,
media = rest.media;
var key = network.toLowerCase();
if (!key) {
throw new Error('the ShareButton\'s \'network\' prop can\'t be undefined');
}
if (!isValidNetwork(key)) {
throw new Error('the \'network\' prop\'s value is not a valid value for ShareButton');
}
if (!url) {
throw new Error('the ShareButton\'s \'url\' prop can\'t be undefined');
}
if (network === 'Pinterest' && !media) {
throw new Error('the ShareButton\'s \'media\' prop for the \'Pinterest\' network can\'t be undefined');
}
return generators[key](rest);
}
function isValidNetwork(key) {
return generators.hasOwnProperty(key) ? true : false;
}
exports.default = getNetworkLink;