UNPKG

@mornya/react-image-libs

Version:
1 lines 1.66 kB
var g=this&&this.__read||function(r,e){var t="function"==typeof Symbol&&r[Symbol.iterator];if(!t)return r;var n,u,a=t.call(r),o=[];try{for(;(void 0===e||0<e--)&&!(n=a.next()).done;)o.push(n.value)}catch(r){u={error:r}}finally{try{n&&!n.done&&(t=a.return)&&t.call(a)}finally{if(u)throw u.error}}return o},p=(Object.defineProperty(exports,"__esModule",{value:!0}),exports.usePrev=usePrev,exports.useLazyImage=function useLazyImage(e){var t=(0,p.useRef)(),n=(0,p.useRef)(!1),r=g((0,p.useState)(""),2),u=r[0],a=r[1],r=g((0,p.useState)(0),2),o=r[0],l=r[1],r=g((0,p.useState)(0),2),c=r[0],i=r[1],r=g((0,p.useState)(""),2),f=r[0],s=r[1],d=usePrev(u),r=(0,p.useMemo)(function(){var r;switch(f){case"loading":return null!=(r=null==e?void 0:e.loadingImageUrl)?r:"";case"error":return null!=(r=null==e?void 0:e.errorImageUrl)?r:"";case"loaded":return u;default:return""}},[u,f,e.loadingImageUrl,e.errorImageUrl]),v=(0,p.useCallback)(function(){a(e.url),l(0),i(0),s("prepare")},[e.url]);return(0,p.useEffect)(function(){return n.current=!1,u&&s("prepare"),function(){t.current&&(n.current=!0,t.current.onload=null,t.current.onerror=null)}},[u]),(0,p.useEffect)(function(){var r;"prepare"===f&&((r=new Image).src=u,r.referrerPolicy="no-referrer",r.onload=function(){n.current||(r.complete&&0<r.naturalHeight?(l(r.naturalWidth),i(r.naturalHeight),s("loaded")):s("error"))},r.onerror=function(){n.current||s("error")},t.current=r,s("loading"))},[f,u]),(0,p.useEffect)(function(){u!==d&&d&&v()},[u,d,v]),{url:r,width:o,height:c,loadState:f,loadImage:v}},require("react"));function usePrev(r){var e=(0,p.useRef)();return(0,p.useEffect)(function(){e.current=r},[r]),e.current}