@bigbinary/neeto-molecules 5.2.28 → 5.2.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -365,7 +365,7 @@ var useFileUpload = function useFileUpload(_ref) {
365
365
  filesRef.current = files;
366
366
  var cancel = useCallback(function (index) {
367
367
  return function () {
368
- setUploadProgress(assoc(files[index].name, null));
368
+ setUploadProgress(assoc(files[index].uploadId, null));
369
369
  var newFiles = files === null || files === void 0 ? void 0 : files.filter(function (_, idx) {
370
370
  return idx !== index;
371
371
  });
@@ -380,6 +380,9 @@ var useFileUpload = function useFileUpload(_ref) {
380
380
  setUploadError("");
381
381
  var initialFiles = acceptedFiles.map(function (file) {
382
382
  return {
383
+ // Filenames are not unique, so each file gets a unique id to match
384
+ // upload results back to their entries.
385
+ uploadId: "upload-".concat(Math.random().toString(36).substring(2, 13)),
383
386
  name: file.name,
384
387
  size: file.size
385
388
  };
@@ -387,33 +390,37 @@ var useFileUpload = function useFileUpload(_ref) {
387
390
  var filesWithPendingUploads = multiple ? [].concat(_toConsumableArray(files || []), _toConsumableArray(initialFiles)) : initialFiles;
388
391
  filesRef.current = filesWithPendingUploads;
389
392
  onChange(filesWithPendingUploads);
390
- acceptedFiles.forEach(function (file) {
391
- setUploadProgress(assoc(file.name, 0));
393
+ acceptedFiles.forEach(function (file, fileIndex) {
394
+ var initialFile = initialFiles[fileIndex];
395
+ var uploadId = initialFile.uploadId;
396
+ setUploadProgress(assoc(uploadId, 0));
392
397
  var upload = new DirectUpload(file, DIRECT_UPLOAD_URL, {
393
398
  directUploadWillStoreFileWithXHR: function directUploadWillStoreFileWithXHR(xhr) {
394
399
  xhr.upload.addEventListener("progress", function (event) {
395
400
  var percentComplete = Math.round(event.loaded / event.total * 100);
396
- setUploadProgress(assoc(file.name, percentComplete));
401
+ setUploadProgress(assoc(uploadId, percentComplete));
397
402
  });
398
403
  xhr.upload.addEventListener("load", function () {
399
- setUploadProgress(assoc(file.name, undefined));
404
+ setUploadProgress(assoc(uploadId, undefined));
400
405
  });
401
406
  }
402
407
  });
403
408
  upload.create(function (error, blob) {
404
409
  if (error) {
405
410
  setUploadError(error);
411
+ setUploadProgress(assoc(uploadId, null));
406
412
  return;
407
413
  }
408
414
  var uploadedFile = {
415
+ uploadId: uploadId,
409
416
  url: blob.blob_url,
410
417
  name: blob.filename,
411
418
  signedId: blob.signed_id
412
419
  };
413
- var filesWithUploadMetadata = [uploadedFile];
420
+ var filesWithUploadMetadata = [_objectSpread$1(_objectSpread$1({}, initialFile), uploadedFile)];
414
421
  if (multiple) {
415
422
  filesWithUploadMetadata = filesRef.current.map(function (file) {
416
- return file.name === uploadedFile.name ? _objectSpread$1(_objectSpread$1({}, file), uploadedFile) : file;
423
+ return file.uploadId === uploadedFile.uploadId ? _objectSpread$1(_objectSpread$1({}, file), uploadedFile) : file;
417
424
  });
418
425
  }
419
426
  filesRef.current = filesWithUploadMetadata;
@@ -497,7 +504,7 @@ var FileUpload = function FileUpload(_ref) {
497
504
  fileRejections = _useFileUpload.fileRejections;
498
505
  var maxFileSizeInBytes = maxFileSize * 1024 * 1024;
499
506
  var isUploadingFile = function isUploadingFile(file) {
500
- return isNotNil(progress[file.name]) && (progress[file.name] !== 100 || !file.url);
507
+ return isNotNil(progress[file.uploadId]) && (progress[file.uploadId] !== 100 || !file.url);
501
508
  };
502
509
  var shouldShowError = error && isEmpty(fileRejections);
503
510
  return /*#__PURE__*/jsxs(Fragment, {
@@ -512,12 +519,13 @@ var FileUpload = function FileUpload(_ref) {
512
519
  }), !isEmpty(files) && /*#__PURE__*/jsx("ul", {
513
520
  className: "neeto-molecules-file-upload__uploaded-list",
514
521
  children: files === null || files === void 0 ? void 0 : files.map(function (file, idx) {
522
+ var _file$uploadId;
515
523
  return /*#__PURE__*/createElement(FilePreview, {
516
524
  file: file,
517
525
  cancel: cancel(idx),
518
526
  isUploading: isUploadingFile(file),
519
- key: idx,
520
- progress: progress[file.name]
527
+ key: (_file$uploadId = file.uploadId) !== null && _file$uploadId !== void 0 ? _file$uploadId : idx,
528
+ progress: progress[file.uploadId]
521
529
  });
522
530
  })
523
531
  }), isNotEmpty(fileRejections) && /*#__PURE__*/jsx(ErrorMessages, {
@@ -1 +1 @@
1
- {"version":3,"file":"FileUpload.js","sources":["../src/components/FileUpload/constants.js","../src/components/FileUpload/DropZone.jsx","../src/components/FileUpload/utils.js","../src/components/FileUpload/ErrorMessages.jsx","../src/components/FileUpload/Progress.jsx","../src/components/FileUpload/FilePreview.jsx","../src/components/FileUpload/hooks/useFileUpload.js","../src/components/FileUpload/FileUpload.jsx","../src/components/FileUpload/FormikFileUpload.jsx"],"sourcesContent":["import { globalProps } from \"neetocommons/initializers\";\n\nexport const FILE_MIME_TYPES = {\n pdf: [\"application/pdf\"],\n doc: [\"application/msword\", \"application/wps-writer\"],\n docx: [\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n ],\n xls: [\"application/vnd.ms-excel\"],\n xlsx: [\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"],\n csv: [\"text/csv\"],\n txt: [\"text/plain\"],\n rtf: [\"application/rtf\", \"text/rtf\"],\n html: [\"text/html\"],\n htm: [\"text/html\"],\n md: [\"text/markdown\", \"text/x-markdown\"],\n zip: [\"application/zip\"],\n mp3: [\"audio/mpeg\"],\n wma: [\"audio/x-ms-wma\", \"video/x-ms-asf\"],\n mp4: [\"video/mp4\"],\n mpg: [\"video/mpeg\"],\n mpeg: [\"video/mpeg\"],\n flv: [\"video/x-flv\"],\n avi: [\"video/x-msvideo\"],\n jpg: [\"image/jpeg\"],\n jpeg: [\"image/jpeg\"],\n png: [\"image/png\"],\n gif: [\"image/gif\"],\n json: [\"application/json\"],\n epub: [\"application/epub+zip\"],\n aac: [\"audio/aac\"],\n svg: [\"image/svg+xml\"],\n ico: [\"image/vnd.microsoft.icon\"],\n};\n\nexport const ERROR_CODES = {\n FILE_TOO_LARGE: \"file-too-large\",\n FILE_INVALID_TYPE: \"file-invalid-type\",\n TOO_MANY_FILES: \"too-many-files\",\n};\n\nexport const DIRECT_UPLOAD_URL = \"/api/direct_uploads\";\n\nexport const MAX_FILE_SIZE =\n globalProps?.endUserUploadedFileSizeLimitInMb || 10;\n","import classnames from \"classnames\";\nimport { FileUpload } from \"neetoicons\";\nimport { useTranslation } from \"react-i18next\";\n\nconst DropZone = ({\n isDragActive,\n getRootProps,\n getInputProps,\n multipleFilesAllowed,\n maxFileSize,\n allowedFileTypes,\n hasFileSizeLimit,\n}) => {\n const { t } = useTranslation();\n\n const shouldAllowSingleFileUpload = !multipleFilesAllowed;\n const shouldShowFileSizeLimit = hasFileSizeLimit && maxFileSize;\n\n return (\n <div\n {...getRootProps({\n className: classnames([\"neeto-molecules-file-upload__dropzone\"], {\n \"neeto-molecules-file-upload__dropzone--drag-active\": isDragActive,\n }),\n })}\n >\n <div\n className=\"neeto-molecules-file-upload__dropzone-inner\"\n data-testid=\"file-upload-body\"\n >\n <FileUpload\n className=\"neeto-molecules-file-upload__upload-icon\"\n size=\"36\"\n />\n <div className=\"neeto-molecules-file-upload__dropzone-content\">\n <label\n className=\"neeto-molecules-file-upload__upload-label\"\n htmlFor=\"file-upload\"\n >\n <span className=\"neeto-molecules-file-upload__choose-file\">\n {t(\n \"neetoMolecules.fileUpload.filesDropzone.chooseFileOrDragHere\"\n )}\n </span>\n <input {...getInputProps()} data-testid=\"image-browse-button\" />\n </label>\n <div className=\"neeto-molecules-file-upload__dropzone-helper-block\">\n {shouldAllowSingleFileUpload && (\n <p\n className=\"neeto-molecules-file-upload__dropzone-helper-text\"\n data-testid=\"upload-only-one-file-text\"\n >\n {t(\"neetoMolecules.fileUpload.filesDropzone.oneFileAllowed\")}\n </p>\n )}\n {shouldShowFileSizeLimit && (\n <p\n className=\"neeto-molecules-file-upload__dropzone-helper-text\"\n data-testid=\"maximum-allowed-size-text\"\n >\n {t(\"neetoMolecules.fileUpload.filesDropzone.maxFileSize\", {\n size: maxFileSize,\n unit: \"MB\",\n })}\n </p>\n )}\n {allowedFileTypes && (\n <p\n className=\"neeto-molecules-file-upload__dropzone-helper-text\"\n data-testid=\"allowed-files-types-text\"\n >\n {t(\"neetoMolecules.fileUpload.filesDropzone.allowedFileTypes\", {\n types: allowedFileTypes,\n })}\n </p>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default DropZone;\n","import path from \"path\";\n\nimport { t } from \"i18next\";\nimport { isNotPresent } from \"neetocist\";\n\nimport { FILE_MIME_TYPES, ERROR_CODES } from \"./constants\";\n\nexport const getAcceptedFileTypes = allowedFileTypes => {\n const accepted = {};\n\n allowedFileTypes.split(\", \").forEach(type => {\n const mimeTypes = FILE_MIME_TYPES[type] || [\"application/octet-stream\"];\n const extension = `.${type}`;\n\n if (isNotPresent(type) || isNotPresent(mimeTypes)) return;\n\n mimeTypes.forEach(mimeType => {\n if (accepted[mimeType]) accepted[mimeType].push(extension);\n else accepted[mimeType] = [extension];\n });\n });\n\n return accepted;\n};\n\nexport const convertBytesToMb = bytes =>\n ((bytes - 10) / (1024 * 1024)).toFixed(2);\n\nexport const renderErrorMessage = (errorObject, maxFileSize, isMultiple) => {\n const error = errorObject.errors[0];\n const file = errorObject.file;\n if (error) {\n const { code } = error;\n if (code === ERROR_CODES.FILE_TOO_LARGE) {\n return t(\"neetoMolecules.fileUpload.filesDropzone.errors.fileTooLarge\", {\n fileName: file.name,\n maxSize: `${Math.round(maxFileSize / 1048576)}MB`,\n });\n } else if (code === ERROR_CODES.FILE_INVALID_TYPE) {\n return t(\n \"neetoMolecules.fileUpload.filesDropzone.errors.fileInvalidType\",\n { fileType: path.extname(file.name) }\n );\n } else if (code === ERROR_CODES.TOO_MANY_FILES && !isMultiple) {\n return t(\"neetoMolecules.fileUpload.filesDropzone.errors.tooManyFiles\", {\n maxFiles: 1,\n });\n }\n }\n\n return t(\"neetoMolecules.fileUpload.filesDropzone.errors.defaultError\", {\n fileName: file.name,\n });\n};\n\nexport const convertMbToBytes = mb => mb * 1024 * 1024 + 10;\n","import { useTranslation } from \"react-i18next\";\n\nimport { ERROR_CODES } from \"./constants\";\nimport { renderErrorMessage } from \"./utils\";\n\nconst ErrorMessages = ({ fileRejections, maxFileSizeInBytes }) => {\n const { t } = useTranslation();\n\n const hasMultipleFileErrors = fileRejections.some(\n ({ errors }) => errors[0].code === ERROR_CODES.TOO_MANY_FILES\n );\n\n return (\n <>\n {hasMultipleFileErrors && (\n <p\n className=\"neeto-molecules-input__error-text\"\n data-testid=\"form-file-upload-input-error\"\n >\n <span className=\"neeto-molecules-input__error-text-style-handle\">\n {t(\"neetoMolecules.fileUpload.filesDropzone.errors.tooManyFiles\", {\n maxFiles: 1,\n })}\n </span>\n </p>\n )}\n {fileRejections\n .filter(({ errors }) => errors[0].code !== ERROR_CODES.TOO_MANY_FILES)\n .map((file, index) => (\n <p\n className=\"neeto-molecules-input__error-text\"\n data-testid=\"form-file-upload-input-error\"\n key={index}\n >\n <span className=\"neeto-molecules-input__error-text-style-handle\">\n {renderErrorMessage(file, maxFileSizeInBytes, false)}\n </span>\n </p>\n ))}\n </>\n );\n};\n\nexport default ErrorMessages;\n","import { motion, useReducedMotion } from \"framer-motion\";\n\nconst Progress = ({\n percents,\n stroke = \"currentColor\",\n emptyStroke = stroke,\n emptyStrokeOpacity = 0.25,\n duration = 0.5,\n delay = 0,\n size = 100,\n strokeWidth = 12,\n}) => {\n const shouldReduceMotion = useReducedMotion();\n const radius = 45;\n const circumference = Math.ceil(2 * Math.PI * radius);\n const fillPercents = Math.abs(\n Math.ceil((circumference / 100) * (percents - 100))\n );\n\n const transition = {\n duration: shouldReduceMotion ? 0 : duration,\n delay: shouldReduceMotion ? 0 : delay,\n };\n\n const variants = {\n hidden: { strokeDashoffset: circumference, transition },\n show: { strokeDashoffset: fillPercents, transition },\n };\n\n return (\n <div className=\"neeto-molecules-progress__circle\">\n <div\n className=\"neeto-molecules-progress__circle-wrapper\"\n style={{ height: size }}\n >\n <svg\n height={size}\n version=\"1.1\"\n viewBox=\"0 0 100 100\"\n width={size}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n {...{ strokeWidth }}\n className=\"circle\"\n cx=\"50\"\n cy=\"50\"\n fill=\"transparent\"\n r={radius}\n stroke={emptyStroke}\n strokeOpacity={emptyStrokeOpacity}\n />\n </svg>\n <svg\n height={size}\n viewBox=\"0 0 100 100\"\n width={size}\n style={{\n position: \"absolute\",\n transform: \"rotate(-90deg)\",\n overflow: \"visible\",\n top: 0,\n }}\n >\n <motion.circle\n {...{ stroke, strokeWidth, variants }}\n animate=\"show\"\n cx=\"50\"\n cy=\"50\"\n fill=\"transparent\"\n initial=\"hidden\"\n r={radius}\n strokeDasharray={circumference}\n strokeDashoffset={fillPercents}\n />\n </svg>\n </div>\n </div>\n );\n};\n\nexport default Progress;\n","import classnames from \"classnames\";\nimport { FileGeneric, Check, Close } from \"neetoicons\";\n\nimport Progress from \"./Progress\";\nimport { convertBytesToMb } from \"./utils\";\n\nconst FilePreview = ({ file, isUploading, cancel, progress }) => (\n <li\n className=\"neeto-molecules-file-upload__uploaded-list-item\"\n key={file.url}\n >\n <div className=\"neeto-molecules-file-upload__file-preview\">\n <a\n className={classnames({ \"neeto-molecules-invisible\": isUploading })}\n href={file.url}\n rel=\"noreferrer\"\n target=\"_blank\"\n >\n <FileGeneric />\n </a>\n {isUploading && (\n <div className=\"neeto-molecules-progress\">\n <Progress percents={progress || 0} size={20} />\n </div>\n )}\n </div>\n <div className=\"neeto-molecules-file-upload__file-info\">\n <span\n className=\"neeto-molecules-file-upload__file-info-name\"\n data-testid=\"file-name\"\n >\n {file.name}\n </span>\n <span className=\"neeto-molecules-file-upload__file-info-size\">\n {file.size ? `${convertBytesToMb(file.size)} MB` : \"\"}\n </span>\n </div>\n <div className=\"neeto-molecules-file-upload__actions\">\n <span\n className={classnames(\n \"neeto-molecules-file-upload__success-indicator\",\n { \"neeto-molecules-file-upload__success-indicator--active\": file.url }\n )}\n >\n {file.url && <Check data-testid=\"file-upload-success\" />}\n </span>\n <button\n className=\"neeto-molecules-file-upload__button--red neeto-molecules-file-upload__remove-button\"\n type=\"button\"\n onClick={cancel}\n >\n <Close />\n </button>\n </div>\n </li>\n);\n\nexport default FilePreview;\n","import { useState, useCallback, useEffect, useRef } from \"react\";\n\nimport { DirectUpload } from \"@rails/activestorage\";\nimport { assoc } from \"ramda\";\nimport { useDropzone } from \"react-dropzone\";\n\nimport { DIRECT_UPLOAD_URL } from \"../constants\";\nimport { convertMbToBytes, renderErrorMessage } from \"../utils\";\n\nconst useFileUpload = ({\n disabled,\n accept,\n multiple,\n maxFileSize,\n minFileSize,\n files,\n onChange,\n setError,\n setTouched,\n hasFileSizeLimit,\n}) => {\n const [uploadProgress, setUploadProgress] = useState({});\n const [uploadError, setUploadError] = useState(\"\");\n\n const filesRef = useRef(files);\n filesRef.current = files;\n\n const cancel = useCallback(\n index => () => {\n setUploadProgress(assoc(files[index].name, null));\n const newFiles = files?.filter((_, idx) => idx !== index);\n onChange(newFiles);\n },\n [files]\n );\n\n useEffect(() => {\n uploadError && setError(uploadError);\n }, [uploadError]);\n\n const onDropAccepted = acceptedFiles => {\n setTouched(false);\n setUploadError(\"\");\n const initialFiles = acceptedFiles.map(file => ({\n name: file.name,\n size: file.size,\n }));\n\n const filesWithPendingUploads = multiple\n ? [...(files || []), ...initialFiles]\n : initialFiles;\n filesRef.current = filesWithPendingUploads;\n onChange(filesWithPendingUploads);\n\n acceptedFiles.forEach(file => {\n setUploadProgress(assoc(file.name, 0));\n\n const upload = new DirectUpload(file, DIRECT_UPLOAD_URL, {\n directUploadWillStoreFileWithXHR: xhr => {\n xhr.upload.addEventListener(\"progress\", event => {\n const percentComplete = Math.round(\n (event.loaded / event.total) * 100\n );\n setUploadProgress(assoc(file.name, percentComplete));\n });\n\n xhr.upload.addEventListener(\"load\", () => {\n setUploadProgress(assoc(file.name, undefined));\n });\n },\n });\n\n upload.create((error, blob) => {\n if (error) {\n setUploadError(error);\n\n return;\n }\n\n const uploadedFile = {\n url: blob.blob_url,\n name: blob.filename,\n signedId: blob.signed_id,\n };\n\n let filesWithUploadMetadata = [uploadedFile];\n if (multiple) {\n filesWithUploadMetadata = filesRef.current.map(file =>\n file.name === uploadedFile.name\n ? { ...file, ...uploadedFile }\n : file\n );\n }\n\n filesRef.current = filesWithUploadMetadata;\n onChange(filesWithUploadMetadata);\n });\n });\n };\n\n const onDropRejected = fileRejections => {\n fileRejections.forEach(fileObject => {\n setTouched(true);\n if (fileObject.errors[0].code === \"too-many-files\") {\n setUploadError(renderErrorMessage(fileObject, maxFileSize, multiple));\n } else {\n setUploadError(renderErrorMessage(fileObject, maxFileSize, multiple));\n }\n });\n };\n\n const { getRootProps, getInputProps, isDragActive, fileRejections } =\n useDropzone({\n disabled,\n accept,\n multiple,\n minSize: convertMbToBytes(minFileSize),\n onDropAccepted,\n onDropRejected,\n ...(maxFileSize &&\n hasFileSizeLimit && { maxSize: convertMbToBytes(maxFileSize) }),\n });\n\n return {\n progress: uploadProgress,\n cancel,\n getRootProps,\n getInputProps,\n isDragActive,\n fileRejections,\n };\n};\n\nexport default useFileUpload;\n","import { isNotEmpty, noop } from \"neetocist\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty, isNotNil } from \"ramda\";\n\nimport { MAX_FILE_SIZE } from \"./constants\";\nimport DropZone from \"./DropZone\";\nimport ErrorMessages from \"./ErrorMessages\";\nimport \"./file-upload.scss\";\nimport FilePreview from \"./FilePreview\";\nimport useFileUpload from \"./hooks/useFileUpload\";\nimport { getAcceptedFileTypes } from \"./utils\";\n\nconst FileUpload = ({\n allowedFileTypes = \"\",\n multipleFilesAllowed = true,\n maxFileSize = MAX_FILE_SIZE,\n hasFileSizeLimit = true,\n isPreview = false,\n minFileSize = 0,\n files = [],\n onChange = noop,\n error,\n setError = noop,\n setTouched = noop,\n}) => {\n const {\n progress,\n cancel,\n getRootProps,\n getInputProps,\n isDragActive,\n fileRejections,\n } = useFileUpload({\n disabled: isPreview,\n accept: getAcceptedFileTypes(allowedFileTypes),\n multiple: multipleFilesAllowed,\n maxFileSize,\n minFileSize,\n files,\n onChange,\n setError,\n setTouched,\n hasFileSizeLimit,\n });\n\n const maxFileSizeInBytes = maxFileSize * 1024 * 1024;\n\n const isUploadingFile = file =>\n isNotNil(progress[file.name]) && (progress[file.name] !== 100 || !file.url);\n\n const shouldShowError = error && isEmpty(fileRejections);\n\n return (\n <>\n <DropZone\n {...{\n allowedFileTypes,\n getInputProps,\n getRootProps,\n hasFileSizeLimit,\n isDragActive,\n maxFileSize,\n multipleFilesAllowed,\n }}\n />\n {!isEmpty(files) && (\n <ul className=\"neeto-molecules-file-upload__uploaded-list\">\n {files?.map((file, idx) => (\n <FilePreview\n {...{ file }}\n cancel={cancel(idx)}\n isUploading={isUploadingFile(file)}\n key={idx}\n progress={progress[file.name]}\n />\n ))}\n </ul>\n )}\n {isNotEmpty(fileRejections) && (\n <ErrorMessages {...{ fileRejections, maxFileSizeInBytes }} />\n )}\n {shouldShowError && (\n <p\n className=\"neeto-molecules-input__error-text\"\n data-testid=\"form-file-upload-input-error\"\n >\n <span className=\"neeto-molecules-input__error-text-style-handle\">\n {error}\n </span>\n </p>\n )}\n </>\n );\n};\n\nFileUpload.propTypes = {\n /**\n * Allowed file types for the file upload component.\n */\n allowedFileTypes: PropTypes.string,\n /**\n * Boolean to allow multiple files to be uploaded.\n */\n multipleFilesAllowed: PropTypes.bool,\n /**\n * Maximum file size allowed for the file upload component(MB).\n */\n maxFileSize: PropTypes.number,\n /**\n * Boolean to check if file size limit is enabled.\n */\n hasFileSizeLimit: PropTypes.bool,\n /**\n * Boolean to use component as a preview component.\n */\n isPreview: PropTypes.bool,\n /**\n * Minimum file size allowed for the file upload component(MB).\n */\n minFileSize: PropTypes.number,\n /**\n * Uploaded files.\n */\n files: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string,\n size: PropTypes.number,\n url: PropTypes.string,\n })\n ),\n /**\n * Function to be called on file upload, with the updated files array.\n */\n onChange: PropTypes.func,\n /**\n * Error message to be displayed.\n */\n error: PropTypes.string,\n /**\n * Function to set error message.\n */\n setError: PropTypes.func,\n};\n\nexport default FileUpload;\n","import { useField } from \"formik\";\n\nimport FileUpload from \"./FileUpload\";\n\nconst FormikFileUpload = ({ name, ...props }) => {\n const [_, { value, touched, error }, { setValue, setTouched, setError }] =\n useField(name);\n\n const errorToDisplay = touched && error ? error : \"\";\n\n return (\n <FileUpload\n {...{ ...props, setError, setTouched }}\n error={errorToDisplay}\n files={value}\n onChange={setValue}\n />\n );\n};\n\nexport default FormikFileUpload;\n"],"names":["FILE_MIME_TYPES","pdf","doc","docx","xls","xlsx","csv","txt","rtf","html","htm","md","zip","mp3","wma","mp4","mpg","mpeg","flv","avi","jpg","jpeg","png","gif","json","epub","aac","svg","ico","ERROR_CODES","FILE_TOO_LARGE","FILE_INVALID_TYPE","TOO_MANY_FILES","DIRECT_UPLOAD_URL","MAX_FILE_SIZE","globalProps","endUserUploadedFileSizeLimitInMb","DropZone","_ref","isDragActive","getRootProps","getInputProps","multipleFilesAllowed","maxFileSize","allowedFileTypes","hasFileSizeLimit","_useTranslation","useTranslation","t","shouldAllowSingleFileUpload","shouldShowFileSizeLimit","_jsx","_objectSpread","className","classnames","children","_jsxs","FileUpload","size","htmlFor","unit","types","getAcceptedFileTypes","accepted","split","forEach","type","mimeTypes","extension","concat","isNotPresent","mimeType","push","convertBytesToMb","bytes","toFixed","renderErrorMessage","errorObject","isMultiple","error","errors","file","code","fileName","name","maxSize","Math","round","fileType","path","extname","maxFiles","convertMbToBytes","mb","ErrorMessages","fileRejections","maxFileSizeInBytes","hasMultipleFileErrors","some","_ref2","_Fragment","filter","_ref3","map","index","Progress","percents","_ref$stroke","stroke","_ref$emptyStroke","emptyStroke","_ref$emptyStrokeOpaci","emptyStrokeOpacity","_ref$duration","duration","_ref$delay","delay","_ref$size","_ref$strokeWidth","strokeWidth","shouldReduceMotion","useReducedMotion","radius","circumference","ceil","PI","fillPercents","abs","transition","variants","hidden","strokeDashoffset","show","style","height","version","viewBox","width","xmlns","cx","cy","fill","r","strokeOpacity","position","transform","overflow","top","motion","circle","animate","initial","strokeDasharray","FilePreview","isUploading","cancel","progress","href","url","rel","target","FileGeneric","Check","onClick","Close","useFileUpload","disabled","accept","multiple","minFileSize","files","onChange","setError","setTouched","_useState","useState","_useState2","_slicedToArray","uploadProgress","setUploadProgress","_useState3","_useState4","uploadError","setUploadError","filesRef","useRef","current","useCallback","assoc","newFiles","_","idx","useEffect","onDropAccepted","acceptedFiles","initialFiles","filesWithPendingUploads","_toConsumableArray","upload","DirectUpload","directUploadWillStoreFileWithXHR","xhr","addEventListener","event","percentComplete","loaded","total","undefined","create","blob","uploadedFile","blob_url","filename","signedId","signed_id","filesWithUploadMetadata","onDropRejected","fileObject","_useDropzone","useDropzone","minSize","_ref$allowedFileTypes","_ref$multipleFilesAll","_ref$maxFileSize","_ref$hasFileSizeLimit","_ref$isPreview","isPreview","_ref$minFileSize","_ref$files","_ref$onChange","noop","_ref$setError","_ref$setTouched","_useFileUpload","isUploadingFile","isNotNil","shouldShowError","isEmpty","_createElement","key","isNotEmpty","FormikFileUpload","props","_objectWithoutProperties","_excluded","_useField","useField","_useField2","_useField2$","value","touched","_useField2$2","setValue","errorToDisplay"],"mappings":"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"}
1
+ {"version":3,"file":"FileUpload.js","sources":["../src/components/FileUpload/constants.js","../src/components/FileUpload/DropZone.jsx","../src/components/FileUpload/utils.js","../src/components/FileUpload/ErrorMessages.jsx","../src/components/FileUpload/Progress.jsx","../src/components/FileUpload/FilePreview.jsx","../src/components/FileUpload/hooks/useFileUpload.js","../src/components/FileUpload/FileUpload.jsx","../src/components/FileUpload/FormikFileUpload.jsx"],"sourcesContent":["import { globalProps } from \"neetocommons/initializers\";\n\nexport const FILE_MIME_TYPES = {\n pdf: [\"application/pdf\"],\n doc: [\"application/msword\", \"application/wps-writer\"],\n docx: [\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n ],\n xls: [\"application/vnd.ms-excel\"],\n xlsx: [\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"],\n csv: [\"text/csv\"],\n txt: [\"text/plain\"],\n rtf: [\"application/rtf\", \"text/rtf\"],\n html: [\"text/html\"],\n htm: [\"text/html\"],\n md: [\"text/markdown\", \"text/x-markdown\"],\n zip: [\"application/zip\"],\n mp3: [\"audio/mpeg\"],\n wma: [\"audio/x-ms-wma\", \"video/x-ms-asf\"],\n mp4: [\"video/mp4\"],\n mpg: [\"video/mpeg\"],\n mpeg: [\"video/mpeg\"],\n flv: [\"video/x-flv\"],\n avi: [\"video/x-msvideo\"],\n jpg: [\"image/jpeg\"],\n jpeg: [\"image/jpeg\"],\n png: [\"image/png\"],\n gif: [\"image/gif\"],\n json: [\"application/json\"],\n epub: [\"application/epub+zip\"],\n aac: [\"audio/aac\"],\n svg: [\"image/svg+xml\"],\n ico: [\"image/vnd.microsoft.icon\"],\n};\n\nexport const ERROR_CODES = {\n FILE_TOO_LARGE: \"file-too-large\",\n FILE_INVALID_TYPE: \"file-invalid-type\",\n TOO_MANY_FILES: \"too-many-files\",\n};\n\nexport const DIRECT_UPLOAD_URL = \"/api/direct_uploads\";\n\nexport const MAX_FILE_SIZE =\n globalProps?.endUserUploadedFileSizeLimitInMb || 10;\n","import classnames from \"classnames\";\nimport { FileUpload } from \"neetoicons\";\nimport { useTranslation } from \"react-i18next\";\n\nconst DropZone = ({\n isDragActive,\n getRootProps,\n getInputProps,\n multipleFilesAllowed,\n maxFileSize,\n allowedFileTypes,\n hasFileSizeLimit,\n}) => {\n const { t } = useTranslation();\n\n const shouldAllowSingleFileUpload = !multipleFilesAllowed;\n const shouldShowFileSizeLimit = hasFileSizeLimit && maxFileSize;\n\n return (\n <div\n {...getRootProps({\n className: classnames([\"neeto-molecules-file-upload__dropzone\"], {\n \"neeto-molecules-file-upload__dropzone--drag-active\": isDragActive,\n }),\n })}\n >\n <div\n className=\"neeto-molecules-file-upload__dropzone-inner\"\n data-testid=\"file-upload-body\"\n >\n <FileUpload\n className=\"neeto-molecules-file-upload__upload-icon\"\n size=\"36\"\n />\n <div className=\"neeto-molecules-file-upload__dropzone-content\">\n <label\n className=\"neeto-molecules-file-upload__upload-label\"\n htmlFor=\"file-upload\"\n >\n <span className=\"neeto-molecules-file-upload__choose-file\">\n {t(\n \"neetoMolecules.fileUpload.filesDropzone.chooseFileOrDragHere\"\n )}\n </span>\n <input {...getInputProps()} data-testid=\"image-browse-button\" />\n </label>\n <div className=\"neeto-molecules-file-upload__dropzone-helper-block\">\n {shouldAllowSingleFileUpload && (\n <p\n className=\"neeto-molecules-file-upload__dropzone-helper-text\"\n data-testid=\"upload-only-one-file-text\"\n >\n {t(\"neetoMolecules.fileUpload.filesDropzone.oneFileAllowed\")}\n </p>\n )}\n {shouldShowFileSizeLimit && (\n <p\n className=\"neeto-molecules-file-upload__dropzone-helper-text\"\n data-testid=\"maximum-allowed-size-text\"\n >\n {t(\"neetoMolecules.fileUpload.filesDropzone.maxFileSize\", {\n size: maxFileSize,\n unit: \"MB\",\n })}\n </p>\n )}\n {allowedFileTypes && (\n <p\n className=\"neeto-molecules-file-upload__dropzone-helper-text\"\n data-testid=\"allowed-files-types-text\"\n >\n {t(\"neetoMolecules.fileUpload.filesDropzone.allowedFileTypes\", {\n types: allowedFileTypes,\n })}\n </p>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default DropZone;\n","import path from \"path\";\n\nimport { t } from \"i18next\";\nimport { isNotPresent } from \"neetocist\";\n\nimport { FILE_MIME_TYPES, ERROR_CODES } from \"./constants\";\n\nexport const getAcceptedFileTypes = allowedFileTypes => {\n const accepted = {};\n\n allowedFileTypes.split(\", \").forEach(type => {\n const mimeTypes = FILE_MIME_TYPES[type] || [\"application/octet-stream\"];\n const extension = `.${type}`;\n\n if (isNotPresent(type) || isNotPresent(mimeTypes)) return;\n\n mimeTypes.forEach(mimeType => {\n if (accepted[mimeType]) accepted[mimeType].push(extension);\n else accepted[mimeType] = [extension];\n });\n });\n\n return accepted;\n};\n\nexport const convertBytesToMb = bytes =>\n ((bytes - 10) / (1024 * 1024)).toFixed(2);\n\nexport const renderErrorMessage = (errorObject, maxFileSize, isMultiple) => {\n const error = errorObject.errors[0];\n const file = errorObject.file;\n if (error) {\n const { code } = error;\n if (code === ERROR_CODES.FILE_TOO_LARGE) {\n return t(\"neetoMolecules.fileUpload.filesDropzone.errors.fileTooLarge\", {\n fileName: file.name,\n maxSize: `${Math.round(maxFileSize / 1048576)}MB`,\n });\n } else if (code === ERROR_CODES.FILE_INVALID_TYPE) {\n return t(\n \"neetoMolecules.fileUpload.filesDropzone.errors.fileInvalidType\",\n { fileType: path.extname(file.name) }\n );\n } else if (code === ERROR_CODES.TOO_MANY_FILES && !isMultiple) {\n return t(\"neetoMolecules.fileUpload.filesDropzone.errors.tooManyFiles\", {\n maxFiles: 1,\n });\n }\n }\n\n return t(\"neetoMolecules.fileUpload.filesDropzone.errors.defaultError\", {\n fileName: file.name,\n });\n};\n\nexport const convertMbToBytes = mb => mb * 1024 * 1024 + 10;\n","import { useTranslation } from \"react-i18next\";\n\nimport { ERROR_CODES } from \"./constants\";\nimport { renderErrorMessage } from \"./utils\";\n\nconst ErrorMessages = ({ fileRejections, maxFileSizeInBytes }) => {\n const { t } = useTranslation();\n\n const hasMultipleFileErrors = fileRejections.some(\n ({ errors }) => errors[0].code === ERROR_CODES.TOO_MANY_FILES\n );\n\n return (\n <>\n {hasMultipleFileErrors && (\n <p\n className=\"neeto-molecules-input__error-text\"\n data-testid=\"form-file-upload-input-error\"\n >\n <span className=\"neeto-molecules-input__error-text-style-handle\">\n {t(\"neetoMolecules.fileUpload.filesDropzone.errors.tooManyFiles\", {\n maxFiles: 1,\n })}\n </span>\n </p>\n )}\n {fileRejections\n .filter(({ errors }) => errors[0].code !== ERROR_CODES.TOO_MANY_FILES)\n .map((file, index) => (\n <p\n className=\"neeto-molecules-input__error-text\"\n data-testid=\"form-file-upload-input-error\"\n key={index}\n >\n <span className=\"neeto-molecules-input__error-text-style-handle\">\n {renderErrorMessage(file, maxFileSizeInBytes, false)}\n </span>\n </p>\n ))}\n </>\n );\n};\n\nexport default ErrorMessages;\n","import { motion, useReducedMotion } from \"framer-motion\";\n\nconst Progress = ({\n percents,\n stroke = \"currentColor\",\n emptyStroke = stroke,\n emptyStrokeOpacity = 0.25,\n duration = 0.5,\n delay = 0,\n size = 100,\n strokeWidth = 12,\n}) => {\n const shouldReduceMotion = useReducedMotion();\n const radius = 45;\n const circumference = Math.ceil(2 * Math.PI * radius);\n const fillPercents = Math.abs(\n Math.ceil((circumference / 100) * (percents - 100))\n );\n\n const transition = {\n duration: shouldReduceMotion ? 0 : duration,\n delay: shouldReduceMotion ? 0 : delay,\n };\n\n const variants = {\n hidden: { strokeDashoffset: circumference, transition },\n show: { strokeDashoffset: fillPercents, transition },\n };\n\n return (\n <div className=\"neeto-molecules-progress__circle\">\n <div\n className=\"neeto-molecules-progress__circle-wrapper\"\n style={{ height: size }}\n >\n <svg\n height={size}\n version=\"1.1\"\n viewBox=\"0 0 100 100\"\n width={size}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n {...{ strokeWidth }}\n className=\"circle\"\n cx=\"50\"\n cy=\"50\"\n fill=\"transparent\"\n r={radius}\n stroke={emptyStroke}\n strokeOpacity={emptyStrokeOpacity}\n />\n </svg>\n <svg\n height={size}\n viewBox=\"0 0 100 100\"\n width={size}\n style={{\n position: \"absolute\",\n transform: \"rotate(-90deg)\",\n overflow: \"visible\",\n top: 0,\n }}\n >\n <motion.circle\n {...{ stroke, strokeWidth, variants }}\n animate=\"show\"\n cx=\"50\"\n cy=\"50\"\n fill=\"transparent\"\n initial=\"hidden\"\n r={radius}\n strokeDasharray={circumference}\n strokeDashoffset={fillPercents}\n />\n </svg>\n </div>\n </div>\n );\n};\n\nexport default Progress;\n","import classnames from \"classnames\";\nimport { FileGeneric, Check, Close } from \"neetoicons\";\n\nimport Progress from \"./Progress\";\nimport { convertBytesToMb } from \"./utils\";\n\nconst FilePreview = ({ file, isUploading, cancel, progress }) => (\n <li\n className=\"neeto-molecules-file-upload__uploaded-list-item\"\n key={file.url}\n >\n <div className=\"neeto-molecules-file-upload__file-preview\">\n <a\n className={classnames({ \"neeto-molecules-invisible\": isUploading })}\n href={file.url}\n rel=\"noreferrer\"\n target=\"_blank\"\n >\n <FileGeneric />\n </a>\n {isUploading && (\n <div className=\"neeto-molecules-progress\">\n <Progress percents={progress || 0} size={20} />\n </div>\n )}\n </div>\n <div className=\"neeto-molecules-file-upload__file-info\">\n <span\n className=\"neeto-molecules-file-upload__file-info-name\"\n data-testid=\"file-name\"\n >\n {file.name}\n </span>\n <span className=\"neeto-molecules-file-upload__file-info-size\">\n {file.size ? `${convertBytesToMb(file.size)} MB` : \"\"}\n </span>\n </div>\n <div className=\"neeto-molecules-file-upload__actions\">\n <span\n className={classnames(\n \"neeto-molecules-file-upload__success-indicator\",\n { \"neeto-molecules-file-upload__success-indicator--active\": file.url }\n )}\n >\n {file.url && <Check data-testid=\"file-upload-success\" />}\n </span>\n <button\n className=\"neeto-molecules-file-upload__button--red neeto-molecules-file-upload__remove-button\"\n type=\"button\"\n onClick={cancel}\n >\n <Close />\n </button>\n </div>\n </li>\n);\n\nexport default FilePreview;\n","import { useState, useCallback, useEffect, useRef } from \"react\";\n\nimport { DirectUpload } from \"@rails/activestorage\";\nimport { assoc } from \"ramda\";\nimport { useDropzone } from \"react-dropzone\";\n\nimport { DIRECT_UPLOAD_URL } from \"../constants\";\nimport { convertMbToBytes, renderErrorMessage } from \"../utils\";\n\nconst useFileUpload = ({\n disabled,\n accept,\n multiple,\n maxFileSize,\n minFileSize,\n files,\n onChange,\n setError,\n setTouched,\n hasFileSizeLimit,\n}) => {\n const [uploadProgress, setUploadProgress] = useState({});\n const [uploadError, setUploadError] = useState(\"\");\n\n const filesRef = useRef(files);\n filesRef.current = files;\n\n const cancel = useCallback(\n index => () => {\n setUploadProgress(assoc(files[index].uploadId, null));\n const newFiles = files?.filter((_, idx) => idx !== index);\n onChange(newFiles);\n },\n [files]\n );\n\n useEffect(() => {\n uploadError && setError(uploadError);\n }, [uploadError]);\n\n const onDropAccepted = acceptedFiles => {\n setTouched(false);\n setUploadError(\"\");\n const initialFiles = acceptedFiles.map(file => ({\n // Filenames are not unique, so each file gets a unique id to match\n // upload results back to their entries.\n uploadId: `upload-${Math.random().toString(36).substring(2, 13)}`,\n name: file.name,\n size: file.size,\n }));\n\n const filesWithPendingUploads = multiple\n ? [...(files || []), ...initialFiles]\n : initialFiles;\n filesRef.current = filesWithPendingUploads;\n onChange(filesWithPendingUploads);\n\n acceptedFiles.forEach((file, fileIndex) => {\n const initialFile = initialFiles[fileIndex];\n const { uploadId } = initialFile;\n setUploadProgress(assoc(uploadId, 0));\n\n const upload = new DirectUpload(file, DIRECT_UPLOAD_URL, {\n directUploadWillStoreFileWithXHR: xhr => {\n xhr.upload.addEventListener(\"progress\", event => {\n const percentComplete = Math.round(\n (event.loaded / event.total) * 100\n );\n setUploadProgress(assoc(uploadId, percentComplete));\n });\n\n xhr.upload.addEventListener(\"load\", () => {\n setUploadProgress(assoc(uploadId, undefined));\n });\n },\n });\n\n upload.create((error, blob) => {\n if (error) {\n setUploadError(error);\n setUploadProgress(assoc(uploadId, null));\n\n return;\n }\n\n const uploadedFile = {\n uploadId,\n url: blob.blob_url,\n name: blob.filename,\n signedId: blob.signed_id,\n };\n\n let filesWithUploadMetadata = [{ ...initialFile, ...uploadedFile }];\n if (multiple) {\n filesWithUploadMetadata = filesRef.current.map(file =>\n file.uploadId === uploadedFile.uploadId\n ? { ...file, ...uploadedFile }\n : file\n );\n }\n\n filesRef.current = filesWithUploadMetadata;\n onChange(filesWithUploadMetadata);\n });\n });\n };\n\n const onDropRejected = fileRejections => {\n fileRejections.forEach(fileObject => {\n setTouched(true);\n if (fileObject.errors[0].code === \"too-many-files\") {\n setUploadError(renderErrorMessage(fileObject, maxFileSize, multiple));\n } else {\n setUploadError(renderErrorMessage(fileObject, maxFileSize, multiple));\n }\n });\n };\n\n const { getRootProps, getInputProps, isDragActive, fileRejections } =\n useDropzone({\n disabled,\n accept,\n multiple,\n minSize: convertMbToBytes(minFileSize),\n onDropAccepted,\n onDropRejected,\n ...(maxFileSize &&\n hasFileSizeLimit && { maxSize: convertMbToBytes(maxFileSize) }),\n });\n\n return {\n progress: uploadProgress,\n cancel,\n getRootProps,\n getInputProps,\n isDragActive,\n fileRejections,\n };\n};\n\nexport default useFileUpload;\n","import { isNotEmpty, noop } from \"neetocist\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty, isNotNil } from \"ramda\";\n\nimport { MAX_FILE_SIZE } from \"./constants\";\nimport DropZone from \"./DropZone\";\nimport ErrorMessages from \"./ErrorMessages\";\nimport \"./file-upload.scss\";\nimport FilePreview from \"./FilePreview\";\nimport useFileUpload from \"./hooks/useFileUpload\";\nimport { getAcceptedFileTypes } from \"./utils\";\n\nconst FileUpload = ({\n allowedFileTypes = \"\",\n multipleFilesAllowed = true,\n maxFileSize = MAX_FILE_SIZE,\n hasFileSizeLimit = true,\n isPreview = false,\n minFileSize = 0,\n files = [],\n onChange = noop,\n error,\n setError = noop,\n setTouched = noop,\n}) => {\n const {\n progress,\n cancel,\n getRootProps,\n getInputProps,\n isDragActive,\n fileRejections,\n } = useFileUpload({\n disabled: isPreview,\n accept: getAcceptedFileTypes(allowedFileTypes),\n multiple: multipleFilesAllowed,\n maxFileSize,\n minFileSize,\n files,\n onChange,\n setError,\n setTouched,\n hasFileSizeLimit,\n });\n\n const maxFileSizeInBytes = maxFileSize * 1024 * 1024;\n\n const isUploadingFile = file =>\n isNotNil(progress[file.uploadId]) &&\n (progress[file.uploadId] !== 100 || !file.url);\n\n const shouldShowError = error && isEmpty(fileRejections);\n\n return (\n <>\n <DropZone\n {...{\n allowedFileTypes,\n getInputProps,\n getRootProps,\n hasFileSizeLimit,\n isDragActive,\n maxFileSize,\n multipleFilesAllowed,\n }}\n />\n {!isEmpty(files) && (\n <ul className=\"neeto-molecules-file-upload__uploaded-list\">\n {files?.map((file, idx) => (\n <FilePreview\n {...{ file }}\n cancel={cancel(idx)}\n isUploading={isUploadingFile(file)}\n key={file.uploadId ?? idx}\n progress={progress[file.uploadId]}\n />\n ))}\n </ul>\n )}\n {isNotEmpty(fileRejections) && (\n <ErrorMessages {...{ fileRejections, maxFileSizeInBytes }} />\n )}\n {shouldShowError && (\n <p\n className=\"neeto-molecules-input__error-text\"\n data-testid=\"form-file-upload-input-error\"\n >\n <span className=\"neeto-molecules-input__error-text-style-handle\">\n {error}\n </span>\n </p>\n )}\n </>\n );\n};\n\nFileUpload.propTypes = {\n /**\n * Allowed file types for the file upload component.\n */\n allowedFileTypes: PropTypes.string,\n /**\n * Boolean to allow multiple files to be uploaded.\n */\n multipleFilesAllowed: PropTypes.bool,\n /**\n * Maximum file size allowed for the file upload component(MB).\n */\n maxFileSize: PropTypes.number,\n /**\n * Boolean to check if file size limit is enabled.\n */\n hasFileSizeLimit: PropTypes.bool,\n /**\n * Boolean to use component as a preview component.\n */\n isPreview: PropTypes.bool,\n /**\n * Minimum file size allowed for the file upload component(MB).\n */\n minFileSize: PropTypes.number,\n /**\n * Uploaded files.\n */\n files: PropTypes.arrayOf(\n PropTypes.shape({\n uploadId: PropTypes.string,\n name: PropTypes.string,\n size: PropTypes.number,\n url: PropTypes.string,\n })\n ),\n /**\n * Function to be called on file upload, with the updated files array.\n */\n onChange: PropTypes.func,\n /**\n * Error message to be displayed.\n */\n error: PropTypes.string,\n /**\n * Function to set error message.\n */\n setError: PropTypes.func,\n};\n\nexport default FileUpload;\n","import { useField } from \"formik\";\n\nimport FileUpload from \"./FileUpload\";\n\nconst FormikFileUpload = ({ name, ...props }) => {\n const [_, { value, touched, error }, { setValue, setTouched, setError }] =\n useField(name);\n\n const errorToDisplay = touched && error ? error : \"\";\n\n return (\n <FileUpload\n {...{ ...props, setError, setTouched }}\n error={errorToDisplay}\n files={value}\n onChange={setValue}\n />\n );\n};\n\nexport default FormikFileUpload;\n"],"names":["FILE_MIME_TYPES","pdf","doc","docx","xls","xlsx","csv","txt","rtf","html","htm","md","zip","mp3","wma","mp4","mpg","mpeg","flv","avi","jpg","jpeg","png","gif","json","epub","aac","svg","ico","ERROR_CODES","FILE_TOO_LARGE","FILE_INVALID_TYPE","TOO_MANY_FILES","DIRECT_UPLOAD_URL","MAX_FILE_SIZE","globalProps","endUserUploadedFileSizeLimitInMb","DropZone","_ref","isDragActive","getRootProps","getInputProps","multipleFilesAllowed","maxFileSize","allowedFileTypes","hasFileSizeLimit","_useTranslation","useTranslation","t","shouldAllowSingleFileUpload","shouldShowFileSizeLimit","_jsx","_objectSpread","className","classnames","children","_jsxs","FileUpload","size","htmlFor","unit","types","getAcceptedFileTypes","accepted","split","forEach","type","mimeTypes","extension","concat","isNotPresent","mimeType","push","convertBytesToMb","bytes","toFixed","renderErrorMessage","errorObject","isMultiple","error","errors","file","code","fileName","name","maxSize","Math","round","fileType","path","extname","maxFiles","convertMbToBytes","mb","ErrorMessages","fileRejections","maxFileSizeInBytes","hasMultipleFileErrors","some","_ref2","_Fragment","filter","_ref3","map","index","Progress","percents","_ref$stroke","stroke","_ref$emptyStroke","emptyStroke","_ref$emptyStrokeOpaci","emptyStrokeOpacity","_ref$duration","duration","_ref$delay","delay","_ref$size","_ref$strokeWidth","strokeWidth","shouldReduceMotion","useReducedMotion","radius","circumference","ceil","PI","fillPercents","abs","transition","variants","hidden","strokeDashoffset","show","style","height","version","viewBox","width","xmlns","cx","cy","fill","r","strokeOpacity","position","transform","overflow","top","motion","circle","animate","initial","strokeDasharray","FilePreview","isUploading","cancel","progress","href","url","rel","target","FileGeneric","Check","onClick","Close","useFileUpload","disabled","accept","multiple","minFileSize","files","onChange","setError","setTouched","_useState","useState","_useState2","_slicedToArray","uploadProgress","setUploadProgress","_useState3","_useState4","uploadError","setUploadError","filesRef","useRef","current","useCallback","assoc","uploadId","newFiles","_","idx","useEffect","onDropAccepted","acceptedFiles","initialFiles","random","toString","substring","filesWithPendingUploads","_toConsumableArray","fileIndex","initialFile","upload","DirectUpload","directUploadWillStoreFileWithXHR","xhr","addEventListener","event","percentComplete","loaded","total","undefined","create","blob","uploadedFile","blob_url","filename","signedId","signed_id","filesWithUploadMetadata","onDropRejected","fileObject","_useDropzone","useDropzone","minSize","_ref$allowedFileTypes","_ref$multipleFilesAll","_ref$maxFileSize","_ref$hasFileSizeLimit","_ref$isPreview","isPreview","_ref$minFileSize","_ref$files","_ref$onChange","noop","_ref$setError","_ref$setTouched","_useFileUpload","isUploadingFile","isNotNil","shouldShowError","isEmpty","_file$uploadId","_createElement","key","isNotEmpty","FormikFileUpload","props","_objectWithoutProperties","_excluded","_useField","useField","_useField2","_useField2$","value","touched","_useField2$2","setValue","errorToDisplay"],"mappings":"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"}
@@ -367,7 +367,7 @@ var useFileUpload = function useFileUpload(_ref) {
367
367
  filesRef.current = files;
368
368
  var cancel = React.useCallback(function (index) {
369
369
  return function () {
370
- setUploadProgress(ramda.assoc(files[index].name, null));
370
+ setUploadProgress(ramda.assoc(files[index].uploadId, null));
371
371
  var newFiles = files === null || files === void 0 ? void 0 : files.filter(function (_, idx) {
372
372
  return idx !== index;
373
373
  });
@@ -382,6 +382,9 @@ var useFileUpload = function useFileUpload(_ref) {
382
382
  setUploadError("");
383
383
  var initialFiles = acceptedFiles.map(function (file) {
384
384
  return {
385
+ // Filenames are not unique, so each file gets a unique id to match
386
+ // upload results back to their entries.
387
+ uploadId: "upload-".concat(Math.random().toString(36).substring(2, 13)),
385
388
  name: file.name,
386
389
  size: file.size
387
390
  };
@@ -389,33 +392,37 @@ var useFileUpload = function useFileUpload(_ref) {
389
392
  var filesWithPendingUploads = multiple ? [].concat(_toConsumableArray(files || []), _toConsumableArray(initialFiles)) : initialFiles;
390
393
  filesRef.current = filesWithPendingUploads;
391
394
  onChange(filesWithPendingUploads);
392
- acceptedFiles.forEach(function (file) {
393
- setUploadProgress(ramda.assoc(file.name, 0));
395
+ acceptedFiles.forEach(function (file, fileIndex) {
396
+ var initialFile = initialFiles[fileIndex];
397
+ var uploadId = initialFile.uploadId;
398
+ setUploadProgress(ramda.assoc(uploadId, 0));
394
399
  var upload = new activestorage.DirectUpload(file, DIRECT_UPLOAD_URL, {
395
400
  directUploadWillStoreFileWithXHR: function directUploadWillStoreFileWithXHR(xhr) {
396
401
  xhr.upload.addEventListener("progress", function (event) {
397
402
  var percentComplete = Math.round(event.loaded / event.total * 100);
398
- setUploadProgress(ramda.assoc(file.name, percentComplete));
403
+ setUploadProgress(ramda.assoc(uploadId, percentComplete));
399
404
  });
400
405
  xhr.upload.addEventListener("load", function () {
401
- setUploadProgress(ramda.assoc(file.name, undefined));
406
+ setUploadProgress(ramda.assoc(uploadId, undefined));
402
407
  });
403
408
  }
404
409
  });
405
410
  upload.create(function (error, blob) {
406
411
  if (error) {
407
412
  setUploadError(error);
413
+ setUploadProgress(ramda.assoc(uploadId, null));
408
414
  return;
409
415
  }
410
416
  var uploadedFile = {
417
+ uploadId: uploadId,
411
418
  url: blob.blob_url,
412
419
  name: blob.filename,
413
420
  signedId: blob.signed_id
414
421
  };
415
- var filesWithUploadMetadata = [uploadedFile];
422
+ var filesWithUploadMetadata = [_objectSpread$1(_objectSpread$1({}, initialFile), uploadedFile)];
416
423
  if (multiple) {
417
424
  filesWithUploadMetadata = filesRef.current.map(function (file) {
418
- return file.name === uploadedFile.name ? _objectSpread$1(_objectSpread$1({}, file), uploadedFile) : file;
425
+ return file.uploadId === uploadedFile.uploadId ? _objectSpread$1(_objectSpread$1({}, file), uploadedFile) : file;
419
426
  });
420
427
  }
421
428
  filesRef.current = filesWithUploadMetadata;
@@ -499,7 +506,7 @@ var FileUpload = function FileUpload(_ref) {
499
506
  fileRejections = _useFileUpload.fileRejections;
500
507
  var maxFileSizeInBytes = maxFileSize * 1024 * 1024;
501
508
  var isUploadingFile = function isUploadingFile(file) {
502
- return ramda.isNotNil(progress[file.name]) && (progress[file.name] !== 100 || !file.url);
509
+ return ramda.isNotNil(progress[file.uploadId]) && (progress[file.uploadId] !== 100 || !file.url);
503
510
  };
504
511
  var shouldShowError = error && ramda.isEmpty(fileRejections);
505
512
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
@@ -514,12 +521,13 @@ var FileUpload = function FileUpload(_ref) {
514
521
  }), !ramda.isEmpty(files) && /*#__PURE__*/jsxRuntime.jsx("ul", {
515
522
  className: "neeto-molecules-file-upload__uploaded-list",
516
523
  children: files === null || files === void 0 ? void 0 : files.map(function (file, idx) {
524
+ var _file$uploadId;
517
525
  return /*#__PURE__*/React.createElement(FilePreview, {
518
526
  file: file,
519
527
  cancel: cancel(idx),
520
528
  isUploading: isUploadingFile(file),
521
- key: idx,
522
- progress: progress[file.name]
529
+ key: (_file$uploadId = file.uploadId) !== null && _file$uploadId !== void 0 ? _file$uploadId : idx,
530
+ progress: progress[file.uploadId]
523
531
  });
524
532
  })
525
533
  }), neetoCist.isNotEmpty(fileRejections) && /*#__PURE__*/jsxRuntime.jsx(ErrorMessages, {