tb-react-live-chat-loader
Version:
Implement live chat in your react app without taking a performance hit.
146 lines (128 loc) • 16 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireWildcard(require("react"));
var _useProvider = _interopRequireDefault(require("../../hooks/useProvider"));
var _useChat = _interopRequireDefault(require("../../hooks/useChat"));
const _excluded = ["color"];
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
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; }
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); }
const styles = {
appearance: 'none',
background: 'none',
borderRadius: '50%',
bottom: '18pt',
display: 'inline',
height: '45pt',
padding: '0px',
position: 'fixed',
right: '18pt',
top: 'auto',
width: '45pt',
zIndex: 2147483647,
// 1 more than the actual widget
overflow: 'hidden',
boxShadow: '0 3px 12px rgba(0, 0, 0, .15)',
transition: 'box-shadow 150ms linear',
cursor: 'pointer',
outline: 'none',
userSelect: 'none'
};
// eslint-disable-next-line react/display-name
const CustomerChat = /*#__PURE__*/(0, _react.memo)(({
providerKey,
color,
loggedInGreeting,
loggedOutGreeting,
greetingDialogDisplay,
greetingDialogDelay
}) => {
const fields = {
page_id: providerKey,
theme_color: color,
logged_in_greeting: loggedInGreeting,
logged_out_greeting: loggedOutGreeting,
greeting_dialog_display: greetingDialogDisplay,
greeting_dialog_delay: greetingDialogDelay
};
return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", _extends({
className: "fb-customerchat"
}, fields)));
});
const Widget = ({
color
}) => {
const [state, loadChat] = (0, _useChat.default)({
loadWhenIdle: true
});
if (state === 'complete') {
return null;
}
return /*#__PURE__*/_react.default.createElement("div", {
style: styles,
role: "button",
"aria-label": "Load Chat",
"aria-busy": "true",
"aria-live": "polite",
onClick: () => loadChat({
open: true
}),
onMouseEnter: () => loadChat({
open: false
})
}, /*#__PURE__*/_react.default.createElement("svg", {
width: "60px",
height: "60px",
viewBox: "0 0 60 60"
}, /*#__PURE__*/_react.default.createElement("svg", {
x: "0",
y: "0",
width: "60px",
height: "60px"
}, /*#__PURE__*/_react.default.createElement("g", {
stroke: "none",
strokeWidth: "1",
fill: "none",
fillRule: "evenodd"
}, /*#__PURE__*/_react.default.createElement("g", null, /*#__PURE__*/_react.default.createElement("circle", {
fill: color ? color : '#0084FF',
cx: "30",
cy: "30",
r: "30"
}), /*#__PURE__*/_react.default.createElement("svg", {
x: "10",
y: "10"
}, /*#__PURE__*/_react.default.createElement("g", {
transform: "translate(0.000000, -10.000000)",
fill: "#FFFFFF"
}, /*#__PURE__*/_react.default.createElement("g", {
id: "logo",
transform: "translate(0.000000, 10.000000)"
}, /*#__PURE__*/_react.default.createElement("path", {
d: "M20,0 C31.2666,0 40,8.2528 40,19.4 C40,30.5472 31.2666,38.8 20,38.8 C17.9763,38.8 16.0348,38.5327 14.2106,38.0311 C13.856,37.9335 13.4789,37.9612 13.1424,38.1098 L9.1727,39.8621 C8.1343,40.3205 6.9621,39.5819 6.9273,38.4474 L6.8184,34.8894 C6.805,34.4513 6.6078,34.0414 6.2811,33.7492 C2.3896,30.2691 0,25.2307 0,19.4 C0,8.2528 8.7334,0 20,0 Z M7.99009,25.07344 C7.42629,25.96794 8.52579,26.97594 9.36809,26.33674 L15.67879,21.54734 C16.10569,21.22334 16.69559,21.22164 17.12429,21.54314 L21.79709,25.04774 C23.19919,26.09944 25.20039,25.73014 26.13499,24.24744 L32.00999,14.92654 C32.57369,14.03204 31.47419,13.02404 30.63189,13.66324 L24.32119,18.45264 C23.89429,18.77664 23.30439,18.77834 22.87569,18.45674 L18.20299,14.95224 C16.80079,13.90064 14.79959,14.26984 13.86509,15.75264 L7.99009,25.07344 Z"
})))))))));
};
const Messenger = _ref => {
let {
color = ''
} = _ref,
props = _objectWithoutProperties(_ref, _excluded);
const {
providerKey: provKey
} = (0, _useProvider.default)();
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(CustomerChat, _extends({
color: color,
providerKey: provKey
}, props)), /*#__PURE__*/_react.default.createElement(Widget, {
color: color
}));
};
var _default = Messenger;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL01lc3Nlbmdlci9pbmRleC50c3giXSwibmFtZXMiOlsic3R5bGVzIiwiYXBwZWFyYW5jZSIsImJhY2tncm91bmQiLCJib3JkZXJSYWRpdXMiLCJib3R0b20iLCJkaXNwbGF5IiwiaGVpZ2h0IiwicGFkZGluZyIsInBvc2l0aW9uIiwicmlnaHQiLCJ0b3AiLCJ3aWR0aCIsInpJbmRleCIsIm92ZXJmbG93IiwiYm94U2hhZG93IiwidHJhbnNpdGlvbiIsImN1cnNvciIsIm91dGxpbmUiLCJ1c2VyU2VsZWN0IiwiQ3VzdG9tZXJDaGF0IiwicHJvdmlkZXJLZXkiLCJjb2xvciIsImxvZ2dlZEluR3JlZXRpbmciLCJsb2dnZWRPdXRHcmVldGluZyIsImdyZWV0aW5nRGlhbG9nRGlzcGxheSIsImdyZWV0aW5nRGlhbG9nRGVsYXkiLCJmaWVsZHMiLCJwYWdlX2lkIiwidGhlbWVfY29sb3IiLCJsb2dnZWRfaW5fZ3JlZXRpbmciLCJsb2dnZWRfb3V0X2dyZWV0aW5nIiwiZ3JlZXRpbmdfZGlhbG9nX2Rpc3BsYXkiLCJncmVldGluZ19kaWFsb2dfZGVsYXkiLCJXaWRnZXQiLCJzdGF0ZSIsImxvYWRDaGF0IiwibG9hZFdoZW5JZGxlIiwib3BlbiIsIk1lc3NlbmdlciIsInByb3BzIiwicHJvdktleSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUdBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsTUFBTUEsTUFBcUIsR0FBRztBQUM1QkMsRUFBQUEsVUFBVSxFQUFFLE1BRGdCO0FBRTVCQyxFQUFBQSxVQUFVLEVBQUUsTUFGZ0I7QUFHNUJDLEVBQUFBLFlBQVksRUFBRSxLQUhjO0FBSTVCQyxFQUFBQSxNQUFNLEVBQUUsTUFKb0I7QUFLNUJDLEVBQUFBLE9BQU8sRUFBRSxRQUxtQjtBQU01QkMsRUFBQUEsTUFBTSxFQUFFLE1BTm9CO0FBTzVCQyxFQUFBQSxPQUFPLEVBQUUsS0FQbUI7QUFRNUJDLEVBQUFBLFFBQVEs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QSxFQUFFLEVBQUMsTUFBTjtBQUFhLElBQUEsU0FBUyxFQUFDO0FBQXZCLGtCQUNFO0FBQU0sSUFBQSxDQUFDLEVBQUM7QUFBUixJQURGLENBREYsQ0FERixDQUZGLENBREYsQ0FERixDQURGLENBVEYsQ0FERjtBQTRCRCxDQW5DRDs7QUFxQ0EsTUFBTWlCLFNBQVMsR0FBRyxRQUFrRDtBQUFBLE1BQWpEO0FBQUVqQixJQUFBQSxLQUFLLEdBQUc7QUFBVixHQUFpRDtBQUFBLE1BQWhDa0IsS0FBZ0M7O0FBQ2xFLFFBQU07QUFBRW5CLElBQUFBLFdBQVcsRUFBRW9CO0FBQWYsTUFBMkIsMkJBQWpDO0FBRUEsc0JBQ0UseUVBQ0UsNkJBQUMsWUFBRDtBQUFjLElBQUEsS0FBSyxFQUFFbkIsS0FBckI7QUFBNEIsSUFBQSxXQUFXLEVBQUVtQjtBQUF6QyxLQUFzREQsS0FBdEQsRUFERixlQUVFLDZCQUFDLE1BQUQ7QUFBUSxJQUFBLEtBQUssRUFBRWxCO0FBQWYsSUFGRixDQURGO0FBTUQsQ0FURDs7ZUFXZWlCLFMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgQ1NTUHJvcGVydGllcywgbWVtbyB9IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHVzZVByb3ZpZGVyIGZyb20gJy4uLy4uL2hvb2tzL3VzZVByb3ZpZGVyJ1xuaW1wb3J0IHVzZUNoYXQgZnJvbSAnLi4vLi4vaG9va3MvdXNlQ2hhdCdcblxuY29uc3Qgc3R5bGVzOiBDU1NQcm9wZXJ0aWVzID0ge1xuICBhcHBlYXJhbmNlOiAnbm9uZScsXG4gIGJhY2tncm91bmQ6ICdub25lJyxcbiAgYm9yZGVyUmFkaXVzOiAnNTAlJyxcbiAgYm90dG9tOiAnMThwdCcsXG4gIGRpc3BsYXk6ICdpbmxpbmUnLFxuICBoZWlnaHQ6ICc0NXB0JyxcbiAgcGFkZGluZzogJzBweCcsXG4gIHBvc2l0aW9uOiAnZml4ZWQnLFxuICByaWdodDogJzE4cHQnLFxuICB0b3A6ICdhdXRvJyxcbiAgd2lkdGg6ICc0NXB0JyxcbiAgekluZGV4OiAyMTQ3NDgzNjQ3LCAvLyAxIG1vcmUgdGhhbiB0aGUgYWN0dWFsIHdpZGdldFxuICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gIGJveFNoYWRvdzogJzAgM3B4IDEycHggcmdiYSgwLCAwLCAwLCAuMTUpJyxcbiAgdHJhbnNpdGlvbjogJ2JveC1zaGFkb3cgMTUwbXMgbGluZWFyJyxcbiAgY3Vyc29yOiAncG9pbnRlcicsXG4gIG91dGxpbmU6ICdub25lJyxcbiAgdXNlclNlbGVjdDogJ25vbmUnXG59XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIHByb3ZpZGVyS2V5OiBQcm92aWRlciB8IHVuZGVmaW5lZFxuICB0aGVtZUNvbG9yPzogc3RyaW5nXG4gIGxvZ2dlZEluR3JlZXRpbmc/OiBzdHJpbmdcbiAgbG9nZ2VkT3V0R3JlZXRpbmc/OiBzdHJpbmdcbiAgc2hvdz86IHN0cmluZ1xuICBoaWRlPzogc3RyaW5nXG4gIGZhZGU/OiBzdHJpbmdcbiAgZ3JlZXRpbmdEaWFsb2dEZWxheT86IHN0cmluZ1xuICBncmVldGluZ0RpYWxvZ0Rpc3BsYXk/OiBzdHJpbmdcbiAgY29sb3I/OiBzdHJpbmdcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2Rpc3BsYXktbmFtZVxuY29uc3QgQ3VzdG9tZXJDaGF0ID0gbWVtbyhcbiAgKHtcbiAgICBwcm92aWRlcktleSxcbiAgICBjb2xvcixcbiAgICBsb2dnZWRJbkdyZWV0aW5nLFxuICAgIGxvZ2dlZE91dEdyZWV0aW5nLFxuICAgIGdyZWV0aW5nRGlhbG9nRGlzcGxheSxcbiAgICBncmVldGluZ0RpYWxvZ0RlbGF5XG4gIH06IFByb3BzKSA9PiB7XG4gICAgY29uc3QgZmllbGRzID0ge1xuICAgICAgcGFnZV9pZDogcHJvdmlkZXJLZXksXG4gICAgICB0aGVtZV9jb2xvcjogY29sb3IsXG4gICAgICBsb2dnZWRfaW5fZ3JlZXRpbmc6IGxvZ2dlZEluR3JlZXRpbmcsXG4gICAgICBsb2dnZWRfb3V0X2dyZWV0aW5nOiBsb2dnZWRPdXRHcmVldGluZyxcbiAgICAgIGdyZWV0aW5nX2RpYWxvZ19kaXNwbGF5OiBncmVldGluZ0RpYWxvZ0Rpc3BsYXksXG4gICAgICBncmVldGluZ19kaWFsb2dfZGVsYXk6IGdyZWV0aW5nRGlhbG9nRGVsYXlcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmYi1jdXN0b21lcmNoYXRcIiB7Li4uZmllbGRzfSAvPlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG4pXG5cbmNvbnN0IFdpZGdldCA9ICh7IGNvbG9yIH06IHsgY29sb3I6IHN0cmluZyB9KTogSlNYLkVsZW1lbnQgfCBudWxsID0+IHtcbiAgY29uc3QgW3N0YXRlLCBsb2FkQ2hhdF0gPSB1c2VDaGF0KHsgbG9hZFdoZW5JZGxlOiB0cnVlIH0pXG5cbiAgaWYgKHN0YXRlID09PSAnY29tcGxldGUnKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgc3R5bGU9e3N0eWxlc31cbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgYXJpYS1sYWJlbD1cIkxvYWQgQ2hhdFwiXG4gICAgICBhcmlhLWJ1c3k9XCJ0cnVlXCJcbiAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICBvbkNsaWNrPXsoKSA9PiBsb2FkQ2hhdCh7IG9wZW46IHRydWUgfSl9XG4gICAgICBvbk1vdXNlRW50ZXI9eygpID0+IGxvYWRDaGF0KHsgb3BlbjogZmFsc2UgfSl9XG4gICAgPlxuICAgICAgPHN2ZyB3aWR0aD1cIjYwcHhcIiBoZWlnaHQ9XCI2MHB4XCIgdmlld0JveD1cIjAgMCA2MCA2MFwiPlxuICAgICAgICA8c3ZnIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjYwcHhcIiBoZWlnaHQ9XCI2MHB4XCI+XG4gICAgICAgICAgPGcgc3Ryb2tlPVwibm9uZVwiIHN0cm9rZVdpZHRoPVwiMVwiIGZpbGw9XCJub25lXCIgZmlsbFJ1bGU9XCJldmVub2RkXCI+XG4gICAgICAgICAgICA8Zz5cbiAgICAgICAgICAgICAgPGNpcmNsZSBmaWxsPXtjb2xvciA/IGNvbG9yIDogJyMwMDg0RkYnfSBjeD1cIjMwXCIgY3k9XCIzMFwiIHI9XCIzMFwiIC8+XG4gICAgICAgICAgICAgIDxzdmcgeD1cIjEwXCIgeT1cIjEwXCI+XG4gICAgICAgICAgICAgICAgPGcgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuMDAwMDAwLCAtMTAuMDAwMDAwKVwiIGZpbGw9XCIjRkZGRkZGXCI+XG4gICAgICAgICAgICAgICAgICA8ZyBpZD1cImxvZ29cIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC4wMDAwMDAsIDEwLjAwMDAwMClcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yMCwwIEMzMS4yNjY2LDAgNDAsOC4yNTI4IDQwLDE5LjQgQzQwLDMwLjU0NzIgMzEuMjY2NiwzOC44IDIwLDM4LjggQzE3Ljk3NjMsMzguOCAxNi4wMzQ4LDM4LjUzMjcgMTQuMjEwNiwzOC4wMzExIEMxMy44NTYsMzcuOTMzNSAxMy40Nzg5LDM3Ljk2MTIgMTMuMTQyNCwzOC4xMDk4IEw5LjE3MjcsMzkuODYyMSBDOC4xMzQzLDQwLjMyMDUgNi45NjIxLDM5LjU4MTkgNi45MjczLDM4LjQ0NzQgTDYuODE4NCwzNC44ODk0IEM2LjgwNSwzNC40NTEzIDYuNjA3OCwzNC4wNDE0IDYuMjgxMSwzMy43NDkyIEMyLjM4OTYsMzAuMjY5MSAwLDI1LjIzMDcgMCwxOS40IEMwLDguMjUyOCA4LjczMzQsMCAyMCwwIFogTTcuOTkwMDksMjUuMDczNDQgQzcuNDI2MjksMjUuOTY3OTQgOC41MjU3OSwyNi45NzU5NCA5LjM2ODA5LDI2LjMzNjc0IEwxNS42Nzg3OSwyMS41NDczNCBDMTYuMTA1NjksMjEuMjIzMzQgMTYuNjk1NTksMjEuMjIxNjQgMTcuMTI0MjksMjEuNTQzMTQgTDIxLjc5NzA5LDI1LjA0Nzc0IEMyMy4xOTkxOSwyNi4wOTk0NCAyNS4yMDAzOSwyNS43MzAxNCAyNi4xMzQ5OSwyNC4yNDc0NCBMMzIuMDA5OTksMTQuOTI2NTQgQzMyLjU3MzY5LDE0LjAzMjA0IDMxLjQ3NDE5LDEzLjAyNDA0IDMwLjYzMTg5LDEzLjY2MzI0IEwyNC4zMjExOSwxOC40NTI2NCBDMjMuODk0MjksMTguNzc2NjQgMjMuMzA0MzksMTguNzc4MzQgMjIuODc1NjksMTguNDU2NzQgTDE4LjIwMjk5LDE0Ljk1MjI0IEMxNi44MDA3OSwxMy45MDA2NCAxNC43OTk1OSwxNC4yNjk4NCAxMy44NjUwOSwxNS43NTI2NCBMNy45OTAwOSwyNS4wNzM0NCBaXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9nPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgKVxufVxuXG5jb25zdCBNZXNzZW5nZXIgPSAoeyBjb2xvciA9ICcnLCAuLi5wcm9wcyB9OiBQcm9wcyk6IEpTWC5FbGVtZW50ID0+IHtcbiAgY29uc3QgeyBwcm92aWRlcktleTogcHJvdktleSB9ID0gdXNlUHJvdmlkZXIoKVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxDdXN0b21lckNoYXQgY29sb3I9e2NvbG9yfSBwcm92aWRlcktleT17cHJvdktleX0gey4uLnByb3BzfSAvPlxuICAgICAgPFdpZGdldCBjb2xvcj17Y29sb3J9IC8+XG4gICAgPC8+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgTWVzc2VuZ2VyXG4iXX0=