reactjs-freshchat
Version:
A Reactjs component wrapper for Freshchat web-sdk api.
142 lines (121 loc) • 3.9 kB
JavaScript
var React = require('react');
function _extends() {
_extends = Object.assign || function (target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends.apply(this, arguments);
}
function _objectWithoutPropertiesLoose(source, excluded) {
if (source == null) return {};
var target = {};
var sourceKeys = Object.keys(source);
var key, i;
for (i = 0; i < sourceKeys.length; i++) {
key = sourceKeys[i];
if (excluded.indexOf(key) >= 0) continue;
target[key] = source[key];
}
return target;
}
var styles = {"buttonContainer":"_tWHtY","buttonContent":"_MDaB7"};
var _excluded = ["label", "ic_styles"];
function Freshchat(_ref) {
var label = _ref.label,
ic_styles = _ref.ic_styles,
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
var _React$useState = React.useState(false),
isWidgetOpen = _React$useState[0],
setIsWidgetOpen = _React$useState[1];
var UrlIcon = 'https://firebasestorage.googleapis.com/v0/b/repfinder-450e2.appspot.com/o/chat.svg?alt=media&token=885c5d28-2165-4a24-a96c-c1b0c98fab3f';
var loadScript = function loadScript() {
var id = 'freshchat-lib';
if (document.getElementById(id) || window.fcWidget) return;
var script = document.createElement('script');
script.async = true;
script.type = 'text/javascript';
script.src = 'https://wchat.freshchat.com/js/widget.js';
script.id = id;
document.head.appendChild(script);
};
var init = function init() {
if (label) {
if (!rest.config) {
rest.config = {
headerProperty: {
hideChatButton: true
}
};
} else {
rest.config = _extends({}, rest.config, {
headerProperty: {
hideChatButton: true
}
});
}
}
if (!rest.host) rest.host = 'https://wchat.freshchat.com';
window.fcWidget.init(_extends({}, rest));
};
var toggleWidget = function toggleWidget() {
window.fcWidget.open();
setIsWidgetOpen(true);
var script = document.createElement('script');
script.async = true;
script.type = 'text/javascript';
script.src = "" + window.fcWidget.on('widget:closed', function () {
setIsWidgetOpen(false);
});
document.head.appendChild(script);
var script_event = document.createElement('script');
script_event.async = true;
script_event.type = 'text/javascript';
script_event.src = "" + window.fcWidget.on('user:created', function () {
console.log('User has been created');
});
document.head.appendChild(script_event);
};
React.useEffect(function () {
loadScript();
var interval = setInterval(function () {
if (window.fcWidget) {
clearInterval(interval);
try {
init();
} catch (error) {
console.log(error);
}
}
}, 1000);
});
if (!label) {
return null;
}
return !isWidgetOpen ? React.createElement("div", {
className: styles.buttonContainer,
onClick: function onClick() {
return toggleWidget();
}
}, React.createElement("div", {
className: styles.buttonContent,
style: {
backgroundColor: ic_styles ? ic_styles.backgroundColor : '#002d85',
color: ic_styles ? ic_styles.color : '#ffffff',
borderColor: ic_styles ? "transparent " + ic_styles.backgroundColor + " transparent transparent" : "transparent #002d85 transparent transparent"
}
}, React.createElement("label", null, label), React.createElement("img", {
src: UrlIcon,
alt: 'chat icon',
width: '22px',
height: '22px'
}))) : null;
}
exports.Freshchat = Freshchat;
//# sourceMappingURL=index.js.map