File: //var/www/aspa/three/loaders/ImageLoader.js
import { Cache } from './Cache.js';
import { Loader } from './Loader.js';
import { createElementNS } from '../utils.js';
class ImageLoader extends Loader {
	constructor( manager ) {
		super( manager );
	}
	load( url, onLoad, onProgress, onError ) {
		if ( this.path !== undefined ) url = this.path + url;
		url = this.manager.resolveURL( url );
		const scope = this;
		const cached = Cache.get( url );
		if ( cached !== undefined ) {
			scope.manager.itemStart( url );
			setTimeout( function () {
				if ( onLoad ) onLoad( cached );
				scope.manager.itemEnd( url );
			}, 0 );
			return cached;
		}
		const image = createElementNS( 'img' );
		function onImageLoad() {
			removeEventListeners();
			Cache.add( url, this );
			if ( onLoad ) onLoad( this );
			scope.manager.itemEnd( url );
		}
		function onImageError( event ) {
			removeEventListeners();
			if ( onError ) onError( event );
			scope.manager.itemError( url );
			scope.manager.itemEnd( url );
		}
		function removeEventListeners() {
			image.removeEventListener( 'load', onImageLoad, false );
			image.removeEventListener( 'error', onImageError, false );
		}
		image.addEventListener( 'load', onImageLoad, false );
		image.addEventListener( 'error', onImageError, false );
		if ( url.slice( 0, 5 ) !== 'data:' ) {
			if ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;
		}
		scope.manager.itemStart( url );
		image.src = url;
		return image;
	}
}
export { ImageLoader };