@react-magma/dropzone 16.0.0-next.1 → 16.0.0-v6-next.1

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.
@@ -0,0 +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';\n\nimport { magma } from 'react-magma-dom';\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';\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.neutral700,\n },\n inverseStyle: {\n color: magma.colors.neutral300,\n },\n },\n word: {\n Icon: FileWordIcon,\n style: {\n color: magma.colors.blue500,\n },\n inverseStyle: {\n color: magma.colors.blue500,\n },\n },\n excel: {\n Icon: FileExcelIcon,\n style: {\n color: magma.colors.green500,\n },\n inverseStyle: {\n color: magma.colors.green500,\n },\n },\n powerpoint: {\n Icon: FilePowerpointIcon,\n style: {\n color: magma.colors.tangerine600,\n },\n inverseStyle: {\n color: magma.colors.tangerine500,\n },\n },\n pdf: {\n Icon: FilePdfIcon,\n style: {\n color: magma.colors.red600,\n },\n inverseStyle: {\n color: magma.colors.red500,\n },\n },\n image: {\n Icon: ImageIcon,\n style: {\n color: magma.colors.neutral700,\n },\n inverseStyle: {\n color: magma.colors.neutral300,\n },\n },\n video: {\n Icon: VideocamIcon,\n style: {\n color: magma.colors.neutral700,\n },\n inverseStyle: {\n color: magma.colors.neutral300,\n },\n },\n audio: {\n Icon: AudiotrackIcon,\n style: {\n color: magma.colors.neutral700,\n },\n inverseStyle: {\n color: magma.colors.neutral300,\n },\n },\n archive: {\n Icon: FileZipIcon,\n style: {\n color: magma.colors.neutral700,\n },\n inverseStyle: {\n color: magma.colors.neutral300,\n },\n },\n};\n\nconst iconMapping: {\n [key: string]: {\n Icon: any;\n style: React.CSSProperties;\n inverseStyle: React.CSSProperties;\n };\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, inverseStyle } =\n iconMapping[extension] || iconMapping[category] || iconMapping.default;\n\n return (\n <Icon\n size={magma.iconSizes.medium}\n style={isInverse ? inverseStyle : style}\n />\n );\n};\n","export const formatFileSize = (\n bytes: number | undefined,\n decimalPoint = 2,\n bytesLabel = '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 ButtonColor,\n ButtonVariant,\n Card,\n CardBorderRadius,\n CardCornerTreatment,\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 styled,\n} from 'react-magma-dom';\nimport {\n CheckCircleIcon,\n CloseIcon,\n DeleteIcon,\n ErrorIcon,\n} from 'react-magma-icons';\n\nimport { FileIcon } from './FileIcon';\nimport { FilePreview } from './FilePreview';\nimport { formatFileSize } from './utils';\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 = styled.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 = styled.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 PreviewIcon = ({\n file,\n isInverse,\n theme,\n thumbnails,\n}: {\n file: FilePreview;\n isInverse: boolean;\n theme: ThemeInterface;\n thumbnails: boolean;\n}) => {\n if (file.errors) {\n return (\n <ErrorIcon\n color={isInverse ? theme.colors.red500 : theme.colors.danger}\n size={24}\n />\n );\n }\n\n if (\n file.preview &&\n thumbnails &&\n file.type &&\n file.type.startsWith('image')\n ) {\n return <Thumb role=\"img\" file={file} />;\n }\n\n return <FileIcon isInverse={isInverse} file={file} />;\n};\n\nconst IconStyles = {\n marginRight: '12px',\n display: 'flex',\n};\n\nconst Errors = styled.div<{ isInverse: boolean }>`\n border-top: 1px solid\n ${({ theme, isInverse }) =>\n isInverse ? theme.colors.neutral500 : 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 = styled(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 = styled(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 = styled(Card)<{ file: FilePreview; isInverse: boolean }>`\n background-color: none;\n border-color: ${({ file, theme, isInverse }) =>\n file.errors\n ? isInverse\n ? theme.colors.red500\n : theme.colors.danger\n : isInverse\n ? theme.colors.neutral800\n : theme.colors.neutral200};\n border-width: 1px;\n color: ${({ file, theme, isInverse }) =>\n isInverse\n ? theme.colors.neutral0\n : file.errors\n ? theme.colors.neutral700\n : theme.colors.brand.navy};\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\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<\n HTMLDivElement,\n Omit<PreviewProps, 'children'>\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\n setTimeout(() => {\n if (mounted) {\n setDone(true);\n }\n }, 1000);\n\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.subtle}\n aria-label={`${i18n.dropzone.removeFile} ${file.name}`}\n icon={<CloseIcon />}\n />\n </StatusIcons>\n );\n }\n\n if (status === 'pending') {\n return (\n <StatusIcons>\n <Spinner\n color={\n isInverse ? theme.colors.brand.skyBlue : theme.colors.primary\n }\n />\n </StatusIcons>\n );\n }\n\n return (\n <StatusIcons>\n <Transition isOpen={!done} unmountOnExit fade>\n <CheckCircleIcon\n color={isInverse ? theme.colors.green500 : 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.subtle}\n aria-label={`${i18n.dropzone.deleteFile} ${file.name}`}\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 borderRadius={CardBorderRadius.small}\n cornerTreatment={CardCornerTreatment.all}\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 <PreviewIcon\n file={file}\n isInverse={isInverse}\n theme={theme}\n thumbnails={thumbnails}\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} isInverse={isInverse}>\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\n return (\n <React.Fragment key={code}>\n <ErrorHeader\n style={{\n color: isInverse\n ? theme.colors.red500\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","/* 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, { useImperativeHandle } from 'react';\n\nimport { transparentize } from 'polished';\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 styled,\n Announce,\n VisuallyHidden,\n} from 'react-magma-dom';\nimport { CloudUploadIcon } from 'react-magma-icons';\n\nimport { FilePreview, FileError } from './FilePreview';\nimport { Preview } from './Preview';\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\nenum DragState {\n error = 'error',\n dragAccept = 'dragAccept',\n dragReject = 'dragReject',\n dragActive = 'dragActive',\n default = 'default',\n}\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 getErrorBorderColor = (\n dragState: DragState,\n theme: ThemeInterface,\n isInverse?: boolean\n) => {\n if (!isInverse) {\n return theme.colors.danger;\n }\n\n return dragState === DragState.error\n ? theme.colors.red500\n : theme.colors.red400;\n};\n\nconst getContainerBorder = ({\n dragState = DragState.default,\n noDrag,\n theme,\n isInverse,\n}: {\n dragState?: DragState;\n noDrag?: boolean;\n theme: ThemeInterface;\n isInverse?: boolean;\n}) => {\n if (noDrag) {\n return '0px';\n }\n\n if (dragState === DragState.dragReject || dragState === DragState.error) {\n const width = dragState === DragState.error ? '1px' : '2px';\n\n return `${width} dashed ${getErrorBorderColor(dragState, theme, isInverse)}`;\n }\n\n if (dragState === DragState.dragActive) {\n return `2px dashed ${theme.colors.blue500}`;\n }\n\n if (dragState === DragState.dragAccept) {\n return `2px dashed ${theme.colors.green500}`;\n }\n\n return `2px dashed ${\n isInverse ? theme.colors.neutral800 : theme.colors.neutral300\n }`;\n};\n\nconst Container = styled(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, theme }) =>\n noDrag ? theme.borderRadiusNone : theme.borderRadiusSmall};\n border: ${getContainerBorder};\n\n border-style: ${({ dragState = DragState.default }) =>\n dragState === DragState.error ? 'solid' : 'dashed'};\n background-color: ${({ theme, noDrag, isInverse }) =>\n noDrag\n ? 'transparent'\n : isInverse\n ? transparentize(0.6, theme.colors.neutral1200)\n : theme.colors.neutral100};\n outline: none;\n transition: ${({ noDrag }) => `border ${noDrag ? 0 : '.24s'} ease-in-out`};\n`;\n\nconst HelperMessage = styled.span<{ isInverse?: boolean }>`\n color: ${({ theme, isInverse }) =>\n isInverse ? theme.colors.neutral500 : theme.colors.neutral700};\n display: block;\n font-size: 14px;\n margin: -8px 0 16px 0;\n`;\n\nconst Wrapper = styled.div<{ isInverse?: boolean }>`\n color: ${({ theme, isInverse }) =>\n isInverse ? theme.colors.neutral0 : theme.colors.brand.navy};\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`;\n\nconst PreviewList = styled.ul`\n list-style: none;\n padding: 0;\n`;\n\nconst PreviewItem = styled.li``;\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 const [announcement, setAnnouncement] = React.useState<string>('');\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 const helperMessageId = useGenerateId(`${id}-helper`);\n\n const browseFileButtonRef = React.useRef<HTMLButtonElement>(null);\n\n const onDrop = React.useCallback(\n (acceptedFiles: FilePreview[], rejectedFiles: FileRejection[]) => {\n const newFiles = [\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 setFiles((prevFiles: FilePreview[]) => [...prevFiles, ...newFiles]);\n\n if (acceptedFiles.length > 0) {\n const fileNames = acceptedFiles.map(file => file.name).join(', ');\n const message =\n acceptedFiles.length === 1\n ? i18n.dropzone.fileAdded.replace(/\\{fileName\\}/g, fileNames)\n : i18n.dropzone.filesAdded\n .replace(/\\{count\\}/g, acceptedFiles.length.toString())\n .replace(/\\{fileNames\\}/g, fileNames);\n\n setAnnouncement(message);\n }\n\n browseFileButtonRef.current && browseFileButtonRef.current.focus();\n },\n [i18n]\n );\n\n const {\n getInputProps,\n getRootProps,\n isDragAccept,\n isDragActive,\n isDragReject,\n open,\n inputRef,\n } = useDropzone({\n noClick: true,\n disabled,\n multiple,\n maxSize,\n minSize,\n accept,\n onDrop,\n noDrag,\n ...dropzoneOptions,\n });\n\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n ref,\n () => inputRef.current\n );\n\n const inputProps = getInputProps({ id });\n\n let dragState = DragState.default;\n\n if (errorMessage) {\n dragState = DragState.error;\n } else if (isDragAccept) {\n dragState = DragState.dragAccept;\n } else if (isDragReject) {\n dragState = DragState.dragReject;\n } else if (isDragActive) {\n dragState = DragState.dragActive;\n }\n\n const handleRemoveFile = (removedFile: FilePreview) => {\n setFiles(prevFiles => prevFiles.filter(file => file !== removedFile));\n\n if (onRemoveFile && typeof onRemoveFile === 'function') {\n onRemoveFile(removedFile);\n }\n\n const message = i18n.dropzone.fileRemoved.replace(\n /\\{fileName\\}/g,\n removedFile.name\n );\n\n setAnnouncement(message);\n\n browseFileButtonRef.current && browseFileButtonRef.current.focus();\n };\n\n const handleDeleteFile = (removedFile: FilePreview) => {\n setFiles(prevFiles => prevFiles.filter(file => file !== removedFile));\n\n if (onDeleteFile && typeof onDeleteFile === 'function') {\n onDeleteFile(removedFile);\n }\n\n const message = i18n.dropzone.fileDeleted.replace(\n /\\{fileName\\}/g,\n removedFile.name\n );\n\n setAnnouncement(message);\n\n browseFileButtonRef.current && browseFileButtonRef.current.focus();\n };\n\n const setProgress = (progressProps: {\n percent: number;\n file: FilePreview;\n }) => {\n setFiles(prevFiles =>\n prevFiles.map(file =>\n file === progressProps.file\n ? Object.assign(file, {\n processor: {\n ...file.processor,\n percent: `${progressProps.percent}%`,\n status: 'pending',\n },\n })\n : file\n )\n );\n\n // Announce progress every 25% to avoid too many announcements\n if (progressProps.percent > 0 && progressProps.percent % 25 === 0) {\n const message = i18n.dropzone.fileUploading\n .replace(/\\{fileName\\}/g, progressProps.file.name)\n .replace(/\\{percent\\}/g, progressProps.percent.toString());\n\n setAnnouncement(message);\n }\n };\n\n const setFinished = (finishedProps: { file: FilePreview }) => {\n setFiles(prevFiles =>\n prevFiles.map(file =>\n file === finishedProps.file\n ? Object.assign(file, {\n processor: {\n ...file.processor,\n percent: '',\n status: 'finished',\n },\n })\n : file\n )\n );\n\n // Announce successful upload\n const message = i18n.dropzone.fileUploaded.replace(\n /\\{fileName\\}/g,\n finishedProps.file.name\n );\n\n setAnnouncement(message);\n };\n\n const setError = (errorProps: {\n errors: FileError[];\n file: FilePreview;\n }) => {\n setFiles(prevFiles =>\n prevFiles.map(file =>\n file === errorProps.file\n ? Object.assign(file, {\n errors: errorProps.errors,\n processor: { ...file.processor, status: 'error' },\n })\n : file\n )\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 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\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 const minFileError = minFiles && files.length < minFiles;\n const maxFileError = maxFiles && files.length > maxFiles;\n\n let errorCode: string | null = null;\n\n if (maxFileError) {\n errorCode = 'too-many-files';\n } else if (minFileError) {\n errorCode = 'too-few-files';\n }\n\n setErrorMessage(formatError(errorCode, { minFiles, maxFiles }));\n\n if (sendFiles && files.length > 0 && !maxFileError && !minFileError) {\n setFiles((prevFiles: FilePreview[]) => {\n return prevFiles.map((file: FilePreview) => {\n if (!file.errors && !file.processor && onSendFile) {\n onSendFile({\n file,\n onError: setError,\n onFinish: setFinished,\n onProgress: setProgress,\n });\n }\n\n return file;\n });\n });\n }\n }, [\n sendFiles,\n files.length,\n onSendFile,\n maxFiles,\n minFiles,\n i18n.dropzone.errors,\n i18n.dropzone.files,\n ]);\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={{\n color: isInverse ? theme.colors.neutral0 : theme.colors.brand.navy,\n ...labelStyle,\n }}\n labelText={labelText}\n messageStyle={{ minHeight: 0 }}\n data-testid={testId}\n >\n <HelperMessage\n id={helperMessageId}\n theme={theme}\n isInverse={isInverse}\n >\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={inputRef}\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 data-testid=\"file-input\"\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 ref={browseFileButtonRef}\n aria-describedby={helperMessage ? helperMessageId : undefined}\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 ? theme.colors.neutral0 : theme.colors.neutral700\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 ref={browseFileButtonRef}\n aria-describedby={helperMessage ? helperMessageId : undefined}\n >\n {i18n.dropzone.browseFiles}\n </Button>\n </Flex>\n )}\n </Container>\n </FormFieldContainer>\n <PreviewList>\n {files.map((file: FilePreview) => (\n <PreviewItem key={file.name}>\n <Preview\n accept={accept}\n file={file}\n isInverse={isInverse}\n maxSize={maxSize}\n minSize={minSize}\n onDeleteFile={handleDeleteFile}\n onRemoveFile={handleRemoveFile}\n thumbnails={thumbnails}\n />\n </PreviewItem>\n ))}\n </PreviewList>\n\n <VisuallyHidden>\n <Announce>{announcement}</Announce>\n </VisuallyHidden>\n </InverseContext.Provider>\n );\n }\n);\n"],"names":["icons","default","Icon","InsertDriveFileIcon","style","color","magma","colors","neutral700","inverseStyle","neutral300","word","FileWordIcon","blue500","excel","FileExcelIcon","green500","powerpoint","FilePowerpointIcon","tangerine600","tangerine500","pdf","FilePdfIcon","red600","red500","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","_excluded","_excluded2","_t","_t2","_t3","_t4","_t5","_t6","_t7","_t8","_","t","Thumb","styled","div","preview","StatusIcons","PreviewIcon","theme","thumbnails","errors","ErrorIcon","danger","startsWith","role","IconStyles","marginRight","display","Errors","neutral500","typeScale","size02","fontSize","lineHeight","StyledFlex","Flex","FileName","StyledCard","Card","neutral800","neutral200","neutral0","brand","navy","ErrorHeader","span","ErrorMessage","Preview","forwardRef","props","ref","_file$processor2","accept","isInverseProp","maxSize","minSize","onDeleteFile","onRemoveFile","rest","_objectWithoutPropertiesLoose","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","subtle","dropzone","removeFile","name","icon","Spinner","skyBlue","primary","_jsxs","Transition","isOpen","unmountOnExit","fade","CheckCircleIcon","success","marginTop","deleteFile","DeleteIcon","_file$processor","processor","InverseContext","Provider","value","borderRadius","CardBorderRadius","small","cornerTreatment","CardCornerTreatment","all","testId","_extends","behavior","FlexBehavior","container","alignItems","FlexAlignItems","center","item","xs","marginLeft","percent","slice","map","_ref","code","header","message","formatError","error","constraints","byteLabel","Array","isArray","length","messageSuffix","join","Fragment","DragState","Container","noDrag","borderRadiusNone","borderRadiusSmall","getContainerBorder","dragState","dragReject","getErrorBorderColor","red400","dragActive","dragAccept","transparentize","neutral1200","neutral100","HelperMessage","Wrapper","spaceScale","spacing01","PreviewList","ul","PreviewItem","li","Dropzone","containerStyle","disabled","dropzoneOptions","multiple","helperMessage","id","defaultId","inputSize","isLabelVisuallyHidden","labelStyle","labelText","maxFiles","minFiles","onSendFile","sendFiles","files","setFiles","errorMessage","setErrorMessage","announcement","setAnnouncement","useGenerateId","helperMessageId","browseFileButtonRef","useRef","onDrop","useCallback","acceptedFiles","rejectedFiles","newFiles","Object","assign","URL","createObjectURL","prevFiles","fileNames","fileAdded","replace","filesAdded","toString","current","focus","getInputProps","getRootProps","isDragAccept","isDragActive","isDragReject","open","inputRef","useDropzone","noClick","useImperativeHandle","inputProps","removedFile","filter","fileRemoved","fileDeleted","setProgress","progressProps","fileUploading","setFinished","finishedProps","fileUploaded","setError","errorProps","forEach","revokeObjectURL","minFileError","maxFileError","errorCode","onError","onFinish","onProgress","FormFieldContainer","actionable","fieldId","messageStyle","minHeight","tabIndex","autoComplete","onChange","Button","margin","browseFiles","CloudUploadIcon","dragMessage","solid","VisuallyHidden","Announce"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{magma as e,styled as r,Flex as n,Card as o,ThemeContext as t,I18nContext as i,useIsInverse as l,InverseContext as a,CardBorderRadius as s,CardCornerTreatment as c,FlexBehavior as d,FlexAlignItems as u,IconButton as p,ButtonVariant as f,ButtonColor as m,Spinner as g,Transition as v,useGenerateId as h,FormFieldContainer as y,Button as b,VisuallyHidden as x,Announce as z}from"react-magma-dom";import{InsertDriveFileIcon as S,FileWordIcon as I,FileExcelIcon as w,FilePowerpointIcon as F,FilePdfIcon as k,ImageIcon as R,VideocamIcon as D,AudiotrackIcon as j,FileZipIcon as O,CloseIcon as A,ErrorIcon as C,CheckCircleIcon as B,DeleteIcon as M,CloudUploadIcon as H}from"react-magma-icons";import{jsx as L,jsxs as P}from"react/jsx-runtime";import E,{forwardRef as N,useContext as T,useState as U,useEffect as V,useImperativeHandle as G}from"react";import{transparentize as K}from"polished";import{useDropzone as W}from"react-dropzone";var Y={default:{Icon:S,style:{color:e.colors.neutral700},inverseStyle:{color:e.colors.neutral300}},word:{Icon:I,style:{color:e.colors.blue500},inverseStyle:{color:e.colors.blue500}},excel:{Icon:w,style:{color:e.colors.green500},inverseStyle:{color:e.colors.green500}},powerpoint:{Icon:F,style:{color:e.colors.tangerine600},inverseStyle:{color:e.colors.tangerine500}},pdf:{Icon:k,style:{color:e.colors.red600},inverseStyle:{color:e.colors.red500}},image:{Icon:R,style:{color:e.colors.neutral700},inverseStyle:{color:e.colors.neutral300}},video:{Icon:D,style:{color:e.colors.neutral700},inverseStyle:{color:e.colors.neutral300}},audio:{Icon:j,style:{color:e.colors.neutral700},inverseStyle:{color:e.colors.neutral300}},archive:{Icon:O,style:{color:e.colors.neutral700},inverseStyle:{color:e.colors.neutral300}}},Z={default:Y.default,xlsx:Y.excel,xlsm:Y.excel,xlsb:Y.excel,xltx:Y.excel,xls:Y.excel,xlt:Y.excel,doc:Y.word,docx:Y.word,docm:Y.word,dotx:Y.word,dotm:Y.word,docb:Y.word,pptx:Y.powerpoint,pptm:Y.powerpoint,ppt:Y.powerpoint,pdf:Y.pdf,png:Y.image,svg:Y.image,image:Y.image,audio:Y.audio,video:Y.video,zip:Y.archive},q=function(r){var n=r.file,o=r.isInverse,t=n.path,i=void 0===t?"":t,l=n.type,a=(void 0===l?"":l).split("/")[0],s=i.split(".").pop()||"default",c=Z[s]||Z[a]||Z.default;/*#__PURE__*/return L(c.Icon,{size:e.iconSizes.medium,style:o?c.inverseStyle:c.style})};function J(){return J=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},J.apply(null,arguments)}function Q(e,r){if(null==e)return{};var n={};for(var o in e)if({}.hasOwnProperty.call(e,o)){if(-1!==r.indexOf(o))continue;n[o]=e[o]}return n}function X(e,r){return r||(r=e.slice(0)),e.raw=r,e}var $,_,ee,re,ne,oe,te,ie,le,ae,se,ce,de,ue,pe=function(e,r,n){if(void 0===r&&(r=2),void 0===n&&(n="Bytes"),void 0!==e){if(0==e)return"0 "+n;var o=[n,"KB","MB","GB","TB","PB","EB","ZB","YB"],t=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,t)).toFixed(r))+" "+o[t]}},fe=["accept","file","isInverse","maxSize","minSize","onDeleteFile","onRemoveFile","testId","thumbnails"],me=["code"],ge=r.div($||($=X(["\n background-image: ",";\n background-repeat: no-repeat;\n background-size: cover;\n display: inline-block;\n vertical-align: middle;\n height: 40px;\n width: 40px;\n"])),function(e){var r=e.file;return"url('"+("preview"in r&&r.preview)+"')"}),ve=r.div(_||(_=X(["\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"]))),he={marginRight:"12px",display:"flex"},ye=r.div(ee||(ee=X(["\n border-top: 1px solid\n ",";\n padding: 16px;\n font-size: ",";\n line-height: ",";\n"])),function(e){var r=e.theme;return e.isInverse?r.colors.neutral500:r.colors.neutral300},function(e){return e.theme.typeScale.size02.fontSize},function(e){return e.theme.typeScale.size02.lineHeight}),be=r(n)(re||(re=X(["\n height: 56px;\n padding: 0 8px 0 16px;\n font-size: ",";\n line-height: ",";\n"])),function(e){return e.theme.typeScale.size02.fontSize},function(e){return e.theme.typeScale.size02.lineHeight}),xe=r(n)(ne||(ne=X(["\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: ",";\n line-height: ",";\n"])),function(e){return e.theme.typeScale.size02.fontSize},function(e){return e.theme.typeScale.size02.lineHeight}),ze=r(o)(oe||(oe=X(["\n background-color: none;\n border-color: ",";\n border-width: 1px;\n color: ",";\n margin: 10px 0;\n"])),function(e){var r=e.theme,n=e.isInverse;return e.file.errors?n?r.colors.red500:r.colors.danger:n?r.colors.neutral800:r.colors.neutral200},function(e){var r=e.theme;return e.isInverse?r.colors.neutral0:e.file.errors?r.colors.neutral700:r.colors.brand.navy}),Se=r.span(te||(te=X(["\n display: block;\n\n > div {\n display: flex;\n align-self: center;\n margin-right: 12px;\n }\n"]))),Ie=r.span(ie||(ie=X(["\n display: block;\n"]))),we=/*#__PURE__*/N(function(e,r){var o,h=e.accept,y=e.file,b=e.isInverse,x=e.maxSize,z=e.minSize,S=e.onDeleteFile,I=e.onRemoveFile,w=e.thumbnails,F=Q(e,fe),k=T(t),R=E.useContext(i),D=l(b),j=U(/*#__PURE__*/L(A,{})),O=j[0],H=j[1],N=function(){I&&"function"==typeof I&&I(y)},G=function(){S&&"function"==typeof S&&S(y)},K=function(e){var r=e.status,n=void 0===r?"ready":r,o=U(!1),t=o[0],i=o[1];return V(function(){var e=!0;return setTimeout(function(){e&&i(!0)},1e3),function(){e=!1}},[n]),"error"===n||"ready"===n?/*#__PURE__*/L(ve,{children:/*#__PURE__*/L(p,{onClick:N,variant:f.link,color:m.subtle,"aria-label":R.dropzone.removeFile+" "+y.name,icon:/*#__PURE__*/L(A,{})})}):"pending"===n?/*#__PURE__*/L(ve,{children:/*#__PURE__*/L(g,{color:D?k.colors.brand.skyBlue:k.colors.primary})}):/*#__PURE__*/P(ve,{children:[/*#__PURE__*/L(v,{isOpen:!t,unmountOnExit:!0,fade:!0,children:/*#__PURE__*/L(B,{color:D?k.colors.green500:k.colors.success,style:{marginTop:"4px"}})}),/*#__PURE__*/L(v,{isOpen:t,unmountOnExit:!0,fade:!0,children:/*#__PURE__*/L(p,{onClick:G,variant:f.link,color:m.subtle,"aria-label":R.dropzone.deleteFile+" "+y.name,icon:/*#__PURE__*/L(M,{})})})]})};return V(function(){var e;H(/*#__PURE__*/L(K,{status:null==y||null==(e=y.processor)?void 0:e.status}))},[null==y||null==(o=y.processor)?void 0:o.status]),/*#__PURE__*/L(a.Provider,{value:{isInverse:D},children:/*#__PURE__*/P(ze,{borderRadius:s.small,cornerTreatment:c.all,isInverse:D,theme:k,file:y,"data-testid":e.testId,ref:r,role:y.errors?"alert":"",children:[/*#__PURE__*/P(be,J({theme:k,behavior:d.container,alignItems:u.center},F,{children:[/*#__PURE__*/L(n,{behavior:d.item,alignItems:u.center,style:he,children:y.errors?/*#__PURE__*/L(C,{color:D?k.colors.red500:k.colors.danger,size:24}):y.preview&&w&&y.type&&y.type.startsWith("image")?/*#__PURE__*/L(ge,{role:"img",file:y}):/*#__PURE__*/L(q,{isInverse:D,file:y})}),/*#__PURE__*/L(xe,{xs:!0,behavior:d.item,theme:k,children:y.name}),y.processor&&"pending"===y.processor.status&&/*#__PURE__*/L(n,{role:"progressbar",style:{marginLeft:"auto"},behavior:d.item,children:y.processor.percent}),/*#__PURE__*/L(n,{behavior:d.item,children:O})]})),y.errors&&/*#__PURE__*/L(ye,{theme:k,isInverse:D,children:y.errors.slice(0,1).map(function(e){var r=e.code,n=function(e,r,n){var o=Array.isArray(r.accept)&&1===r.accept.length?r.accept[0]:r.accept,t=Array.isArray(o)?"one of "+o.join(", "):o;switch(e.code){case"file-too-large":return J({},e,{message:e.message+" "+pe(r.maxSize,2,n)+"."});case"file-too-small":return J({},e,{message:e.message+" "+pe(r.minSize,2,n)+"."});case"file-invalid-type":return J({},e,{message:e.message+": "+t});default:return e}}(J({code:r},Q(e,me),R.dropzone.errors[r]),{accept:h,minSize:z,maxSize:x},R.dropzone.bytes),o=n.header,t=n.message;/*#__PURE__*/return P(E.Fragment,{children:[/*#__PURE__*/L(Se,{style:{color:D?k.colors.red500:k.colors.danger},children:void 0===o?"":o}),/*#__PURE__*/L(Ie,{children:t})]},r)})})]})})}),Fe=["accept","containerStyle","disabled","dropzoneOptions","helperMessage","id","inputSize","isInverse","isLabelVisuallyHidden","labelStyle","labelText","maxFiles","minFiles","maxSize","minSize","multiple","noDrag","onSendFile","onDeleteFile","onRemoveFile","sendFiles","testId","thumbnails"];!function(e){e.error="error",e.dragAccept="dragAccept",e.dragReject="dragReject",e.dragActive="dragActive",e.default="default"}(ue||(ue={}));var ke=r(n)(le||(le=X(["\n flex-direction: column;\n align-items: ",";\n justify-content: ",";\n text-align: ",";\n padding: ",";\n border-radius: ",";\n border: ",";\n\n border-style: ",";\n background-color: ",";\n outline: none;\n transition: ",";\n"])),function(e){return e.noDrag?"left":"center"},function(e){return e.noDrag?"left":"center"},function(e){return e.noDrag?"left":"center"},function(e){return e.noDrag?"0px":"24px"},function(e){var r=e.theme;return e.noDrag?r.borderRadiusNone:r.borderRadiusSmall},function(e){var r=e.dragState,n=void 0===r?ue.default:r,o=e.theme,t=e.isInverse;return e.noDrag?"0px":n===ue.dragReject||n===ue.error?t?(n===ue.error?"1px":"2px")+" dashed "+(n===ue.error?o.colors.red500:o.colors.red400):(n===ue.error?"1px":"2px")+" dashed "+o.colors.danger:n===ue.dragActive?"2px dashed "+o.colors.blue500:n===ue.dragAccept?"2px dashed "+o.colors.green500:"2px dashed "+(t?o.colors.neutral800:o.colors.neutral300)},function(e){var r=e.dragState;return(void 0===r?ue.default:r)===ue.error?"solid":"dashed"},function(e){var r=e.theme;return e.noDrag?"transparent":e.isInverse?K(.6,r.colors.neutral1200):r.colors.neutral100},function(e){return"border "+(e.noDrag?0:".24s")+" ease-in-out"}),Re=r.span(ae||(ae=X(["\n color: ",";\n display: block;\n font-size: 14px;\n margin: -8px 0 16px 0;\n"])),function(e){var r=e.theme;return e.isInverse?r.colors.neutral500:r.colors.neutral700}),De=r.div(se||(se=X(["\n color: ",";\n margin: 0 0 24px 0;\n font-size: ",";\n line-height: ",";\n font-weight: 500;\n padding: ",";\n"])),function(e){var r=e.theme;return e.isInverse?r.colors.neutral0:r.colors.brand.navy},function(e){return e.theme.typeScale.size02.fontSize},function(e){return e.theme.typeScale.size02.lineHeight},function(e){return e.theme.spaceScale.spacing01}),je=r.ul(ce||(ce=X(["\n list-style: none;\n padding: 0;\n"]))),Oe=r.li(de||(de=X([""]))),Ae=/*#__PURE__*/E.forwardRef(function(e,r){var o=e.accept,s=e.containerStyle,c=e.disabled,u=e.dropzoneOptions,p=void 0===u?{multiple:!0}:u,g=e.helperMessage,v=e.id,S=e.inputSize,I=e.isInverse,w=e.isLabelVisuallyHidden,F=e.labelStyle,k=e.labelText,R=e.maxFiles,D=e.minFiles,j=e.maxSize,O=e.minSize,A=e.multiple,C=void 0===A||A,B=e.noDrag,M=void 0!==B&&B,N=e.onSendFile,T=e.onDeleteFile,U=e.onRemoveFile,V=e.sendFiles,K=void 0!==V&&V,Y=e.testId,Z=e.thumbnails,q=void 0===Z||Z,X=Q(e,Fe),$=E.useState([]),_=$[0],ee=$[1],re=E.useState(null),ne=re[0],oe=re[1],te=E.useState(""),ie=te[0],le=te[1],ae=l(I),se=E.useContext(t),ce=E.useContext(i),de=h(v),pe=h(de+"-helper"),fe=E.useRef(null),me=E.useCallback(function(e,r){var n=[].concat(e.map(function(e){return Object.assign(e,{preview:URL.createObjectURL(e)})}),r.map(function(e){return Object.assign(e.file,{errors:e.errors})}));if(ee(function(e){return[].concat(e,n)}),e.length>0){var o=e.map(function(e){return e.name}).join(", "),t=1===e.length?ce.dropzone.fileAdded.replace(/\{fileName\}/g,o):ce.dropzone.filesAdded.replace(/\{count\}/g,e.length.toString()).replace(/\{fileNames\}/g,o);le(t)}fe.current&&fe.current.focus()},[ce]),ge=W(J({noClick:!0,disabled:c,multiple:C,maxSize:j,minSize:O,accept:o,onDrop:me,noDrag:M},p)),ve=ge.getInputProps,he=ge.getRootProps,ye=ge.isDragAccept,be=ge.isDragActive,xe=ge.isDragReject,ze=ge.open,Se=ge.inputRef;G(r,function(){return Se.current});var Ie=ve({id:de}),Ae=ue.default;ne?Ae=ue.error:ye?Ae=ue.dragAccept:xe?Ae=ue.dragReject:be&&(Ae=ue.dragActive);var Ce=function(e){ee(function(r){return r.filter(function(r){return r!==e})}),U&&"function"==typeof U&&U(e);var r=ce.dropzone.fileRemoved.replace(/\{fileName\}/g,e.name);le(r),fe.current&&fe.current.focus()},Be=function(e){ee(function(r){return r.filter(function(r){return r!==e})}),T&&"function"==typeof T&&T(e);var r=ce.dropzone.fileDeleted.replace(/\{fileName\}/g,e.name);le(r),fe.current&&fe.current.focus()},Me=function(e){if(ee(function(r){return r.map(function(r){return r===e.file?Object.assign(r,{processor:J({},r.processor,{percent:e.percent+"%",status:"pending"})}):r})}),e.percent>0&&e.percent%25==0){var r=ce.dropzone.fileUploading.replace(/\{fileName\}/g,e.file.name).replace(/\{percent\}/g,e.percent.toString());le(r)}},He=function(e){ee(function(r){return r.map(function(r){return r===e.file?Object.assign(r,{processor:J({},r.processor,{percent:"",status:"finished"})}):r})});var r=ce.dropzone.fileUploaded.replace(/\{fileName\}/g,e.file.name);le(r)},Le=function(e){ee(function(r){return r.map(function(r){return r===e.file?Object.assign(r,{errors:e.errors,processor:J({},r.processor,{status:"error"})}):r})})};return E.useEffect(function(){return function(){_.forEach(function(e){return e.preview&&URL.revokeObjectURL(e.preview)})}},[_]),E.useEffect(function(){var e=D&&_.length<D,r=R&&_.length>R,n=null;r?n="too-many-files":e&&(n="too-few-files"),oe(function(e,r){if(null===e)return null;var n=ce.dropzone.errors[e];switch(e){case"too-many-files":return n.message+" "+r.maxFiles+" "+ce.dropzone.files+".";case"too-few-files":return n.message+" "+r.minFiles+" "+ce.dropzone.files+".";default:return n.message}}(n,{minFiles:D,maxFiles:R})),K&&_.length>0&&!r&&!e&&ee(function(e){return e.map(function(e){return e.errors||e.processor||!N||N({file:e,onError:Le,onFinish:He,onProgress:Me}),e})})},[K,_.length,N,R,D,ce.dropzone.errors,ce.dropzone.files]),/*#__PURE__*/P(a.Provider,{value:{isInverse:ae},children:[/*#__PURE__*/P(y,{actionable:!1,containerStyle:s,errorMessage:ne,fieldId:de,inputSize:S,isInverse:ae,isLabelVisuallyHidden:w,labelStyle:J({color:ae?se.colors.neutral0:se.colors.brand.navy},F),labelText:k,messageStyle:{minHeight:0},"data-testid":Y,children:[/*#__PURE__*/L(Re,{id:pe,theme:se,isInverse:ae,children:g}),/*#__PURE__*/P(ke,J({behavior:d.container,dragState:Ae,isInverse:ae,noDrag:M,theme:se},he(),X,{testId:Y,tabIndex:-1,children:[/*#__PURE__*/L("input",{ref:Se,type:Ie.type,accept:Ie.accept,autoComplete:Ie.autoComplete,id:Ie.id,multiple:Ie.multiple,onChange:Ie.onChange,onClick:Ie.onClick,style:Ie.style,tabIndex:Ie.tabIndex,"data-testid":"file-input"}),M?/*#__PURE__*/L(n,{xs:!0,behavior:d.item,children:/*#__PURE__*/L(b,{color:m.primary,disabled:c,isInverse:ae,onClick:ze,style:{margin:0},ref:fe,"aria-describedby":g?pe:void 0,children:ce.dropzone.browseFiles})}):/*#__PURE__*/P(n,{behavior:d.item,children:[/*#__PURE__*/L(H,{"aria-hidden":"true",color:ae?se.colors.neutral0:se.colors.neutral700,size:48}),/*#__PURE__*/L(De,{isInverse:ae,theme:se,children:ce.dropzone.dragMessage}),/*#__PURE__*/L(b,{color:m.primary,disabled:c,isInverse:ae,onClick:ze,style:{margin:0},variant:f.solid,ref:fe,"aria-describedby":g?pe:void 0,children:ce.dropzone.browseFiles})]})]}))]}),/*#__PURE__*/L(je,{children:_.map(function(e){/*#__PURE__*/return L(Oe,{children:/*#__PURE__*/L(we,{accept:o,file:e,isInverse:ae,maxSize:j,minSize:O,onDeleteFile:Be,onRemoveFile:Ce,thumbnails:q})},e.name)})}),/*#__PURE__*/L(x,{children:/*#__PURE__*/L(z,{children:ie})})]})});export{Ae as Dropzone,q as FileIcon};
1
+ import{magma as e,styled as r,Flex as n,Card as o,ThemeContext as t,I18nContext as i,useIsInverse as l,InverseContext as a,CardBorderRadius as s,CardCornerTreatment as c,FlexBehavior as d,FlexAlignItems as u,IconButton as p,ButtonVariant as f,ButtonColor as m,Spinner as g,Transition as v,useGenerateId as h,FormFieldContainer as y,Button as b,VisuallyHidden as x,Announce as z}from"react-magma-dom";import{InsertDriveFileIcon as S,FileWordIcon as I,FileExcelIcon as w,FilePowerpointIcon as F,FilePdfIcon as k,ImageIcon as R,VideocamIcon as D,AudiotrackIcon as j,FileZipIcon as O,CloseIcon as A,ErrorIcon as C,CheckCircleIcon as B,DeleteIcon as M,CloudUploadIcon as H}from"react-magma-icons";import{jsx as L,jsxs as P}from"react/jsx-runtime";import E,{forwardRef as N,useContext as T,useState as U,useEffect as V,useImperativeHandle as G}from"react";import{transparentize as K}from"polished";import{useDropzone as W}from"react-dropzone";var Y={default:{Icon:S,style:{color:e.colors.neutral700},inverseStyle:{color:e.colors.neutral300}},word:{Icon:I,style:{color:e.colors.blue500},inverseStyle:{color:e.colors.blue500}},excel:{Icon:w,style:{color:e.colors.green500},inverseStyle:{color:e.colors.green500}},powerpoint:{Icon:F,style:{color:e.colors.tangerine600},inverseStyle:{color:e.colors.tangerine500}},pdf:{Icon:k,style:{color:e.colors.red600},inverseStyle:{color:e.colors.red500}},image:{Icon:R,style:{color:e.colors.neutral700},inverseStyle:{color:e.colors.neutral300}},video:{Icon:D,style:{color:e.colors.neutral700},inverseStyle:{color:e.colors.neutral300}},audio:{Icon:j,style:{color:e.colors.neutral700},inverseStyle:{color:e.colors.neutral300}},archive:{Icon:O,style:{color:e.colors.neutral700},inverseStyle:{color:e.colors.neutral300}}},Z={default:Y.default,xlsx:Y.excel,xlsm:Y.excel,xlsb:Y.excel,xltx:Y.excel,xls:Y.excel,xlt:Y.excel,doc:Y.word,docx:Y.word,docm:Y.word,dotx:Y.word,dotm:Y.word,docb:Y.word,pptx:Y.powerpoint,pptm:Y.powerpoint,ppt:Y.powerpoint,pdf:Y.pdf,png:Y.image,svg:Y.image,image:Y.image,audio:Y.audio,video:Y.video,zip:Y.archive},q=function(r){var n=r.file,o=r.isInverse,t=n.path,i=void 0===t?"":t,l=n.type,a=(void 0===l?"":l).split("/")[0],s=i.split(".").pop()||"default",c=Z[s]||Z[a]||Z.default;/*#__PURE__*/return L(c.Icon,{size:e.iconSizes.medium,style:o?c.inverseStyle:c.style})};function J(){return J=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},J.apply(null,arguments)}function Q(e,r){if(null==e)return{};var n={};for(var o in e)if({}.hasOwnProperty.call(e,o)){if(-1!==r.indexOf(o))continue;n[o]=e[o]}return n}function X(e,r){return r||(r=e.slice(0)),e.raw=r,e}var $,_,ee,re,ne,oe,te,ie,le,ae,se,ce,de,ue,pe=function(e,r,n){if(void 0===r&&(r=2),void 0===n&&(n="Bytes"),void 0!==e){if(0==e)return"0 "+n;var o=[n,"KB","MB","GB","TB","PB","EB","ZB","YB"],t=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,t)).toFixed(r))+" "+o[t]}},fe=["accept","file","isInverse","maxSize","minSize","onDeleteFile","onRemoveFile","testId","thumbnails"],me=["code"],ge=r.div($||($=X(["\n background-image: ",";\n background-repeat: no-repeat;\n background-size: cover;\n display: inline-block;\n vertical-align: middle;\n height: 40px;\n width: 40px;\n"])),function(e){var r=e.file;return"url('"+("preview"in r&&r.preview)+"')"}),ve=r.div(_||(_=X(["\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"]))),he=function(e){var r=e.file,n=e.isInverse,o=e.theme,t=e.thumbnails;return r.errors?/*#__PURE__*/L(C,{color:n?o.colors.red500:o.colors.danger,size:24}):r.preview&&t&&r.type&&r.type.startsWith("image")?/*#__PURE__*/L(ge,{role:"img",file:r}):/*#__PURE__*/L(q,{isInverse:n,file:r})},ye={marginRight:"12px",display:"flex"},be=r.div(ee||(ee=X(["\n border-top: 1px solid\n ",";\n padding: 16px;\n font-size: ",";\n line-height: ",";\n"])),function(e){var r=e.theme;return e.isInverse?r.colors.neutral500:r.colors.neutral300},function(e){return e.theme.typeScale.size02.fontSize},function(e){return e.theme.typeScale.size02.lineHeight}),xe=r(n)(re||(re=X(["\n height: 56px;\n padding: 0 8px 0 16px;\n font-size: ",";\n line-height: ",";\n"])),function(e){return e.theme.typeScale.size02.fontSize},function(e){return e.theme.typeScale.size02.lineHeight}),ze=r(n)(ne||(ne=X(["\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: ",";\n line-height: ",";\n"])),function(e){return e.theme.typeScale.size02.fontSize},function(e){return e.theme.typeScale.size02.lineHeight}),Se=r(o)(oe||(oe=X(["\n background-color: none;\n border-color: ",";\n border-width: 1px;\n color: ",";\n margin: 10px 0;\n"])),function(e){var r=e.theme,n=e.isInverse;return e.file.errors?n?r.colors.red500:r.colors.danger:n?r.colors.neutral800:r.colors.neutral200},function(e){var r=e.theme;return e.isInverse?r.colors.neutral0:e.file.errors?r.colors.neutral700:r.colors.brand.navy}),Ie=r.span(te||(te=X(["\n display: block;\n\n > div {\n display: flex;\n align-self: center;\n margin-right: 12px;\n }\n"]))),we=r.span(ie||(ie=X(["\n display: block;\n"]))),Fe=/*#__PURE__*/N(function(e,r){var o,h=e.accept,y=e.file,b=e.isInverse,x=e.maxSize,z=e.minSize,S=e.onDeleteFile,I=e.onRemoveFile,w=e.thumbnails,F=Q(e,fe),k=T(t),R=E.useContext(i),D=l(b),j=U(/*#__PURE__*/L(A,{})),O=j[0],C=j[1],H=function(){I&&"function"==typeof I&&I(y)},N=function(){S&&"function"==typeof S&&S(y)},G=function(e){var r=e.status,n=void 0===r?"ready":r,o=U(!1),t=o[0],i=o[1];return V(function(){var e=!0;return setTimeout(function(){e&&i(!0)},1e3),function(){e=!1}},[n]),"error"===n||"ready"===n?/*#__PURE__*/L(ve,{children:/*#__PURE__*/L(p,{onClick:H,variant:f.link,color:m.subtle,"aria-label":R.dropzone.removeFile+" "+y.name,icon:/*#__PURE__*/L(A,{})})}):"pending"===n?/*#__PURE__*/L(ve,{children:/*#__PURE__*/L(g,{color:D?k.colors.brand.skyBlue:k.colors.primary})}):/*#__PURE__*/P(ve,{children:[/*#__PURE__*/L(v,{isOpen:!t,unmountOnExit:!0,fade:!0,children:/*#__PURE__*/L(B,{color:D?k.colors.green500:k.colors.success,style:{marginTop:"4px"}})}),/*#__PURE__*/L(v,{isOpen:t,unmountOnExit:!0,fade:!0,children:/*#__PURE__*/L(p,{onClick:N,variant:f.link,color:m.subtle,"aria-label":R.dropzone.deleteFile+" "+y.name,icon:/*#__PURE__*/L(M,{})})})]})};return V(function(){var e;C(/*#__PURE__*/L(G,{status:null==y||null==(e=y.processor)?void 0:e.status}))},[null==y||null==(o=y.processor)?void 0:o.status]),/*#__PURE__*/L(a.Provider,{value:{isInverse:D},children:/*#__PURE__*/P(Se,{borderRadius:s.small,cornerTreatment:c.all,isInverse:D,theme:k,file:y,"data-testid":e.testId,ref:r,role:y.errors?"alert":"",children:[/*#__PURE__*/P(xe,J({theme:k,behavior:d.container,alignItems:u.center},F,{children:[/*#__PURE__*/L(n,{behavior:d.item,alignItems:u.center,style:ye,children:/*#__PURE__*/L(he,{file:y,isInverse:D,theme:k,thumbnails:w})}),/*#__PURE__*/L(ze,{xs:!0,behavior:d.item,theme:k,children:y.name}),y.processor&&"pending"===y.processor.status&&/*#__PURE__*/L(n,{role:"progressbar",style:{marginLeft:"auto"},behavior:d.item,children:y.processor.percent}),/*#__PURE__*/L(n,{behavior:d.item,children:O})]})),y.errors&&/*#__PURE__*/L(be,{theme:k,isInverse:D,children:y.errors.slice(0,1).map(function(e){var r=e.code,n=function(e,r,n){var o=Array.isArray(r.accept)&&1===r.accept.length?r.accept[0]:r.accept,t=Array.isArray(o)?"one of "+o.join(", "):o;switch(e.code){case"file-too-large":return J({},e,{message:e.message+" "+pe(r.maxSize,2,n)+"."});case"file-too-small":return J({},e,{message:e.message+" "+pe(r.minSize,2,n)+"."});case"file-invalid-type":return J({},e,{message:e.message+": "+t});default:return e}}(J({code:r},Q(e,me),R.dropzone.errors[r]),{accept:h,minSize:z,maxSize:x},R.dropzone.bytes),o=n.header,t=n.message;/*#__PURE__*/return P(E.Fragment,{children:[/*#__PURE__*/L(Ie,{style:{color:D?k.colors.red500:k.colors.danger},children:void 0===o?"":o}),/*#__PURE__*/L(we,{children:t})]},r)})})]})})}),ke=["accept","containerStyle","disabled","dropzoneOptions","helperMessage","id","inputSize","isInverse","isLabelVisuallyHidden","labelStyle","labelText","maxFiles","minFiles","maxSize","minSize","multiple","noDrag","onSendFile","onDeleteFile","onRemoveFile","sendFiles","testId","thumbnails"];!function(e){e.error="error",e.dragAccept="dragAccept",e.dragReject="dragReject",e.dragActive="dragActive",e.default="default"}(ue||(ue={}));var Re=r(n)(le||(le=X(["\n flex-direction: column;\n align-items: ",";\n justify-content: ",";\n text-align: ",";\n padding: ",";\n border-radius: ",";\n border: ",";\n\n border-style: ",";\n background-color: ",";\n outline: none;\n transition: ",";\n"])),function(e){return e.noDrag?"left":"center"},function(e){return e.noDrag?"left":"center"},function(e){return e.noDrag?"left":"center"},function(e){return e.noDrag?"0px":"24px"},function(e){var r=e.theme;return e.noDrag?r.borderRadiusNone:r.borderRadiusSmall},function(e){var r=e.dragState,n=void 0===r?ue.default:r,o=e.theme,t=e.isInverse;return e.noDrag?"0px":n===ue.dragReject||n===ue.error?(n===ue.error?"1px":"2px")+" dashed "+function(e,r,n){return n?e===ue.error?r.colors.red500:r.colors.red400:r.colors.danger}(n,o,t):n===ue.dragActive?"2px dashed "+o.colors.blue500:n===ue.dragAccept?"2px dashed "+o.colors.green500:"2px dashed "+(t?o.colors.neutral800:o.colors.neutral300)},function(e){var r=e.dragState;return(void 0===r?ue.default:r)===ue.error?"solid":"dashed"},function(e){var r=e.theme;return e.noDrag?"transparent":e.isInverse?K(.6,r.colors.neutral1200):r.colors.neutral100},function(e){return"border "+(e.noDrag?0:".24s")+" ease-in-out"}),De=r.span(ae||(ae=X(["\n color: ",";\n display: block;\n font-size: 14px;\n margin: -8px 0 16px 0;\n"])),function(e){var r=e.theme;return e.isInverse?r.colors.neutral500:r.colors.neutral700}),je=r.div(se||(se=X(["\n color: ",";\n margin: 0 0 24px 0;\n font-size: ",";\n line-height: ",";\n font-weight: 500;\n padding: ",";\n"])),function(e){var r=e.theme;return e.isInverse?r.colors.neutral0:r.colors.brand.navy},function(e){return e.theme.typeScale.size02.fontSize},function(e){return e.theme.typeScale.size02.lineHeight},function(e){return e.theme.spaceScale.spacing01}),Oe=r.ul(ce||(ce=X(["\n list-style: none;\n padding: 0;\n"]))),Ae=r.li(de||(de=X([""]))),Ce=/*#__PURE__*/E.forwardRef(function(e,r){var o=e.accept,s=e.containerStyle,c=e.disabled,u=e.dropzoneOptions,p=void 0===u?{multiple:!0}:u,g=e.helperMessage,v=e.id,S=e.inputSize,I=e.isInverse,w=e.isLabelVisuallyHidden,F=e.labelStyle,k=e.labelText,R=e.maxFiles,D=e.minFiles,j=e.maxSize,O=e.minSize,A=e.multiple,C=void 0===A||A,B=e.noDrag,M=void 0!==B&&B,N=e.onSendFile,T=e.onDeleteFile,U=e.onRemoveFile,V=e.sendFiles,K=void 0!==V&&V,Y=e.testId,Z=e.thumbnails,q=void 0===Z||Z,X=Q(e,ke),$=E.useState([]),_=$[0],ee=$[1],re=E.useState(null),ne=re[0],oe=re[1],te=E.useState(""),ie=te[0],le=te[1],ae=l(I),se=E.useContext(t),ce=E.useContext(i),de=h(v),pe=h(de+"-helper"),fe=E.useRef(null),me=E.useCallback(function(e,r){var n=[].concat(e.map(function(e){return Object.assign(e,{preview:URL.createObjectURL(e)})}),r.map(function(e){return Object.assign(e.file,{errors:e.errors})}));if(ee(function(e){return[].concat(e,n)}),e.length>0){var o=e.map(function(e){return e.name}).join(", "),t=1===e.length?ce.dropzone.fileAdded.replace(/\{fileName\}/g,o):ce.dropzone.filesAdded.replace(/\{count\}/g,e.length.toString()).replace(/\{fileNames\}/g,o);le(t)}fe.current&&fe.current.focus()},[ce]),ge=W(J({noClick:!0,disabled:c,multiple:C,maxSize:j,minSize:O,accept:o,onDrop:me,noDrag:M},p)),ve=ge.getInputProps,he=ge.getRootProps,ye=ge.isDragAccept,be=ge.isDragActive,xe=ge.isDragReject,ze=ge.open,Se=ge.inputRef;G(r,function(){return Se.current});var Ie=ve({id:de}),we=ue.default;ne?we=ue.error:ye?we=ue.dragAccept:xe?we=ue.dragReject:be&&(we=ue.dragActive);var Ce=function(e){ee(function(r){return r.filter(function(r){return r!==e})}),U&&"function"==typeof U&&U(e);var r=ce.dropzone.fileRemoved.replace(/\{fileName\}/g,e.name);le(r),fe.current&&fe.current.focus()},Be=function(e){ee(function(r){return r.filter(function(r){return r!==e})}),T&&"function"==typeof T&&T(e);var r=ce.dropzone.fileDeleted.replace(/\{fileName\}/g,e.name);le(r),fe.current&&fe.current.focus()},Me=function(e){if(ee(function(r){return r.map(function(r){return r===e.file?Object.assign(r,{processor:J({},r.processor,{percent:e.percent+"%",status:"pending"})}):r})}),e.percent>0&&e.percent%25==0){var r=ce.dropzone.fileUploading.replace(/\{fileName\}/g,e.file.name).replace(/\{percent\}/g,e.percent.toString());le(r)}},He=function(e){ee(function(r){return r.map(function(r){return r===e.file?Object.assign(r,{processor:J({},r.processor,{percent:"",status:"finished"})}):r})});var r=ce.dropzone.fileUploaded.replace(/\{fileName\}/g,e.file.name);le(r)},Le=function(e){ee(function(r){return r.map(function(r){return r===e.file?Object.assign(r,{errors:e.errors,processor:J({},r.processor,{status:"error"})}):r})})};return E.useEffect(function(){return function(){_.forEach(function(e){return e.preview&&URL.revokeObjectURL(e.preview)})}},[_]),E.useEffect(function(){var e=D&&_.length<D,r=R&&_.length>R,n=null;r?n="too-many-files":e&&(n="too-few-files"),oe(function(e,r){if(null===e)return null;var n=ce.dropzone.errors[e];switch(e){case"too-many-files":return n.message+" "+r.maxFiles+" "+ce.dropzone.files+".";case"too-few-files":return n.message+" "+r.minFiles+" "+ce.dropzone.files+".";default:return n.message}}(n,{minFiles:D,maxFiles:R})),K&&_.length>0&&!r&&!e&&ee(function(e){return e.map(function(e){return e.errors||e.processor||!N||N({file:e,onError:Le,onFinish:He,onProgress:Me}),e})})},[K,_.length,N,R,D,ce.dropzone.errors,ce.dropzone.files]),/*#__PURE__*/P(a.Provider,{value:{isInverse:ae},children:[/*#__PURE__*/P(y,{actionable:!1,containerStyle:s,errorMessage:ne,fieldId:de,inputSize:S,isInverse:ae,isLabelVisuallyHidden:w,labelStyle:J({color:ae?se.colors.neutral0:se.colors.brand.navy},F),labelText:k,messageStyle:{minHeight:0},"data-testid":Y,children:[/*#__PURE__*/L(De,{id:pe,theme:se,isInverse:ae,children:g}),/*#__PURE__*/P(Re,J({behavior:d.container,dragState:we,isInverse:ae,noDrag:M,theme:se},he(),X,{testId:Y,tabIndex:-1,children:[/*#__PURE__*/L("input",{ref:Se,type:Ie.type,accept:Ie.accept,autoComplete:Ie.autoComplete,id:Ie.id,multiple:Ie.multiple,onChange:Ie.onChange,onClick:Ie.onClick,style:Ie.style,tabIndex:Ie.tabIndex,"data-testid":"file-input"}),M?/*#__PURE__*/L(n,{xs:!0,behavior:d.item,children:/*#__PURE__*/L(b,{color:m.primary,disabled:c,isInverse:ae,onClick:ze,style:{margin:0},ref:fe,"aria-describedby":g?pe:void 0,children:ce.dropzone.browseFiles})}):/*#__PURE__*/P(n,{behavior:d.item,children:[/*#__PURE__*/L(H,{"aria-hidden":"true",color:ae?se.colors.neutral0:se.colors.neutral700,size:48}),/*#__PURE__*/L(je,{isInverse:ae,theme:se,children:ce.dropzone.dragMessage}),/*#__PURE__*/L(b,{color:m.primary,disabled:c,isInverse:ae,onClick:ze,style:{margin:0},variant:f.solid,ref:fe,"aria-describedby":g?pe:void 0,children:ce.dropzone.browseFiles})]})]}))]}),/*#__PURE__*/L(Oe,{children:_.map(function(e){/*#__PURE__*/return L(Ae,{children:/*#__PURE__*/L(Fe,{accept:o,file:e,isInverse:ae,maxSize:j,minSize:O,onDeleteFile:Be,onRemoveFile:Ce,thumbnails:q})},e.name)})}),/*#__PURE__*/L(x,{children:/*#__PURE__*/L(z,{children:ie})})]})});export{Ce as Dropzone,q as FileIcon};
2
2
  //# sourceMappingURL=fileuploader.modern.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fileuploader.modern.module.js","sources":["../src/components/dropzone/FileIcon.tsx","../src/components/dropzone/utils.ts","../src/components/dropzone/Dropzone.tsx","../src/components/dropzone/Preview.tsx"],"sourcesContent":["import React from 'react';\n\nimport { magma } from 'react-magma-dom';\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';\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.neutral700,\n },\n inverseStyle: {\n color: magma.colors.neutral300,\n },\n },\n word: {\n Icon: FileWordIcon,\n style: {\n color: magma.colors.blue500,\n },\n inverseStyle: {\n color: magma.colors.blue500,\n },\n },\n excel: {\n Icon: FileExcelIcon,\n style: {\n color: magma.colors.green500,\n },\n inverseStyle: {\n color: magma.colors.green500,\n },\n },\n powerpoint: {\n Icon: FilePowerpointIcon,\n style: {\n color: magma.colors.tangerine600,\n },\n inverseStyle: {\n color: magma.colors.tangerine500,\n },\n },\n pdf: {\n Icon: FilePdfIcon,\n style: {\n color: magma.colors.red600,\n },\n inverseStyle: {\n color: magma.colors.red500,\n },\n },\n image: {\n Icon: ImageIcon,\n style: {\n color: magma.colors.neutral700,\n },\n inverseStyle: {\n color: magma.colors.neutral300,\n },\n },\n video: {\n Icon: VideocamIcon,\n style: {\n color: magma.colors.neutral700,\n },\n inverseStyle: {\n color: magma.colors.neutral300,\n },\n },\n audio: {\n Icon: AudiotrackIcon,\n style: {\n color: magma.colors.neutral700,\n },\n inverseStyle: {\n color: magma.colors.neutral300,\n },\n },\n archive: {\n Icon: FileZipIcon,\n style: {\n color: magma.colors.neutral700,\n },\n inverseStyle: {\n color: magma.colors.neutral300,\n },\n },\n};\n\nconst iconMapping: {\n [key: string]: {\n Icon: any;\n style: React.CSSProperties;\n inverseStyle: React.CSSProperties;\n };\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, inverseStyle } =\n iconMapping[extension] || iconMapping[category] || iconMapping.default;\n\n return (\n <Icon\n size={magma.iconSizes.medium}\n style={isInverse ? inverseStyle : style}\n />\n );\n};\n","export const formatFileSize = (\n bytes: number | undefined,\n decimalPoint = 2,\n bytesLabel = '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\n return (\n parseFloat((bytes / Math.pow(k, i)).toFixed(decimalPoint)) + ' ' + sizes[i]\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, { useImperativeHandle } from 'react';\n\nimport { transparentize } from 'polished';\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 styled,\n Announce,\n VisuallyHidden,\n} from 'react-magma-dom';\nimport { CloudUploadIcon } from 'react-magma-icons';\n\nimport { FilePreview, FileError } from './FilePreview';\nimport { Preview } from './Preview';\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\nenum DragState {\n error = 'error',\n dragAccept = 'dragAccept',\n dragReject = 'dragReject',\n dragActive = 'dragActive',\n default = 'default',\n}\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 = styled(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, theme }) =>\n noDrag ? theme.borderRadiusNone : theme.borderRadiusSmall};\n border: ${({ dragState = DragState.default, noDrag, theme, isInverse }) =>\n noDrag\n ? `0px`\n : dragState === DragState.dragReject || dragState === DragState.error\n ? isInverse\n ? `${dragState === DragState.error ? '1px' : '2px'} dashed ${\n dragState === DragState.error\n ? theme.colors.red500\n : theme.colors.red400\n }`\n : `${dragState === DragState.error ? '1px' : '2px'} dashed ${\n theme.colors.danger\n }`\n : dragState === DragState.dragActive\n ? `2px dashed ${theme.colors.blue500}`\n : dragState === DragState.dragAccept\n ? `2px dashed ${theme.colors.green500}`\n : `2px dashed ${\n isInverse ? theme.colors.neutral800 : theme.colors.neutral300\n }`};\n\n border-style: ${({ dragState = DragState.default }) =>\n dragState === DragState.error ? 'solid' : 'dashed'};\n background-color: ${({ theme, noDrag, isInverse }) =>\n noDrag\n ? 'transparent'\n : isInverse\n ? transparentize(0.6, theme.colors.neutral1200)\n : theme.colors.neutral100};\n outline: none;\n transition: ${({ noDrag }) => `border ${noDrag ? 0 : '.24s'} ease-in-out`};\n`;\n\nconst HelperMessage = styled.span<{ isInverse?: boolean }>`\n color: ${({ theme, isInverse }) =>\n isInverse ? theme.colors.neutral500 : theme.colors.neutral700};\n display: block;\n font-size: 14px;\n margin: -8px 0 16px 0;\n`;\n\nconst Wrapper = styled.div<{ isInverse?: boolean }>`\n color: ${({ theme, isInverse }) =>\n isInverse ? theme.colors.neutral0 : theme.colors.brand.navy};\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`;\n\nconst PreviewList = styled.ul`\n list-style: none;\n padding: 0;\n`;\n\nconst PreviewItem = styled.li``;\n\nexport const Dropzone = React.forwardRef<HTMLInputElement, DropzoneProps>(\n (props, ref) => {\n const {\n accept,\n containerStyle,\n disabled,\n\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 const [announcement, setAnnouncement] = React.useState<string>('');\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 const helperMessageId = useGenerateId(`${id}-helper`);\n\n const browseFileButtonRef = React.useRef<HTMLButtonElement>(null);\n\n const onDrop = React.useCallback(\n (acceptedFiles: FilePreview[], rejectedFiles: FileRejection[]) => {\n const newFiles = [\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 setFiles((prevFiles: FilePreview[]) => [...prevFiles, ...newFiles]);\n\n if (acceptedFiles.length > 0) {\n const fileNames = acceptedFiles.map(file => file.name).join(', ');\n const message =\n acceptedFiles.length === 1\n ? i18n.dropzone.fileAdded.replace(/\\{fileName\\}/g, fileNames)\n : i18n.dropzone.filesAdded\n .replace(/\\{count\\}/g, acceptedFiles.length.toString())\n .replace(/\\{fileNames\\}/g, fileNames);\n\n setAnnouncement(message);\n }\n\n browseFileButtonRef.current && browseFileButtonRef.current.focus();\n },\n [i18n]\n );\n\n const {\n getInputProps,\n getRootProps,\n isDragAccept,\n isDragActive,\n isDragReject,\n open,\n inputRef,\n } = useDropzone({\n noClick: true,\n disabled,\n multiple,\n maxSize,\n minSize,\n accept,\n onDrop,\n noDrag,\n ...dropzoneOptions,\n });\n\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n ref,\n () => inputRef.current\n );\n\n const inputProps = getInputProps({ id });\n\n let dragState = DragState.default;\n\n if (errorMessage) {\n dragState = DragState.error;\n } else if (isDragAccept) {\n dragState = DragState.dragAccept;\n } else if (isDragReject) {\n dragState = DragState.dragReject;\n } else if (isDragActive) {\n dragState = DragState.dragActive;\n }\n\n const handleRemoveFile = (removedFile: FilePreview) => {\n setFiles(prevFiles => prevFiles.filter(file => file !== removedFile));\n\n if (onRemoveFile && typeof onRemoveFile === 'function') {\n onRemoveFile(removedFile);\n }\n\n const message = i18n.dropzone.fileRemoved.replace(\n /\\{fileName\\}/g,\n removedFile.name\n );\n\n setAnnouncement(message);\n\n browseFileButtonRef.current && browseFileButtonRef.current.focus();\n };\n\n const handleDeleteFile = (removedFile: FilePreview) => {\n setFiles(prevFiles => prevFiles.filter(file => file !== removedFile));\n\n if (onDeleteFile && typeof onDeleteFile === 'function') {\n onDeleteFile(removedFile);\n }\n\n const message = i18n.dropzone.fileDeleted.replace(\n /\\{fileName\\}/g,\n removedFile.name\n );\n\n setAnnouncement(message);\n\n browseFileButtonRef.current && browseFileButtonRef.current.focus();\n };\n\n const setProgress = (progressProps: {\n percent: number;\n file: FilePreview;\n }) => {\n setFiles(prevFiles =>\n prevFiles.map(file =>\n file === progressProps.file\n ? Object.assign(file, {\n processor: {\n ...file.processor,\n percent: `${progressProps.percent}%`,\n status: 'pending',\n },\n })\n : file\n )\n );\n\n // Announce progress every 25% to avoid too many announcements\n if (progressProps.percent > 0 && progressProps.percent % 25 === 0) {\n const message = i18n.dropzone.fileUploading\n .replace(/\\{fileName\\}/g, progressProps.file.name)\n .replace(/\\{percent\\}/g, progressProps.percent.toString());\n\n setAnnouncement(message);\n }\n };\n\n const setFinished = (finishedProps: { file: FilePreview }) => {\n setFiles(prevFiles =>\n prevFiles.map(file =>\n file === finishedProps.file\n ? Object.assign(file, {\n processor: {\n ...file.processor,\n percent: '',\n status: 'finished',\n },\n })\n : file\n )\n );\n\n // Announce successful upload\n const message = i18n.dropzone.fileUploaded.replace(\n /\\{fileName\\}/g,\n finishedProps.file.name\n );\n\n setAnnouncement(message);\n };\n\n const setError = (errorProps: {\n errors: FileError[];\n file: FilePreview;\n }) => {\n setFiles(prevFiles =>\n prevFiles.map(file =>\n file === errorProps.file\n ? Object.assign(file, {\n errors: errorProps.errors,\n processor: { ...file.processor, status: 'error' },\n })\n : file\n )\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 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\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 const minFileError = minFiles && files.length < minFiles;\n const maxFileError = maxFiles && files.length > maxFiles;\n\n let errorCode: string | null = null;\n\n if (maxFileError) {\n errorCode = 'too-many-files';\n } else if (minFileError) {\n errorCode = 'too-few-files';\n }\n\n setErrorMessage(formatError(errorCode, { minFiles, maxFiles }));\n\n if (sendFiles && files.length > 0 && !maxFileError && !minFileError) {\n setFiles((prevFiles: FilePreview[]) => {\n return prevFiles.map((file: FilePreview) => {\n if (!file.errors && !file.processor && onSendFile) {\n onSendFile({\n file,\n onError: setError,\n onFinish: setFinished,\n onProgress: setProgress,\n });\n }\n\n return file;\n });\n });\n }\n }, [\n sendFiles,\n files.length,\n onSendFile,\n maxFiles,\n minFiles,\n i18n.dropzone.errors,\n i18n.dropzone.files,\n ]);\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={{\n color: isInverse ? theme.colors.neutral0 : theme.colors.brand.navy,\n ...labelStyle,\n }}\n labelText={labelText}\n messageStyle={{ minHeight: 0 }}\n data-testid={testId}\n >\n <HelperMessage\n id={helperMessageId}\n theme={theme}\n isInverse={isInverse}\n >\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={inputRef}\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 data-testid=\"file-input\"\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 ref={browseFileButtonRef}\n aria-describedby={helperMessage ? helperMessageId : undefined}\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 ? theme.colors.neutral0 : theme.colors.neutral700\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 ref={browseFileButtonRef}\n aria-describedby={helperMessage ? helperMessageId : undefined}\n >\n {i18n.dropzone.browseFiles}\n </Button>\n </Flex>\n )}\n </Container>\n </FormFieldContainer>\n <PreviewList>\n {files.map((file: FilePreview) => (\n <PreviewItem key={file.name}>\n <Preview\n accept={accept}\n file={file}\n isInverse={isInverse}\n maxSize={maxSize}\n minSize={minSize}\n onDeleteFile={handleDeleteFile}\n onRemoveFile={handleRemoveFile}\n thumbnails={thumbnails}\n />\n </PreviewItem>\n ))}\n </PreviewList>\n\n <VisuallyHidden>\n <Announce>{announcement}</Announce>\n </VisuallyHidden>\n </InverseContext.Provider>\n );\n }\n);\n","import React, { forwardRef, useContext, useEffect, useState } from 'react';\n\nimport {\n ButtonColor,\n ButtonVariant,\n Card,\n CardBorderRadius,\n CardCornerTreatment,\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 styled,\n} from 'react-magma-dom';\nimport {\n CheckCircleIcon,\n CloseIcon,\n DeleteIcon,\n ErrorIcon,\n} from 'react-magma-icons';\n\nimport { FileIcon } from './FileIcon';\nimport { FilePreview } from './FilePreview';\nimport { formatFileSize } from './utils';\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 = styled.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 = styled.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 = styled.div<{ isInverse: boolean }>`\n border-top: 1px solid\n ${({ theme, isInverse }) =>\n isInverse ? theme.colors.neutral500 : 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 = styled(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 = styled(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 = styled(Card)<{ file: FilePreview; isInverse: boolean }>`\n background-color: none;\n border-color: ${({ file, theme, isInverse }) =>\n file.errors\n ? isInverse\n ? theme.colors.red500\n : theme.colors.danger\n : isInverse\n ? theme.colors.neutral800\n : theme.colors.neutral200};\n border-width: 1px;\n color: ${({ file, theme, isInverse }) =>\n isInverse\n ? theme.colors.neutral0\n : file.errors\n ? theme.colors.neutral700\n : theme.colors.brand.navy};\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\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<\n HTMLDivElement,\n Omit<PreviewProps, 'children'>\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\n setTimeout(() => {\n if (mounted) {\n setDone(true);\n }\n }, 1000);\n\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.subtle}\n aria-label={`${i18n.dropzone.removeFile} ${file.name}`}\n icon={<CloseIcon />}\n />\n </StatusIcons>\n );\n }\n\n if (status === 'pending') {\n return (\n <StatusIcons>\n <Spinner\n color={isInverse ? theme.colors.brand.skyBlue : 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.green500 : 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.subtle}\n aria-label={`${i18n.dropzone.deleteFile} ${file.name}`}\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 borderRadius={CardBorderRadius.small}\n cornerTreatment={CardCornerTreatment.all}\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={isInverse ? theme.colors.red500 : theme.colors.danger}\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} isInverse={isInverse}>\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\n return (\n <React.Fragment key={code}>\n <ErrorHeader\n style={{\n color: isInverse\n ? theme.colors.red500\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"],"names":["icons","default","Icon","InsertDriveFileIcon","style","color","magma","colors","neutral700","inverseStyle","neutral300","word","FileWordIcon","blue500","excel","FileExcelIcon","green500","powerpoint","FilePowerpointIcon","tangerine600","tangerine500","pdf","FilePdfIcon","red600","red500","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","_ref","file","isInverse","_file$path","path","_file$type","type","category","split","extension","pop","_ref2","_jsx","size","iconSizes","medium","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","DragState","formatFileSize","bytes","decimalPoint","bytesLabel","undefined","sizes","i","Math","floor","log","parseFloat","pow","toFixed","Thumb","styled","div","_taggedTemplateLiteralLoose","preview","StatusIcons","IconStyles","marginRight","display","Errors","theme","neutral500","_ref3","typeScale","size02","fontSize","_ref4","lineHeight","StyledFlex","Flex","_ref5","_ref6","FileName","_ref7","_ref8","StyledCard","Card","_templateObject6","_ref9","errors","danger","neutral800","neutral200","_ref0","neutral0","brand","navy","ErrorHeader","span","_templateObject7","ErrorMessage","_templateObject8","Preview","forwardRef","props","ref","_file$processor2","accept","isInverseProp","maxSize","minSize","onDeleteFile","onRemoveFile","thumbnails","rest","_objectWithoutPropertiesLoose","_excluded","useContext","ThemeContext","i18n","React","I18nContext","useIsInverse","_useState","useState","CloseIcon","actions","setActions","handleRemoveFile","handleDeleteFile","FinishedActions","_ref1","_ref1$status","status","_useState2","done","setDone","useEffect","mounted","setTimeout","children","IconButton","onClick","variant","ButtonVariant","link","ButtonColor","subtle","dropzone","removeFile","name","icon","Spinner","skyBlue","primary","_jsxs","Transition","isOpen","unmountOnExit","fade","CheckCircleIcon","success","marginTop","deleteFile","DeleteIcon","_file$processor","processor","InverseContext","Provider","value","borderRadius","CardBorderRadius","small","cornerTreatment","CardCornerTreatment","all","testId","role","_extends","behavior","FlexBehavior","container","alignItems","FlexAlignItems","center","item","ErrorIcon","startsWith","xs","marginLeft","percent","slice","map","_ref10","code","_formatError","error","constraints","byteLabel","Array","isArray","length","messageSuffix","join","message","formatError","_excluded2","_formatError$header","header","Fragment","Container","noDrag","borderRadiusNone","borderRadiusSmall","_ref6$dragState","dragState","dragReject","red400","dragActive","dragAccept","_ref7$dragState","transparentize","neutral1200","neutral100","HelperMessage","Wrapper","_ref11","_ref12","spaceScale","spacing01","PreviewList","ul","PreviewItem","li","Dropzone","containerStyle","disabled","_props$dropzoneOption","dropzoneOptions","multiple","helperMessage","defaultId","id","inputSize","isLabelVisuallyHidden","labelStyle","labelText","maxFiles","minFiles","_props$multiple","_props$noDrag","onSendFile","_props$sendFiles","sendFiles","_props$thumbnails","_React$useState","files","setFiles","_React$useState2","errorMessage","setErrorMessage","_React$useState3","announcement","setAnnouncement","useGenerateId","helperMessageId","browseFileButtonRef","useRef","onDrop","useCallback","acceptedFiles","rejectedFiles","newFiles","concat","Object","assign","URL","createObjectURL","_ref13","prevFiles","fileNames","fileAdded","replace","filesAdded","toString","current","focus","_useDropzone","useDropzone","noClick","getInputProps","getRootProps","isDragAccept","isDragActive","isDragReject","open","inputRef","useImperativeHandle","inputProps","removedFile","filter","fileRemoved","fileDeleted","setProgress","progressProps","fileUploading","setFinished","finishedProps","fileUploaded","setError","errorProps","forEach","revokeObjectURL","minFileError","maxFileError","errorCode","onError","onFinish","onProgress","FormFieldContainer","actionable","fieldId","messageStyle","minHeight","tabIndex","autoComplete","onChange","Button","margin","browseFiles","CloudUploadIcon","dragMessage","solid","VisuallyHidden","Announce"],"mappings":"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"}
