react-lottie-loader
Version:
Lottie loader for React
2 lines (1 loc) • 974 B
JavaScript
import t from"lottie-web";import r,{forwardRef as e,useRef as n,useEffect as a,useImperativeHandle as o}from"react";function l(){return l=Object.assign?Object.assign.bind():function(t){for(var r=1;r<arguments.length;r++){var e=arguments[r];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])}return t},l.apply(this,arguments)}const i=["className","style"],c=e((e,c)=>{let{className:s,style:u}=e,m=function(t,r){if(null==t)return{};var e,n,a={},o=Object.keys(t);for(n=0;n<o.length;n++)r.indexOf(e=o[n])>=0||(a[e]=t[e]);return a}(e,i);const f=n(null),y=n();return a(()=>{if(!f.current)return;const r=t.loadAnimation(l({},m,{container:f.current}));return y.current=l({},t,{animationItem:r}),()=>{var t,r,e;null==(t=y.current)||t.destroy(),null==(r=y.current)||null==(e=r.animationItem)||e.destroy()}},[m.animationData]),o(c,()=>y.current,[y.current]),r.createElement("div",{ref:f,className:s||"",style:u})});c.displayName="LottieLoader";export{c as default};