spscript-b
Version:
ShareP0oint Rest Api Wrappers
49 lines (48 loc) • 1.71 kB
JavaScript
export var validateNamespace = function (namespace) {
var scope = window;
var sections = namespace.split(".");
var sectionsLength = sections.length;
for (var i = 0; i < sectionsLength; i++) {
var prop = sections[i];
if (prop in scope) {
scope = scope[prop];
}
else {
return false;
}
}
return true;
};
var _waitForLibraries = function (namespaces, resolve) {
var missing = namespaces.filter(function (namespace) { return !validateNamespace(namespace); });
if (missing.length === 0)
resolve();
else
setTimeout(function () { return _waitForLibraries(namespaces, resolve); }, 25);
};
export var waitForLibraries = function (namespaces) {
return new Promise(function (resolve, reject) { return _waitForLibraries(namespaces, resolve); });
};
export var waitForLibrary = function (namespace) {
return waitForLibraries([namespace]);
};
export var waitForElement = function (selector, timeout) {
if (timeout === void 0) { timeout = 5000; }
var counter = 0;
var INTERVAL = 25; //milliseconds
var MAX_ATTEMPTS = timeout / INTERVAL; // eventually give up
return new Promise(function (resolve, reject) {
var _waitForElement = function () {
if (counter > MAX_ATTEMPTS)
reject("Unable to find element: " + selector);
var elem = document.querySelector(selector);
if (!elem) {
counter++;
setTimeout(_waitForElement, INTERVAL);
}
else
resolve(elem);
};
_waitForElement();
});
};