botframework-webchat-component
Version:
React component of botframework-webchat
46 lines (42 loc) • 8.2 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useTimer;
var _botframeworkWebchatApi = require("botframework-webchat-api");
var _react = require("react");
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;
// TODO: [P2] Dedupe this function from "api", possibly create a new "util" package.
/**
* Calls a callback function at a specific time.
*/
function useTimer(at, fn) {
var _usePonyfill = usePonyfill(),
_usePonyfill2 = _slicedToArray(_usePonyfill, 1),
_usePonyfill2$ = _usePonyfill2[0],
clearTimeout = _usePonyfill2$.clearTimeout,
Date = _usePonyfill2$.Date,
setTimeout = _usePonyfill2$.setTimeout;
(0, _react.useEffect)(function () {
if (typeof at === 'number') {
var ms = Math.max(0, at - Date.now());
// useEffect() is running after yielding to sync code via setImmediate (IE), MessageChannel (4ms), or setTimeout.
// Thus, when calling setTimeout(..., 0), under Lolex, it will be waited for another loop.
// In other words, setTimeout(..., 0) won't fire right away. It will be fired after clock.tick(<any number>).
if (ms) {
var timeout = setTimeout(fn, ms);
return function () {
return clearTimeout(timeout);
};
}
fn();
}
}, [at, clearTimeout, Date, fn, setTimeout]);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYm90ZnJhbWV3b3JrV2ViY2hhdEFwaSIsInJlcXVpcmUiLCJfcmVhY3QiLCJfc2xpY2VkVG9BcnJheSIsImFyciIsImkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwiVHlwZUVycm9yIiwibyIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwibiIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwiY2FsbCIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiQXJyYXkiLCJmcm9tIiwidGVzdCIsImxlbiIsImxlbmd0aCIsImFycjIiLCJfaSIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiX2FyciIsIl9uIiwiX2QiLCJfcyIsIl9lIiwibmV4dCIsImRvbmUiLCJwdXNoIiwidmFsdWUiLCJlcnIiLCJpc0FycmF5IiwidXNlUG9ueWZpbGwiLCJob29rcyIsInVzZVRpbWVyIiwiYXQiLCJmbiIsIl91c2VQb255ZmlsbCIsIl91c2VQb255ZmlsbDIiLCJfdXNlUG9ueWZpbGwyJCIsImNsZWFyVGltZW91dCIsIkRhdGUiLCJzZXRUaW1lb3V0IiwidXNlRWZmZWN0IiwibXMiLCJNYXRoIiwibWF4Iiwibm93IiwidGltZW91dCJdLCJzb3VyY2VSb290IjoiY29tcG9uZW50Oi8vLyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL2ludGVybmFsL3VzZVRpbWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGhvb2tzIH0gZnJvbSAnYm90ZnJhbWV3b3JrLXdlYmNoYXQtYXBpJztcbmltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgeyB1c2VQb255ZmlsbCB9ID0gaG9va3M7XG5cbi8vIFRPRE86IFtQMl0gRGVkdXBlIHRoaXMgZnVuY3Rpb24gZnJvbSBcImFwaVwiLCBwb3NzaWJseSBjcmVhdGUgYSBuZXcgXCJ1dGlsXCIgcGFja2FnZS5cblxuLyoqXG4gKiBDYWxscyBhIGNhbGxiYWNrIGZ1bmN0aW9uIGF0IGEgc3BlY2lmaWMgdGltZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlVGltZXIoYXQ6IG51bWJlciwgZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgY29uc3QgW3sgY2xlYXJUaW1lb3V0LCBEYXRlLCBzZXRUaW1lb3V0IH1dID0gdXNlUG9ueWZpbGwoKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0eXBlb2YgYXQgPT09ICdudW1iZXInKSB7XG4gICAgICBjb25zdCBtcyA9IE1hdGgubWF4KDAsIGF0IC0gRGF0ZS5ub3coKSk7XG5cbiAgICAgIC8vIHVzZUVmZmVjdCgpIGlzIHJ1bm5pbmcgYWZ0ZXIgeWllbGRpbmcgdG8gc3luYyBjb2RlIHZpYSBzZXRJbW1lZGlhdGUgKElFKSwgTWVzc2FnZUNoYW5uZWwgKDRtcyksIG9yIHNldFRpbWVvdXQuXG4gICAgICAvLyBUaHVzLCB3aGVuIGNhbGxpbmcgc2V0VGltZW91dCguLi4sIDApLCB1bmRlciBMb2xleCwgaXQgd2lsbCBiZSB3YWl0ZWQgZm9yIGFub3RoZXIgbG9vcC5cbiAgICAgIC8vIEluIG90aGVyIHdvcmRzLCBzZXRUaW1lb3V0KC4uLiwgMCkgd29uJ3QgZmlyZSByaWdodCBhd2F5LiBJdCB3aWxsIGJlIGZpcmVkIGFmdGVyIGNsb2NrLnRpY2soPGFueSBudW1iZXI+KS5cbiAgICAgIGlmIChtcykge1xuICAgICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dChmbiwgbXMpO1xuXG4gICAgICAgIHJldHVybiAoKSA9PiBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICB9XG5cbiAgICAgIGZuKCk7XG4gICAgfVxuICB9LCBbYXQsIGNsZWFyVGltZW91dCwgRGF0ZSwgZm4sIHNldFRpbWVvdXRdKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsdUJBQUEs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
;