react-live-chat-loader
Version:
Implement live chat in your react app without taking a performance hit.
111 lines • 14.5 kB
JavaScript
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
import React from 'react';
import useChat from "../../hooks/useChat";
import { ClassNames } from "../../types";
var styles = {
container: {
zIndex: 2147483648,
// one more than provider
position: 'fixed',
border: '0',
width: '64px',
height: '64px',
boxShadow: 'rgba(0, 0, 0, 0.24) 0px 8px 16px 0px',
left: 'auto'
},
button: {
position: 'relative',
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
width: '64px',
minWidth: '64px',
height: '64px',
minHeight: '64px',
padding: '0',
cursor: 'pointer',
border: '0'
},
icon: {
fontSize: '40px'
}
};
var Userlike = function Userlike(_ref) {
var _ref$color = _ref.color,
color = _ref$color === void 0 ? 'white' : _ref$color,
_ref$backgroundColor = _ref.backgroundColor,
backgroundColor = _ref$backgroundColor === void 0 ? '#0d8cff' : _ref$backgroundColor,
_ref$position = _ref.position,
position = _ref$position === void 0 ? 'right' : _ref$position,
_ref$vOffset = _ref.vOffset,
vOffset = _ref$vOffset === void 0 ? 'calc(0% + 20px)' : _ref$vOffset,
_ref$hOffset = _ref.hOffset,
hOffset = _ref$hOffset === void 0 ? 'calc(0% + 24px)' : _ref$hOffset,
_ref$style = _ref.style,
style = _ref$style === void 0 ? 'round' : _ref$style,
_ref$containerClass = _ref.containerClass,
containerClass = _ref$containerClass === void 0 ? ClassNames.container : _ref$containerClass;
var _useChat = useChat({
loadWhenIdle: true
}),
_useChat2 = _slicedToArray(_useChat, 2),
state = _useChat2[0],
loadChat = _useChat2[1];
var positionStyles = {
bottom: vOffset,
right: position === 'left' ? 'auto' : hOffset,
left: position === 'right' ? 'auto' : hOffset
};
var shapeStyle = {
borderRadius: style === 'round' ? '50%' : '0'
};
if (state === 'complete') {
return null;
}
return /*#__PURE__*/React.createElement("div", {
className: containerClass,
style: _objectSpread(_objectSpread(_objectSpread({}, styles.container), positionStyles), shapeStyle)
}, /*#__PURE__*/React.createElement("button", {
role: "button",
"aria-label": "Load Chat",
"aria-busy": "true",
"aria-live": "polite",
onClick: function onClick() {
return loadChat({
open: true
});
},
onMouseEnter: function onMouseEnter() {
return loadChat({
open: false
});
},
style: _objectSpread(_objectSpread(_objectSpread({}, styles.button), shapeStyle), {}, {
backgroundColor: backgroundColor
})
}, /*#__PURE__*/React.createElement("svg", {
width: "1em",
height: "1em",
viewBox: "0 0 40 40",
fill: "none",
style: _objectSpread(_objectSpread({}, styles.icon), {}, {
color: color
})
}, /*#__PURE__*/React.createElement("path", {
d: "M37.4 30.7c-.1-.5 0-.9.2-1.4 1.5-2.8 2.3-6 2.3-9.4C40 9 31 0 20 0 9 0 0 9 0 20s9 20 20 20c3.3 0 6.5-.9 9.4-2.3.4-.2.9-.3 1.4-.2l6.8 1.3c.7.1 1.3-.5 1.2-1.2l-1.4-6.9zM21 29h-8c-1.1 0-2-.9-2-2s.9-2 2-2h8c1.1 0 2 .9 2 2s-.9 2-2 2zm6-7H13c-1.1 0-2-.9-2-2s.9-2 2-2h14c1.1 0 2 .9 2 2s-.9 2-2 2zm0-7H13c-1.1 0-2-.9-2-2s.9-2 2-2h14c1.1 0 2 .9 2 2s-.9 2-2 2z",
fill: "currentColor"
}))));
};
export default Userlike;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNoYXQiLCJDbGFzc05hbWVzIiwic3R5bGVzIiwiY29udGFpbmVyIiwiekluZGV4IiwicG9zaXRpb24iLCJib3JkZXIiLCJ3aWR0aCIsImhlaWdodCIsImJveFNoYWRvdyIsImxlZnQiLCJidXR0b24iLCJkaXNwbGF5IiwianVzdGlmeUNvbnRlbnQiLCJhbGlnbkl0ZW1zIiwibWluV2lkdGgiLCJtaW5IZWlnaHQiLCJwYWRkaW5nIiwiY3Vyc29yIiwiaWNvbiIsImZvbnRTaXplIiwiVXNlcmxpa2UiLCJfcmVmIiwiX3JlZiRjb2xvciIsImNvbG9yIiwiX3JlZiRiYWNrZ3JvdW5kQ29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLCJfcmVmJHBvc2l0aW9uIiwiX3JlZiR2T2Zmc2V0Iiwidk9mZnNldCIsIl9yZWYkaE9mZnNldCIsImhPZmZzZXQiLCJfcmVmJHN0eWxlIiwic3R5bGUiLCJfcmVmJGNvbnRhaW5lckNsYXNzIiwiY29udGFpbmVyQ2xhc3MiLCJfdXNlQ2hhdCIsImxvYWRXaGVuSWRsZSIsIl91c2VDaGF0MiIsIl9zbGljZWRUb0FycmF5Iiwic3RhdGUiLCJsb2FkQ2hhdCIsInBvc2l0aW9uU3R5bGVzIiwiYm90dG9tIiwicmlnaHQiLCJzaGFwZVN0eWxlIiwiYm9yZGVyUmFkaXVzIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsIl9vYmplY3RTcHJlYWQiLCJyb2xlIiwib25DbGljayIsIm9wZW4iLCJvbk1vdXNlRW50ZXIiLCJ2aWV3Qm94IiwiZmlsbCIsImQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9Vc2VybGlrZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IENTU1Byb3BlcnRpZXMgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHVzZUNoYXQgZnJvbSAnLi4vLi4vaG9va3MvdXNlQ2hhdCdcbmltcG9ydCB7IFByb3ZpZGVyUHJvcHMsIENsYXNzTmFtZXMgfSBmcm9tICcuLi8uLi90eXBlcydcblxuY29uc3Qgc3R5bGVzOiB7XG4gIGNvbnRhaW5lcjogQ1NTUHJvcGVydGllc1xuICBidXR0b246IENTU1Byb3BlcnRpZXNcbiAgaWNvbjogQ1NTUHJvcGVydGllc1xufSA9IHtcbiAgY29udGFpbmVyOiB7XG4gICAgekluZGV4OiAyMTQ3NDgzNjQ4LCAvLyBvbmUgbW9yZSB0aGFuIHByb3ZpZGVyXG4gICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgYm9yZGVyOiAnMCcsXG4gICAgd2lkdGg6ICc2NHB4JyxcbiAgICBoZWlnaHQ6ICc2NHB4JyxcbiAgICBib3hTaGFkb3c6ICdyZ2JhKDAsIDAsIDAsIDAuMjQpIDBweCA4cHggMTZweCAwcHgnLFxuICAgIGxlZnQ6ICdhdXRvJ1xuICB9LFxuICBidXR0b246IHtcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIHdpZHRoOiAnNjRweCcsXG4gICAgbWluV2lkdGg6ICc2NHB4JyxcbiAgICBoZWlnaHQ6ICc2NHB4JyxcbiAgICBtaW5IZWlnaHQ6ICc2NHB4JyxcbiAgICBwYWRkaW5nOiAnMCcsXG4gICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgYm9yZGVyOiAnMCdcbiAgfSxcbiAgaWNvbjoge1xuICAgIGZvbnRTaXplOiAnNDBweCdcbiAgfVxufVxuXG5pbnRlcmZhY2UgUHJvcHMgZXh0ZW5kcyBQcm92aWRlclByb3BzIHtcbiAgY29sb3I/OiBzdHJpbmdcbiAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nXG4gIHBvc2l0aW9uPzogc3RyaW5nXG4gIHZPZmZzZXQ/OiBzdHJpbmdcbiAgaE9mZnNldD86IHN0cmluZ1xuICBzdHlsZT86IHN0cmluZ1xufVxuXG5jb25zdCBVc2VybGlrZSA9ICh7XG4gIGNvbG9yID0gJ3doaXRlJyxcbiAgYmFja2dyb3VuZENvbG9yID0gJyMwZDhjZmYnLFxuICBwb3NpdGlvbiA9ICdyaWdodCcsXG4gIHZPZmZzZXQgPSAnY2FsYygwJSArIDIwcHgpJyxcbiAgaE9mZnNldCA9ICdjYWxjKDAlICsgMjRweCknLFxuICBzdHlsZSA9ICdyb3VuZCcsXG4gIGNvbnRhaW5lckNsYXNzID0gQ2xhc3NOYW1lcy5jb250YWluZXJcbn06IFByb3BzKTogSlNYLkVsZW1lbnQgfCBudWxsID0+IHtcbiAgY29uc3QgW3N0YXRlLCBsb2FkQ2hhdF0gPSB1c2VDaGF0KHsgbG9hZFdoZW5JZGxlOiB0cnVlIH0pXG4gIGNvbnN0IHBvc2l0aW9uU3R5bGVzID0ge1xuICAgIGJvdHRvbTogdk9mZnNldCxcbiAgICByaWdodDogcG9zaXRpb24gPT09ICdsZWZ0JyA/ICdhdXRvJyA6IGhPZmZzZXQsXG4gICAgbGVmdDogcG9zaXRpb24gPT09ICdyaWdodCcgPyAnYXV0bycgOiBoT2Zmc2V0XG4gIH1cbiAgY29uc3Qgc2hhcGVTdHlsZSA9IHtcbiAgICBib3JkZXJSYWRpdXM6IHN0eWxlID09PSAncm91bmQnID8gJzUwJScgOiAnMCdcbiAgfVxuXG4gIGlmIChzdGF0ZSA9PT0gJ2NvbXBsZXRlJykge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17Y29udGFpbmVyQ2xhc3N9XG4gICAgICBzdHlsZT17eyAuLi5zdHlsZXMuY29udGFpbmVyLCAuLi5wb3NpdGlvblN0eWxlcywgLi4uc2hhcGVTdHlsZSB9fVxuICAgID5cbiAgICAgIDxidXR0b25cbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJMb2FkIENoYXRcIlxuICAgICAgICBhcmlhLWJ1c3k9XCJ0cnVlXCJcbiAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgb25DbGljaz17KCkgPT4gbG9hZENoYXQoeyBvcGVuOiB0cnVlIH0pfVxuICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IGxvYWRDaGF0KHsgb3BlbjogZmFsc2UgfSl9XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgLi4uc3R5bGVzLmJ1dHRvbixcbiAgICAgICAgICAuLi5zaGFwZVN0eWxlLFxuICAgICAgICAgIGJhY2tncm91bmRDb2xvclxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8c3ZnXG4gICAgICAgICAgd2lkdGg9XCIxZW1cIlxuICAgICAgICAgIGhlaWdodD1cIjFlbVwiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA0MCA0MFwiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIHN0eWxlPXt7IC4uLnN0eWxlcy5pY29uLCBjb2xvciB9fVxuICAgICAgICA+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNMzcuNCAzMC43Yy0uMS0uNSAwLS45LjItMS40IDEuNS0yLjggMi4zLTYgMi4zLTkuNEM0MCA5IDMxIDAgMjAgMCA5IDAgMCA5IDAgMjBzOSAyMCAyMCAyMGMzLjMgMCA2LjUtLjkgOS40LTIuMy40LS4yLjktLjMgMS40LS4ybDYuOCAxLjNjLjcuMSAxLjMtLjUgMS4yLTEuMmwtMS40LTYuOXpNMjEgMjloLThjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yaDhjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyem02LTdIMTNjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yaDE0YzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMnptMC03SDEzYy0xLjEgMC0yLS45LTItMnMuOS0yIDItMmgxNGMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDJ6XCJcbiAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgID48L3BhdGg+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgVXNlcmxpa2VcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsT0FBT0EsS0FBSyxNQUF5QixPQUFP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