use-background-image
Version:
useBackgroundImage: for loading background images with just one tiny hook!
3 lines (2 loc) • 1.07 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var r=require("react");function n(){return(n=Object.assign||function(r){for(var n=1;n<arguments.length;n++){var e=arguments[n];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t])}return r}).apply(this,arguments)}var e=function(r,e){switch(e.type){case"isLoading":return n({},r,{src:e.src,isLoading:!0,hasError:!1});case"ERROR":return n({},r,{src:e.src,isLoading:!1,hasError:!0});default:return r}};exports.useBackgroundImage=function(n){var t=n.src,o=n.placeholder,u=void 0===o?"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==":o,a=r.useReducer(e,function(r){return{isLoading:!1,hasError:!1,src:r}}(u)),c=a[0],s=a[1];return r.useEffect((function(){var r=new Image;return r.onload=function(){return s({type:"isLoading",src:t})},r.onerror=function(){return s({type:"ERROR",src:u})},r.src=t,function(){r.onerror=function(){return null},r.onload=function(){return null},r=null}}),[t]),c};
//# sourceMappingURL=use-background-image.cjs.production.min.js.map