@ozen-ui/kit
Version:
React component library
33 lines (32 loc) • 1.02 kB
JavaScript
import { __read } from "tslib";
import { useEffect, useState } from 'react';
import { useStoredValue } from '../../../hooks/useStoredValue';
export var useImageBaseStatus = function (src) {
var lastFinishedSrc = useStoredValue(null);
var _a = __read(useState(src ? 'loading' : 'error'), 2), status = _a[0], setStatus = _a[1];
var onLoad = function () {
setStatus('loaded');
lastFinishedSrc.current = src;
};
var onError = function () {
setStatus('error');
lastFinishedSrc.current = src;
};
var isError = status === 'error';
var isLoaded = status === 'loaded';
var isLoading = status === 'loading';
useEffect(function () {
var isAlreadyFinished = lastFinishedSrc.current === src;
if (isAlreadyFinished) {
return;
}
setStatus('loading');
}, [src]);
return {
onLoad: onLoad,
onError: onError,
isError: isError,
isLoaded: isLoaded,
isLoading: isLoading,
};
};