UNPKG

@ozen-ui/kit

Version:

React component library

37 lines (36 loc) 1.22 kB
"use strict"; 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;