node-karin
Version:
Lightweight, efficient, concise, and stable robot framework.
2 lines (1 loc) • 837 B
JavaScript
import{r as n,b5 as b}from"./index-CrmOvtfz.js";function E(){const t=()=>()=>{};return n.useSyncExternalStore(t,()=>!0,()=>!1)}function I(t={}){const{onLoad:s,onError:o,ignoreFallback:g,src:u,crossOrigin:a,srcSet:c,sizes:i,loading:l}=t,d=E(),e=n.useRef(d?new Image:null),[S,f]=n.useState("pending");n.useEffect(()=>{e.current&&(e.current.onload=r=>{m(),f("loaded"),s==null||s(r)},e.current.onerror=r=>{m(),f("failed"),o==null||o(r)})},[e.current]);const m=()=>{e.current&&(e.current.onload=null,e.current.onerror=null,e.current=null)},p=n.useCallback(()=>{if(!u)return"pending";if(g)return"loaded";const r=new Image;return r.src=u,a&&(r.crossOrigin=a),c&&(r.srcset=c),i&&(r.sizes=i),l&&(r.loading=l),e.current=r,r.complete&&r.naturalWidth?"loaded":"loading"},[u,a,c,i,s,o,l]);return b(()=>{d&&f(p())},[d,p]),g?"loaded":S}export{I as u};