UNPKG

tb-react-live-chat-loader

Version:

Implement live chat in your react app without taking a performance hit.

146 lines (128 loc) 16 kB
"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=