@ozen-ui/kit
Version:
React component library
37 lines (36 loc) • 1.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useImageBaseStatus = void 0;
var tslib_1 = require("tslib");
var react_1 = require("react");
var useStoredValue_1 = require("../../../hooks/useStoredValue");
var useImageBaseStatus = function (src) {
var lastFinishedSrc = (0, useStoredValue_1.useStoredValue)(null);
var _a = tslib_1.__read((0, react_1.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';
(0, react_1.useEffect)(function () {
var isAlreadyFinished = lastFinishedSrc.current === src;
if (isAlreadyFinished) {
return;
}
setStatus('loading');
}, [src]);
return {
onLoad: onLoad,
onError: onError,
isError: isError,
isLoaded: isLoaded,
isLoading: isLoading,
};
};
exports.useImageBaseStatus = useImageBaseStatus;