File: //var/www/aspa/three/addons/loaders/LottieLoader.js
import {
	FileLoader,
	Loader,
	CanvasTexture,
	NearestFilter,
	SRGBColorSpace
} from 'three';
import lottie from '../libs/lottie_canvas.module.js';
class LottieLoader extends Loader {
	setQuality( value ) {
		this._quality = value;
	}
	load( url, onLoad, onProgress, onError ) {
		const quality = this._quality || 1;
		const texture = new CanvasTexture();
		texture.minFilter = NearestFilter;
		texture.colorSpace = SRGBColorSpace;
		const loader = new FileLoader( this.manager );
		loader.setPath( this.path );
		loader.setWithCredentials( this.withCredentials );
		loader.load( url, function ( text ) {
			const data = JSON.parse( text );
			// lottie uses container.offetWidth and offsetHeight
			// to define width/height
			const container = document.createElement( 'div' );
			container.style.width = data.w + 'px';
			container.style.height = data.h + 'px';
			document.body.appendChild( container );
			const animation = lottie.loadAnimation( {
				container: container,
				animType: 'canvas',
				loop: true,
				autoplay: true,
				animationData: data,
				rendererSettings: { dpr: quality }
			} );
			texture.animation = animation;
			texture.image = animation.container;
			animation.addEventListener( 'enterFrame', function () {
				texture.needsUpdate = true;
			} );
			container.style.display = 'none';
			if ( onLoad !== undefined ) {
				onLoad( texture );
			}
		}, onProgress, onError );
		return texture;
	}
}
export { LottieLoader };