UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

42 lines 1.47 kB
import { useCallback, useMemo } from 'react'; import { useSharedState } from '../../shared/helpers/useSharedState'; function useUpload(id) { const { data, extend } = useSharedState(id); const setFiles = useCallback(files => { extend({ files }); }, [extend]); const setInternalFiles = useCallback(internalFiles => { extend({ internalFiles }); }, [extend]); const files = useMemo(() => (data === null || data === void 0 ? void 0 : data.files) || [], [data === null || data === void 0 ? void 0 : data.files]); const internalFiles = useMemo(() => (data === null || data === void 0 ? void 0 : data.internalFiles) || [], [data === null || data === void 0 ? void 0 : data.internalFiles]); const getExistingFile = useCallback((file, fileItems = files) => { return fileItems.find(({ file: f }) => { return isFileEqual(file, f); }); }, [files]); return { files, setFiles, internalFiles, setInternalFiles, getExistingFile }; } export const isFileEqual = (fileA, fileB) => { const compareExistingProperty = function (a, b, property) { return a && property in a && b && property in b && (a[property] === 0 || b[property] === 0 || a[property] === b[property]); }; return fileA.name === fileB.name && compareExistingProperty(fileA, fileB, 'size') && compareExistingProperty(fileA, fileB, 'lastModified'); }; export default useUpload; //# sourceMappingURL=useUpload.js.map