Socket
Socket
Sign inDemoInstall

chrome-web-share

Package Overview
Dependencies
22
Maintainers
1
Versions
21
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 2.0.9 to 3.0.0-rc.1

577

dist/ShareButton.js

@@ -1,5 +0,5 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
value: true
});

@@ -13,21 +13,17 @@

var _lodash = require('lodash');
var _lodash = require("lodash");
var _lodash2 = _interopRequireDefault(_lodash);
var _propTypes = require('prop-types');
var _coreDecorators = require("core-decorators");
var _propTypes2 = _interopRequireDefault(_propTypes);
var _react = require("react");
var _coreDecorators = require('core-decorators');
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _visibility = require('./visibility');
var _visibility = require("./visibility");
var _visibility2 = _interopRequireDefault(_visibility);
var _utils = require('./utils');
var _utils = require("./utils");

@@ -43,322 +39,321 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

var PopupModal = (0, _coreDecorators.autobind)(_class = (_temp = _class2 = function (_PureComponent) {
_inherits(PopupModal, _PureComponent);
_inherits(PopupModal, _PureComponent);
_createClass(PopupModal, [{
key: 'isShareDisabled',
value: function isShareDisabled(type) {
var disabled = this.props.disabled;
_createClass(PopupModal, [{
key: "isShareDisabled",
value: function isShareDisabled(type) {
var disabled = this.props.disabled;
return disabled && _lodash2.default.includes(disabled, type);
}
}, {
key: 'messageAndLink',
get: function get() {
var _props = this.props,
shareUrl = _props.shareUrl,
shareMessage = _props.shareMessage;
return disabled && _lodash2.default.includes(disabled, type);
}
}, {
key: "messageAndLink",
get: function get() {
var _props = this.props,
shareUrl = _props.shareUrl,
shareMessage = _props.shareMessage;
return shareMessage + ' ' + shareUrl;
}
}]);
return shareMessage + " " + shareUrl;
}
}]);
function PopupModal(props) {
_classCallCheck(this, PopupModal);
function PopupModal(props) {
_classCallCheck(this, PopupModal);
return _possibleConstructorReturn(this, (PopupModal.__proto__ || Object.getPrototypeOf(PopupModal)).call(this, props));
}
return _possibleConstructorReturn(this, (PopupModal.__proto__ || Object.getPrototypeOf(PopupModal)).call(this, props));
}
_createClass(PopupModal, [{
key: 'handleCopyLink',
value: function handleCopyLink(e) {
var onCopySuccess = this.props.onCopySuccess;
_createClass(PopupModal, [{
key: "handleCopyLink",
value: function handleCopyLink(e) {
var onCopySuccess = this.props.onCopySuccess;
var copyTarget = document.querySelector(e.currentTarget.dataset.copytarget || null);
var copyTarget = document.querySelector(e.currentTarget.dataset.copytarget || null);
if (copyTarget && copyTarget.select) {
copyTarget.select();
if (copyTarget && copyTarget.select) {
copyTarget.select();
try {
document.execCommand('copy');
copyTarget.blur();
try {
document.execCommand("copy");
copyTarget.blur();
onCopySuccess(copyTarget.value);
} catch (err) {
alert('Your device does not support copying, please copy manually.');
}
}
onCopySuccess(copyTarget.value);
} catch (err) {
alert("Your device does not support copying, please copy manually.");
}
}
}
/**
* Helper function to open the App Store if the share does not trigger WhatsApp to launch.
*/
/**
* Helper function to open the App Store if the share does not trigger WhatsApp to launch.
*/
}, {
key: 'handleWhatsAppShare',
value: function handleWhatsAppShare() {
var _this2 = this;
}, {
key: "handleWhatsAppShare",
value: function handleWhatsAppShare() {
var _this2 = this;
var userAgent = navigator.userAgent || navigator.vendor || window.opera;
var delay = 1000;
var start = new Date().getTime();
var userAgent = navigator.userAgent || navigator.vendor || window.opera;
var delay = 1000;
var start = new Date().getTime();
var link = /android/i.test(userAgent) ? 'https://play.google.com/store/apps/details?id=com.whatsapp' : /iPad|iPhone|iPod/i.test(userAgent) ? 'https://itunes.apple.com/app/id310633997' : 'https://api.whatsapp.com/send?text=' + encodeURIComponent(this.messageAndLink);
var link = /android/i.test(userAgent) ? "https://play.google.com/store/apps/details?id=com.whatsapp" : /iPad|iPhone|iPod/i.test(userAgent) ? "https://itunes.apple.com/app/id310633997" : "https://api.whatsapp.com/send?text=" + encodeURIComponent(this.messageAndLink);
// Checks to see if whatsapp share launched otherwise lets show the user a donwload link for whatsapp
setTimeout(function () {
var end = new Date().getTime();
if (_this2.visibility && _this2.visibility.isHidden() || end - start >= delay * 2) return;
// Checks to see if whatsapp share launched otherwise lets show the user a donwload link for whatsapp
setTimeout(function () {
var end = new Date().getTime();
if (_this2.visibility && _this2.visibility.isHidden() || end - start >= delay * 2) return;
window.open(link, '_blank');
}, delay);
}
}, {
key: 'handleFacebookShare',
value: function handleFacebookShare() {}
}, {
key: 'handleTwitterShare',
value: function handleTwitterShare() {}
}, {
key: 'handleEmailShare',
value: function handleEmailShare() {}
}, {
key: 'setVisibilityRef',
value: function setVisibilityRef(node) {
this.visibility = node;
}
}, {
key: 'render',
value: function render() {
var _props2 = this.props,
shareMessage = _props2.shareMessage,
shareUrl = _props2.shareUrl,
fbAppId = _props2.fbAppId,
fbDisplayType = _props2.fbDisplayType,
emailAddress = _props2.emailAddress,
copyText = _props2.copyText;
window.open(link, "_blank");
}, delay);
}
}, {
key: "handleFacebookShare",
value: function handleFacebookShare() {}
}, {
key: "handleTwitterShare",
value: function handleTwitterShare() {}
}, {
key: "handleEmailShare",
value: function handleEmailShare() {}
}, {
key: "setVisibilityRef",
value: function setVisibilityRef(node) {
this.visibility = node;
}
}, {
key: "render",
value: function render() {
var _props2 = this.props,
shareMessage = _props2.shareMessage,
shareUrl = _props2.shareUrl,
fbAppId = _props2.fbAppId,
fbDisplayType = _props2.fbDisplayType,
emailAddress = _props2.emailAddress,
copyText = _props2.copyText;
var gmailLink = 'https://mail.google.com/mail/u/0/?view=cm&ui=2&tf=0&fs=1&su=' + shareMessage + '&body=' + shareUrl;
var emailLink = 'mailto:' + emailAddress + '?body=' + shareMessage;
var twitterLink = 'https://twitter.com/intent/tweet?text=' + encodeURIComponent(shareMessage) + '&url=' + encodeURIComponent(shareUrl);
var facebookLink = 'https://www.facebook.com/dialog/share?app_id=' + fbAppId + '&display=' + fbDisplayType + '&href=' + encodeURIComponent(shareUrl);
var gmailLink = "https://mail.google.com/mail/u/0/?view=cm&ui=2&tf=0&fs=1&su=" + shareMessage + "&body=" + shareUrl;
var emailLink = "mailto:" + emailAddress + "?body=" + shareMessage;
var twitterLink = "https://twitter.com/intent/tweet?text=" + encodeURIComponent(shareMessage) + "&url=" + encodeURIComponent(shareUrl);
var facebookLink = "https://www.facebook.com/dialog/share?app_id=" + fbAppId + "&display=" + fbDisplayType + "&href=" + encodeURIComponent(shareUrl);
return _react2.default.createElement(
'div',
{ className: 'share-popup' },
this.props.modelOpen && _react2.default.createElement(_visibility2.default, { ref: this.setVisibilityRef }),
!this.isShareDisabled(_utils.BUTTON_TYPES.WHATSAPP) && _react2.default.createElement(
'a',
{ className: 'sp-tab', href: 'whatsapp://send?text=' + encodeURIComponent(this.messageAndLink),
onClick: this.handleWhatsAppShare },
_react2.default.createElement('div', { className: 'icon whatsapp' }),
_react2.default.createElement(
'span',
{ className: 'shareMessage' },
'WhatsApp'
)
),
!this.isShareDisabled(_utils.BUTTON_TYPES.FACEBOOK) && _react2.default.createElement(
'a',
{ className: 'sp-tab',
href: facebookLink,
onClick: this.handleFacebookShare, target: '_blank' },
_react2.default.createElement('div', { className: 'icon fb' }),
_react2.default.createElement(
'span',
{ className: 'shareMessage' },
'Facebook'
)
),
!this.isShareDisabled(_utils.BUTTON_TYPES.TWITTER) && _react2.default.createElement(
'a',
{ className: 'sp-tab',
href: twitterLink,
onClick: this.handleTwitterShare, target: '_blank' },
_react2.default.createElement('div', { className: 'icon twitter' }),
_react2.default.createElement(
'span',
{ className: 'shareMessage' },
'Twitter'
)
),
!this.isShareDisabled(_utils.BUTTON_TYPES.GMAIL) && _react2.default.createElement(
'a',
{ className: 'sp-tab', href: gmailLink, onClick: this.handleEmailShare, target: '_blank' },
_react2.default.createElement('div', { className: 'icon gmail' }),
_react2.default.createElement(
'span',
{ className: 'shareMessage' },
'Mail'
)
),
!this.isShareDisabled(_utils.BUTTON_TYPES.EMAIL) && emailAddress && _react2.default.createElement(
'a',
{ className: 'sp-tab', href: emailLink },
_react2.default.createElement('div', { className: 'icon gmail' }),
_react2.default.createElement(
'span',
{ className: 'shareMessage' },
'E-Mail'
)
),
!this.isShareDisabled(_utils.BUTTON_TYPES.COPY) && _react2.default.createElement(
'div',
{ className: 'sp-tab copy', onClick: this.handleCopyLink, 'data-copytarget': '#shareUrl' },
_react2.default.createElement(
'div',
{ className: 'copy-input' },
_react2.default.createElement('input', { type: 'text', id: 'shareUrl', value: shareUrl, readOnly: true })
),
_react2.default.createElement(
'div',
{ className: 'copy-button' },
_react2.default.createElement('div', { className: 'icon copy' }),
_react2.default.createElement(
'span',
{ className: 'shareMessage' },
copyText
)
)
)
);
}
}]);
return _react2.default.createElement(
"div",
{ className: "share-popup" },
this.props.modelOpen && _react2.default.createElement(_visibility2.default, { ref: this.setVisibilityRef }),
!this.isShareDisabled(_utils.BUTTON_TYPES.WHATSAPP) && _react2.default.createElement(
"a",
{
className: "sp-tab",
href: "whatsapp://send?text=" + encodeURIComponent(this.messageAndLink),
onClick: this.handleWhatsAppShare
},
_react2.default.createElement("div", { className: "icon whatsapp" }),
_react2.default.createElement(
"span",
{ className: "shareMessage" },
"WhatsApp"
)
),
!this.isShareDisabled(_utils.BUTTON_TYPES.FACEBOOK) && _react2.default.createElement(
"a",
{
className: "sp-tab",
href: facebookLink,
onClick: this.handleFacebookShare,
target: "_blank"
},
_react2.default.createElement("div", { className: "icon fb" }),
_react2.default.createElement(
"span",
{ className: "shareMessage" },
"Facebook"
)
),
!this.isShareDisabled(_utils.BUTTON_TYPES.TWITTER) && _react2.default.createElement(
"a",
{
className: "sp-tab",
href: twitterLink,
onClick: this.handleTwitterShare,
target: "_blank"
},
_react2.default.createElement("div", { className: "icon twitter" }),
_react2.default.createElement(
"span",
{ className: "shareMessage" },
"Twitter"
)
),
!this.isShareDisabled(_utils.BUTTON_TYPES.GMAIL) && _react2.default.createElement(
"a",
{
className: "sp-tab",
href: gmailLink,
onClick: this.handleEmailShare,
target: "_blank"
},
_react2.default.createElement("div", { className: "icon gmail" }),
_react2.default.createElement(
"span",
{ className: "shareMessage" },
"Mail"
)
),
!this.isShareDisabled(_utils.BUTTON_TYPES.EMAIL) && emailAddress && _react2.default.createElement(
"a",
{ className: "sp-tab", href: emailLink },
_react2.default.createElement("div", { className: "icon gmail" }),
_react2.default.createElement(
"span",
{ className: "shareMessage" },
"E-Mail"
)
),
!this.isShareDisabled(_utils.BUTTON_TYPES.COPY) && _react2.default.createElement(
"div",
{
className: "sp-tab copy",
onClick: this.handleCopyLink,
"data-copytarget": "#shareUrl"
},
_react2.default.createElement(
"div",
{ className: "copy-input" },
_react2.default.createElement("input", { type: "text", id: "shareUrl", value: shareUrl, readOnly: true })
),
_react2.default.createElement(
"div",
{ className: "copy-button" },
_react2.default.createElement("div", { className: "icon copy" }),
_react2.default.createElement(
"span",
{ className: "shareMessage" },
copyText
)
)
)
);
}
}]);
return PopupModal;
}(_react.PureComponent), _class2.propTypes = {
disabled: _propTypes2.default.array,
modelOpen: _propTypes2.default.bool,
shareUrl: _propTypes2.default.string,
shareMessage: _propTypes2.default.string,
fbAppId: _propTypes2.default.string,
fbDisplayType: _propTypes2.default.string,
onCopySuccess: _propTypes2.default.func,
emailAddress: _propTypes2.default.string,
copyText: _propTypes2.default.string
}, _class2.defaultProps = {
disabled: [_utils.BUTTON_TYPES.EMAIL],
modelOpen: false,
shareUrl: '',
shareMessage: '',
fbAppId: '',
fbDisplayType: 'touch',
onCopySuccess: function onCopySuccess() {},
copyText: 'Copy to clipboard'
return PopupModal;
}(_react.PureComponent), _class2.defaultProps = {
disabled: [_utils.BUTTON_TYPES.EMAIL],
modelOpen: false,
shareUrl: "",
shareMessage: "",
fbAppId: "",
fbDisplayType: "touch",
onCopySuccess: function onCopySuccess() {},
copyText: "Copy to clipboard"
}, _temp)) || _class;
var Button = (0, _coreDecorators.autobind)(_class3 = (_temp2 = _class4 = function (_PureComponent2) {
_inherits(Button, _PureComponent2);
_inherits(Button, _PureComponent2);
function Button(props) {
_classCallCheck(this, Button);
function Button(props) {
_classCallCheck(this, Button);
var _this3 = _possibleConstructorReturn(this, (Button.__proto__ || Object.getPrototypeOf(Button)).call(this, props));
var _this3 = _possibleConstructorReturn(this, (Button.__proto__ || Object.getPrototypeOf(Button)).call(this, props));
_this3.state = {
modelOpen: false
};
_this3.state = {
modelOpen: false
};
if (props.shouldCloseOnEscape) {
document.addEventListener('keyup', function (e) {
if (e.keyCode === _utils.KEYCODE_ESCAPE) {
_this3.setState({ modelOpen: false });
}
});
if (props.shouldCloseOnEscape) {
document.addEventListener("keyup", function (e) {
if (e.keyCode === _utils.KEYCODE_ESCAPE) {
_this3.setState({ modelOpen: false });
}
return _this3;
});
}
return _this3;
}
_createClass(Button, [{
key: 'toggleShare',
value: function toggleShare() {
var _props3 = this.props,
onButtonClick = _props3.onButtonClick,
shareMessage = _props3.shareMessage,
shareUrl = _props3.shareUrl,
disableWebShareAPI = _props3.disableWebShareAPI;
var modelOpen = this.state.modelOpen;
_createClass(Button, [{
key: "toggleShare",
value: function toggleShare() {
var _props3 = this.props,
onButtonClick = _props3.onButtonClick,
shareMessage = _props3.shareMessage,
shareUrl = _props3.shareUrl,
disableWebShareAPI = _props3.disableWebShareAPI;
var modelOpen = this.state.modelOpen;
if (!modelOpen && onButtonClick) {
onButtonClick();
}
if (!modelOpen && onButtonClick) {
onButtonClick();
}
if (navigator && !!navigator.share && !disableWebShareAPI) {
navigator.share({
title: shareMessage,
text: shareMessage + shareUrl,
url: shareUrl
}).then(function () {
return console.log('Successful share');
}).catch(function (error) {
return console.log('Error sharing:', error);
});
} else {
document.body.style.overflow = !modelOpen ? 'hidden' : 'auto';
this.setState({ modelOpen: !modelOpen });
}
}
}, {
key: 'render',
value: function render() {
var _props4 = this.props,
className = _props4.className,
buttonText = _props4.buttonText,
shouldCloseOnEscape = _props4.shouldCloseOnEscape,
disabled = _props4.disabled,
shareUrl = _props4.shareUrl,
shareMessage = _props4.shareMessage,
onCopySuccess = _props4.onCopySuccess,
fbAppId = _props4.fbAppId,
emailAddress = _props4.emailAddress,
copyText = _props4.copyText;
var modelOpen = this.state.modelOpen;
if (navigator && !!navigator.share && !disableWebShareAPI) {
navigator.share({
title: shareMessage,
text: shareMessage + shareUrl,
url: shareUrl
}).then(function () {
return console.log("Successful share");
}).catch(function (error) {
return console.log("Error sharing:", error);
});
} else {
document.body.style.overflow = !modelOpen ? "hidden" : "auto";
this.setState({ modelOpen: !modelOpen });
}
}
}, {
key: "render",
value: function render() {
var _props4 = this.props,
className = _props4.className,
children = _props4.children,
disabled = _props4.disabled,
shareUrl = _props4.shareUrl,
shareMessage = _props4.shareMessage,
onCopySuccess = _props4.onCopySuccess,
fbAppId = _props4.fbAppId,
emailAddress = _props4.emailAddress,
copyText = _props4.copyText;
var modelOpen = this.state.modelOpen;
var popupProps = {
disabled: disabled,
shareUrl: shareUrl,
shareMessage: shareMessage,
onCopySuccess: onCopySuccess,
fbAppId: fbAppId,
emailAddress: emailAddress,
copyText: copyText
};
var popupProps = {
disabled: disabled,
shareUrl: shareUrl,
shareMessage: shareMessage,
onCopySuccess: onCopySuccess,
fbAppId: fbAppId,
emailAddress: emailAddress,
copyText: copyText
};
return _react2.default.createElement(
'div',
{ className: className },
_react2.default.createElement(
'div',
{ className: 'share-btn', onClick: this.toggleShare },
buttonText
),
_react2.default.createElement(
'div',
{ className: 'share-modal ' + (modelOpen ? 'open' : '') },
_react2.default.createElement('div', { className: 'overlay', onClick: this.toggleShare }),
_react2.default.createElement(PopupModal, _extends({}, popupProps, {
toggleShare: this.toggleShare,
modelOpen: this.state.modelOpen
}))
)
);
}
}]);
return _react2.default.createElement(
"div",
{ className: className },
_react2.default.createElement(
"div",
{ className: "share-btn", onClick: this.toggleShare },
children
),
_react2.default.createElement(
"div",
{ className: "share-modal " + (modelOpen ? "open" : "") },
_react2.default.createElement("div", { className: "overlay", onClick: this.toggleShare }),
_react2.default.createElement(PopupModal, _extends({}, popupProps, {
toggleShare: this.toggleShare,
modelOpen: this.state.modelOpen
}))
)
);
}
}]);
return Button;
}(_react.PureComponent), _class4.propTypes = {
shareUrl: _propTypes2.default.string,
shareMessage: _propTypes2.default.string,
buttonText: _propTypes2.default.string,
onButtonClick: _propTypes2.default.func,
onCopySuccess: _propTypes2.default.func,
fbAppId: _propTypes2.default.string
}, _class4.defaultProps = {
shareUrl: _utils.DEFAULT_STRING,
shareMessage: _utils.DEFAULT_STRING,
buttonText: 'Share',
onButtonClick: _utils.DEFAULT_FUNCTION
return Button;
}(_react.PureComponent), _class4.defaultProps = {
shareUrl: _utils.DEFAULT_STRING,
shareMessage: _utils.DEFAULT_STRING,
onButtonClick: _utils.DEFAULT_FUNCTION
}, _temp2)) || _class3;
exports.default = Button;
{
"name": "chrome-web-share",
"version": "2.0.9",
"version": "3.0.0-rc.1",
"description": "A lightweight React Share Button for mobile web with web share api integration, native intent support and fallback",

@@ -18,3 +18,3 @@ "main": "dist/index.js",

"test:report": "cat ./coverage/lcov.info | codecov && rm -rf ./coverage",
"build": "generate-changelog && rm -rf dist && babel src --out-dir dist && npm run build:styles && cp src/social-sprite.png dist/social-sprite.png",
"build": "rm -rf dist && babel src --out-dir dist && npm run build:styles && cp src/social-sprite.png dist/social-sprite.png",
"build:styles": "node-sass src --output dist",

@@ -21,0 +21,0 @@ "build:watch": "concurrently \"babel --watch src --out-dir dist\" \"node-sass --watch src --output dist\"",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc