@codesandbox/sandpack-client
Version:
<img style="width:100%" src="https://user-images.githubusercontent.com/4838076/143581035-ebee5ba2-9cb1-4fe8-a05b-2f44bd69bb4b.gif" alt="Component toolkit for live running code editing experiences" />
95 lines • 3.3 kB
JavaScript
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
Object.defineProperty(exports, "__esModule", { value: true });
var global_1 = require("../core/global");
/**
* @hidden
*/
var bfsSetImmediate;
if (typeof (setImmediate) !== "undefined") {
bfsSetImmediate = setImmediate;
}
else {
var gScope_1 = global_1.default;
var timeouts_1 = [];
var messageName_1 = "zero-timeout-message";
var canUsePostMessage = function () {
if (typeof gScope_1.importScripts !== 'undefined' || !gScope_1.postMessage) {
return false;
}
var postMessageIsAsync = true;
var oldOnMessage = gScope_1.onmessage;
gScope_1.onmessage = function () {
postMessageIsAsync = false;
};
gScope_1.postMessage('', '*');
gScope_1.onmessage = oldOnMessage;
return postMessageIsAsync;
};
if (canUsePostMessage()) {
bfsSetImmediate = function (fn) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
timeouts_1.push({ fn: fn, args: args });
gScope_1.postMessage(messageName_1, "*");
};
var handleMessage = function (event) {
if (event.source === self && event.data === messageName_1) {
if (event.stopPropagation) {
event.stopPropagation();
}
else {
event.cancelBubble = true;
}
if (timeouts_1.length > 0) {
var _a = timeouts_1.shift(), fn = _a.fn, args = _a.args;
return fn.apply(void 0, args);
}
}
};
if (gScope_1.addEventListener) {
gScope_1.addEventListener('message', handleMessage, true);
}
else {
gScope_1.attachEvent('onmessage', handleMessage);
}
}
else if (gScope_1.MessageChannel) {
// WebWorker MessageChannel
var channel_1 = new gScope_1.MessageChannel();
channel_1.port1.onmessage = function (event) {
if (timeouts_1.length > 0) {
var _a = timeouts_1.shift(), fn = _a.fn, args = _a.args;
return fn.apply(void 0, args);
}
};
bfsSetImmediate = function (fn) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
timeouts_1.push({ fn: fn, args: args });
channel_1.port2.postMessage('');
};
}
else {
bfsSetImmediate = function (fn) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
return setTimeout.apply(void 0, __spreadArray([fn, 0], args, false));
};
}
}
exports.default = bfsSetImmediate;
;