UNPKG

botframework-webchat-component

Version:
46 lines (42 loc) 8.2 kB
"use strict"; 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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