UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

57 lines (56 loc) 2.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isFileEqual = exports.default = void 0; var _react = require("react"); var _useSharedState = require("../../shared/helpers/useSharedState.js"); function useUpload(id) { const { data, extend } = (0, _useSharedState.useSharedState)(id); const clearFiles = (0, _react.useCallback)(() => { extend({ files: [], internalFiles: [] }); }, [extend]); const setFiles = (0, _react.useCallback)(files => { const newFiles = files === null || files === void 0 ? void 0 : files.filter(file => (file === null || file === void 0 ? void 0 : file.file) instanceof File); extend({ files: newFiles }); }, [extend]); const setInternalFiles = (0, _react.useCallback)(internalFiles => { extend({ internalFiles }); }, [extend]); const files = (0, _react.useMemo)(() => (data === null || data === void 0 ? void 0 : data.files) || [], [data === null || data === void 0 ? void 0 : data.files]); const internalFiles = (0, _react.useMemo)(() => (data === null || data === void 0 ? void 0 : data.internalFiles) || [], [data === null || data === void 0 ? void 0 : data.internalFiles]); const getExistingFile = (0, _react.useCallback)((file, fileItems = files) => { return fileItems.find(({ file: f }) => { return isFileEqual(file, f); }); }, [files]); return { files, setFiles, clearFiles, internalFiles, setInternalFiles, getExistingFile }; } 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'); }; exports.isFileEqual = isFileEqual; var _default = exports.default = useUpload; //# sourceMappingURL=useUpload.js.map