UNPKG

@atlaskit/editor-plugin-paste-options-toolbar

Version:

Paste options toolbar for @atlaskit/editor-core

96 lines (94 loc) 3.55 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.ASYNC_HIDDEN_TIMEOUT_MS = void 0; exports.evaluateAsyncHidden = evaluateAsyncHidden; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); /** How long to wait for each `isAsyncHidden` check before treating it as hidden. */ var ASYNC_HIDDEN_TIMEOUT_MS = exports.ASYNC_HIDDEN_TIMEOUT_MS = 3000; var hasAsyncHidden = function hasAsyncHidden(component) { return typeof component.isAsyncHidden === 'function'; }; var rejectOnTimeout = function rejectOnTimeout(promise, timeoutMs) { var timeoutId; var timeoutPromise = new Promise(function (_, reject) { timeoutId = setTimeout(function () { return reject(new Error('isAsyncHidden timeout')); }, timeoutMs); }); return Promise.race([promise.finally(function () { if (timeoutId !== undefined) { clearTimeout(timeoutId); } }), timeoutPromise]); }; var evaluateComponentAsyncHidden = /*#__PURE__*/function () { var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(component, context) { var hidden, _t; return _regenerator.default.wrap(function (_context) { while (1) switch (_context.prev = _context.next) { case 0: _context.prev = 0; _context.next = 1; return rejectOnTimeout(component.isAsyncHidden(context), ASYNC_HIDDEN_TIMEOUT_MS); case 1: hidden = _context.sent; return _context.abrupt("return", { key: component.key, hidden: hidden }); case 2: _context.prev = 2; _t = _context["catch"](0); return _context.abrupt("return", { key: component.key, hidden: true }); case 3: case "end": return _context.stop(); } }, _callee, null, [[0, 2]]); })); return function evaluateComponentAsyncHidden(_x, _x2) { return _ref.apply(this, arguments); }; }(); /** * Evaluates all `isAsyncHidden` functions in parallel. * Each check is raced against a timeout; timeouts and errors are hidden. * * Returns a plain object that maps each component key to its hidden state. * Components without `isAsyncHidden` are not present in the result. */ function evaluateAsyncHidden(_x3, _x4) { return _evaluateAsyncHidden.apply(this, arguments); } function _evaluateAsyncHidden() { _evaluateAsyncHidden = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(components, context) { var results; return _regenerator.default.wrap(function (_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: _context2.next = 1; return Promise.all(components.filter(hasAsyncHidden).map(function (component) { return evaluateComponentAsyncHidden(component, context); })); case 1: results = _context2.sent; return _context2.abrupt("return", Object.fromEntries(results.map(function (_ref2) { var key = _ref2.key, hidden = _ref2.hidden; return [key, hidden]; }))); case 2: case "end": return _context2.stop(); } }, _callee2); })); return _evaluateAsyncHidden.apply(this, arguments); }