UNPKG

tb-react-live-chat-loader

Version:

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

30 lines (23 loc) 3.56 kB
const requestIdleCallback = typeof window !== 'undefined' ? window.requestIdleCallback : null; const waitForLoad = (check, callback) => { let elapsedTime = 0; // If the provider fails to load we don't want to keep checking continuously // therefore we set a max duration we're willing to wait before executing the callback const maxWaitDuration = 10000; // If the browser does not support requestIdleCallback we'll wait the fallback duration // before executing the callback const fallbackDuration = 1000; const scheduleLoad = deadline => { if (check() || elapsedTime >= maxWaitDuration) { callback(); return; } elapsedTime += deadline.timeRemaining(); requestIdleCallback === null || requestIdleCallback === void 0 ? void 0 : requestIdleCallback(scheduleLoad); }; if (requestIdleCallback) { requestIdleCallback(scheduleLoad); } else { setTimeout(callback, fallbackDuration); } }; export default waitForLoad; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy93YWl0Rm9yTG9hZC50cyJdLCJuYW1lcyI6WyJyZXF1ZXN0SWRsZUNhbGxiYWNrIiwid2luZG93Iiwid2FpdEZvckxvYWQiLCJjaGVjayIsImNhbGxiYWNrIiwiZWxhcHNlZFRpbWUiLCJtYXhXYWl0RHVyYXRpb24iLCJmYWxsYmFja0R1cmF0aW9uIiwic2NoZWR1bGVMb2FkIiwiZGVhZGxpbmUiLCJ0aW1lUmVtYWluaW5nIiwic2V0VGltZW91dCJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsbUJBQW1CLEdBQ3ZCLE9BQU9DLE1BQVAsS0FBa0IsV0FBbEIsR0FBZ0NBLE1BQU0sQ0FBQ0QsbUJBQXZDLEdBQTZELElBRC9EOztBQUdBLE1BQU1FLFdBQVcsR0FBRyxDQUFDQyxLQUFELEVBQXVCQyxRQUF2QixLQUFzRDtBQUN4RSxNQUFJQyxXQUFXLEdBQUcsQ0FBbEIsQ0FEd0UsQ0FFeEU7QUFDQTs7QUFDQSxRQUFNQyxlQUFlLEdBQUcsS0FBeEIsQ0FKd0UsQ0FLeEU7QUFDQTs7QUFDQSxRQUFNQyxnQkFBZ0IsR0FBRyxJQUF6Qjs7QUFFQSxRQUFNQyxZQUFZLEdBQUlDLFFBQUQsSUFBNEI7QUFDL0MsUUFBSU4sS0FBSyxNQUFNRSxXQUFXLElBQUlDLGVBQTlCLEVBQStDO0FBQzdDRixNQUFBQSxRQUFRO0FBQ1I7QUFDRDs7QUFFREMsSUFBQUEsV0FBVyxJQUFJSSxRQUFRLENBQUNDLGFBQVQsRUFBZjtBQUNBVixJQUFBQSxtQkFBbUIsU0FBbkIsSUFBQUEsbUJBQW1CLFdBQW5CLFlBQUFBLG1CQUFtQixDQUFHUSxZQUFILENBQW5CO0FBQ0QsR0FSRDs7QUFVQSxNQUFJUixtQkFBSixFQUF5QjtBQUN2QkEsSUFBQUEsbUJBQW1CLENBQUNRLFlBQUQsQ0FBbkI7QUFDRCxHQUZELE1BRU87QUFDTEcsSUFBQUEsVUFBVSxDQUFDUCxRQUFELEVBQVdHLGdCQUFYLENBQVY7QUFDRDtBQUNGLENBeEJEOztBQTBCQSxlQUFlTCxXQUFmIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgcmVxdWVzdElkbGVDYWxsYmFjayA9XG4gIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LnJlcXVlc3RJZGxlQ2FsbGJhY2sgOiBudWxsXG5cbmNvbnN0IHdhaXRGb3JMb2FkID0gKGNoZWNrOiAoKSA9PiBib29sZWFuLCBjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQgPT4ge1xuICBsZXQgZWxhcHNlZFRpbWUgPSAwXG4gIC8vIElmIHRoZSBwcm92aWRlciBmYWlscyB0byBsb2FkIHdlIGRvbid0IHdhbnQgdG8ga2VlcCBjaGVja2luZyBjb250aW51b3VzbHlcbiAgLy8gdGhlcmVmb3JlIHdlIHNldCBhIG1heCBkdXJhdGlvbiB3ZSdyZSB3aWxsaW5nIHRvIHdhaXQgYmVmb3JlIGV4ZWN1dGluZyB0aGUgY2FsbGJhY2tcbiAgY29uc3QgbWF4V2FpdER1cmF0aW9uID0gMTAwMDBcbiAgLy8gSWYgdGhlIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCByZXF1ZXN0SWRsZUNhbGxiYWNrIHdlJ2xsIHdhaXQgdGhlIGZhbGxiYWNrIGR1cmF0aW9uXG4gIC8vIGJlZm9yZSBleGVjdXRpbmcgdGhlIGNhbGxiYWNrXG4gIGNvbnN0IGZhbGxiYWNrRHVyYXRpb24gPSAxMDAwXG5cbiAgY29uc3Qgc2NoZWR1bGVMb2FkID0gKGRlYWRsaW5lOiBJZGxlRGVhZGxpbmUpID0+IHtcbiAgICBpZiAoY2hlY2soKSB8fCBlbGFwc2VkVGltZSA+PSBtYXhXYWl0RHVyYXRpb24pIHtcbiAgICAgIGNhbGxiYWNrKClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGVsYXBzZWRUaW1lICs9IGRlYWRsaW5lLnRpbWVSZW1haW5pbmcoKVxuICAgIHJlcXVlc3RJZGxlQ2FsbGJhY2s/LihzY2hlZHVsZUxvYWQpXG4gIH1cblxuICBpZiAocmVxdWVzdElkbGVDYWxsYmFjaykge1xuICAgIHJlcXVlc3RJZGxlQ2FsbGJhY2soc2NoZWR1bGVMb2FkKVxuICB9IGVsc2Uge1xuICAgIHNldFRpbWVvdXQoY2FsbGJhY2ssIGZhbGxiYWNrRHVyYXRpb24pXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgd2FpdEZvckxvYWRcbiJdfQ==