react-lottie-loader
Version:
Lottie loader for React
2 lines (1 loc) • 1.3 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("lottie-web"),require("react")):"function"==typeof define&&define.amd?define(["lottie-web","react"],t):(e||self).reactLottieLoader=t(e.lottieWeb,e.react)}(this,function(e,t){function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=n(e),a=n(t);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}var u=["className","style"],o=t.forwardRef(function(e,n){var o=e.className,f=e.style,l=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)t.indexOf(n=i[r])>=0||(a[n]=e[n]);return a}(e,u),c=t.useRef(null),s=t.useRef();return t.useEffect(function(){if(c.current){var e=r.default.loadAnimation(i({},l,{container:c.current}));return s.current=i({},r.default,{animationItem:e}),function(){var e,t,n;null==(e=s.current)||e.destroy(),null==(t=s.current)||null==(n=t.animationItem)||n.destroy()}}},[l.animationData]),t.useImperativeHandle(n,function(){return s.current},[s.current]),a.default.createElement("div",{ref:c,className:o||"",style:f})});return o.displayName="LottieLoader",o});