MCPcopy Create free account
hub / github.com/Vectorized/Aris / loadFiles

Function loadFiles

aris.js:572–636  ·  view source on GitHub ↗
(urls)

Source from the content-addressed store, hash-verified

570 };
571
572 var loadFiles = function (urls) {
573 var required = [], i, r, s, xhr, m, t, img,
574 ctl = [], ctlWrap = {
575 done: function (f) {
576 ctl.d = isFunction(f) ? f : noop;
577 return ctlWrap;
578 }
579 }, imageExtensions = toSet('png,bmp,gif,jpg,jpeg,svg,webp');
580 ctl.c = function () {
581 if (ctl.length == ctl.n && ctl.n) {
582 ctl.n = 0;
583 ctl.sort(function (a, b) { return a[0] - b[0]; });
584 var j, r, m, el, t, url;
585 for (j = 0; j < ctl.length; ++j) {
586 r = ctl[j], t = r[1][1], url = r[1][2];
587 if (!t && (m = url.match(fileExtRe)))
588 t = m[1].toLowerCase();
589 if (t == 'css') {
590 el = document.createElement('style');
591 el.type = 'text/css';
592 el.innerText = autoFixCSS(fixCSSRelUrls(url, r[2]).replace(/[\r\n]/g, ''));
593 head.appendChild(el);
594 }
595 if (t == 'js') {
596 el = document.createElement('script');
597 // Allows easier debugging.
598 el.text = '//# sourceURL=' + url + '\n' + r[2];
599 head.appendChild(el).parentNode.removeChild(el);
600 }
601 }
602
603 ctl.d();
604 }
605 };
606 ctl.d = noop;
607 for (i = 0; i < urls.length; ++i) {
608 m = filePreExtRe.exec(urls[i]);
609 m[0] = (isUndefined(m[1]) ? '' : m[1]) + ':' + m[2];
610 required.push(m);
611 }
612 ctl.n = required.length;
613 for (i = 0; i < ctl.n; ++i) {
614 r = required[i];
615 if ((''+r[1]).toLowerCase() == 'img' ||
616 ((m = (''+r[2]).match(fileExtRe)) && imageExtensions[m[1].toLowerCase()])) {
617 img = new Image();
618 img.onload = img.onerror = imageReadyChecker(img, i, r, ctl);
619 img.src = r[2];
620 } else {
621 xhr = new XMLHttpRequest();
622 xhr.onreadystatechange = fileReadyChecker(xhr, i, r, ctl);
623 s = r[2].indexOf('?') > -1 ? '&' : '?';
624 xhr.open('GET', r[2] + s + Math.random(), 1);
625 if (s = loadedFiles[r[0]]) {
626 xhr.setRequestHeader('If-Modified-Since', s[0]);
627 }
628 xhr.responseType = 'text';
629 xhr.send();

Callers 1

loadFunction · 0.85

Calls 6

toSetFunction · 0.85
autoFixCSSFunction · 0.85
fixCSSRelUrlsFunction · 0.85
isUndefinedFunction · 0.85
imageReadyCheckerFunction · 0.85
fileReadyCheckerFunction · 0.85

Tested by

no test coverage detected