botframework-webchat-component
Version:
React component of botframework-webchat
57 lines (52 loc) • 11.7 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useForceRenderAtInterval;
var _botframeworkWebchatApi = require("botframework-webchat-api");
var _react = require("react");
var _mathRandom = _interopRequireDefault(require("math-random"));
var _useTimer = _interopRequireDefault(require("./useTimer"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _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(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
var usePonyfill = _botframeworkWebchatApi.hooks.usePonyfill;
// The `nextTimer` function calculates the next absolute time that the timer should be fired based on the origin (original time received), interval, and current time.
// If the origin is t=260, and we are currently at t=1000, nextTimer must return t=60260.
// If the origin is t=260, and we are currently at t=60260 (exact landing), we must return t=120260, not t=60260.
// This is for fixing bug #2103: https://github.com/microsoft/BotFramework-WebChat/issues/2103.
// False positive: we are using `Date` as a type.
// eslint-disable-next-line no-restricted-globals
function nextTimer(origin, interval, _ref) {
var Date = _ref.Date;
var time = new Date(origin).getTime();
var now = Date.now();
return time > now ? time : now + interval - (now - time) % interval;
}
function useForceRenderAtInterval(
// False positive: we are using `Date` as a type.
// eslint-disable-next-line no-restricted-globals
origin, interval, fn) {
var _usePonyfill = usePonyfill(),
_usePonyfill2 = _slicedToArray(_usePonyfill, 1),
ponyfill = _usePonyfill2[0];
var _useState = (0, _react.useState)(nextTimer(origin, interval, ponyfill)),
_useState2 = _slicedToArray(_useState, 2),
timer = _useState2[0],
setTimer = _useState2[1];
var handler = (0, _react.useCallback)(function () {
fn && fn();
// Chrome may fire the setTimeout callback 1 ms before its original schedule.
// Thus, when we calculate the "next" value, it will have the same value as before.
// Sending the same value to useTimer(), it will not do another schedule because the value did not change.
// So, we are adding a bit randomness, so useTimer() should pick up the newer scheduled time.
setTimer(nextTimer(origin, interval, ponyfill) + (0, _mathRandom.default)());
}, [fn, origin, interval, ponyfill]);
(0, _useTimer.default)(timer, handler);
return [timer, setTimer];
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYm90ZnJhbWV3b3JrV2ViY2hhdEFwaSIsInJlcXVpcmUiLCJfcmVhY3QiLCJfbWF0aFJhbmRvbSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXNlVGltZXIiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9zbGljZWRUb0FycmF5IiwiYXJyIiwiaSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJUeXBlRXJyb3IiLCJvIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJjYWxsIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwibGVuIiwibGVuZ3RoIiwiYXJyMiIsIl9pIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJfYXJyIiwiX24iLCJfZCIsIl9zIiwiX2UiLCJuZXh0IiwiZG9uZSIsInB1c2giLCJ2YWx1ZSIsImVyciIsImlzQXJyYXkiLCJ1c2VQb255ZmlsbCIsImhvb2tzIiwibmV4dFRpbWVyIiwib3JpZ2luIiwiaW50ZXJ2YWwiLCJfcmVmIiwiRGF0ZSIsInRpbWUiLCJnZXRUaW1lIiwibm93IiwidXNlRm9yY2VSZW5kZXJBdEludGVydmFsIiwiZm4iLCJfdXNlUG9ueWZpbGwiLCJfdXNlUG9ueWZpbGwyIiwicG9ueWZpbGwiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJ0aW1lciIsInNldFRpbWVyIiwiaGFuZGxlciIsInVzZUNhbGxiYWNrIiwicmFuZG9tIiwidXNlVGltZXIiXSwic291cmNlUm9vdCI6ImNvbXBvbmVudDovLy8iLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy9pbnRlcm5hbC91c2VGb3JjZVJlbmRlckF0SW50ZXJ2YWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaG9va3MgfSBmcm9tICdib3RmcmFtZXdvcmstd2ViY2hhdC1hcGknO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHJhbmRvbSBmcm9tICdtYXRoLXJhbmRvbSc7XG5cbmltcG9ydCB1c2VUaW1lciBmcm9tICcuL3VzZVRpbWVyJztcblxuaW1wb3J0IHR5cGUgeyBEaXNwYXRjaCwgU2V0U3RhdGVBY3Rpb24gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7IEdsb2JhbFNjb3BlUG9ueWZpbGwgfSBmcm9tICdib3RmcmFtZXdvcmstd2ViY2hhdC1jb3JlJztcblxuY29uc3QgeyB1c2VQb255ZmlsbCB9ID0gaG9va3M7XG5cbi8vIFRoZSBgbmV4dFRpbWVyYCBmdW5jdGlvbiBjYWxjdWxhdGVzIHRoZSBuZXh0IGFic29sdXRlIHRpbWUgdGhhdCB0aGUgdGltZXIgc2hvdWxkIGJlIGZpcmVkIGJhc2VkIG9uIHRoZSBvcmlnaW4gKG9yaWdpbmFsIHRpbWUgcmVjZWl2ZWQpLCBpbnRlcnZhbCwgYW5kIGN1cnJlbnQgdGltZS5cbi8vIElmIHRoZSBvcmlnaW4gaXMgdD0yNjAsIGFuZCB3ZSBhcmUgY3VycmVudGx5IGF0IHQ9MTAwMCwgbmV4dFRpbWVyIG11c3QgcmV0dXJuIHQ9NjAyNjAuXG4vLyBJZiB0aGUgb3JpZ2luIGlzIHQ9MjYwLCBhbmQgd2UgYXJlIGN1cnJlbnRseSBhdCB0PTYwMjYwIChleGFjdCBsYW5kaW5nKSwgd2UgbXVzdCByZXR1cm4gdD0xMjAyNjAsIG5vdCB0PTYwMjYwLlxuLy8gVGhpcyBpcyBmb3IgZml4aW5nIGJ1ZyAjMjEwMzogaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9Cb3RGcmFtZXdvcmstV2ViQ2hhdC9pc3N1ZXMvMjEwMy5cblxuLy8gRmFsc2UgcG9zaXRpdmU6IHdlIGFyZSB1c2luZyBgRGF0ZWAgYXMgYSB0eXBlLlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFsc1xuZnVuY3Rpb24gbmV4dFRpbWVyKG9yaWdpbjogRGF0ZSB8IG51bWJlciB8IHN0cmluZywgaW50ZXJ2YWw6IG51bWJlciwgeyBEYXRlIH06IEdsb2JhbFNjb3BlUG9ueWZpbGwpOiBudW1iZXIge1xuICBjb25zdCB0aW1lID0gbmV3IERhdGUob3JpZ2luKS5nZXRUaW1lKCk7XG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cbiAgcmV0dXJuIHRpbWUgPiBub3cgPyB0aW1lIDogbm93ICsgaW50ZXJ2YWwgLSAoKG5vdyAtIHRpbWUpICUgaW50ZXJ2YWwpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VGb3JjZVJlbmRlckF0SW50ZXJ2YWwoXG4gIC8vIEZhbHNlIHBvc2l0aXZlOiB3ZSBhcmUgdXNpbmcgYERhdGVgIGFzIGEgdHlwZS5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFsc1xuICBvcmlnaW46IERhdGUgfCBudW1iZXIgfCBzdHJpbmcsXG4gIGludGVydmFsOiBudW1iZXIsXG4gIGZuOiAoKSA9PiB2b2lkXG4pOiBbbnVtYmVyLCBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxudW1iZXI+Pl0ge1xuICBjb25zdCBbcG9ueWZpbGxdID0gdXNlUG9ueWZpbGwoKTtcbiAgY29uc3QgW3RpbWVyLCBzZXRUaW1lcl0gPSB1c2VTdGF0ZTxudW1iZXI+KG5leHRUaW1lcihvcmlnaW4sIGludGVydmFsLCBwb255ZmlsbCkpO1xuICBjb25zdCBoYW5kbGVyID0gdXNlQ2FsbGJhY2s8KCkgPT4gdm9pZD4oKCkgPT4ge1xuICAgIGZuICYmIGZuKCk7XG5cbiAgICAvLyBDaHJvbWUgbWF5IGZpcmUgdGhlIHNldFRpbWVvdXQgY2FsbGJhY2sgMSBtcyBiZWZvcmUgaXRzIG9yaWdpbmFsIHNjaGVkdWxlLlxuICAgIC8vIFRodXMsIHdoZW4gd2UgY2FsY3VsYXRlIHRoZSBcIm5leHRcIiB2YWx1ZSwgaXQgd2lsbCBoYXZlIHRoZSBzYW1lIHZhbHVlIGFzIGJlZm9yZS5cbiAgICAvLyBTZW5kaW5nIHRoZSBzYW1lIHZhbHVlIHRvIHVzZVRpbWVyKCksIGl0IHdpbGwgbm90IGRvIGFub3RoZXIgc2NoZWR1bGUgYmVjYXVzZSB0aGUgdmFsdWUgZGlkIG5vdCBjaGFuZ2UuXG4gICAgLy8gU28sIHdlIGFyZSBhZGRpbmcgYSBiaXQgcmFuZG9tbmVzcywgc28gdXNlVGltZXIoKSBzaG91bGQgcGljayB1cCB0aGUgbmV3ZXIgc2NoZWR1bGVkIHRpbWUuXG5cbiAgICBzZXRUaW1lcihuZXh0VGltZXIob3JpZ2luLCBpbnRlcnZhbCwgcG9ueWZpbGwpICsgcmFuZG9tKCkpO1xuICB9LCBbZm4sIG9yaWdpbiwgaW50ZXJ2YWwsIHBvbnlmaWxsXSk7XG5cbiAgdXNlVGltZXIodGltZXIsIGhhbmRsZXIpO1xuXG4gIHJldHVybiBbdGltZXIsIHNldFRpbWVyXTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsdUJBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFdBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUVBLElBQUFJLFNBQUEsR0FBQUQsc0JBQUEsQ0FBQUgsT0FBQTtBQUFrQyxTQUFBRyx1QkFBQUUsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUFBLFNBQUFHLGVBQUFDLEdBQUEsRUFBQUMsQ0FBQSxXQUFBQyxlQUFBLENBQUFGLEdBQUEsS0FBQUcscUJBQUEsQ0FBQUgsR0FBQSxFQUFBQyxDQUFBLEtBQUFHLDJCQUFBLENBQUFKLEdBQUEsRUFBQUMsQ0FBQSxLQUFBSSxnQkFBQTtBQUFBLFNBQUFBLGlCQUFBLGNBQUFDLFNBQUE7QUFBQSxTQUFBRiw0QkFBQUcsQ0FBQSxFQUFBQyxNQUFBLFNBQUFELENBQUEscUJBQUFBLENBQUEsc0JBQUFFLGlCQUFBLENBQUFGLENBQUEs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
;