1
+ {"version":3,"file":"fileuploader.modern.module.js","sources":["../src/components/dropzone/FileIcon.tsx","../src/components/dropzone/utils.ts","../src/components/dropzone/Dropzone.tsx","../src/components/dropzone/Preview.tsx"],"sourcesContent":["import React from 'react';\n\nimport { magma } from 'react-magma-dom';\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';\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.neutral700,\n },\n inverseStyle: {\n color: magma.colors.neutral300,\n },\n },\n word: {\n Icon: FileWordIcon,\n style: {\n color: magma.colors.blue500,\n },\n inverseStyle: {\n color: magma.colors.blue500,\n },\n },\n excel: {\n Icon: FileExcelIcon,\n style: {\n color: magma.colors.green500,\n },\n inverseStyle: {\n color: magma.colors.green500,\n },\n },\n powerpoint: {\n Icon: FilePowerpointIcon,\n style: {\n color: magma.colors.tangerine600,\n },\n inverseStyle: {\n color: magma.colors.tangerine500,\n },\n },\n pdf: {\n Icon: FilePdfIcon,\n style: {\n color: magma.colors.red600,\n },\n inverseStyle: {\n color: magma.colors.red500,\n },\n },\n image: {\n Icon: ImageIcon,\n style: {\n color: magma.colors.neutral700,\n },\n inverseStyle: {\n color: magma.colors.neutral300,\n },\n },\n video: {\n Icon: VideocamIcon,\n style: {\n color: magma.colors.neutral700,\n },\n inverseStyle: {\n color: magma.colors.neutral300,\n },\n },\n audio: {\n Icon: AudiotrackIcon,\n style: {\n color: magma.colors.neutral700,\n },\n inverseStyle: {\n color: magma.colors.neutral300,\n },\n },\n archive: {\n Icon: FileZipIcon,\n style: {\n color: magma.colors.neutral700,\n },\n inverseStyle: {\n color: magma.colors.neutral300,\n },\n },\n};\n\nconst iconMapping: {\n [key: string]: {\n Icon: any;\n style: React.CSSProperties;\n inverseStyle: React.CSSProperties;\n };\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, inverseStyle } =\n iconMapping[extension] || iconMapping[category] || iconMapping.default;\n\n return (\n <Icon\n size={magma.iconSizes.medium}\n style={isInverse ? inverseStyle : style}\n />\n );\n};\n","export const formatFileSize = (\n bytes: number | undefined,\n decimalPoint = 2,\n bytesLabel = '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","/* 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, { useImperativeHandle } from 'react';\n\nimport { transparentize } from 'polished';\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 styled,\n Announce,\n VisuallyHidden,\n} from 'react-magma-dom';\nimport { CloudUploadIcon } from 'react-magma-icons';\n\nimport { FilePreview, FileError } from './FilePreview';\nimport { Preview } from './Preview';\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\nenum DragState {\n error = 'error',\n dragAccept = 'dragAccept',\n dragReject = 'dragReject',\n dragActive = 'dragActive',\n default = 'default',\n}\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 getErrorBorderColor = (\n dragState: DragState,\n theme: ThemeInterface,\n isInverse?: boolean\n) => {\n if (!isInverse) {\n return theme.colors.danger;\n }\n\n return dragState === DragState.error\n ? theme.colors.red500\n : theme.colors.red400;\n};\n\nconst getContainerBorder = ({\n dragState = DragState.default,\n noDrag,\n theme,\n isInverse,\n}: {\n dragState?: DragState;\n noDrag?: boolean;\n theme: ThemeInterface;\n isInverse?: boolean;\n}) => {\n if (noDrag) {\n return '0px';\n }\n\n if (dragState === DragState.dragReject || dragState === DragState.error) {\n const width = dragState === DragState.error ? '1px' : '2px';\n\n return `${width} dashed ${getErrorBorderColor(dragState, theme, isInverse)}`;\n }\n\n if (dragState === DragState.dragActive) {\n return `2px dashed ${theme.colors.blue500}`;\n }\n\n if (dragState === DragState.dragAccept) {\n return `2px dashed ${theme.colors.green500}`;\n }\n\n return `2px dashed ${\n isInverse ? theme.colors.neutral800 : theme.colors.neutral300\n }`;\n};\n\nconst Container = styled(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, theme }) =>\n noDrag ? theme.borderRadiusNone : theme.borderRadiusSmall};\n border: ${getContainerBorder};\n\n border-style: ${({ dragState = DragState.default }) =>\n dragState === DragState.error ? 'solid' : 'dashed'};\n background-color: ${({ theme, noDrag, isInverse }) =>\n noDrag\n ? 'transparent'\n : isInverse\n ? transparentize(0.6, theme.colors.neutral1200)\n : theme.colors.neutral100};\n outline: none;\n transition: ${({ noDrag }) => `border ${noDrag ? 0 : '.24s'} ease-in-out`};\n`;\n\nconst HelperMessage = styled.span<{ isInverse?: boolean }>`\n color: ${({ theme, isInverse }) =>\n isInverse ? theme.colors.neutral500 : theme.colors.neutral700};\n display: block;\n font-size: 14px;\n margin: -8px 0 16px 0;\n`;\n\nconst Wrapper = styled.div<{ isInverse?: boolean }>`\n color: ${({ theme, isInverse }) =>\n isInverse ? theme.colors.neutral0 : theme.colors.brand.navy};\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`;\n\nconst PreviewList = styled.ul`\n list-style: none;\n padding: 0;\n`;\n\nconst PreviewItem = styled.li``;\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 const [announcement, setAnnouncement] = React.useState<string>('');\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 const helperMessageId = useGenerateId(`${id}-helper`);\n\n const browseFileButtonRef = React.useRef<HTMLButtonElement>(null);\n\n const onDrop = React.useCallback(\n (acceptedFiles: FilePreview[], rejectedFiles: FileRejection[]) => {\n const newFiles = [\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 setFiles((prevFiles: FilePreview[]) => [...prevFiles, ...newFiles]);\n\n if (acceptedFiles.length > 0) {\n const fileNames = acceptedFiles.map(file => file.name).join(', ');\n const message =\n acceptedFiles.length === 1\n ? i18n.dropzone.fileAdded.replace(/\\{fileName\\}/g, fileNames)\n : i18n.dropzone.filesAdded\n .replace(/\\{count\\}/g, acceptedFiles.length.toString())\n .replace(/\\{fileNames\\}/g, fileNames);\n\n setAnnouncement(message);\n }\n\n browseFileButtonRef.current && browseFileButtonRef.current.focus();\n },\n [i18n]\n );\n\n const {\n getInputProps,\n getRootProps,\n isDragAccept,\n isDragActive,\n isDragReject,\n open,\n inputRef,\n } = useDropzone({\n noClick: true,\n disabled,\n multiple,\n maxSize,\n minSize,\n accept,\n onDrop,\n noDrag,\n ...dropzoneOptions,\n });\n\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n ref,\n () => inputRef.current\n );\n\n const inputProps = getInputProps({ id });\n\n let dragState = DragState.default;\n\n if (errorMessage) {\n dragState = DragState.error;\n } else if (isDragAccept) {\n dragState = DragState.dragAccept;\n } else if (isDragReject) {\n dragState = DragState.dragReject;\n } else if (isDragActive) {\n dragState = DragState.dragActive;\n }\n\n const handleRemoveFile = (removedFile: FilePreview) => {\n setFiles(prevFiles => prevFiles.filter(file => file !== removedFile));\n\n if (onRemoveFile && typeof onRemoveFile === 'function') {\n onRemoveFile(removedFile);\n }\n\n const message = i18n.dropzone.fileRemoved.replace(\n /\\{fileName\\}/g,\n removedFile.name\n );\n\n setAnnouncement(message);\n\n browseFileButtonRef.current && browseFileButtonRef.current.focus();\n };\n\n const handleDeleteFile = (removedFile: FilePreview) => {\n setFiles(prevFiles => prevFiles.filter(file => file !== removedFile));\n\n if (onDeleteFile && typeof onDeleteFile === 'function') {\n onDeleteFile(removedFile);\n }\n\n const message = i18n.dropzone.fileDeleted.replace(\n /\\{fileName\\}/g,\n removedFile.name\n );\n\n setAnnouncement(message);\n\n browseFileButtonRef.current && browseFileButtonRef.current.focus();\n };\n\n const setProgress = (progressProps: {\n percent: number;\n file: FilePreview;\n }) => {\n setFiles(prevFiles =>\n prevFiles.map(file =>\n file === progressProps.file\n ? Object.assign(file, {\n processor: {\n ...file.processor,\n percent: `${progressProps.percent}%`,\n status: 'pending',\n },\n })\n : file\n )\n );\n\n // Announce progress every 25% to avoid too many announcements\n if (progressProps.percent > 0 && progressProps.percent % 25 === 0) {\n const message = i18n.dropzone.fileUploading\n .replace(/\\{fileName\\}/g, progressProps.file.name)\n .replace(/\\{percent\\}/g, progressProps.percent.toString());\n\n setAnnouncement(message);\n }\n };\n\n const setFinished = (finishedProps: { file: FilePreview }) => {\n setFiles(prevFiles =>\n prevFiles.map(file =>\n file === finishedProps.file\n ? Object.assign(file, {\n processor: {\n ...file.processor,\n percent: '',\n status: 'finished',\n },\n })\n : file\n )\n );\n\n // Announce successful upload\n const message = i18n.dropzone.fileUploaded.replace(\n /\\{fileName\\}/g,\n finishedProps.file.name\n );\n\n setAnnouncement(message);\n };\n\n const setError = (errorProps: {\n errors: FileError[];\n file: FilePreview;\n }) => {\n setFiles(prevFiles =>\n prevFiles.map(file =>\n file === errorProps.file\n ? Object.assign(file, {\n errors: errorProps.errors,\n processor: { ...file.processor, status: 'error' },\n })\n : file\n )\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 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\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 const minFileError = minFiles && files.length < minFiles;\n const maxFileError = maxFiles && files.length > maxFiles;\n\n let errorCode: string | null = null;\n\n if (maxFileError) {\n errorCode = 'too-many-files';\n } else if (minFileError) {\n errorCode = 'too-few-files';\n }\n\n setErrorMessage(formatError(errorCode, { minFiles, maxFiles }));\n\n if (sendFiles && files.length > 0 && !maxFileError && !minFileError) {\n setFiles((prevFiles: FilePreview[]) => {\n return prevFiles.map((file: FilePreview) => {\n if (!file.errors && !file.processor && onSendFile) {\n onSendFile({\n file,\n onError: setError,\n onFinish: setFinished,\n onProgress: setProgress,\n });\n }\n\n return file;\n });\n });\n }\n }, [\n sendFiles,\n files.length,\n onSendFile,\n maxFiles,\n minFiles,\n i18n.dropzone.errors,\n i18n.dropzone.files,\n ]);\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={{\n color: isInverse ? theme.colors.neutral0 : theme.colors.brand.navy,\n ...labelStyle,\n }}\n labelText={labelText}\n messageStyle={{ minHeight: 0 }}\n data-testid={testId}\n >\n <HelperMessage\n id={helperMessageId}\n theme={theme}\n isInverse={isInverse}\n >\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={inputRef}\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 data-testid=\"file-input\"\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 ref={browseFileButtonRef}\n aria-describedby={helperMessage ? helperMessageId : undefined}\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 ? theme.colors.neutral0 : theme.colors.neutral700\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 ref={browseFileButtonRef}\n aria-describedby={helperMessage ? helperMessageId : undefined}\n >\n {i18n.dropzone.browseFiles}\n </Button>\n </Flex>\n )}\n </Container>\n </FormFieldContainer>\n <PreviewList>\n {files.map((file: FilePreview) => (\n <PreviewItem key={file.name}>\n <Preview\n accept={accept}\n file={file}\n isInverse={isInverse}\n maxSize={maxSize}\n minSize={minSize}\n onDeleteFile={handleDeleteFile}\n onRemoveFile={handleRemoveFile}\n thumbnails={thumbnails}\n />\n </PreviewItem>\n ))}\n </PreviewList>\n\n <VisuallyHidden>\n <Announce>{announcement}</Announce>\n </VisuallyHidden>\n </InverseContext.Provider>\n );\n }\n);\n","import React, { forwardRef, useContext, useEffect, useState } from 'react';\n\nimport {\n ButtonColor,\n ButtonVariant,\n Card,\n CardBorderRadius,\n CardCornerTreatment,\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 styled,\n} from 'react-magma-dom';\nimport {\n CheckCircleIcon,\n CloseIcon,\n DeleteIcon,\n ErrorIcon,\n} from 'react-magma-icons';\n\nimport { FileIcon } from './FileIcon';\nimport { FilePreview } from './FilePreview';\nimport { formatFileSize } from './utils';\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 = styled.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 = styled.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 PreviewIcon = ({\n file,\n isInverse,\n theme,\n thumbnails,\n}: {\n file: FilePreview;\n isInverse: boolean;\n theme: ThemeInterface;\n thumbnails: boolean;\n}) => {\n if (file.errors) {\n return (\n <ErrorIcon\n color={isInverse ? theme.colors.red500 : theme.colors.danger}\n size={24}\n />\n );\n }\n\n if (\n file.preview &&\n thumbnails &&\n file.type &&\n file.type.startsWith('image')\n ) {\n return <Thumb role=\"img\" file={file} />;\n }\n\n return <FileIcon isInverse={isInverse} file={file} />;\n};\n\nconst IconStyles = {\n marginRight: '12px',\n display: 'flex',\n};\n\nconst Errors = styled.div<{ isInverse: boolean }>`\n border-top: 1px solid\n ${({ theme, isInverse }) =>\n isInverse ? theme.colors.neutral500 : 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 = styled(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 = styled(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 = styled(Card)<{ file: FilePreview; isInverse: boolean }>`\n background-color: none;\n border-color: ${({ file, theme, isInverse }) =>\n file.errors\n ? isInverse\n ? theme.colors.red500\n : theme.colors.danger\n : isInverse\n ? theme.colors.neutral800\n : theme.colors.neutral200};\n border-width: 1px;\n color: ${({ file, theme, isInverse }) =>\n isInverse\n ? theme.colors.neutral0\n : file.errors\n ? theme.colors.neutral700\n : theme.colors.brand.navy};\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\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<\n HTMLDivElement,\n Omit<PreviewProps, 'children'>\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\n setTimeout(() => {\n if (mounted) {\n setDone(true);\n }\n }, 1000);\n\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.subtle}\n aria-label={`${i18n.dropzone.removeFile} ${file.name}`}\n icon={<CloseIcon />}\n />\n </StatusIcons>\n );\n }\n\n if (status === 'pending') {\n return (\n <StatusIcons>\n <Spinner\n color={\n isInverse ? theme.colors.brand.skyBlue : theme.colors.primary\n }\n />\n </StatusIcons>\n );\n }\n\n return (\n <StatusIcons>\n <Transition isOpen={!done} unmountOnExit fade>\n <CheckCircleIcon\n color={isInverse ? theme.colors.green500 : 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.subtle}\n aria-label={`${i18n.dropzone.deleteFile} ${file.name}`}\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 borderRadius={CardBorderRadius.small}\n cornerTreatment={CardCornerTreatment.all}\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 <PreviewIcon\n file={file}\n isInverse={isInverse}\n theme={theme}\n thumbnails={thumbnails}\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} isInverse={isInverse}>\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\n return (\n <React.Fragment key={code}>\n <ErrorHeader\n style={{\n color: isInverse\n ? theme.colors.red500\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"],"names":["icons","default","Icon","InsertDriveFileIcon","style","color","magma","colors","neutral700","inverseStyle","neutral300","word","FileWordIcon","blue500","excel","FileExcelIcon","green500","powerpoint","FilePowerpointIcon","tangerine600","tangerine500","pdf","FilePdfIcon","red600","red500","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","_ref","file","isInverse","_file$path","path","_file$type","type","category","split","extension","pop","_ref2","_jsx","size","iconSizes","medium","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","DragState","formatFileSize","bytes","decimalPoint","bytesLabel","undefined","sizes","i","Math","floor","log","parseFloat","pow","toFixed","Thumb","styled","div","_taggedTemplateLiteralLoose","preview","StatusIcons","PreviewIcon","theme","thumbnails","errors","ErrorIcon","danger","startsWith","role","IconStyles","marginRight","display","Errors","_ref3","neutral500","_ref4","typeScale","size02","fontSize","_ref5","lineHeight","StyledFlex","Flex","_ref6","_ref7","FileName","_ref8","_ref9","StyledCard","Card","_templateObject6","_ref0","neutral800","neutral200","_ref1","neutral0","brand","navy","ErrorHeader","span","_templateObject7","ErrorMessage","_templateObject8","Preview","forwardRef","props","ref","_file$processor2","accept","isInverseProp","maxSize","minSize","onDeleteFile","onRemoveFile","rest","_objectWithoutPropertiesLoose","_excluded","useContext","ThemeContext","i18n","React","I18nContext","useIsInverse","_useState","useState","CloseIcon","actions","setActions","handleRemoveFile","handleDeleteFile","FinishedActions","_ref10","_ref10$status","status","_useState2","done","setDone","useEffect","mounted","setTimeout","children","IconButton","onClick","variant","ButtonVariant","link","ButtonColor","subtle","dropzone","removeFile","name","icon","Spinner","skyBlue","primary","_jsxs","Transition","isOpen","unmountOnExit","fade","CheckCircleIcon","success","marginTop","deleteFile","DeleteIcon","_file$processor","processor","InverseContext","Provider","value","borderRadius","CardBorderRadius","small","cornerTreatment","CardCornerTreatment","all","testId","_extends","behavior","FlexBehavior","container","alignItems","FlexAlignItems","center","item","xs","marginLeft","percent","slice","map","_ref11","code","_formatError","error","constraints","byteLabel","Array","isArray","length","messageSuffix","join","message","formatError","_excluded2","_formatError$header","header","Fragment","Container","noDrag","borderRadiusNone","borderRadiusSmall","_ref$dragState","dragState","dragReject","red400","getErrorBorderColor","dragActive","dragAccept","_ref7$dragState","transparentize","neutral1200","neutral100","HelperMessage","Wrapper","_ref12","spaceScale","spacing01","PreviewList","ul","PreviewItem","li","Dropzone","containerStyle","disabled","_props$dropzoneOption","dropzoneOptions","multiple","helperMessage","defaultId","id","inputSize","isLabelVisuallyHidden","labelStyle","labelText","maxFiles","minFiles","_props$multiple","_props$noDrag","onSendFile","_props$sendFiles","sendFiles","_props$thumbnails","_React$useState","files","setFiles","_React$useState2","errorMessage","setErrorMessage","_React$useState3","announcement","setAnnouncement","useGenerateId","helperMessageId","browseFileButtonRef","useRef","onDrop","useCallback","acceptedFiles","rejectedFiles","newFiles","concat","Object","assign","URL","createObjectURL","_ref13","prevFiles","fileNames","fileAdded","replace","filesAdded","toString","current","focus","_useDropzone","useDropzone","noClick","getInputProps","getRootProps","isDragAccept","isDragActive","isDragReject","open","inputRef","useImperativeHandle","inputProps","removedFile","filter","fileRemoved","fileDeleted","setProgress","progressProps","fileUploading","setFinished","finishedProps","fileUploaded","setError","errorProps","forEach","revokeObjectURL","minFileError","maxFileError","errorCode","onError","onFinish","onProgress","FormFieldContainer","actionable","fieldId","messageStyle","minHeight","tabIndex","autoComplete","onChange","Button","margin","browseFiles","CloudUploadIcon","dragMessage","solid","VisuallyHidden","Announce"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("react-magma-dom"),require("react-magma-icons"),require("react/jsx-runtime"),require("react"),require("polished"),require("react-dropzone")):"function"==typeof define&&define.amd?define(["exports","react-magma-dom","react-magma-icons","react/jsx-runtime","react","polished","react-dropzone"],n):n((e||self).dropzone={},e.reactMagmaDom,e.reactMagmaIcons,e.jsx,e.react,e.polished,e.reactDropzone)}(this,function(e,n,r,o,t,i,l){function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=/*#__PURE__*/a(t),c={default:{Icon:r.InsertDriveFileIcon,style:{color:n.magma.colors.neutral700},inverseStyle:{color:n.magma.colors.neutral300}},word:{Icon:r.FileWordIcon,style:{color:n.magma.colors.blue500},inverseStyle:{color:n.magma.colors.blue500}},excel:{Icon:r.FileExcelIcon,style:{color:n.magma.colors.green500},inverseStyle:{color:n.magma.colors.green500}},powerpoint:{Icon:r.FilePowerpointIcon,style:{color:n.magma.colors.tangerine600},inverseStyle:{color:n.magma.colors.tangerine500}},pdf:{Icon:r.FilePdfIcon,style:{color:n.magma.colors.red600},inverseStyle:{color:n.magma.colors.red500}},image:{Icon:r.ImageIcon,style:{color:n.magma.colors.neutral700},inverseStyle:{color:n.magma.colors.neutral300}},video:{Icon:r.VideocamIcon,style:{color:n.magma.colors.neutral700},inverseStyle:{color:n.magma.colors.neutral300}},audio:{Icon:r.AudiotrackIcon,style:{color:n.magma.colors.neutral700},inverseStyle:{color:n.magma.colors.neutral300}},archive:{Icon:r.FileZipIcon,style:{color:n.magma.colors.neutral700},inverseStyle:{color:n.magma.colors.neutral300}}},d={default:c.default,xlsx:c.excel,xlsm:c.excel,xlsb:c.excel,xltx:c.excel,xls:c.excel,xlt:c.excel,doc:c.word,docx:c.word,docm:c.word,dotx:c.word,dotm:c.word,docb:c.word,pptx:c.powerpoint,pptm:c.powerpoint,ppt:c.powerpoint,pdf:c.pdf,png:c.image,svg:c.image,image:c.image,audio:c.audio,video:c.video,zip:c.archive},u=function(e){var r=e.file,t=e.isInverse,i=r.path,l=void 0===i?"":i,a=r.type,s=(void 0===a?"":a).split("/")[0],c=l.split(".").pop()||"default",u=d[c]||d[s]||d.default;/*#__PURE__*/return o.jsx(u.Icon,{size:n.magma.iconSizes.medium,style:t?u.inverseStyle:u.style})};function p(){return p=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var o in r)({}).hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e},p.apply(null,arguments)}function f(e,n){if(null==e)return{};var r={};for(var o in e)if({}.hasOwnProperty.call(e,o)){if(-1!==n.indexOf(o))continue;r[o]=e[o]}return r}function m(e,n){return n||(n=e.slice(0)),e.raw=n,e}var g,v,x,h,y,b,I,z,j,S,F,w,C,B,D=function(e,n,r){if(void 0===n&&(n=2),void 0===r&&(r="Bytes"),void 0!==e){if(0==e)return"0 "+r;var o=[r,"KB","MB","GB","TB","PB","EB","ZB","YB"],t=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,t)).toFixed(n))+" "+o[t]}},k=["accept","file","isInverse","maxSize","minSize","onDeleteFile","onRemoveFile","testId","thumbnails"],R=["code"],A=n.styled.div(g||(g=m(["\n background-image: ",";\n background-repeat: no-repeat;\n background-size: cover;\n display: inline-block;\n vertical-align: middle;\n height: 40px;\n width: 40px;\n"])),function(e){var n=e.file;return"url('"+("preview"in n&&n.preview)+"')"}),O=n.styled.div(v||(v=m(["\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"]))),T={marginRight:"12px",display:"flex"},E=n.styled.div(x||(x=m(["\n border-top: 1px solid\n ",";\n padding: 16px;\n font-size: ",";\n line-height: ",";\n"])),function(e){var n=e.theme;return e.isInverse?n.colors.neutral500:n.colors.neutral300},function(e){return e.theme.typeScale.size02.fontSize},function(e){return e.theme.typeScale.size02.lineHeight}),M=n.styled(n.Flex)(h||(h=m(["\n height: 56px;\n padding: 0 8px 0 16px;\n font-size: ",";\n line-height: ",";\n"])),function(e){return e.theme.typeScale.size02.fontSize},function(e){return e.theme.typeScale.size02.lineHeight}),H=n.styled(n.Flex)(y||(y=m(["\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: ",";\n line-height: ",";\n"])),function(e){return e.theme.typeScale.size02.fontSize},function(e){return e.theme.typeScale.size02.lineHeight}),P=n.styled(n.Card)(b||(b=m(["\n background-color: none;\n border-color: ",";\n border-width: 1px;\n color: ",";\n margin: 10px 0;\n"])),function(e){var n=e.theme,r=e.isInverse;return e.file.errors?r?n.colors.red500:n.colors.danger:r?n.colors.neutral800:n.colors.neutral200},function(e){var n=e.theme;return e.isInverse?n.colors.neutral0:e.file.errors?n.colors.neutral700:n.colors.brand.navy}),L=n.styled.span(I||(I=m(["\n display: block;\n\n > div {\n display: flex;\n align-self: center;\n margin-right: 12px;\n }\n"]))),V=n.styled.span(z||(z=m(["\n display: block;\n"]))),N=/*#__PURE__*/t.forwardRef(function(e,i){var l,a=e.accept,c=e.file,d=e.isInverse,m=e.maxSize,g=e.minSize,v=e.onDeleteFile,x=e.onRemoveFile,h=e.thumbnails,y=f(e,k),b=t.useContext(n.ThemeContext),I=s.default.useContext(n.I18nContext),z=n.useIsInverse(d),j=t.useState(/*#__PURE__*/o.jsx(r.CloseIcon,{})),S=j[0],F=j[1],w=function(){x&&"function"==typeof x&&x(c)},C=function(){v&&"function"==typeof v&&v(c)},B=function(e){var i=e.status,l=void 0===i?"ready":i,a=t.useState(!1),s=a[0],d=a[1];return t.useEffect(function(){var e=!0;return setTimeout(function(){e&&d(!0)},1e3),function(){e=!1}},[l]),"error"===l||"ready"===l?/*#__PURE__*/o.jsx(O,{children:/*#__PURE__*/o.jsx(n.IconButton,{onClick:w,variant:n.ButtonVariant.link,color:n.ButtonColor.subtle,"aria-label":I.dropzone.removeFile+" "+c.name,icon:/*#__PURE__*/o.jsx(r.CloseIcon,{})})}):"pending"===l?/*#__PURE__*/o.jsx(O,{children:/*#__PURE__*/o.jsx(n.Spinner,{color:z?b.colors.brand.skyBlue:b.colors.primary})}):/*#__PURE__*/o.jsxs(O,{children:[/*#__PURE__*/o.jsx(n.Transition,{isOpen:!s,unmountOnExit:!0,fade:!0,children:/*#__PURE__*/o.jsx(r.CheckCircleIcon,{color:z?b.colors.green500:b.colors.success,style:{marginTop:"4px"}})}),/*#__PURE__*/o.jsx(n.Transition,{isOpen:s,unmountOnExit:!0,fade:!0,children:/*#__PURE__*/o.jsx(n.IconButton,{onClick:C,variant:n.ButtonVariant.link,color:n.ButtonColor.subtle,"aria-label":I.dropzone.deleteFile+" "+c.name,icon:/*#__PURE__*/o.jsx(r.DeleteIcon,{})})})]})};return t.useEffect(function(){var e;F(/*#__PURE__*/o.jsx(B,{status:null==c||null==(e=c.processor)?void 0:e.status}))},[null==c||null==(l=c.processor)?void 0:l.status]),/*#__PURE__*/o.jsx(n.InverseContext.Provider,{value:{isInverse:z},children:/*#__PURE__*/o.jsxs(P,{borderRadius:n.CardBorderRadius.small,cornerTreatment:n.CardCornerTreatment.all,isInverse:z,theme:b,file:c,"data-testid":e.testId,ref:i,role:c.errors?"alert":"",children:[/*#__PURE__*/o.jsxs(M,p({theme:b,behavior:n.FlexBehavior.container,alignItems:n.FlexAlignItems.center},y,{children:[/*#__PURE__*/o.jsx(n.Flex,{behavior:n.FlexBehavior.item,alignItems:n.FlexAlignItems.center,style:T,children:c.errors?/*#__PURE__*/o.jsx(r.ErrorIcon,{color:z?b.colors.red500:b.colors.danger,size:24}):c.preview&&h&&c.type&&c.type.startsWith("image")?/*#__PURE__*/o.jsx(A,{role:"img",file:c}):/*#__PURE__*/o.jsx(u,{isInverse:z,file:c})}),/*#__PURE__*/o.jsx(H,{xs:!0,behavior:n.FlexBehavior.item,theme:b,children:c.name}),c.processor&&"pending"===c.processor.status&&/*#__PURE__*/o.jsx(n.Flex,{role:"progressbar",style:{marginLeft:"auto"},behavior:n.FlexBehavior.item,children:c.processor.percent}),/*#__PURE__*/o.jsx(n.Flex,{behavior:n.FlexBehavior.item,children:S})]})),c.errors&&/*#__PURE__*/o.jsx(E,{theme:b,isInverse:z,children:c.errors.slice(0,1).map(function(e){var n=e.code,r=function(e,n,r){var o=Array.isArray(n.accept)&&1===n.accept.length?n.accept[0]:n.accept,t=Array.isArray(o)?"one of "+o.join(", "):o;switch(e.code){case"file-too-large":return p({},e,{message:e.message+" "+D(n.maxSize,2,r)+"."});case"file-too-small":return p({},e,{message:e.message+" "+D(n.minSize,2,r)+"."});case"file-invalid-type":return p({},e,{message:e.message+": "+t});default:return e}}(p({code:n},f(e,R),I.dropzone.errors[n]),{accept:a,minSize:g,maxSize:m},I.dropzone.bytes),t=r.header,i=r.message;/*#__PURE__*/return o.jsxs(s.default.Fragment,{children:[/*#__PURE__*/o.jsx(L,{style:{color:z?b.colors.red500:b.colors.danger},children:void 0===t?"":t}),/*#__PURE__*/o.jsx(V,{children:i})]},n)})})]})})}),U=["accept","containerStyle","disabled","dropzoneOptions","helperMessage","id","inputSize","isInverse","isLabelVisuallyHidden","labelStyle","labelText","maxFiles","minFiles","maxSize","minSize","multiple","noDrag","onSendFile","onDeleteFile","onRemoveFile","sendFiles","testId","thumbnails"];!function(e){e.error="error",e.dragAccept="dragAccept",e.dragReject="dragReject",e.dragActive="dragActive",e.default="default"}(B||(B={}));var q=n.styled(n.Flex)(j||(j=m(["\n flex-direction: column;\n align-items: ",";\n justify-content: ",";\n text-align: ",";\n padding: ",";\n border-radius: ",";\n border: ",";\n\n border-style: ",";\n background-color: ",";\n outline: none;\n transition: ",";\n"])),function(e){return e.noDrag?"left":"center"},function(e){return e.noDrag?"left":"center"},function(e){return e.noDrag?"left":"center"},function(e){return e.noDrag?"0px":"24px"},function(e){var n=e.theme;return e.noDrag?n.borderRadiusNone:n.borderRadiusSmall},function(e){var n=e.dragState,r=void 0===n?B.default:n,o=e.theme,t=e.isInverse;return e.noDrag?"0px":r===B.dragReject||r===B.error?t?(r===B.error?"1px":"2px")+" dashed "+(r===B.error?o.colors.red500:o.colors.red400):(r===B.error?"1px":"2px")+" dashed "+o.colors.danger:r===B.dragActive?"2px dashed "+o.colors.blue500:r===B.dragAccept?"2px dashed "+o.colors.green500:"2px dashed "+(t?o.colors.neutral800:o.colors.neutral300)},function(e){var n=e.dragState;return(void 0===n?B.default:n)===B.error?"solid":"dashed"},function(e){var n=e.theme;return e.noDrag?"transparent":e.isInverse?i.transparentize(.6,n.colors.neutral1200):n.colors.neutral100},function(e){return"border "+(e.noDrag?0:".24s")+" ease-in-out"}),G=n.styled.span(S||(S=m(["\n color: ",";\n display: block;\n font-size: 14px;\n margin: -8px 0 16px 0;\n"])),function(e){var n=e.theme;return e.isInverse?n.colors.neutral500:n.colors.neutral700}),W=n.styled.div(F||(F=m(["\n color: ",";\n margin: 0 0 24px 0;\n font-size: ",";\n line-height: ",";\n font-weight: 500;\n padding: ",";\n"])),function(e){var n=e.theme;return e.isInverse?n.colors.neutral0:n.colors.brand.navy},function(e){return e.theme.typeScale.size02.fontSize},function(e){return e.theme.typeScale.size02.lineHeight},function(e){return e.theme.spaceScale.spacing01}),Z=n.styled.ul(w||(w=m(["\n list-style: none;\n padding: 0;\n"]))),K=n.styled.li(C||(C=m([""])));e.Dropzone=/*#__PURE__*/s.default.forwardRef(function(e,i){var a=e.accept,c=e.containerStyle,d=e.disabled,u=e.dropzoneOptions,m=void 0===u?{multiple:!0}:u,g=e.helperMessage,v=e.id,x=e.inputSize,h=e.isInverse,y=e.isLabelVisuallyHidden,b=e.labelStyle,I=e.labelText,z=e.maxFiles,j=e.minFiles,S=e.maxSize,F=e.minSize,w=e.multiple,C=void 0===w||w,D=e.noDrag,k=void 0!==D&&D,R=e.onSendFile,A=e.onDeleteFile,O=e.onRemoveFile,T=e.sendFiles,E=void 0!==T&&T,M=e.testId,H=e.thumbnails,P=void 0===H||H,L=f(e,U),V=s.default.useState([]),Y=V[0],J=V[1],Q=s.default.useState(null),X=Q[0],$=Q[1],_=s.default.useState(""),ee=_[0],ne=_[1],re=n.useIsInverse(h),oe=s.default.useContext(n.ThemeContext),te=s.default.useContext(n.I18nContext),ie=n.useGenerateId(v),le=n.useGenerateId(ie+"-helper"),ae=s.default.useRef(null),se=s.default.useCallback(function(e,n){var r=[].concat(e.map(function(e){return Object.assign(e,{preview:URL.createObjectURL(e)})}),n.map(function(e){return Object.assign(e.file,{errors:e.errors})}));if(J(function(e){return[].concat(e,r)}),e.length>0){var o=e.map(function(e){return e.name}).join(", "),t=1===e.length?te.dropzone.fileAdded.replace(/\{fileName\}/g,o):te.dropzone.filesAdded.replace(/\{count\}/g,e.length.toString()).replace(/\{fileNames\}/g,o);ne(t)}ae.current&&ae.current.focus()},[te]),ce=l.useDropzone(p({noClick:!0,disabled:d,multiple:C,maxSize:S,minSize:F,accept:a,onDrop:se,noDrag:k},m)),de=ce.getInputProps,ue=ce.getRootProps,pe=ce.isDragAccept,fe=ce.isDragActive,me=ce.isDragReject,ge=ce.open,ve=ce.inputRef;t.useImperativeHandle(i,function(){return ve.current});var xe=de({id:ie}),he=B.default;X?he=B.error:pe?he=B.dragAccept:me?he=B.dragReject:fe&&(he=B.dragActive);var ye=function(e){J(function(n){return n.filter(function(n){return n!==e})}),O&&"function"==typeof O&&O(e);var n=te.dropzone.fileRemoved.replace(/\{fileName\}/g,e.name);ne(n),ae.current&&ae.current.focus()},be=function(e){J(function(n){return n.filter(function(n){return n!==e})}),A&&"function"==typeof A&&A(e);var n=te.dropzone.fileDeleted.replace(/\{fileName\}/g,e.name);ne(n),ae.current&&ae.current.focus()},Ie=function(e){if(J(function(n){return n.map(function(n){return n===e.file?Object.assign(n,{processor:p({},n.processor,{percent:e.percent+"%",status:"pending"})}):n})}),e.percent>0&&e.percent%25==0){var n=te.dropzone.fileUploading.replace(/\{fileName\}/g,e.file.name).replace(/\{percent\}/g,e.percent.toString());ne(n)}},ze=function(e){J(function(n){return n.map(function(n){return n===e.file?Object.assign(n,{processor:p({},n.processor,{percent:"",status:"finished"})}):n})});var n=te.dropzone.fileUploaded.replace(/\{fileName\}/g,e.file.name);ne(n)},je=function(e){J(function(n){return n.map(function(n){return n===e.file?Object.assign(n,{errors:e.errors,processor:p({},n.processor,{status:"error"})}):n})})};return s.default.useEffect(function(){return function(){Y.forEach(function(e){return e.preview&&URL.revokeObjectURL(e.preview)})}},[Y]),s.default.useEffect(function(){var e=j&&Y.length<j,n=z&&Y.length>z,r=null;n?r="too-many-files":e&&(r="too-few-files"),$(function(e,n){if(null===e)return null;var r=te.dropzone.errors[e];switch(e){case"too-many-files":return r.message+" "+n.maxFiles+" "+te.dropzone.files+".";case"too-few-files":return r.message+" "+n.minFiles+" "+te.dropzone.files+".";default:return r.message}}(r,{minFiles:j,maxFiles:z})),E&&Y.length>0&&!n&&!e&&J(function(e){return e.map(function(e){return e.errors||e.processor||!R||R({file:e,onError:je,onFinish:ze,onProgress:Ie}),e})})},[E,Y.length,R,z,j,te.dropzone.errors,te.dropzone.files]),/*#__PURE__*/o.jsxs(n.InverseContext.Provider,{value:{isInverse:re},children:[/*#__PURE__*/o.jsxs(n.FormFieldContainer,{actionable:!1,containerStyle:c,errorMessage:X,fieldId:ie,inputSize:x,isInverse:re,isLabelVisuallyHidden:y,labelStyle:p({color:re?oe.colors.neutral0:oe.colors.brand.navy},b),labelText:I,messageStyle:{minHeight:0},"data-testid":M,children:[/*#__PURE__*/o.jsx(G,{id:le,theme:oe,isInverse:re,children:g}),/*#__PURE__*/o.jsxs(q,p({behavior:n.FlexBehavior.container,dragState:he,isInverse:re,noDrag:k,theme:oe},ue(),L,{testId:M,tabIndex:-1,children:[/*#__PURE__*/o.jsx("input",{ref:ve,type:xe.type,accept:xe.accept,autoComplete:xe.autoComplete,id:xe.id,multiple:xe.multiple,onChange:xe.onChange,onClick:xe.onClick,style:xe.style,tabIndex:xe.tabIndex,"data-testid":"file-input"}),k?/*#__PURE__*/o.jsx(n.Flex,{xs:!0,behavior:n.FlexBehavior.item,children:/*#__PURE__*/o.jsx(n.Button,{color:n.ButtonColor.primary,disabled:d,isInverse:re,onClick:ge,style:{margin:0},ref:ae,"aria-describedby":g?le:void 0,children:te.dropzone.browseFiles})}):/*#__PURE__*/o.jsxs(n.Flex,{behavior:n.FlexBehavior.item,children:[/*#__PURE__*/o.jsx(r.CloudUploadIcon,{"aria-hidden":"true",color:re?oe.colors.neutral0:oe.colors.neutral700,size:48}),/*#__PURE__*/o.jsx(W,{isInverse:re,theme:oe,children:te.dropzone.dragMessage}),/*#__PURE__*/o.jsx(n.Button,{color:n.ButtonColor.primary,disabled:d,isInverse:re,onClick:ge,style:{margin:0},variant:n.ButtonVariant.solid,ref:ae,"aria-describedby":g?le:void 0,children:te.dropzone.browseFiles})]})]}))]}),/*#__PURE__*/o.jsx(Z,{children:Y.map(function(e){/*#__PURE__*/return o.jsx(K,{children:/*#__PURE__*/o.jsx(N,{accept:a,file:e,isInverse:re,maxSize:S,minSize:F,onDeleteFile:be,onRemoveFile:ye,thumbnails:P})},e.name)})}),/*#__PURE__*/o.jsx(n.VisuallyHidden,{children:/*#__PURE__*/o.jsx(n.Announce,{children:ee})})]})}),e.FileIcon=u});
1
+ !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("react-magma-dom"),require("react-magma-icons"),require("react/jsx-runtime"),require("react"),require("polished"),require("react-dropzone")):"function"==typeof define&&define.amd?define(["exports","react-magma-dom","react-magma-icons","react/jsx-runtime","react","polished","react-dropzone"],n):n((e||self).dropzone={},e.reactMagmaDom,e.reactMagmaIcons,e.jsx,e.react,e.polished,e.reactDropzone)}(this,function(e,n,r,o,t,i,l){function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=/*#__PURE__*/a(t),c={default:{Icon:r.InsertDriveFileIcon,style:{color:n.magma.colors.neutral700},inverseStyle:{color:n.magma.colors.neutral300}},word:{Icon:r.FileWordIcon,style:{color:n.magma.colors.blue500},inverseStyle:{color:n.magma.colors.blue500}},excel:{Icon:r.FileExcelIcon,style:{color:n.magma.colors.green500},inverseStyle:{color:n.magma.colors.green500}},powerpoint:{Icon:r.FilePowerpointIcon,style:{color:n.magma.colors.tangerine600},inverseStyle:{color:n.magma.colors.tangerine500}},pdf:{Icon:r.FilePdfIcon,style:{color:n.magma.colors.red600},inverseStyle:{color:n.magma.colors.red500}},image:{Icon:r.ImageIcon,style:{color:n.magma.colors.neutral700},inverseStyle:{color:n.magma.colors.neutral300}},video:{Icon:r.VideocamIcon,style:{color:n.magma.colors.neutral700},inverseStyle:{color:n.magma.colors.neutral300}},audio:{Icon:r.AudiotrackIcon,style:{color:n.magma.colors.neutral700},inverseStyle:{color:n.magma.colors.neutral300}},archive:{Icon:r.FileZipIcon,style:{color:n.magma.colors.neutral700},inverseStyle:{color:n.magma.colors.neutral300}}},d={default:c.default,xlsx:c.excel,xlsm:c.excel,xlsb:c.excel,xltx:c.excel,xls:c.excel,xlt:c.excel,doc:c.word,docx:c.word,docm:c.word,dotx:c.word,dotm:c.word,docb:c.word,pptx:c.powerpoint,pptm:c.powerpoint,ppt:c.powerpoint,pdf:c.pdf,png:c.image,svg:c.image,image:c.image,audio:c.audio,video:c.video,zip:c.archive},u=function(e){var r=e.file,t=e.isInverse,i=r.path,l=void 0===i?"":i,a=r.type,s=(void 0===a?"":a).split("/")[0],c=l.split(".").pop()||"default",u=d[c]||d[s]||d.default;/*#__PURE__*/return o.jsx(u.Icon,{size:n.magma.iconSizes.medium,style:t?u.inverseStyle:u.style})};function p(){return p=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var o in r)({}).hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e},p.apply(null,arguments)}function f(e,n){if(null==e)return{};var r={};for(var o in e)if({}.hasOwnProperty.call(e,o)){if(-1!==n.indexOf(o))continue;r[o]=e[o]}return r}function m(e,n){return n||(n=e.slice(0)),e.raw=n,e}var g,v,x,h,y,b,I,z,j,S,F,w,C,B,D=function(e,n,r){if(void 0===n&&(n=2),void 0===r&&(r="Bytes"),void 0!==e){if(0==e)return"0 "+r;var o=[r,"KB","MB","GB","TB","PB","EB","ZB","YB"],t=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,t)).toFixed(n))+" "+o[t]}},k=["accept","file","isInverse","maxSize","minSize","onDeleteFile","onRemoveFile","testId","thumbnails"],R=["code"],A=n.styled.div(g||(g=m(["\n background-image: ",";\n background-repeat: no-repeat;\n background-size: cover;\n display: inline-block;\n vertical-align: middle;\n height: 40px;\n width: 40px;\n"])),function(e){var n=e.file;return"url('"+("preview"in n&&n.preview)+"')"}),O=n.styled.div(v||(v=m(["\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"]))),T=function(e){var n=e.file,t=e.isInverse,i=e.theme,l=e.thumbnails;return n.errors?/*#__PURE__*/o.jsx(r.ErrorIcon,{color:t?i.colors.red500:i.colors.danger,size:24}):n.preview&&l&&n.type&&n.type.startsWith("image")?/*#__PURE__*/o.jsx(A,{role:"img",file:n}):/*#__PURE__*/o.jsx(u,{isInverse:t,file:n})},E={marginRight:"12px",display:"flex"},M=n.styled.div(x||(x=m(["\n border-top: 1px solid\n ",";\n padding: 16px;\n font-size: ",";\n line-height: ",";\n"])),function(e){var n=e.theme;return e.isInverse?n.colors.neutral500:n.colors.neutral300},function(e){return e.theme.typeScale.size02.fontSize},function(e){return e.theme.typeScale.size02.lineHeight}),H=n.styled(n.Flex)(h||(h=m(["\n height: 56px;\n padding: 0 8px 0 16px;\n font-size: ",";\n line-height: ",";\n"])),function(e){return e.theme.typeScale.size02.fontSize},function(e){return e.theme.typeScale.size02.lineHeight}),P=n.styled(n.Flex)(y||(y=m(["\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: ",";\n line-height: ",";\n"])),function(e){return e.theme.typeScale.size02.fontSize},function(e){return e.theme.typeScale.size02.lineHeight}),L=n.styled(n.Card)(b||(b=m(["\n background-color: none;\n border-color: ",";\n border-width: 1px;\n color: ",";\n margin: 10px 0;\n"])),function(e){var n=e.theme,r=e.isInverse;return e.file.errors?r?n.colors.red500:n.colors.danger:r?n.colors.neutral800:n.colors.neutral200},function(e){var n=e.theme;return e.isInverse?n.colors.neutral0:e.file.errors?n.colors.neutral700:n.colors.brand.navy}),V=n.styled.span(I||(I=m(["\n display: block;\n\n > div {\n display: flex;\n align-self: center;\n margin-right: 12px;\n }\n"]))),N=n.styled.span(z||(z=m(["\n display: block;\n"]))),U=/*#__PURE__*/t.forwardRef(function(e,i){var l,a=e.accept,c=e.file,d=e.isInverse,u=e.maxSize,m=e.minSize,g=e.onDeleteFile,v=e.onRemoveFile,x=e.thumbnails,h=f(e,k),y=t.useContext(n.ThemeContext),b=s.default.useContext(n.I18nContext),I=n.useIsInverse(d),z=t.useState(/*#__PURE__*/o.jsx(r.CloseIcon,{})),j=z[0],S=z[1],F=function(){v&&"function"==typeof v&&v(c)},w=function(){g&&"function"==typeof g&&g(c)},C=function(e){var i=e.status,l=void 0===i?"ready":i,a=t.useState(!1),s=a[0],d=a[1];return t.useEffect(function(){var e=!0;return setTimeout(function(){e&&d(!0)},1e3),function(){e=!1}},[l]),"error"===l||"ready"===l?/*#__PURE__*/o.jsx(O,{children:/*#__PURE__*/o.jsx(n.IconButton,{onClick:F,variant:n.ButtonVariant.link,color:n.ButtonColor.subtle,"aria-label":b.dropzone.removeFile+" "+c.name,icon:/*#__PURE__*/o.jsx(r.CloseIcon,{})})}):"pending"===l?/*#__PURE__*/o.jsx(O,{children:/*#__PURE__*/o.jsx(n.Spinner,{color:I?y.colors.brand.skyBlue:y.colors.primary})}):/*#__PURE__*/o.jsxs(O,{children:[/*#__PURE__*/o.jsx(n.Transition,{isOpen:!s,unmountOnExit:!0,fade:!0,children:/*#__PURE__*/o.jsx(r.CheckCircleIcon,{color:I?y.colors.green500:y.colors.success,style:{marginTop:"4px"}})}),/*#__PURE__*/o.jsx(n.Transition,{isOpen:s,unmountOnExit:!0,fade:!0,children:/*#__PURE__*/o.jsx(n.IconButton,{onClick:w,variant:n.ButtonVariant.link,color:n.ButtonColor.subtle,"aria-label":b.dropzone.deleteFile+" "+c.name,icon:/*#__PURE__*/o.jsx(r.DeleteIcon,{})})})]})};return t.useEffect(function(){var e;S(/*#__PURE__*/o.jsx(C,{status:null==c||null==(e=c.processor)?void 0:e.status}))},[null==c||null==(l=c.processor)?void 0:l.status]),/*#__PURE__*/o.jsx(n.InverseContext.Provider,{value:{isInverse:I},children:/*#__PURE__*/o.jsxs(L,{borderRadius:n.CardBorderRadius.small,cornerTreatment:n.CardCornerTreatment.all,isInverse:I,theme:y,file:c,"data-testid":e.testId,ref:i,role:c.errors?"alert":"",children:[/*#__PURE__*/o.jsxs(H,p({theme:y,behavior:n.FlexBehavior.container,alignItems:n.FlexAlignItems.center},h,{children:[/*#__PURE__*/o.jsx(n.Flex,{behavior:n.FlexBehavior.item,alignItems:n.FlexAlignItems.center,style:E,children:/*#__PURE__*/o.jsx(T,{file:c,isInverse:I,theme:y,thumbnails:x})}),/*#__PURE__*/o.jsx(P,{xs:!0,behavior:n.FlexBehavior.item,theme:y,children:c.name}),c.processor&&"pending"===c.processor.status&&/*#__PURE__*/o.jsx(n.Flex,{role:"progressbar",style:{marginLeft:"auto"},behavior:n.FlexBehavior.item,children:c.processor.percent}),/*#__PURE__*/o.jsx(n.Flex,{behavior:n.FlexBehavior.item,children:j})]})),c.errors&&/*#__PURE__*/o.jsx(M,{theme:y,isInverse:I,children:c.errors.slice(0,1).map(function(e){var n=e.code,r=function(e,n,r){var o=Array.isArray(n.accept)&&1===n.accept.length?n.accept[0]:n.accept,t=Array.isArray(o)?"one of "+o.join(", "):o;switch(e.code){case"file-too-large":return p({},e,{message:e.message+" "+D(n.maxSize,2,r)+"."});case"file-too-small":return p({},e,{message:e.message+" "+D(n.minSize,2,r)+"."});case"file-invalid-type":return p({},e,{message:e.message+": "+t});default:return e}}(p({code:n},f(e,R),b.dropzone.errors[n]),{accept:a,minSize:m,maxSize:u},b.dropzone.bytes),t=r.header,i=r.message;/*#__PURE__*/return o.jsxs(s.default.Fragment,{children:[/*#__PURE__*/o.jsx(V,{style:{color:I?y.colors.red500:y.colors.danger},children:void 0===t?"":t}),/*#__PURE__*/o.jsx(N,{children:i})]},n)})})]})})}),q=["accept","containerStyle","disabled","dropzoneOptions","helperMessage","id","inputSize","isInverse","isLabelVisuallyHidden","labelStyle","labelText","maxFiles","minFiles","maxSize","minSize","multiple","noDrag","onSendFile","onDeleteFile","onRemoveFile","sendFiles","testId","thumbnails"];!function(e){e.error="error",e.dragAccept="dragAccept",e.dragReject="dragReject",e.dragActive="dragActive",e.default="default"}(B||(B={}));var G=n.styled(n.Flex)(j||(j=m(["\n flex-direction: column;\n align-items: ",";\n justify-content: ",";\n text-align: ",";\n padding: ",";\n border-radius: ",";\n border: ",";\n\n border-style: ",";\n background-color: ",";\n outline: none;\n transition: ",";\n"])),function(e){return e.noDrag?"left":"center"},function(e){return e.noDrag?"left":"center"},function(e){return e.noDrag?"left":"center"},function(e){return e.noDrag?"0px":"24px"},function(e){var n=e.theme;return e.noDrag?n.borderRadiusNone:n.borderRadiusSmall},function(e){var n=e.dragState,r=void 0===n?B.default:n,o=e.theme,t=e.isInverse;return e.noDrag?"0px":r===B.dragReject||r===B.error?(r===B.error?"1px":"2px")+" dashed "+function(e,n,r){return r?e===B.error?n.colors.red500:n.colors.red400:n.colors.danger}(r,o,t):r===B.dragActive?"2px dashed "+o.colors.blue500:r===B.dragAccept?"2px dashed "+o.colors.green500:"2px dashed "+(t?o.colors.neutral800:o.colors.neutral300)},function(e){var n=e.dragState;return(void 0===n?B.default:n)===B.error?"solid":"dashed"},function(e){var n=e.theme;return e.noDrag?"transparent":e.isInverse?i.transparentize(.6,n.colors.neutral1200):n.colors.neutral100},function(e){return"border "+(e.noDrag?0:".24s")+" ease-in-out"}),W=n.styled.span(S||(S=m(["\n color: ",";\n display: block;\n font-size: 14px;\n margin: -8px 0 16px 0;\n"])),function(e){var n=e.theme;return e.isInverse?n.colors.neutral500:n.colors.neutral700}),Z=n.styled.div(F||(F=m(["\n color: ",";\n margin: 0 0 24px 0;\n font-size: ",";\n line-height: ",";\n font-weight: 500;\n padding: ",";\n"])),function(e){var n=e.theme;return e.isInverse?n.colors.neutral0:n.colors.brand.navy},function(e){return e.theme.typeScale.size02.fontSize},function(e){return e.theme.typeScale.size02.lineHeight},function(e){return e.theme.spaceScale.spacing01}),K=n.styled.ul(w||(w=m(["\n list-style: none;\n padding: 0;\n"]))),Y=n.styled.li(C||(C=m([""])));e.Dropzone=/*#__PURE__*/s.default.forwardRef(function(e,i){var a=e.accept,c=e.containerStyle,d=e.disabled,u=e.dropzoneOptions,m=void 0===u?{multiple:!0}:u,g=e.helperMessage,v=e.id,x=e.inputSize,h=e.isInverse,y=e.isLabelVisuallyHidden,b=e.labelStyle,I=e.labelText,z=e.maxFiles,j=e.minFiles,S=e.maxSize,F=e.minSize,w=e.multiple,C=void 0===w||w,D=e.noDrag,k=void 0!==D&&D,R=e.onSendFile,A=e.onDeleteFile,O=e.onRemoveFile,T=e.sendFiles,E=void 0!==T&&T,M=e.testId,H=e.thumbnails,P=void 0===H||H,L=f(e,q),V=s.default.useState([]),N=V[0],J=V[1],Q=s.default.useState(null),X=Q[0],$=Q[1],_=s.default.useState(""),ee=_[0],ne=_[1],re=n.useIsInverse(h),oe=s.default.useContext(n.ThemeContext),te=s.default.useContext(n.I18nContext),ie=n.useGenerateId(v),le=n.useGenerateId(ie+"-helper"),ae=s.default.useRef(null),se=s.default.useCallback(function(e,n){var r=[].concat(e.map(function(e){return Object.assign(e,{preview:URL.createObjectURL(e)})}),n.map(function(e){return Object.assign(e.file,{errors:e.errors})}));if(J(function(e){return[].concat(e,r)}),e.length>0){var o=e.map(function(e){return e.name}).join(", "),t=1===e.length?te.dropzone.fileAdded.replace(/\{fileName\}/g,o):te.dropzone.filesAdded.replace(/\{count\}/g,e.length.toString()).replace(/\{fileNames\}/g,o);ne(t)}ae.current&&ae.current.focus()},[te]),ce=l.useDropzone(p({noClick:!0,disabled:d,multiple:C,maxSize:S,minSize:F,accept:a,onDrop:se,noDrag:k},m)),de=ce.getInputProps,ue=ce.getRootProps,pe=ce.isDragAccept,fe=ce.isDragActive,me=ce.isDragReject,ge=ce.open,ve=ce.inputRef;t.useImperativeHandle(i,function(){return ve.current});var xe=de({id:ie}),he=B.default;X?he=B.error:pe?he=B.dragAccept:me?he=B.dragReject:fe&&(he=B.dragActive);var ye=function(e){J(function(n){return n.filter(function(n){return n!==e})}),O&&"function"==typeof O&&O(e);var n=te.dropzone.fileRemoved.replace(/\{fileName\}/g,e.name);ne(n),ae.current&&ae.current.focus()},be=function(e){J(function(n){return n.filter(function(n){return n!==e})}),A&&"function"==typeof A&&A(e);var n=te.dropzone.fileDeleted.replace(/\{fileName\}/g,e.name);ne(n),ae.current&&ae.current.focus()},Ie=function(e){if(J(function(n){return n.map(function(n){return n===e.file?Object.assign(n,{processor:p({},n.processor,{percent:e.percent+"%",status:"pending"})}):n})}),e.percent>0&&e.percent%25==0){var n=te.dropzone.fileUploading.replace(/\{fileName\}/g,e.file.name).replace(/\{percent\}/g,e.percent.toString());ne(n)}},ze=function(e){J(function(n){return n.map(function(n){return n===e.file?Object.assign(n,{processor:p({},n.processor,{percent:"",status:"finished"})}):n})});var n=te.dropzone.fileUploaded.replace(/\{fileName\}/g,e.file.name);ne(n)},je=function(e){J(function(n){return n.map(function(n){return n===e.file?Object.assign(n,{errors:e.errors,processor:p({},n.processor,{status:"error"})}):n})})};return s.default.useEffect(function(){return function(){N.forEach(function(e){return e.preview&&URL.revokeObjectURL(e.preview)})}},[N]),s.default.useEffect(function(){var e=j&&N.length<j,n=z&&N.length>z,r=null;n?r="too-many-files":e&&(r="too-few-files"),$(function(e,n){if(null===e)return null;var r=te.dropzone.errors[e];switch(e){case"too-many-files":return r.message+" "+n.maxFiles+" "+te.dropzone.files+".";case"too-few-files":return r.message+" "+n.minFiles+" "+te.dropzone.files+".";default:return r.message}}(r,{minFiles:j,maxFiles:z})),E&&N.length>0&&!n&&!e&&J(function(e){return e.map(function(e){return e.errors||e.processor||!R||R({file:e,onError:je,onFinish:ze,onProgress:Ie}),e})})},[E,N.length,R,z,j,te.dropzone.errors,te.dropzone.files]),/*#__PURE__*/o.jsxs(n.InverseContext.Provider,{value:{isInverse:re},children:[/*#__PURE__*/o.jsxs(n.FormFieldContainer,{actionable:!1,containerStyle:c,errorMessage:X,fieldId:ie,inputSize:x,isInverse:re,isLabelVisuallyHidden:y,labelStyle:p({color:re?oe.colors.neutral0:oe.colors.brand.navy},b),labelText:I,messageStyle:{minHeight:0},"data-testid":M,children:[/*#__PURE__*/o.jsx(W,{id:le,theme:oe,isInverse:re,children:g}),/*#__PURE__*/o.jsxs(G,p({behavior:n.FlexBehavior.container,dragState:he,isInverse:re,noDrag:k,theme:oe},ue(),L,{testId:M,tabIndex:-1,children:[/*#__PURE__*/o.jsx("input",{ref:ve,type:xe.type,accept:xe.accept,autoComplete:xe.autoComplete,id:xe.id,multiple:xe.multiple,onChange:xe.onChange,onClick:xe.onClick,style:xe.style,tabIndex:xe.tabIndex,"data-testid":"file-input"}),k?/*#__PURE__*/o.jsx(n.Flex,{xs:!0,behavior:n.FlexBehavior.item,children:/*#__PURE__*/o.jsx(n.Button,{color:n.ButtonColor.primary,disabled:d,isInverse:re,onClick:ge,style:{margin:0},ref:ae,"aria-describedby":g?le:void 0,children:te.dropzone.browseFiles})}):/*#__PURE__*/o.jsxs(n.Flex,{behavior:n.FlexBehavior.item,children:[/*#__PURE__*/o.jsx(r.CloudUploadIcon,{"aria-hidden":"true",color:re?oe.colors.neutral0:oe.colors.neutral700,size:48}),/*#__PURE__*/o.jsx(Z,{isInverse:re,theme:oe,children:te.dropzone.dragMessage}),/*#__PURE__*/o.jsx(n.Button,{color:n.ButtonColor.primary,disabled:d,isInverse:re,onClick:ge,style:{margin:0},variant:n.ButtonVariant.solid,ref:ae,"aria-describedby":g?le:void 0,children:te.dropzone.browseFiles})]})]}))]}),/*#__PURE__*/o.jsx(K,{children:N.map(function(e){/*#__PURE__*/return o.jsx(Y,{children:/*#__PURE__*/o.jsx(U,{accept:a,file:e,isInverse:re,maxSize:S,minSize:F,onDeleteFile:be,onRemoveFile:ye,thumbnails:P})},e.name)})}),/*#__PURE__*/o.jsx(n.VisuallyHidden,{children:/*#__PURE__*/o.jsx(n.Announce,{children:ee})})]})}),e.FileIcon=u});
2
2
  //# sourceMappingURL=fileuploader.umd.js.map