UNPKG

tb-react-live-chat-loader

Version:

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

79 lines (64 loc) 8 kB
import waitForLoad from "../utils/waitForLoad"; const domain = 'https://connect.facebook.net'; /* eslint-disable */ const loadScript = locale => { if (window.FB) return false; (function loadFacebookSDK(d, s, id) { // fetch customerchat.js const fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) { return; } const js = d.createElement(s); js.id = id; js.src = `${domain}/${locale}/sdk/xfbml.customerchat.js`; if (fjs) { var _fjs$parentNode; (_fjs$parentNode = fjs.parentNode) === null || _fjs$parentNode === void 0 ? void 0 : _fjs$parentNode.insertBefore(js, fjs); } else { d.body.appendChild(js); } })(window.document, 'script', 'facebook-jssdk'); return true; }; /* eslint-enable */ const load = ({ appID, locale = 'en_US', setState, beforeInit = () => undefined, onReady = () => undefined }) => { const loaded = loadScript(locale); // Continue as long as messenger hasn’t already been initialised. if (loaded) { beforeInit(); window.fbAsyncInit = function () { window.FB.init(Object.assign({ cookie: true, xfbml: true, version: 'v6.0' }, appID ? { appId: appID } : {})); window.FB.Event.subscribe('customerchat.load', () => // Allow messenger to complete loading before removing fake widget setTimeout(() => { setState('complete'); onReady(); }, 3000)); }; } return loaded; }; const open = () => { waitForLoad(() => { var _window$FB, _window$FB$CustomerCh; return !!((_window$FB = window.FB) !== null && _window$FB !== void 0 && (_window$FB$CustomerCh = _window$FB.CustomerChat) !== null && _window$FB$CustomerCh !== void 0 && _window$FB$CustomerCh.show); }, // messenger is slow to show once it has loaded () => setTimeout(() => window.FB.CustomerChat.show(true), 2000)); }; export default { domain, load, open }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aWRlcnMvbWVzc2VuZ2VyLnRzIl0sIm5hbWVzIjpbIndhaXRGb3JMb2FkIiwiZG9tYWluIiwibG9hZFNjcmlwdCIsImxvY2FsZSIsIndpbmRvdyIsIkZCIiwibG9hZEZhY2Vib29rU0RLIiwiZCIsInMiLCJpZCIsImZqcyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiZ2V0RWxlbWVudEJ5SWQiLCJqcyIsImNyZWF0ZUVsZW1lbnQiLCJzcmMiLCJwYXJlbnROb2RlIiwiaW5zZXJ0QmVmb3JlIiwiYm9keSIsImFwcGVuZENoaWxkIiwiZG9jdW1lbnQiLCJsb2FkIiwiYXBwSUQiLCJzZXRTdGF0ZSIsImJlZm9yZUluaXQiLCJ1bmRlZmluZWQiLCJvblJlYWR5IiwibG9hZGVkIiwiZmJBc3luY0luaXQiLCJpbml0IiwiT2JqZWN0IiwiYXNzaWduIiwiY29va2llIiwieGZibWwiLCJ2ZXJzaW9uIiwiYXBwSWQiLCJFdmVudCIsInN1YnNjcmliZSIsInNldFRpbWVvdXQiLCJvcGVuIiwiQ3VzdG9tZXJDaGF0Iiwic2hvdyJdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBT0EsV0FBUDtBQUVBLE1BQU1DLE1BQU0sR0FBRyw4QkFBZjs7QUFVQTtBQUNBLE1BQU1DLFVBQVUsR0FBSUMsTUFBRCxJQUE2QjtBQUM5QyxNQUFJQyxNQUFNLENBQUNDLEVBQVgsRUFBZSxPQUFPLEtBQVA7O0FBQ2QsR0FBQyxTQUFTQyxlQUFULENBQXlCQyxDQUF6QixFQUE0QkMsQ0FBNUIsRUFBK0JDLEVBQS9CLEVBQW1DO0FBQ25DO0FBQ0EsVUFBTUMsR0FBRyxHQUFHSCxDQUFDLENBQUNJLG9CQUFGLENBQXVCSCxDQUF2QixFQUEwQixDQUExQixDQUFaOztBQUNBLFFBQUlELENBQUMsQ0FBQ0ssY0FBRixDQUFpQkgsRUFBakIsQ0FBSixFQUEwQjtBQUN4QjtBQUNEOztBQUNELFVBQU1JLEVBQUUsR0FBR04sQ0FBQyxDQUFDTyxhQUFGLENBQWdCTixDQUFoQixDQUFYO0FBQ0FLLElBQUFBLEVBQUUsQ0FBQ0osRUFBSCxHQUFRQSxFQUFSO0FBQ0FJLElBQUFBLEVBQUUsQ0FBQ0UsR0FBSCxHQUFVLEdBQUVkLE1BQU8sSUFBR0UsTUFBTyw0QkFBN0I7O0FBQ0EsUUFBSU8sR0FBSixFQUFTO0FBQUE7O0FBQ1AseUJBQUFBLEdBQUcsQ0FBQ00sVUFBSixvRUFBZ0JDLFlBQWhCLENBQTZCSixFQUE3QixFQUFpQ0gsR0FBakM7QUFDRCxLQUZELE1BRU87QUFDTEgsTUFBQUEsQ0FBQyxDQUFDVyxJQUFGLENBQU9DLFdBQVAsQ0FBbUJOLEVBQW5CO0FBQ0Q7QUFDRixHQWRBLEVBY0VULE1BQU0sQ0FBQ2dCLFFBZFQsRUFjbUIsUUFkbkIsRUFjNkIsZ0JBZDdCOztBQWVELFNBQU8sSUFBUDtBQUNELENBbEJEO0FBbUJBOzs7QUFFQSxNQUFNQyxJQUFJLEdBQUcsQ0FBQztBQUNaQyxFQUFBQSxLQURZO0FBRVpuQixFQUFBQSxNQUFNLEdBQUcsT0FGRztBQUdab0IsRUFBQUEsUUFIWTtBQUlaQyxFQUFBQSxVQUFVLEdBQUcsTUFBTUMsU0FKUDtBQUtaQyxFQUFBQSxPQUFPLEdBQUcsTUFBTUQ7QUFMSixDQUFELEtBWUU7QUFDYixRQUFNRSxNQUFNLEdBQUd6QixVQUFVLENBQUNDLE1BQUQsQ0FBekIsQ0FEYSxDQUViOztBQUNBLE1BQUl3QixNQUFKLEVBQVk7QUFDVkgsSUFBQUEsVUFBVTs7QUFDVnBCLElBQUFBLE1BQU0sQ0FBQ3dCLFdBQVAsR0FBcUIsWUFBVztBQUM5QnhCLE1BQUFBLE1BQU0sQ0FBQ0MsRUFBUCxDQUFVd0IsSUFBVixDQUNFQyxNQUFNLENBQUNDLE1BQVAsQ0FDRTtBQUNFQyxRQUFBQSxNQUFNLEVBQUUsSUFEVjtBQUVFQyxRQUFBQSxLQUFLLEVBQUUsSUFGVDtBQUdFQyxRQUFBQSxPQUFPLEVBQUU7QUFIWCxPQURGLEVBTUVaLEtBQUssR0FBRztBQUFFYSxRQUFBQSxLQUFLLEVBQUViO0FBQVQsT0FBSCxHQUFzQixFQU43QixDQURGO0FBVUFsQixNQUFBQSxNQUFNLENBQUNDLEVBQVAsQ0FBVStCLEtBQVYsQ0FBZ0JDLFNBQWhCLENBQTBCLG1CQUExQixFQUErQyxNQUM3QztBQUNBQyxNQUFBQSxVQUFVLENBQUMsTUFBTTtBQUNmZixRQUFBQSxRQUFRLENBQUMsVUFBRCxDQUFSO0FBQ0FHLFFBQUFBLE9BQU87QUFDUixPQUhTLEVBR1AsSUFITyxDQUZaO0FBT0QsS0FsQkQ7QUFtQkQ7O0FBRUQsU0FBT0MsTUFBUDtBQUNELENBdkNEOztBQXlDQSxNQUFNWSxJQUFJLEdBQUcsTUFBWTtBQUN2QnZDLEVBQUFBLFdBQVcsQ0FDVDtBQUFBOztBQUFBLFdBQU0sQ0FBQyxnQkFBQ0ksTUFBTSxDQUFDQyxFQUFSLGdFQUFDLFdBQVdtQyxZQUFaLGtEQUFDLHNCQUF5QkMsSUFBMUIsQ0FBUDtBQUFBLEdBRFMsRUFFVDtBQUNBLFFBQU1ILFVBQVUsQ0FBQyxNQUFNbEMsTUFBTSxDQUFDQyxFQUFQLENBQVVtQyxZQUFWLENBQXVCQyxJQUF2QixDQUE0QixJQUE1QixDQUFQLEVBQTBDLElBQTFDLENBSFAsQ0FBWDtBQUtELENBTkQ7O0FBUUEsZUFBZTtBQUNieEMsRUFBQUEsTUFEYTtBQUVib0IsRUFBQUEsSUFGYTtBQUdia0IsRUFBQUE7QUFIYSxDQUFmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhdGUgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB3YWl0Rm9yTG9hZCBmcm9tICcuLi91dGlscy93YWl0Rm9yTG9hZCdcblxuY29uc3QgZG9tYWluID0gJ2h0dHBzOi8vY29ubmVjdC5mYWNlYm9vay5uZXQnXG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIEZCOiBhbnlcbiAgICBmYkFzeW5jSW5pdDogKCkgPT4gdm9pZFxuICB9XG59XG5cbi8qIGVzbGludC1kaXNhYmxlICovXG5jb25zdCBsb2FkU2NyaXB0ID0gKGxvY2FsZTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gIGlmICh3aW5kb3cuRkIpIHJldHVybiBmYWxzZVxuICA7KGZ1bmN0aW9uIGxvYWRGYWNlYm9va1NESyhkLCBzLCBpZCkge1xuICAgIC8vIGZldGNoIGN1c3RvbWVyY2hhdC5qc1xuICAgIGNvbnN0IGZqcyA9IGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUocylbMF1cbiAgICBpZiAoZC5nZXRFbGVtZW50QnlJZChpZCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBqcyA9IGQuY3JlYXRlRWxlbWVudChzKSBhcyBhbnlcbiAgICBqcy5pZCA9IGlkXG4gICAganMuc3JjID0gYCR7ZG9tYWlufS8ke2xvY2FsZX0vc2RrL3hmYm1sLmN1c3RvbWVyY2hhdC5qc2BcbiAgICBpZiAoZmpzKSB7XG4gICAgICBmanMucGFyZW50Tm9kZT8uaW5zZXJ0QmVmb3JlKGpzLCBmanMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGQuYm9keS5hcHBlbmRDaGlsZChqcylcbiAgICB9XG4gIH0pKHdpbmRvdy5kb2N1bWVudCwgJ3NjcmlwdCcsICdmYWNlYm9vay1qc3NkaycpXG4gIHJldHVybiB0cnVlXG59XG4vKiBlc2xpbnQtZW5hYmxlICovXG5cbmNvbnN0IGxvYWQgPSAoe1xuICBhcHBJRCxcbiAgbG9jYWxlID0gJ2VuX1VTJyxcbiAgc2V0U3RhdGUsXG4gIGJlZm9yZUluaXQgPSAoKSA9PiB1bmRlZmluZWQsXG4gIG9uUmVhZHkgPSAoKSA9PiB1bmRlZmluZWRcbn06IHtcbiAgYXBwSUQ/OiBzdHJpbmdcbiAgbG9jYWxlPzogc3RyaW5nXG4gIHNldFN0YXRlOiAoc3RhdGU6IFN0YXRlKSA9PiB2b2lkXG4gIGJlZm9yZUluaXQ/OiAoKSA9PiB2b2lkXG4gIG9uUmVhZHk/OiAoKSA9PiB2b2lkXG59KTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IGxvYWRlZCA9IGxvYWRTY3JpcHQobG9jYWxlKVxuICAvLyBDb250aW51ZSBhcyBsb25nIGFzIG1lc3NlbmdlciBoYXNu4oCZdCBhbHJlYWR5IGJlZW4gaW5pdGlhbGlzZWQuXG4gIGlmIChsb2FkZWQpIHtcbiAgICBiZWZvcmVJbml0KClcbiAgICB3aW5kb3cuZmJBc3luY0luaXQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHdpbmRvdy5GQi5pbml0KFxuICAgICAgICBPYmplY3QuYXNzaWduKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvb2tpZTogdHJ1ZSxcbiAgICAgICAgICAgIHhmYm1sOiB0cnVlLFxuICAgICAgICAgICAgdmVyc2lvbjogJ3Y2LjAnXG4gICAgICAgICAgfSxcbiAgICAgICAgICBhcHBJRCA/IHsgYXBwSWQ6IGFwcElEIH0gOiB7fVxuICAgICAgICApXG4gICAgICApXG4gICAgICB3aW5kb3cuRkIuRXZlbnQuc3Vic2NyaWJlKCdjdXN0b21lcmNoYXQubG9hZCcsICgpID0+XG4gICAgICAgIC8vIEFsbG93IG1lc3NlbmdlciB0byBjb21wbGV0ZSBsb2FkaW5nIGJlZm9yZSByZW1vdmluZyBmYWtlIHdpZGdldFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBzZXRTdGF0ZSgnY29tcGxldGUnKVxuICAgICAgICAgIG9uUmVhZHkoKVxuICAgICAgICB9LCAzMDAwKVxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBsb2FkZWRcbn1cblxuY29uc3Qgb3BlbiA9ICgpOiB2b2lkID0+IHtcbiAgd2FpdEZvckxvYWQoXG4gICAgKCkgPT4gISF3aW5kb3cuRkI/LkN1c3RvbWVyQ2hhdD8uc2hvdyxcbiAgICAvLyBtZXNzZW5nZXIgaXMgc2xvdyB0byBzaG93IG9uY2UgaXQgaGFzIGxvYWRlZFxuICAgICgpID0+IHNldFRpbWVvdXQoKCkgPT4gd2luZG93LkZCLkN1c3RvbWVyQ2hhdC5zaG93KHRydWUpLCAyMDAwKVxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZG9tYWluLFxuICBsb2FkLFxuICBvcGVuXG59XG4iXX0=