@react-magma/dropzone 7.0.0 → 7.0.1-next.0
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileuploader.modern.js","sources":["../src/components/dropzone/FileIcon.tsx","../src/components/dropzone/utils.ts","../src/components/dropzone/Preview.tsx","../src/components/dropzone/Dropzone.tsx"],"sourcesContent":["import React from 'react';\nimport {\n InsertDriveFileIcon,\n ImageIcon,\n AudiotrackIcon,\n VideocamIcon,\n FileExcelIcon,\n FilePdfIcon,\n FilePowerpointIcon,\n FileWordIcon,\n FileZipIcon,\n IconProps,\n} from 'react-magma-icons';\n\nimport { FilePreview } from './FilePreview';\nimport { magma } from 'react-magma-dom';\n\nexport interface FileIconProps extends IconProps {\n file: FilePreview;\n isInverse?: boolean;\n}\n\nconst icons = {\n default: {\n Icon: InsertDriveFileIcon,\n style: {\n color: magma.colors.neutral500,\n },\n },\n word: {\n Icon: FileWordIcon,\n style: {\n color: magma.colors.info500,\n },\n },\n excel: {\n Icon: FileExcelIcon,\n style: {\n color: magma.colors.success500,\n },\n },\n powerpoint: {\n Icon: FilePowerpointIcon,\n style: {\n color: magma.colors.warning500,\n },\n },\n pdf: {\n Icon: FilePdfIcon,\n style: {\n color: magma.colors.danger500,\n },\n },\n image: {\n Icon: ImageIcon,\n style: {\n color: magma.colors.neutral500,\n },\n },\n video: {\n Icon: VideocamIcon,\n style: {\n color: magma.colors.neutral500,\n },\n },\n audio: {\n Icon: AudiotrackIcon,\n style: {\n color: magma.colors.neutral500,\n },\n },\n archive: {\n Icon: FileZipIcon,\n style: {\n color: magma.colors.neutral500,\n },\n },\n};\n\nconst iconMapping: {\n [key: string]: { Icon: any; style: React.CSSProperties };\n} = {\n default: icons.default,\n xlsx: icons.excel,\n xlsm: icons.excel,\n xlsb: icons.excel,\n xltx: icons.excel,\n xls: icons.excel,\n xlt: icons.excel,\n doc: icons.word,\n docx: icons.word,\n docm: icons.word,\n dotx: icons.word,\n dotm: icons.word,\n docb: icons.word,\n pptx: icons.powerpoint,\n pptm: icons.powerpoint,\n ppt: icons.powerpoint,\n pdf: icons.pdf,\n png: icons.image,\n svg: icons.image,\n image: icons.image,\n audio: icons.audio,\n video: icons.video,\n zip: icons.archive,\n};\n\nexport const FileIcon = ({ file, isInverse }: FileIconProps) => {\n const { path = '', type = '' } = file;\n const category = type.split('/')[0];\n const extension = path.split('.').pop() || 'default';\n const { Icon, style } =\n iconMapping[extension] || iconMapping[category] || iconMapping.default;\n\n return <Icon size={magma.iconSizes.medium} style={isInverse ? {} : style} />;\n};\n","export const formatFileSize = (\n bytes: number | undefined,\n decimalPoint: number = 2,\n bytesLabel: string = 'Bytes'\n) => {\n if (bytes === undefined) return;\n if (bytes == 0) return `0 ${bytesLabel}`;\n const k = 1024;\n const sizes = [bytesLabel, 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return (\n parseFloat((bytes / Math.pow(k, i)).toFixed(decimalPoint)) + ' ' + sizes[i]\n );\n};\n","import React, { forwardRef, useContext, useEffect, useState } from 'react';\n\nimport {\n CheckCircleIcon,\n CloseIcon,\n DeleteIcon,\n ErrorIcon,\n} from 'react-magma-icons';\n\nimport {\n ButtonColor,\n ButtonVariant,\n Card,\n Flex,\n FlexAlignItems,\n FlexBehavior,\n FlexProps,\n I18nContext,\n I18nInterface,\n IconButton,\n InverseContext,\n ThemeContext,\n ThemeInterface,\n Transition,\n Spinner,\n useIsInverse,\n} from 'react-magma-dom';\n\nimport { FileIcon } from './FileIcon';\nimport { FilePreview } from './FilePreview';\nimport { formatFileSize } from './utils';\n\nimport styled, { CreateStyled } from '@emotion/styled';\n\nconst typedStyled = styled as CreateStyled<ThemeInterface>;\n\nexport interface PreviewProps extends Omit<FlexProps, 'behavior'> {\n accept?: string | string[];\n file: FilePreview;\n isInverse?: boolean;\n maxSize?: number;\n minSize?: number;\n onDeleteFile?: (file: FilePreview) => void;\n onRemoveFile?: (file: FilePreview) => void;\n /**\n * @internal\n */\n testId?: string;\n thumbnails: boolean;\n}\n\nconst Thumb = typedStyled.div<{ file: FilePreview }>`\n background-image: ${({ file }) =>\n `url('${'preview' in file && file.preview}')`};\n background-repeat: no-repeat;\n background-size: cover;\n display: inline-block;\n vertical-align: middle;\n height: 40px;\n width: 40px;\n`;\n\nconst StatusIcons = typedStyled.div`\n display: grid;\n grid-template-areas: 'inner-div';\n height: auto;\n place-items: center;\n width: 46px;\n & > div {\n display: inline-block;\n right: 0;\n grid-area: inner-div;\n }\n`;\n\nconst IconStyles = {\n marginRight: '12px',\n display: 'flex',\n};\n\nconst Errors = typedStyled.div`\n border-top: 1px solid ${({ theme }) => theme.colors.neutral300};\n padding: 16px;\n font-size: ${({ theme }) => theme.typeScale.size02.fontSize};\n line-height: ${({ theme }) => theme.typeScale.size02.lineHeight};\n`;\n\nconst StyledFlex = typedStyled(Flex)`\n height: 56px;\n padding: 0 8px 0 16px;\n font-size: ${({ theme }) => theme.typeScale.size02.fontSize};\n line-height: ${({ theme }) => theme.typeScale.size02.lineHeight};\n`;\n\nconst FileName = typedStyled(Flex)`\n overflow: hidden;\n white-space: nowrap;\n align-items: center;\n text-overflow: ellipsis;\n display: block;\n margin-right: 24px;\n font-size: ${({ theme }) => theme.typeScale.size02.fontSize};\n line-height: ${({ theme }) => theme.typeScale.size02.lineHeight};\n`;\n\nconst StyledCard = typedStyled(Card)<{ file: FilePreview; isInverse: boolean }>`\n background-color: none;\n border-color: ${({ file, theme, isInverse }) =>\n file.errors\n ? isInverse\n ? theme.colors.danger200\n : theme.colors.danger\n : theme.colors.neutral300};\n border-width: 1px;\n margin: 10px 0;\n`;\n\nconst ErrorHeader = styled.span`\n display: block;\n\n > div {\n display: flex;\n align-self: center;\n margin-right: 12px;\n }\n`;\n\nconst ErrorMessage = styled.span`\n display: block;\n`;\n\nconst formatError = (\n error: { header?: string; message: string; code: string },\n constraints: {\n maxSize?: number;\n minSize?: number;\n accept?: string | string[];\n },\n byteLabel: string\n) => {\n const accept =\n Array.isArray(constraints.accept) && constraints.accept.length === 1\n ? constraints.accept[0]\n : constraints.accept;\n const messageSuffix = Array.isArray(accept)\n ? `one of ${accept.join(', ')}`\n : accept;\n switch (error.code) {\n case 'file-too-large':\n return {\n ...error,\n message: `${error.message} ${formatFileSize(\n constraints.maxSize,\n 2,\n byteLabel\n )}.`,\n };\n case 'file-too-small':\n return {\n ...error,\n message: `${error.message} ${formatFileSize(\n constraints.minSize,\n 2,\n byteLabel\n )}.`,\n };\n case 'file-invalid-type':\n return { ...error, message: `${error.message}: ${messageSuffix}` };\n default:\n return error;\n }\n};\n\nexport const Preview = forwardRef<HTMLDivElement, PreviewProps>(\n // eslint-disable-next-line complexity\n (props, ref) => {\n const {\n accept,\n file,\n isInverse: isInverseProp,\n maxSize,\n minSize,\n onDeleteFile,\n onRemoveFile,\n testId,\n thumbnails,\n ...rest\n } = props;\n\n const theme: ThemeInterface = useContext(ThemeContext);\n const i18n: I18nInterface = React.useContext(I18nContext);\n const isInverse = useIsInverse(isInverseProp);\n const [actions, setActions] = useState(<CloseIcon />);\n\n const handleRemoveFile = () => {\n onRemoveFile && typeof onRemoveFile === 'function' && onRemoveFile(file);\n };\n\n const handleDeleteFile = () => {\n onDeleteFile && typeof onDeleteFile === 'function' && onDeleteFile(file);\n };\n\n const FinishedActions = ({ status = 'ready' }: { status?: string }) => {\n const [done, setDone] = useState<boolean>(false);\n\n useEffect(() => {\n let mounted = true;\n setTimeout(() => {\n if (mounted) {\n setDone(true);\n }\n }, 1000);\n return () => {\n mounted = false;\n };\n }, [status]);\n\n if (status === 'error' || status === 'ready') {\n return (\n <StatusIcons>\n <IconButton\n onClick={handleRemoveFile}\n variant={ButtonVariant.link}\n color={ButtonColor.secondary}\n aria-label={i18n.dropzone.removeFile}\n icon={<CloseIcon />}\n />\n </StatusIcons>\n );\n }\n\n if (status === 'pending') {\n return (\n <StatusIcons>\n <Spinner\n color={isInverse ? theme.colors.neutral100 : theme.colors.primary}\n />\n </StatusIcons>\n );\n }\n\n return (\n <StatusIcons>\n <Transition isOpen={!done} unmountOnExit fade>\n <CheckCircleIcon\n color={isInverse ? theme.colors.success200 : theme.colors.success}\n style={{ marginTop: '4px' }}\n />\n </Transition>\n <Transition isOpen={done} unmountOnExit fade>\n <IconButton\n onClick={handleDeleteFile}\n variant={ButtonVariant.link}\n color={ButtonColor.secondary}\n aria-label={i18n.dropzone.deleteFile}\n icon={<DeleteIcon />}\n />\n </Transition>\n </StatusIcons>\n );\n };\n\n useEffect(() => {\n setActions(<FinishedActions status={file?.processor?.status} />);\n }, [file?.processor?.status]);\n\n return (\n <InverseContext.Provider value={{ isInverse }}>\n <StyledCard\n isInverse={isInverse}\n theme={theme}\n file={file}\n data-testid={props.testId}\n ref={ref}\n role={file.errors ? 'alert' : ''}\n >\n <StyledFlex\n theme={theme}\n behavior={FlexBehavior.container}\n alignItems={FlexAlignItems.center}\n {...rest}\n >\n <Flex\n behavior={FlexBehavior.item}\n alignItems={FlexAlignItems.center}\n style={IconStyles}\n >\n {file.errors ? (\n <ErrorIcon\n color={\n isInverse ? theme.colors.danger200 : theme.colors.danger\n }\n size={24}\n />\n ) : file.preview &&\n thumbnails &&\n file.type &&\n file.type.startsWith('image') ? (\n <Thumb role=\"img\" file={file} />\n ) : (\n <FileIcon isInverse={isInverse} file={file} />\n )}\n </Flex>\n <FileName xs behavior={FlexBehavior.item} theme={theme}>\n {file.name}\n </FileName>\n {file.processor && file.processor.status === 'pending' && (\n <Flex\n role=\"progressbar\"\n style={{ marginLeft: 'auto' }}\n behavior={FlexBehavior.item}\n >\n {file.processor.percent}\n </Flex>\n )}\n <Flex behavior={FlexBehavior.item}>{actions}</Flex>\n </StyledFlex>\n {file.errors && (\n <Errors theme={theme}>\n {file.errors.slice(0, 1).map(({ code, ...rest }) => {\n const { header = '', message } = formatError(\n { code, ...rest, ...i18n.dropzone.errors[code] },\n { accept, minSize, maxSize },\n i18n.dropzone.bytes\n );\n return (\n <React.Fragment key={code}>\n <ErrorHeader\n style={{\n color: isInverse\n ? theme.colors.danger200\n : theme.colors.danger,\n }}\n >\n {header}\n </ErrorHeader>\n <ErrorMessage>{message}</ErrorMessage>\n </React.Fragment>\n );\n })}\n </Errors>\n )}\n </StyledCard>\n </InverseContext.Provider>\n );\n }\n);\n","/* eslint-disable no-empty-pattern */\n/**\n * HELPFUL NOTE!\n * SINCE THIS PACKAGE USES `FILE` WE MUST USE `Object.assign` IN LIEU OF SPREADING\n * `{...file}` WILL NOT COPY ALL OF THE FILE PROPERTIES\n */\n\nimport React from 'react';\nimport {\n useDropzone,\n DropzoneOptions,\n DropzoneRootProps,\n FileRejection,\n} from 'react-dropzone';\nimport {\n Button,\n ButtonColor,\n ButtonVariant,\n Flex,\n FlexBehavior,\n FlexProps,\n FormFieldContainer,\n FormFieldContainerBaseProps,\n I18nContext,\n I18nInterface,\n InverseContext,\n ThemeContext,\n ThemeInterface,\n useGenerateId,\n useIsInverse,\n} from 'react-magma-dom';\n\nimport { CloudUploadIcon } from 'react-magma-icons';\nimport { Preview } from './Preview';\nimport { FilePreview, FileError } from './FilePreview';\nimport { transparentize } from 'polished';\nimport styled, { CreateStyled } from '@emotion/styled';\n\nconst typedStyled = styled as CreateStyled<ThemeInterface>;\n\nexport interface OnSendFileProps {\n file: FilePreview;\n onError?: ({}: { errors: FileError[]; file: FilePreview }) => void;\n onFinish?: ({}: { file: FilePreview }) => void;\n onProgress?: ({}: { percent: number; file: FilePreview }) => void;\n}\n\ntype DragState =\n | 'error'\n | 'dragAccept'\n | 'dragReject'\n | 'dragActive'\n | 'default';\n\n// NOTE: These props are manually copied to dropzone.mdx\nexport interface DropzoneProps\n extends Omit<FormFieldContainerBaseProps, 'fieldId' | 'errorMessage'> {\n /**\n * Set accepted file types. See https://github.com/okonet/attr-accept for more information. Keep in mind that mime type determination is not reliable across platforms. CSV files, for example, are reported as text/plain under macOS but as application/vnd.ms-excel under Windows. In some cases there might not be a mime type set at all. See: https://github.com/react-dropzone/react-dropzone/issues/276\n */\n accept?: string | string[];\n /**\n * Enable/Disable the input\n */\n disabled?: boolean;\n /**\n * Additional props to pass to the dropzone, see https://react-dropzone.js.org/#src\n */\n dropzoneOptions?: Partial<Omit<DropzoneOptions, 'onDrop'>>;\n /**\n * Content of the helper message.\n */\n helperMessage?: string;\n /**\n * @internal\n */\n id?: string;\n /**\n * Maximum accepted number of files The default value is 0 which means there is no limitation to how many files are accepted.\n * @default 0\n */\n maxFiles?: number;\n /**\n * Minimum accepted number of files.\n */\n minFiles?: number;\n /**\n * Maximum file size (in bytes)\n * @default Infinity\n */\n maxSize?: number;\n /**\n * Minimum file size (in bytes)\n * @default 0\n */\n minSize?: number;\n /**\n * Allow drag 'n' drop (or selection from the file dialog) of multiple files.\n * @default true\n */\n multiple?: boolean;\n /**\n * If true, disables drag 'n' drop\n * @default false\n */\n noDrag?: boolean;\n /**\n * Callback for when a file is deleted\n */\n onDeleteFile?: (file: FilePreview) => void;\n /**\n * Callback for when a file is deleted\n */\n onRemoveFile?: (file: FilePreview) => void;\n /**\n * Callback for when a file is added to the preview list via dropping or selecting. Will be ran on new files when `sendFiles` is true.\n */\n onSendFile?: (props: OnSendFileProps) => void;\n /**\n * Run `onSendFile` on any new files. Delay processing by setting to `false` until processing is desired.\n * @default false\n */\n sendFiles?: boolean;\n /**\n * @internal\n */\n testId?: string;\n /**\n * Show thumbnails for images in lieu of the file icon.\n * @default true\n */\n thumbnails?: boolean;\n}\n\nconst Container = typedStyled(Flex)<\n DropzoneRootProps &\n FlexProps & {\n dragState?: DragState;\n noDrag?: boolean;\n isInverse?: boolean;\n }\n>`\n flex-direction: column;\n align-items: ${({ noDrag }) => (noDrag ? 'left' : 'center')};\n justify-content: ${({ noDrag }) => (noDrag ? 'left' : 'center')};\n text-align: ${({ noDrag }) => (noDrag ? 'left' : 'center')};\n padding: ${({ noDrag }) => (noDrag ? '0px' : '24px')};\n border-radius: ${({ noDrag }) => (noDrag ? '0px' : '4px')};\n border: ${({ dragState = 'default', noDrag, theme, isInverse }) =>\n noDrag\n ? `0px`\n : dragState === 'dragReject' || dragState === 'error'\n ? isInverse\n ? `1px dashed ${theme.colors.danger200}`\n : `1px dashed ${theme.colors.danger}`\n : dragState === 'dragActive'\n ? `1px dashed ${theme.colors.primary}`\n : dragState === 'dragAccept'\n ? `1px dashed ${theme.colors.success}`\n : `1px dashed ${theme.colors.neutral400}`};\n\n border-style: ${({ dragState = 'default' }) =>\n dragState === 'error' ? 'solid' : 'dashed'};\n background-color: ${({ theme, noDrag, isInverse }) =>\n noDrag\n ? 'transparent'\n : isInverse\n ? transparentize(0.75, theme.colors.neutral900)\n : theme.colors.neutral200};\n outline: none;\n transition: ${({ noDrag }) => `border ${noDrag ? 0 : '.24s'} ease-in-out`};\n`;\n\nconst HelperMessage = typedStyled.span<{ isInverse?: boolean }>`\n color: ${({ theme, isInverse }) =>\n isInverse ? theme.colors.neutral100 : theme.colors.neutral700};\n display: block;\n font-size: 14px;\n margin: -8px 0 16px 0;\n`;\n\nconst Wrapper = typedStyled.div<{ isInverse?: boolean }>`\n color: ${({ theme, isInverse }) =>\n isInverse ? theme.colors.neutral100 : theme.colors.neutral700};\n margin: 0 0 24px 0;\n font-size: ${({ theme }) => theme.typeScale.size02.fontSize};\n line-height: ${({ theme }) => theme.typeScale.size02.lineHeight};\n font-weight: 500;\n padding: ${({ theme }) => theme.spaceScale.spacing01};\n`;\nexport const Dropzone = React.forwardRef<HTMLInputElement, DropzoneProps>(\n (props, ref) => {\n const {\n accept,\n containerStyle,\n disabled,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dropzoneOptions = {\n multiple: true,\n },\n helperMessage,\n id: defaultId,\n inputSize,\n isInverse: isInverseProp,\n isLabelVisuallyHidden,\n labelStyle,\n labelText,\n maxFiles,\n minFiles,\n maxSize,\n minSize,\n multiple = true,\n noDrag = false,\n onSendFile,\n onDeleteFile,\n onRemoveFile,\n sendFiles = false,\n testId,\n thumbnails = true,\n ...rest\n } = props;\n\n const [files, setFiles] = React.useState<FilePreview[]>([]);\n const [errorMessage, setErrorMessage] = React.useState<string | null>(null);\n\n const isInverse = useIsInverse(isInverseProp);\n const theme: ThemeInterface = React.useContext(ThemeContext);\n const i18n: I18nInterface = React.useContext(I18nContext);\n const id = useGenerateId(defaultId);\n\n const onDrop = React.useCallback(\n (acceptedFiles: FilePreview[], rejectedFiles: FileRejection[]) => {\n setFiles((files: FilePreview[]) => [\n ...files,\n ...acceptedFiles.map((file: FilePreview) =>\n Object.assign(file, {\n preview: URL.createObjectURL(file),\n })\n ),\n ...rejectedFiles.map(\n ({ file, errors }: { file: FilePreview; errors: FileError[] }) =>\n Object.assign(file, {\n errors,\n })\n ),\n ]);\n },\n []\n );\n\n const {\n getInputProps,\n getRootProps,\n isDragAccept,\n isDragActive,\n isDragReject,\n open,\n } = useDropzone({\n noClick: true,\n disabled,\n multiple,\n maxSize,\n minSize,\n accept,\n onDrop,\n noDrag,\n });\n\n const inputProps = getInputProps({ id });\n\n const dragState: DragState = errorMessage\n ? 'error'\n : isDragAccept\n ? 'dragAccept'\n : isDragReject\n ? 'dragReject'\n : isDragActive\n ? 'dragActive'\n : 'default';\n\n const handleRemoveFile = (removedFile: FilePreview) => {\n setFiles(files => files.filter(file => file !== removedFile));\n onRemoveFile &&\n typeof onRemoveFile === 'function' &&\n onRemoveFile(removedFile);\n };\n\n const handleDeleteFile = (removedFile: FilePreview) => {\n setFiles(files => files.filter(file => file !== removedFile));\n onDeleteFile &&\n typeof onDeleteFile === 'function' &&\n onDeleteFile(removedFile);\n };\n\n const setProgress = (props: { percent: number; file: FilePreview }) => {\n setFiles(files =>\n files.map(file =>\n file === props.file\n ? Object.assign(file, {\n processor: {\n ...file.processor,\n percent: `${props.percent}%`,\n status: 'pending',\n },\n })\n : file\n )\n );\n };\n\n const setFinished = (props: { file: FilePreview }) => {\n setFiles(files =>\n files.map(file =>\n file === props.file\n ? Object.assign(file, {\n processor: {\n ...file.processor,\n percent: '',\n status: 'finished',\n },\n })\n : file\n )\n );\n };\n\n const setError = (props: { errors: FileError[]; file: FilePreview }) => {\n setFiles(files =>\n files.map(file =>\n file === props.file\n ? Object.assign(file, {\n errors: props.errors,\n processor: { ...file.processor, status: 'error' },\n })\n : file\n )\n );\n };\n\n const formatError = (\n code: string | null,\n constraints: { maxFiles?: number; minFiles?: number }\n ) => {\n if (code === null) return null;\n const error = i18n.dropzone.errors[code];\n switch (code) {\n case 'too-many-files':\n return `${error.message} ${constraints.maxFiles} ${i18n.dropzone.files}.`;\n case 'too-few-files':\n return `${error.message} ${constraints.minFiles} ${i18n.dropzone.files}.`;\n default:\n return error.message;\n }\n };\n\n React.useEffect(\n () => () => {\n files.forEach(\n file => file.preview && URL.revokeObjectURL(file.preview)\n );\n },\n [files]\n );\n\n React.useEffect(() => {\n const minFileError = minFiles && files.length < minFiles;\n const maxFileError = maxFiles && files.length > maxFiles;\n\n setErrorMessage(\n formatError(\n maxFileError\n ? 'too-many-files'\n : minFileError\n ? 'too-few-files'\n : null,\n { minFiles, maxFiles }\n )\n );\n\n if (sendFiles && files.length > 0 && !maxFileError && !minFileError) {\n setFiles((files: FilePreview[]) => {\n return files.map((file: FilePreview) => {\n !file.errors &&\n !file.processor &&\n onSendFile &&\n onSendFile({\n file,\n onError: setError,\n onFinish: setFinished,\n onProgress: setProgress,\n });\n return file;\n });\n });\n }\n }, [sendFiles, files.length, onSendFile]);\n\n return (\n <InverseContext.Provider value={{ isInverse }}>\n <FormFieldContainer\n actionable={false}\n containerStyle={containerStyle}\n errorMessage={errorMessage}\n fieldId={id}\n inputSize={inputSize}\n isInverse={isInverse}\n isLabelVisuallyHidden={isLabelVisuallyHidden}\n labelStyle={labelStyle}\n labelText={labelText}\n messageStyle={{ minHeight: 0 }}\n data-testid={testId}\n >\n <HelperMessage theme={theme} isInverse={isInverse}>\n {helperMessage}\n </HelperMessage>\n <Container\n behavior={FlexBehavior.container}\n dragState={dragState}\n isInverse={isInverse}\n noDrag={noDrag}\n theme={theme}\n {...getRootProps()}\n {...rest}\n testId={testId}\n tabIndex={-1}\n >\n <input\n ref={ref}\n type={inputProps.type}\n accept={inputProps.accept}\n autoComplete={inputProps.autoComplete}\n id={inputProps.id}\n multiple={inputProps.multiple}\n onChange={inputProps.onChange}\n onClick={inputProps.onClick}\n style={inputProps.style}\n tabIndex={inputProps.tabIndex}\n />\n {noDrag ? (\n <Flex xs behavior={FlexBehavior.item}>\n <Button\n color={ButtonColor.primary}\n disabled={disabled}\n isInverse={isInverse}\n onClick={open}\n style={{ margin: 0 }}\n >\n {i18n.dropzone.browseFiles}\n </Button>\n </Flex>\n ) : (\n <Flex behavior={FlexBehavior.item}>\n <CloudUploadIcon\n aria-hidden=\"true\"\n color={\n isInverse\n ? theme.colors.neutral100\n : theme.colors.neutral500\n }\n size={48}\n />\n <Wrapper isInverse={isInverse} theme={theme}>\n {i18n.dropzone.dragMessage}\n </Wrapper>\n <Button\n color={ButtonColor.primary}\n disabled={disabled}\n isInverse={isInverse}\n onClick={open}\n style={{ margin: 0 }}\n variant={ButtonVariant.solid}\n >\n {i18n.dropzone.browseFiles}\n </Button>\n </Flex>\n )}\n </Container>\n </FormFieldContainer>\n {files.map((file: FilePreview) => (\n <Preview\n accept={accept}\n file={file}\n isInverse={isInverse}\n key={file.name}\n maxSize={maxSize}\n minSize={minSize}\n onDeleteFile={handleDeleteFile}\n onRemoveFile={handleRemoveFile}\n thumbnails={thumbnails}\n />\n ))}\n </InverseContext.Provider>\n );\n }\n);\n"],"names":["icons","default","Icon","InsertDriveFileIcon","style","color","magma","colors","neutral500","word","FileWordIcon","info500","excel","FileExcelIcon","success500","powerpoint","FilePowerpointIcon","warning500","pdf","FilePdfIcon","danger500","image","ImageIcon","video","VideocamIcon","audio","AudiotrackIcon","archive","FileZipIcon","iconMapping","xlsx","xlsm","xlsb","xltx","xls","xlt","doc","docx","docm","dotx","dotm","docb","pptx","pptm","ppt","png","svg","zip","FileIcon","file","isInverse","path","type","category","split","extension","pop","_jsx","size","iconSizes","medium","formatFileSize","bytes","decimalPoint","bytesLabel","undefined","sizes","i","Math","floor","log","parseFloat","pow","toFixed","typedStyled","styled","Thumb","div","_t","_","preview","StatusIcons","_t2","IconStyles","marginRight","display","Errors","_t3","theme","neutral300","typeScale","size02","fontSize","lineHeight","StyledFlex","Flex","_t4","FileName","_t5","StyledCard","Card","_t6","errors","danger200","danger","ErrorHeader","span","_t7","ErrorMessage","_t8","Preview","forwardRef","props","ref","accept","isInverseProp","maxSize","minSize","onDeleteFile","onRemoveFile","thumbnails","rest","_objectWithoutPropertiesLoose","_excluded","useContext","ThemeContext","i18n","React","I18nContext","useIsInverse","actions","setActions","useState","CloseIcon","handleRemoveFile","handleDeleteFile","FinishedActions","status","done","setDone","useEffect","mounted","setTimeout","children","IconButton","onClick","variant","ButtonVariant","link","ButtonColor","secondary","dropzone","removeFile","icon","Spinner","neutral100","primary","_jsxs","Transition","isOpen","unmountOnExit","fade","CheckCircleIcon","success200","success","marginTop","deleteFile","DeleteIcon","_file$processor","processor","_file$processor2","InverseContext","Provider","value","testId","role","_extends","behavior","FlexBehavior","container","alignItems","FlexAlignItems","center","item","ErrorIcon","startsWith","xs","name","marginLeft","percent","slice","map","_ref","code","_excluded2","header","message","formatError","error","constraints","byteLabel","Array","isArray","length","messageSuffix","join","Fragment","Container","noDrag","dragState","neutral400","transparentize","neutral900","neutral200","HelperMessage","neutral700","Wrapper","spaceScale","spacing01","Dropzone","containerStyle","disabled","dropzoneOptions","multiple","helperMessage","id","defaultId","inputSize","isLabelVisuallyHidden","labelStyle","labelText","maxFiles","minFiles","onSendFile","sendFiles","files","setFiles","errorMessage","setErrorMessage","useGenerateId","onDrop","useCallback","acceptedFiles","rejectedFiles","Object","assign","URL","createObjectURL","getInputProps","getRootProps","isDragAccept","isDragActive","isDragReject","open","useDropzone","noClick","inputProps","removedFile","filter","setProgress","setFinished","setError","forEach","revokeObjectURL","minFileError","maxFileError","onError","onFinish","onProgress","FormFieldContainer","actionable","fieldId","messageStyle","minHeight","tabIndex","autoComplete","onChange","Button","margin","browseFiles","CloudUploadIcon","dragMessage","solid"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fileuploader.modern.js","sources":["../src/components/dropzone/FileIcon.tsx","../src/components/dropzone/utils.ts","../src/components/dropzone/Preview.tsx","../src/components/dropzone/Dropzone.tsx"],"sourcesContent":["import React from 'react';\nimport {\n InsertDriveFileIcon,\n ImageIcon,\n AudiotrackIcon,\n VideocamIcon,\n FileExcelIcon,\n FilePdfIcon,\n FilePowerpointIcon,\n FileWordIcon,\n FileZipIcon,\n IconProps,\n} from 'react-magma-icons';\n\nimport { FilePreview } from './FilePreview';\nimport { magma } from 'react-magma-dom';\n\nexport interface FileIconProps extends IconProps {\n file: FilePreview;\n isInverse?: boolean;\n}\n\nconst icons = {\n default: {\n Icon: InsertDriveFileIcon,\n style: {\n color: magma.colors.neutral500,\n },\n },\n word: {\n Icon: FileWordIcon,\n style: {\n color: magma.colors.info500,\n },\n },\n excel: {\n Icon: FileExcelIcon,\n style: {\n color: magma.colors.success500,\n },\n },\n powerpoint: {\n Icon: FilePowerpointIcon,\n style: {\n color: magma.colors.warning500,\n },\n },\n pdf: {\n Icon: FilePdfIcon,\n style: {\n color: magma.colors.danger500,\n },\n },\n image: {\n Icon: ImageIcon,\n style: {\n color: magma.colors.neutral500,\n },\n },\n video: {\n Icon: VideocamIcon,\n style: {\n color: magma.colors.neutral500,\n },\n },\n audio: {\n Icon: AudiotrackIcon,\n style: {\n color: magma.colors.neutral500,\n },\n },\n archive: {\n Icon: FileZipIcon,\n style: {\n color: magma.colors.neutral500,\n },\n },\n};\n\nconst iconMapping: {\n [key: string]: { Icon: any; style: React.CSSProperties };\n} = {\n default: icons.default,\n xlsx: icons.excel,\n xlsm: icons.excel,\n xlsb: icons.excel,\n xltx: icons.excel,\n xls: icons.excel,\n xlt: icons.excel,\n doc: icons.word,\n docx: icons.word,\n docm: icons.word,\n dotx: icons.word,\n dotm: icons.word,\n docb: icons.word,\n pptx: icons.powerpoint,\n pptm: icons.powerpoint,\n ppt: icons.powerpoint,\n pdf: icons.pdf,\n png: icons.image,\n svg: icons.image,\n image: icons.image,\n audio: icons.audio,\n video: icons.video,\n zip: icons.archive,\n};\n\nexport const FileIcon = ({ file, isInverse }: FileIconProps) => {\n const { path = '', type = '' } = file;\n const category = type.split('/')[0];\n const extension = path.split('.').pop() || 'default';\n const { Icon, style } =\n iconMapping[extension] || iconMapping[category] || iconMapping.default;\n\n return <Icon size={magma.iconSizes.medium} style={isInverse ? {} : style} />;\n};\n","export const formatFileSize = (\n bytes: number | undefined,\n decimalPoint: number = 2,\n bytesLabel: string = 'Bytes'\n) => {\n if (bytes === undefined) return;\n if (bytes == 0) return `0 ${bytesLabel}`;\n const k = 1024;\n const sizes = [bytesLabel, 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return (\n parseFloat((bytes / Math.pow(k, i)).toFixed(decimalPoint)) + ' ' + sizes[i]\n );\n};\n","import React, { forwardRef, useContext, useEffect, useState } from 'react';\n\nimport {\n CheckCircleIcon,\n CloseIcon,\n DeleteIcon,\n ErrorIcon,\n} from 'react-magma-icons';\n\nimport {\n ButtonColor,\n ButtonVariant,\n Card,\n Flex,\n FlexAlignItems,\n FlexBehavior,\n FlexProps,\n I18nContext,\n I18nInterface,\n IconButton,\n InverseContext,\n ThemeContext,\n ThemeInterface,\n Transition,\n Spinner,\n useIsInverse,\n} from 'react-magma-dom';\n\nimport { FileIcon } from './FileIcon';\nimport { FilePreview } from './FilePreview';\nimport { formatFileSize } from './utils';\n\nimport styled, { CreateStyled } from '@emotion/styled';\n\nconst typedStyled = styled as CreateStyled<ThemeInterface>;\n\nexport interface PreviewProps extends Omit<FlexProps, 'behavior'> {\n accept?: string | string[];\n file: FilePreview;\n isInverse?: boolean;\n maxSize?: number;\n minSize?: number;\n onDeleteFile?: (file: FilePreview) => void;\n onRemoveFile?: (file: FilePreview) => void;\n /**\n * @internal\n */\n testId?: string;\n thumbnails: boolean;\n}\n\nconst Thumb = typedStyled.div<{ file: FilePreview }>`\n background-image: ${({ file }) =>\n `url('${'preview' in file && file.preview}')`};\n background-repeat: no-repeat;\n background-size: cover;\n display: inline-block;\n vertical-align: middle;\n height: 40px;\n width: 40px;\n`;\n\nconst StatusIcons = typedStyled.div`\n display: grid;\n grid-template-areas: 'inner-div';\n height: auto;\n place-items: center;\n width: 46px;\n & > div {\n display: inline-block;\n right: 0;\n grid-area: inner-div;\n }\n`;\n\nconst IconStyles = {\n marginRight: '12px',\n display: 'flex',\n};\n\nconst Errors = typedStyled.div`\n border-top: 1px solid ${({ theme }) => theme.colors.neutral300};\n padding: 16px;\n font-size: ${({ theme }) => theme.typeScale.size02.fontSize};\n line-height: ${({ theme }) => theme.typeScale.size02.lineHeight};\n`;\n\nconst StyledFlex = typedStyled(Flex)`\n height: 56px;\n padding: 0 8px 0 16px;\n font-size: ${({ theme }) => theme.typeScale.size02.fontSize};\n line-height: ${({ theme }) => theme.typeScale.size02.lineHeight};\n`;\n\nconst FileName = typedStyled(Flex)`\n overflow: hidden;\n white-space: nowrap;\n align-items: center;\n text-overflow: ellipsis;\n display: block;\n margin-right: 24px;\n font-size: ${({ theme }) => theme.typeScale.size02.fontSize};\n line-height: ${({ theme }) => theme.typeScale.size02.lineHeight};\n`;\n\nconst StyledCard = typedStyled(Card)<{ file: FilePreview; isInverse: boolean }>`\n background-color: none;\n border-color: ${({ file, theme, isInverse }) =>\n file.errors\n ? isInverse\n ? theme.colors.danger200\n : theme.colors.danger\n : theme.colors.neutral300};\n border-width: 1px;\n margin: 10px 0;\n`;\n\nconst ErrorHeader = styled.span`\n display: block;\n\n > div {\n display: flex;\n align-self: center;\n margin-right: 12px;\n }\n`;\n\nconst ErrorMessage = styled.span`\n display: block;\n`;\n\nconst formatError = (\n error: { header?: string; message: string; code: string },\n constraints: {\n maxSize?: number;\n minSize?: number;\n accept?: string | string[];\n },\n byteLabel: string\n) => {\n const accept =\n Array.isArray(constraints.accept) && constraints.accept.length === 1\n ? constraints.accept[0]\n : constraints.accept;\n const messageSuffix = Array.isArray(accept)\n ? `one of ${accept.join(', ')}`\n : accept;\n switch (error.code) {\n case 'file-too-large':\n return {\n ...error,\n message: `${error.message} ${formatFileSize(\n constraints.maxSize,\n 2,\n byteLabel\n )}.`,\n };\n case 'file-too-small':\n return {\n ...error,\n message: `${error.message} ${formatFileSize(\n constraints.minSize,\n 2,\n byteLabel\n )}.`,\n };\n case 'file-invalid-type':\n return { ...error, message: `${error.message}: ${messageSuffix}` };\n default:\n return error;\n }\n};\n\nexport const Preview = forwardRef<HTMLDivElement, PreviewProps>(\n // eslint-disable-next-line complexity\n (props, ref) => {\n const {\n accept,\n file,\n isInverse: isInverseProp,\n maxSize,\n minSize,\n onDeleteFile,\n onRemoveFile,\n testId,\n thumbnails,\n ...rest\n } = props;\n\n const theme: ThemeInterface = useContext(ThemeContext);\n const i18n: I18nInterface = React.useContext(I18nContext);\n const isInverse = useIsInverse(isInverseProp);\n const [actions, setActions] = useState(<CloseIcon />);\n\n const handleRemoveFile = () => {\n onRemoveFile && typeof onRemoveFile === 'function' && onRemoveFile(file);\n };\n\n const handleDeleteFile = () => {\n onDeleteFile && typeof onDeleteFile === 'function' && onDeleteFile(file);\n };\n\n const FinishedActions = ({ status = 'ready' }: { status?: string }) => {\n const [done, setDone] = useState<boolean>(false);\n\n useEffect(() => {\n let mounted = true;\n setTimeout(() => {\n if (mounted) {\n setDone(true);\n }\n }, 1000);\n return () => {\n mounted = false;\n };\n }, [status]);\n\n if (status === 'error' || status === 'ready') {\n return (\n <StatusIcons>\n <IconButton\n onClick={handleRemoveFile}\n variant={ButtonVariant.link}\n color={ButtonColor.secondary}\n aria-label={i18n.dropzone.removeFile}\n icon={<CloseIcon />}\n />\n </StatusIcons>\n );\n }\n\n if (status === 'pending') {\n return (\n <StatusIcons>\n <Spinner\n color={isInverse ? theme.colors.neutral100 : theme.colors.primary}\n />\n </StatusIcons>\n );\n }\n\n return (\n <StatusIcons>\n <Transition isOpen={!done} unmountOnExit fade>\n <CheckCircleIcon\n color={isInverse ? theme.colors.success200 : theme.colors.success}\n style={{ marginTop: '4px' }}\n />\n </Transition>\n <Transition isOpen={done} unmountOnExit fade>\n <IconButton\n onClick={handleDeleteFile}\n variant={ButtonVariant.link}\n color={ButtonColor.secondary}\n aria-label={i18n.dropzone.deleteFile}\n icon={<DeleteIcon />}\n />\n </Transition>\n </StatusIcons>\n );\n };\n\n useEffect(() => {\n setActions(<FinishedActions status={file?.processor?.status} />);\n }, [file?.processor?.status]);\n\n return (\n <InverseContext.Provider value={{ isInverse }}>\n <StyledCard\n isInverse={isInverse}\n theme={theme}\n file={file}\n data-testid={props.testId}\n ref={ref}\n role={file.errors ? 'alert' : ''}\n >\n <StyledFlex\n theme={theme}\n behavior={FlexBehavior.container}\n alignItems={FlexAlignItems.center}\n {...rest}\n >\n <Flex\n behavior={FlexBehavior.item}\n alignItems={FlexAlignItems.center}\n style={IconStyles}\n >\n {file.errors ? (\n <ErrorIcon\n color={\n isInverse ? theme.colors.danger200 : theme.colors.danger\n }\n size={24}\n />\n ) : file.preview &&\n thumbnails &&\n file.type &&\n file.type.startsWith('image') ? (\n <Thumb role=\"img\" file={file} />\n ) : (\n <FileIcon isInverse={isInverse} file={file} />\n )}\n </Flex>\n <FileName xs behavior={FlexBehavior.item} theme={theme}>\n {file.name}\n </FileName>\n {file.processor && file.processor.status === 'pending' && (\n <Flex\n role=\"progressbar\"\n style={{ marginLeft: 'auto' }}\n behavior={FlexBehavior.item}\n >\n {file.processor.percent}\n </Flex>\n )}\n <Flex behavior={FlexBehavior.item}>{actions}</Flex>\n </StyledFlex>\n {file.errors && (\n <Errors theme={theme}>\n {file.errors.slice(0, 1).map(({ code, ...rest }) => {\n const { header = '', message } = formatError(\n { code, ...rest, ...i18n.dropzone.errors[code] },\n { accept, minSize, maxSize },\n i18n.dropzone.bytes\n );\n return (\n <React.Fragment key={code}>\n <ErrorHeader\n style={{\n color: isInverse\n ? theme.colors.danger200\n : theme.colors.danger,\n }}\n >\n {header}\n </ErrorHeader>\n <ErrorMessage>{message}</ErrorMessage>\n </React.Fragment>\n );\n })}\n </Errors>\n )}\n </StyledCard>\n </InverseContext.Provider>\n );\n }\n);\n","/* eslint-disable no-empty-pattern */\n/**\n * HELPFUL NOTE!\n * SINCE THIS PACKAGE USES `FILE` WE MUST USE `Object.assign` IN LIEU OF SPREADING\n * `{...file}` WILL NOT COPY ALL OF THE FILE PROPERTIES\n */\n\nimport React from 'react';\nimport {\n useDropzone,\n DropzoneOptions,\n DropzoneRootProps,\n FileRejection,\n} from 'react-dropzone';\nimport {\n Button,\n ButtonColor,\n ButtonVariant,\n Flex,\n FlexBehavior,\n FlexProps,\n FormFieldContainer,\n FormFieldContainerBaseProps,\n I18nContext,\n I18nInterface,\n InverseContext,\n ThemeContext,\n ThemeInterface,\n useGenerateId,\n useIsInverse,\n} from 'react-magma-dom';\n\nimport { CloudUploadIcon } from 'react-magma-icons';\nimport { Preview } from './Preview';\nimport { FilePreview, FileError } from './FilePreview';\nimport { transparentize } from 'polished';\nimport styled, { CreateStyled } from '@emotion/styled';\n\nconst typedStyled = styled as CreateStyled<ThemeInterface>;\n\nexport interface OnSendFileProps {\n file: FilePreview;\n onError?: ({}: { errors: FileError[]; file: FilePreview }) => void;\n onFinish?: ({}: { file: FilePreview }) => void;\n onProgress?: ({}: { percent: number; file: FilePreview }) => void;\n}\n\ntype DragState =\n | 'error'\n | 'dragAccept'\n | 'dragReject'\n | 'dragActive'\n | 'default';\n\n// NOTE: These props are manually copied to dropzone.mdx\nexport interface DropzoneProps\n extends Omit<FormFieldContainerBaseProps, 'fieldId' | 'errorMessage'> {\n /**\n * Set accepted file types. See https://github.com/okonet/attr-accept for more information. Keep in mind that mime type determination is not reliable across platforms. CSV files, for example, are reported as text/plain under macOS but as application/vnd.ms-excel under Windows. In some cases there might not be a mime type set at all. See: https://github.com/react-dropzone/react-dropzone/issues/276\n */\n accept?: string | string[];\n /**\n * Enable/Disable the input\n */\n disabled?: boolean;\n /**\n * Additional props to pass to the dropzone, see https://react-dropzone.js.org/#src\n */\n dropzoneOptions?: Partial<Omit<DropzoneOptions, 'onDrop'>>;\n /**\n * Content of the helper message.\n */\n helperMessage?: string;\n /**\n * @internal\n */\n id?: string;\n /**\n * Maximum accepted number of files The default value is 0 which means there is no limitation to how many files are accepted.\n * @default 0\n */\n maxFiles?: number;\n /**\n * Minimum accepted number of files.\n */\n minFiles?: number;\n /**\n * Maximum file size (in bytes)\n * @default Infinity\n */\n maxSize?: number;\n /**\n * Minimum file size (in bytes)\n * @default 0\n */\n minSize?: number;\n /**\n * Allow drag 'n' drop (or selection from the file dialog) of multiple files.\n * @default true\n */\n multiple?: boolean;\n /**\n * If true, disables drag 'n' drop\n * @default false\n */\n noDrag?: boolean;\n /**\n * Callback for when a file is deleted\n */\n onDeleteFile?: (file: FilePreview) => void;\n /**\n * Callback for when a file is deleted\n */\n onRemoveFile?: (file: FilePreview) => void;\n /**\n * Callback for when a file is added to the preview list via dropping or selecting. Will be ran on new files when `sendFiles` is true.\n */\n onSendFile?: (props: OnSendFileProps) => void;\n /**\n * Run `onSendFile` on any new files. Delay processing by setting to `false` until processing is desired.\n * @default false\n */\n sendFiles?: boolean;\n /**\n * @internal\n */\n testId?: string;\n /**\n * Show thumbnails for images in lieu of the file icon.\n * @default true\n */\n thumbnails?: boolean;\n}\n\nconst Container = typedStyled(Flex)<\n DropzoneRootProps &\n FlexProps & {\n dragState?: DragState;\n noDrag?: boolean;\n isInverse?: boolean;\n }\n>`\n flex-direction: column;\n align-items: ${({ noDrag }) => (noDrag ? 'left' : 'center')};\n justify-content: ${({ noDrag }) => (noDrag ? 'left' : 'center')};\n text-align: ${({ noDrag }) => (noDrag ? 'left' : 'center')};\n padding: ${({ noDrag }) => (noDrag ? '0px' : '24px')};\n border-radius: ${({ noDrag }) => (noDrag ? '0px' : '4px')};\n border: ${({ dragState = 'default', noDrag, theme, isInverse }) =>\n noDrag\n ? `0px`\n : dragState === 'dragReject' || dragState === 'error'\n ? isInverse\n ? `1px dashed ${theme.colors.danger200}`\n : `1px dashed ${theme.colors.danger}`\n : dragState === 'dragActive'\n ? `1px dashed ${theme.colors.primary}`\n : dragState === 'dragAccept'\n ? `1px dashed ${theme.colors.success}`\n : `1px dashed ${theme.colors.neutral400}`};\n\n border-style: ${({ dragState = 'default' }) =>\n dragState === 'error' ? 'solid' : 'dashed'};\n background-color: ${({ theme, noDrag, isInverse }) =>\n noDrag\n ? 'transparent'\n : isInverse\n ? transparentize(0.75, theme.colors.neutral900)\n : theme.colors.neutral200};\n outline: none;\n transition: ${({ noDrag }) => `border ${noDrag ? 0 : '.24s'} ease-in-out`};\n`;\n\nconst HelperMessage = typedStyled.span<{ isInverse?: boolean }>`\n color: ${({ theme, isInverse }) =>\n isInverse ? theme.colors.neutral100 : theme.colors.neutral700};\n display: block;\n font-size: 14px;\n margin: -8px 0 16px 0;\n`;\n\nconst Wrapper = typedStyled.div<{ isInverse?: boolean }>`\n color: ${({ theme, isInverse }) =>\n isInverse ? theme.colors.neutral100 : theme.colors.neutral700};\n margin: 0 0 24px 0;\n font-size: ${({ theme }) => theme.typeScale.size02.fontSize};\n line-height: ${({ theme }) => theme.typeScale.size02.lineHeight};\n font-weight: 500;\n padding: ${({ theme }) => theme.spaceScale.spacing01};\n`;\nexport const Dropzone = React.forwardRef<HTMLInputElement, DropzoneProps>(\n (props, ref) => {\n const {\n accept,\n containerStyle,\n disabled,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dropzoneOptions = {\n multiple: true,\n },\n helperMessage,\n id: defaultId,\n inputSize,\n isInverse: isInverseProp,\n isLabelVisuallyHidden,\n labelStyle,\n labelText,\n maxFiles,\n minFiles,\n maxSize,\n minSize,\n multiple = true,\n noDrag = false,\n onSendFile,\n onDeleteFile,\n onRemoveFile,\n sendFiles = false,\n testId,\n thumbnails = true,\n ...rest\n } = props;\n\n const [files, setFiles] = React.useState<FilePreview[]>([]);\n const [errorMessage, setErrorMessage] = React.useState<string | null>(null);\n\n const isInverse = useIsInverse(isInverseProp);\n const theme: ThemeInterface = React.useContext(ThemeContext);\n const i18n: I18nInterface = React.useContext(I18nContext);\n const id = useGenerateId(defaultId);\n\n const onDrop = React.useCallback(\n (acceptedFiles: FilePreview[], rejectedFiles: FileRejection[]) => {\n setFiles((files: FilePreview[]) => [\n ...files,\n ...acceptedFiles.map((file: FilePreview) =>\n Object.assign(file, {\n preview: URL.createObjectURL(file),\n })\n ),\n ...rejectedFiles.map(\n ({ file, errors }: { file: FilePreview; errors: FileError[] }) =>\n Object.assign(file, {\n errors,\n })\n ),\n ]);\n },\n []\n );\n\n const {\n getInputProps,\n getRootProps,\n isDragAccept,\n isDragActive,\n isDragReject,\n open,\n } = useDropzone({\n noClick: true,\n disabled,\n multiple,\n maxSize,\n minSize,\n accept,\n onDrop,\n noDrag,\n });\n\n const inputProps = getInputProps({ id });\n\n const dragState: DragState = errorMessage\n ? 'error'\n : isDragAccept\n ? 'dragAccept'\n : isDragReject\n ? 'dragReject'\n : isDragActive\n ? 'dragActive'\n : 'default';\n\n const handleRemoveFile = (removedFile: FilePreview) => {\n setFiles(files => files.filter(file => file !== removedFile));\n onRemoveFile &&\n typeof onRemoveFile === 'function' &&\n onRemoveFile(removedFile);\n };\n\n const handleDeleteFile = (removedFile: FilePreview) => {\n setFiles(files => files.filter(file => file !== removedFile));\n onDeleteFile &&\n typeof onDeleteFile === 'function' &&\n onDeleteFile(removedFile);\n };\n\n const setProgress = (props: { percent: number; file: FilePreview }) => {\n setFiles(files =>\n files.map(file =>\n file === props.file\n ? Object.assign(file, {\n processor: {\n ...file.processor,\n percent: `${props.percent}%`,\n status: 'pending',\n },\n })\n : file\n )\n );\n };\n\n const setFinished = (props: { file: FilePreview }) => {\n setFiles(files =>\n files.map(file =>\n file === props.file\n ? Object.assign(file, {\n processor: {\n ...file.processor,\n percent: '',\n status: 'finished',\n },\n })\n : file\n )\n );\n };\n\n const setError = (props: { errors: FileError[]; file: FilePreview }) => {\n setFiles(files =>\n files.map(file =>\n file === props.file\n ? Object.assign(file, {\n errors: props.errors,\n processor: { ...file.processor, status: 'error' },\n })\n : file\n )\n );\n };\n\n const formatError = (\n code: string | null,\n constraints: { maxFiles?: number; minFiles?: number }\n ) => {\n if (code === null) return null;\n const error = i18n.dropzone.errors[code];\n switch (code) {\n case 'too-many-files':\n return `${error.message} ${constraints.maxFiles} ${i18n.dropzone.files}.`;\n case 'too-few-files':\n return `${error.message} ${constraints.minFiles} ${i18n.dropzone.files}.`;\n default:\n return error.message;\n }\n };\n\n React.useEffect(\n () => () => {\n files.forEach(\n file => file.preview && URL.revokeObjectURL(file.preview)\n );\n },\n [files]\n );\n\n React.useEffect(() => {\n const minFileError = minFiles && files.length < minFiles;\n const maxFileError = maxFiles && files.length > maxFiles;\n\n setErrorMessage(\n formatError(\n maxFileError\n ? 'too-many-files'\n : minFileError\n ? 'too-few-files'\n : null,\n { minFiles, maxFiles }\n )\n );\n\n if (sendFiles && files.length > 0 && !maxFileError && !minFileError) {\n setFiles((files: FilePreview[]) => {\n return files.map((file: FilePreview) => {\n !file.errors &&\n !file.processor &&\n onSendFile &&\n onSendFile({\n file,\n onError: setError,\n onFinish: setFinished,\n onProgress: setProgress,\n });\n return file;\n });\n });\n }\n }, [sendFiles, files.length, onSendFile]);\n\n return (\n <InverseContext.Provider value={{ isInverse }}>\n <FormFieldContainer\n actionable={false}\n containerStyle={containerStyle}\n errorMessage={errorMessage}\n fieldId={id}\n inputSize={inputSize}\n isInverse={isInverse}\n isLabelVisuallyHidden={isLabelVisuallyHidden}\n labelStyle={labelStyle}\n labelText={labelText}\n messageStyle={{ minHeight: 0 }}\n data-testid={testId}\n >\n <HelperMessage theme={theme} isInverse={isInverse}>\n {helperMessage}\n </HelperMessage>\n <Container\n behavior={FlexBehavior.container}\n dragState={dragState}\n isInverse={isInverse}\n noDrag={noDrag}\n theme={theme}\n {...getRootProps()}\n {...rest}\n testId={testId}\n tabIndex={-1}\n >\n <input\n ref={ref}\n type={inputProps.type}\n accept={inputProps.accept}\n autoComplete={inputProps.autoComplete}\n id={inputProps.id}\n multiple={inputProps.multiple}\n onChange={inputProps.onChange}\n onClick={inputProps.onClick}\n style={inputProps.style}\n tabIndex={inputProps.tabIndex}\n />\n {noDrag ? (\n <Flex xs behavior={FlexBehavior.item}>\n <Button\n color={ButtonColor.primary}\n disabled={disabled}\n isInverse={isInverse}\n onClick={open}\n style={{ margin: 0 }}\n >\n {i18n.dropzone.browseFiles}\n </Button>\n </Flex>\n ) : (\n <Flex behavior={FlexBehavior.item}>\n <CloudUploadIcon\n aria-hidden=\"true\"\n color={\n isInverse\n ? theme.colors.neutral100\n : theme.colors.neutral500\n }\n size={48}\n />\n <Wrapper isInverse={isInverse} theme={theme}>\n {i18n.dropzone.dragMessage}\n </Wrapper>\n <Button\n color={ButtonColor.primary}\n disabled={disabled}\n isInverse={isInverse}\n onClick={open}\n style={{ margin: 0 }}\n variant={ButtonVariant.solid}\n >\n {i18n.dropzone.browseFiles}\n </Button>\n </Flex>\n )}\n </Container>\n </FormFieldContainer>\n {files.map((file: FilePreview) => (\n <Preview\n accept={accept}\n file={file}\n isInverse={isInverse}\n key={file.name}\n maxSize={maxSize}\n minSize={minSize}\n onDeleteFile={handleDeleteFile}\n onRemoveFile={handleRemoveFile}\n thumbnails={thumbnails}\n />\n ))}\n </InverseContext.Provider>\n );\n }\n);\n"],"names":["icons","default","Icon","InsertDriveFileIcon","style","color","magma","colors","neutral500","word","FileWordIcon","info500","excel","FileExcelIcon","success500","powerpoint","FilePowerpointIcon","warning500","pdf","FilePdfIcon","danger500","image","ImageIcon","video","VideocamIcon","audio","AudiotrackIcon","archive","FileZipIcon","iconMapping","xlsx","xlsm","xlsb","xltx","xls","xlt","doc","docx","docm","dotx","dotm","docb","pptx","pptm","ppt","png","svg","zip","FileIcon","file","isInverse","path","type","category","split","extension","pop","_jsx","size","iconSizes","medium","formatFileSize","bytes","decimalPoint","bytesLabel","undefined","sizes","i","Math","floor","log","parseFloat","pow","toFixed","typedStyled","styled","Thumb","div","_t","_","preview","StatusIcons","_t2","IconStyles","marginRight","display","Errors","_t3","theme","neutral300","typeScale","size02","fontSize","lineHeight","StyledFlex","Flex","_t4","FileName","_t5","StyledCard","Card","_t6","errors","danger200","danger","ErrorHeader","span","_t7","ErrorMessage","_t8","Preview","forwardRef","props","ref","accept","isInverseProp","maxSize","minSize","onDeleteFile","onRemoveFile","thumbnails","rest","_objectWithoutPropertiesLoose","_excluded","useContext","ThemeContext","i18n","React","I18nContext","useIsInverse","actions","setActions","useState","CloseIcon","handleRemoveFile","handleDeleteFile","FinishedActions","status","done","setDone","useEffect","mounted","setTimeout","children","IconButton","onClick","variant","ButtonVariant","link","ButtonColor","secondary","dropzone","removeFile","icon","Spinner","neutral100","primary","_jsxs","Transition","isOpen","unmountOnExit","fade","CheckCircleIcon","success200","success","marginTop","deleteFile","DeleteIcon","_file$processor","processor","_file$processor2","InverseContext","Provider","value","testId","role","_extends","behavior","FlexBehavior","container","alignItems","FlexAlignItems","center","item","ErrorIcon","startsWith","xs","name","marginLeft","percent","slice","map","_ref","code","_excluded2","header","message","formatError","error","constraints","byteLabel","Array","isArray","length","messageSuffix","join","Fragment","Container","noDrag","dragState","neutral400","transparentize","neutral900","neutral200","HelperMessage","neutral700","Wrapper","spaceScale","spacing01","Dropzone","containerStyle","disabled","dropzoneOptions","multiple","helperMessage","id","defaultId","inputSize","isLabelVisuallyHidden","labelStyle","labelText","maxFiles","minFiles","onSendFile","sendFiles","files","setFiles","errorMessage","setErrorMessage","useGenerateId","onDrop","useCallback","acceptedFiles","rejectedFiles","Object","assign","URL","createObjectURL","getInputProps","getRootProps","isDragAccept","isDragActive","isDragReject","open","useDropzone","noClick","inputProps","removedFile","filter","setProgress","setFinished","setError","forEach","revokeObjectURL","minFileError","maxFileError","onError","onFinish","onProgress","FormFieldContainer","actionable","fieldId","messageStyle","minHeight","tabIndex","autoComplete","onChange","Button","margin","browseFiles","CloudUploadIcon","dragMessage","solid"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-magma/dropzone",
|
|
3
|
-
"version": "7.0.0",
|
|
3
|
+
"version": "7.0.1-next.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"@emotion/styled": "^10.0.27",
|
|
31
31
|
"react": "^17.0.2",
|
|
32
32
|
"react-dom": "^17.0.2",
|
|
33
|
-
"react-magma-dom": "^4.4.
|
|
33
|
+
"react-magma-dom": "^4.4.1-next.0",
|
|
34
34
|
"react-magma-icons": "^3.0.0"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"@emotion/styled": "^10.0.27",
|
|
43
43
|
"react": "^17.0.2",
|
|
44
44
|
"react-dom": "^17.0.2",
|
|
45
|
-
"react-magma-dom": "^4.4.0",
|
|
45
|
+
"react-magma-dom": "^4.4.1-next.0",
|
|
46
46
|
"react-magma-icons": "^3.0.0"
|
|
47
47
|
}
|
|
48
48
|
}
|