Spaces:
Running
Running
File size: 1,916 Bytes
2b7aae2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | class LoadingManager {
constructor(onLoad, onProgress, onError) {
const scope = this;
let isLoading = false;
let itemsLoaded = 0;
let itemsTotal = 0;
let urlModifier = undefined;
const handlers = [];
// Refer to #5689 for the reason why we don't set .onStart
// in the constructor
this.onStart = undefined;
this.onLoad = onLoad;
this.onProgress = onProgress;
this.onError = onError;
this.itemStart = function (url) {
itemsTotal++;
if (isLoading === false) {
if (scope.onStart !== undefined) {
scope.onStart(url, itemsLoaded, itemsTotal);
}
}
isLoading = true;
};
this.itemEnd = function (url) {
itemsLoaded++;
if (scope.onProgress !== undefined) {
scope.onProgress(url, itemsLoaded, itemsTotal);
}
if (itemsLoaded === itemsTotal) {
isLoading = false;
if (scope.onLoad !== undefined) {
scope.onLoad();
}
}
};
this.itemError = function (url) {
if (scope.onError !== undefined) {
scope.onError(url);
}
};
this.resolveURL = function (url) {
if (urlModifier) {
return urlModifier(url);
}
return url;
};
this.setURLModifier = function (transform) {
urlModifier = transform;
return this;
};
this.addHandler = function (regex, loader) {
handlers.push(regex, loader);
return this;
};
this.removeHandler = function (regex) {
const index = handlers.indexOf(regex);
if (index !== -1) {
handlers.splice(index, 2);
}
return this;
};
this.getHandler = function (file) {
for (let i = 0, l = handlers.length; i < l; i += 2) {
const regex = handlers[i];
const loader = handlers[i + 1];
if (regex.global) regex.lastIndex = 0; // see #17920
if (regex.test(file)) {
return loader;
}
}
return null;
};
}
}
const DefaultLoadingManager = new LoadingManager();
export { DefaultLoadingManager, LoadingManager };
|