Buckets:
| 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 }; | |
Xet Storage Details
- Size:
- 1.51 kB
- Xet hash:
- 6e089e815e59ee6ab5062bc22cf6d18be8424b3398d5b837886e97a9503fb27c
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.