{"version":3,"file":"LazyBillUploadPage.e6946fab79fe5ded.prod.js","mappings":"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","sources":["webpack://aurora-new-frontend/./packages/file-uploader/src/common/types.ts","webpack://aurora-new-frontend/./packages/file-uploader/src/common/utils.ts","webpack://aurora-new-frontend/./packages/lead-capture/src/hooks/bss-upload-url/bss-upload-url.generated.tsx","webpack://aurora-new-frontend/./packages/lead-capture/src/hooks/bss-upload-url/use-create-lcai-bss-upload-urls.ts","webpack://aurora-new-frontend/./packages/lead-capture/src/pages/bill-upload/bill-upload.generated.tsx","webpack://aurora-new-frontend/./packages/lead-capture/src/pages/bill-upload/utils/constants.ts","webpack://aurora-new-frontend/./packages/lead-capture/src/pages/bill-upload/components/buttons.tsx","webpack://aurora-new-frontend/./packages/lead-capture/src/pages/bill-upload/utils/functions.ts","webpack://aurora-new-frontend/./packages/lead-capture/src/pages/bill-upload/components/file-list.tsx","webpack://aurora-new-frontend/./node_modules/file-selector/dist/es5/file.js","webpack://aurora-new-frontend/./node_modules/file-selector/dist/es5/file-selector.js","webpack://aurora-new-frontend/./node_modules/react-dropzone/dist/es/utils/index.js","webpack://aurora-new-frontend/./node_modules/react-dropzone/dist/es/index.js","webpack://aurora-new-frontend/./packages/lead-capture/src/pages/bill-upload/components/uploader.tsx","webpack://aurora-new-frontend/./packages/lead-capture/src/pages/bill-upload/components/bill-upload.tsx","webpack://aurora-new-frontend/./packages/lead-capture/src/shared-components/text-accordion.tsx","webpack://aurora-new-frontend/./packages/lead-capture/src/pages/bill-upload/components/faq.tsx","webpack://aurora-new-frontend/./packages/lead-capture/src/pages/bill-upload/bill-upload-page.tsx","webpack://aurora-new-frontend/./packages/lead-capture/src/utils/image-matcher.tsx","webpack://aurora-new-frontend/./packages/lead-capture/src/shared-components/image.tsx"],"sourcesContent":["import { FileUploaderResult } from '@aurorasolar/graphql-client-schema';\n\nexport enum FileResultType {\n IMAGE = 'image',\n DOCUMENT = 'document',\n VIDEO = 'video',\n UNKNOWN = 'unknown',\n}\n\nexport enum FileResultUploadStatus {\n // Upload manually canceled\n CANCELED = 'canceled',\n COMPLETE = 'complete',\n IN_PROGRESS = 'in-progress',\n // Unknown error - can retry upload\n NON_VALIDATION_ERROR = 'non-validation-error',\n // Awaiting upload kickoff\n PENDING = 'pending',\n // File will not pass validation, do not allow retry upload\n VALIDATION_ERROR = 'validation-error',\n}\n\nexport interface FileResult {\n errorText?: string;\n file: File;\n fileType: FileResultType;\n status: FileResultUploadStatus;\n id: string;\n result?: FileUploaderResult | null;\n}\n\nexport interface BSSClientResponse {\n blob_id: string;\n upload_needed: boolean;\n upload_url: string;\n mandatory_upload_headers?:\n | ({ name?: string | null; value?: string | null } | null | undefined)[]\n | null;\n}\n\nexport enum SupportedMimeTypes {\n GIF = 'image/gif',\n HEIC = 'image/heic',\n JPEG = 'image/jpeg',\n PDF = 'application/pdf',\n PNG = 'image/png',\n WEBP = 'image/webp',\n ZIP = 'application/zip',\n DXF = 'image/vnd.dxf',\n DWG = 'image/vnd.dwg',\n}\n","import { useIntl } from '@aurorasolar/intl';\nimport { FileResultType, SupportedMimeTypes } from './types';\n\nexport const getFileResultType = (mimeType: string) => {\n switch (mimeType) {\n case SupportedMimeTypes.GIF:\n case SupportedMimeTypes.JPEG:\n case SupportedMimeTypes.PNG:\n case SupportedMimeTypes.WEBP:\n case SupportedMimeTypes.HEIC:\n case SupportedMimeTypes.DXF:\n case SupportedMimeTypes.DWG:\n return FileResultType.IMAGE;\n case SupportedMimeTypes.PDF:\n return FileResultType.DOCUMENT;\n default:\n return FileResultType.UNKNOWN;\n }\n};\n\nexport const getFileSizeFormatted = (\n fileSize: number,\n formatNumber: ReturnType['formatNumber'],\n): string => {\n if (fileSize <= 0) {\n return formatNumber(0, { style: 'unit', unit: 'kilobyte' });\n }\n const kbSize = Math.round((fileSize / 1024) * 100) / 100;\n if (kbSize < 1024) {\n return formatNumber(kbSize, { style: 'unit', unit: 'kilobyte' });\n }\n const mbSize = Math.round((kbSize / 1024) * 100) / 100;\n if (mbSize < 1024) {\n return formatNumber(mbSize, { style: 'unit', unit: 'megabyte' });\n }\n const gbSize = Math.round((mbSize / 1024) * 100) / 100;\n return formatNumber(gbSize, { style: 'unit', unit: 'gigabyte' });\n};\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type CreateLeadCaptureBssUploadUrlsMutationVariables = Types.Exact<{\n createBSSUploadUrlsInput: Types.CreateBssUploadUrlsInput;\n}>;\n\n\nexport type CreateLeadCaptureBssUploadUrlsMutation = { __typename: 'Mutation', uploadUrls?: Array<{ __typename: 'CreateFileBSSUploadUrl', blobId?: string | null | undefined, contentSha256?: string | null | undefined, uploadNeeded?: boolean | null | undefined, uploadUrl?: string | null | undefined, mandatoryUploadHeaders?: Array<{ __typename: 'MandatoryHeader', name?: string | null | undefined, value?: string | null | undefined } | null | undefined> | null | undefined } | null | undefined> | null | undefined };\n\n\nexport const CreateLeadCaptureBssUploadUrlsDocument = gql`\n mutation CreateLeadCaptureBSSUploadUrls($createBSSUploadUrlsInput: CreateBSSUploadUrlsInput!) @trace_info(traceInfo: {pod: leads}) {\n uploadUrls: createLeadCaptureBSSUploadUrls(\n createBSSUploadUrlsInput: $createBSSUploadUrlsInput\n ) {\n blobId\n contentSha256\n uploadNeeded\n uploadUrl\n mandatoryUploadHeaders {\n name\n value\n }\n }\n}\n `;\nexport type CreateLeadCaptureBssUploadUrlsMutationFn = Apollo.MutationFunction;\n\n/**\n * __useCreateLeadCaptureBssUploadUrlsMutation__\n *\n * To run a mutation, you first call `useCreateLeadCaptureBssUploadUrlsMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useCreateLeadCaptureBssUploadUrlsMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [createLeadCaptureBssUploadUrlsMutation, { data, loading, error }] = useCreateLeadCaptureBssUploadUrlsMutation({\n * variables: {\n * createBSSUploadUrlsInput: // value for 'createBSSUploadUrlsInput'\n * },\n * });\n */\nexport function useCreateLeadCaptureBssUploadUrlsMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(CreateLeadCaptureBssUploadUrlsDocument, options);\n }\nexport type CreateLeadCaptureBssUploadUrlsMutationHookResult = ReturnType;\nexport type CreateLeadCaptureBssUploadUrlsMutationResult = Apollo.MutationResult;\nexport type CreateLeadCaptureBssUploadUrlsMutationOptions = Apollo.BaseMutationOptions;","import { useCallback } from 'react';\n\nimport { FileUploadHandler, useAppModule } from '@aurorasolar/common-module-loader';\n\nimport { useCreateLeadCaptureBssUploadUrlsMutation } from './bss-upload-url.generated';\n\ninterface fetchBssUploadUrlsParams {\n files: File[];\n projectId: string;\n}\n\nexport const useCreateLCAIBssUploadUrls = () => {\n const fileUploader = useAppModule(FileUploadHandler);\n const [createBssUploadUrls] = useCreateLeadCaptureBssUploadUrlsMutation();\n\n const fetchBssUploadUrls = useCallback(\n async ({ files, projectId }: fetchBssUploadUrlsParams) => {\n if (!fileUploader?.hashFile) {\n throw new Error('fileUploader must be ready to use');\n }\n\n const bssUploadInputsPromises = files.map(async (file) => {\n const hashFile = await fileUploader?.hashFile?.(file);\n\n return {\n blobName: file.name,\n contentLength: file.size,\n contentSha256: hashFile ?? '',\n mimeType: file.type,\n };\n });\n\n const bssUploadInputs = await Promise.all(bssUploadInputsPromises);\n\n try {\n const result = await createBssUploadUrls({\n variables: {\n createBSSUploadUrlsInput: {\n files: bssUploadInputs,\n id: projectId,\n },\n },\n });\n\n return result.data?.uploadUrls;\n } catch (e) {\n throw new Error(`Failed to fetch BSS Upload tokens ${e}`);\n }\n },\n [fileUploader, createBssUploadUrls],\n );\n\n return { fetchBssUploadUrls };\n};\n","// @ts-ignore: Ignore unused { * as Types } import\nimport * as Types from '@aurorasolar/graphql-client-schema';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {} as const;\nexport type SubmitSanitizationJobMutationVariables = Types.Exact<{\n sanitizationJobInput: Types.SubmitLeadCaptureSanitizationJobInput;\n}>;\n\n\nexport type SubmitSanitizationJobMutation = { __typename: 'Mutation', submitLeadCaptureSanitizationJob: boolean };\n\n\nexport const SubmitSanitizationJobDocument = gql`\n mutation submitSanitizationJob($sanitizationJobInput: SubmitLeadCaptureSanitizationJobInput!) @trace_info(traceInfo: {pod: leads}) {\n submitLeadCaptureSanitizationJob(sanitizationJobInput: $sanitizationJobInput)\n}\n `;\nexport type SubmitSanitizationJobMutationFn = Apollo.MutationFunction;\n\n/**\n * __useSubmitSanitizationJobMutation__\n *\n * To run a mutation, you first call `useSubmitSanitizationJobMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useSubmitSanitizationJobMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [submitSanitizationJobMutation, { data, loading, error }] = useSubmitSanitizationJobMutation({\n * variables: {\n * sanitizationJobInput: // value for 'sanitizationJobInput'\n * },\n * });\n */\nexport function useSubmitSanitizationJobMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(SubmitSanitizationJobDocument, options);\n }\nexport type SubmitSanitizationJobMutationHookResult = ReturnType;\nexport type SubmitSanitizationJobMutationResult = Apollo.MutationResult;\nexport type SubmitSanitizationJobMutationOptions = Apollo.BaseMutationOptions;","import type { FileResultType } from '@aurorasolar/file-uploader';\nimport { SupportedMimeTypes } from '@aurorasolar/file-uploader';\n\nexport interface UtilityBillFile {\n error?: ErrorType;\n file: File;\n type: FileResultType;\n uploadStatus: UploadStatus;\n}\n\nexport enum ErrorType {\n FILE_SIZE_TOO_LARGE = \"This file won't upload since it's larger than 20 MB. Remove this file to continue.\",\n INVALID_MIME_TYPE = \"This file won't upload since it's the wrong format. Accepted file formats: jpg, png, pdf, webp. Remove this file to continue.\",\n TOO_MANY_FILES = 'You can attach up to 3 files. Remove one or more files to continue.',\n}\n\nexport enum UploadStatus {\n PENDING = 'pending',\n IN_PROGRESS = 'in_progress',\n COMPLETE = 'complete',\n}\n\nexport const MaxFileSize = 1024 * 1024 * 20; // 20mb in bytes\n\nexport const ValidMimeTypes: string[] = [\n SupportedMimeTypes.JPEG,\n SupportedMimeTypes.PDF,\n SupportedMimeTypes.PNG,\n SupportedMimeTypes.WEBP,\n];\n","import { LCAIButton, LCAIButtonIntent } from '../../../typography/lcai-button/lcai-button';\nimport { BillUploadTestIds } from '../../../utils/test-ids';\n\nexport const UPLOAD_BUTTON_TEXT = 'Upload';\nexport const UPLOAD_BUTTON_IN_PROGRESS_TEXT = 'Uploading...';\n\ninterface ButtonsProps {\n isUploadAllowed: () => boolean;\n skipBillUpload: () => void;\n uploadBill: () => void;\n uploadInProgress: boolean;\n}\n\nexport function Buttons({\n isUploadAllowed,\n skipBillUpload,\n uploadBill,\n uploadInProgress,\n}: ButtonsProps) {\n return (\n <>\n \n {uploadInProgress ? UPLOAD_BUTTON_IN_PROGRESS_TEXT : UPLOAD_BUTTON_TEXT}\n \n \n Skip\n \n \n );\n}\n","import { getFileResultType } from '@aurorasolar/file-uploader';\n\nimport { ErrorType, MaxFileSize, UploadStatus, UtilityBillFile, ValidMimeTypes } from './constants';\n\nexport const createUtilityBillFile = (file: File): UtilityBillFile => ({\n error: determineFileError(file.size, file.type),\n file,\n type: getFileResultType(file.type),\n uploadStatus: UploadStatus.PENDING,\n});\n\nconst determineFileError = (fileSize: number, fileType: string) => {\n if (fileSize > MaxFileSize) {\n return ErrorType.FILE_SIZE_TOO_LARGE;\n }\n\n if (!ValidMimeTypes.includes(fileType)) {\n return ErrorType.INVALID_MIME_TYPE;\n }\n\n return undefined;\n};\n","import { useMemo } from 'react';\nimport { Box, Flex } from 'reflexbox/styled-components';\nimport styled from 'styled-components';\n\nimport { AuroraIcon, AuroraIconType } from '@aurorasolar/common-core/src/icon';\nimport { FileResultType, getFileSizeFormatted } from '@aurorasolar/file-uploader';\nimport { useIntl } from '@aurorasolar/intl';\n\nimport { LCAIButton, LCAIButtonIntent } from '../../../typography/lcai-button/lcai-button';\nimport { LCAIText } from '../../../typography/lcai-text/lcai-text';\nimport {\n ERROR_TEXT_COLOR,\n INPUT_BACKGROUND_COLOR,\n INPUT_ERROR_COLOR,\n PRIMARY_COLOR,\n SECONDARY_COLOR,\n} from '../../../utils/constants';\nimport { BillUploadTestIds } from '../../../utils/test-ids';\nimport { ErrorType, UploadStatus, UtilityBillFile } from '../utils';\n\ninterface FileListProps {\n filesToUpload: UtilityBillFile[];\n removeFileHandler: (index: number) => void;\n}\n\nexport function FileList({ filesToUpload, removeFileHandler }: FileListProps) {\n return (\n <>\n {filesToUpload.map((utilityBillFile, index) => (\n removeFileHandler(index)}\n />\n ))}\n {filesToUpload.length > 3 && (\n \n {ErrorType.TOO_MANY_FILES}\n \n )}\n \n );\n}\n\ninterface FileListItemProps {\n listItem: UtilityBillFile;\n removeFileHandler: () => void;\n}\n\nfunction FileListItem({ listItem, removeFileHandler }: FileListItemProps) {\n const { formatNumber } = useIntl();\n\n const fileSize = useMemo(() => {\n return getFileSizeFormatted(listItem.file.size, formatNumber);\n }, [listItem.file.size, formatNumber]);\n\n return (\n \n \n \n \n \n {listItem.file.name}\n \n \n {fileSize}\n \n \n {listItem.uploadStatus === UploadStatus.PENDING ? (\n \n \n \n ) : (\n \n \n \n )}\n \n {listItem.error && (\n \n \n {listItem.error}\n \n \n )}\n \n );\n}\n\ninterface FileContainerProps {\n isError: boolean;\n}\n\nconst FileContainer = styled(Flex)`\n background: ${(props) => (props.isError ? INPUT_ERROR_COLOR : INPUT_BACKGROUND_COLOR)};\n border: 1px solid ${(props) => (props.isError ? INPUT_ERROR_COLOR : INPUT_BACKGROUND_COLOR)};\n border-radius: 6px;\n padding-left: 16px;\n padding-right: 0;\n flex-direction: column;\n`;\n\nconst FileNameText = styled(LCAIText)`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n\nconst FileSizeText = styled(LCAIText)`\n text-align: right;\n white-space: nowrap;\n flex: 1;\n`;\n\nconst RemoveFileButton = styled(LCAIButton)`\n :hover,\n :active {\n &&& {\n background-image: none;\n }\n }\n`;\n","export var COMMON_MIME_TYPES = new Map([\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n ['aac', 'audio/aac'],\n ['abw', 'application/x-abiword'],\n ['arc', 'application/x-freearc'],\n ['avif', 'image/avif'],\n ['avi', 'video/x-msvideo'],\n ['azw', 'application/vnd.amazon.ebook'],\n ['bin', 'application/octet-stream'],\n ['bmp', 'image/bmp'],\n ['bz', 'application/x-bzip'],\n ['bz2', 'application/x-bzip2'],\n ['cda', 'application/x-cdf'],\n ['csh', 'application/x-csh'],\n ['css', 'text/css'],\n ['csv', 'text/csv'],\n ['doc', 'application/msword'],\n ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],\n ['eot', 'application/vnd.ms-fontobject'],\n ['epub', 'application/epub+zip'],\n ['gz', 'application/gzip'],\n ['gif', 'image/gif'],\n ['heic', 'image/heic'],\n ['heif', 'image/heif'],\n ['htm', 'text/html'],\n ['html', 'text/html'],\n ['ico', 'image/vnd.microsoft.icon'],\n ['ics', 'text/calendar'],\n ['jar', 'application/java-archive'],\n ['jpeg', 'image/jpeg'],\n ['jpg', 'image/jpeg'],\n ['js', 'text/javascript'],\n ['json', 'application/json'],\n ['jsonld', 'application/ld+json'],\n ['mid', 'audio/midi'],\n ['midi', 'audio/midi'],\n ['mjs', 'text/javascript'],\n ['mp3', 'audio/mpeg'],\n ['mp4', 'video/mp4'],\n ['mpeg', 'video/mpeg'],\n ['mpkg', 'application/vnd.apple.installer+xml'],\n ['odp', 'application/vnd.oasis.opendocument.presentation'],\n ['ods', 'application/vnd.oasis.opendocument.spreadsheet'],\n ['odt', 'application/vnd.oasis.opendocument.text'],\n ['oga', 'audio/ogg'],\n ['ogv', 'video/ogg'],\n ['ogx', 'application/ogg'],\n ['opus', 'audio/opus'],\n ['otf', 'font/otf'],\n ['png', 'image/png'],\n ['pdf', 'application/pdf'],\n ['php', 'application/x-httpd-php'],\n ['ppt', 'application/vnd.ms-powerpoint'],\n ['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],\n ['rar', 'application/vnd.rar'],\n ['rtf', 'application/rtf'],\n ['sh', 'application/x-sh'],\n ['svg', 'image/svg+xml'],\n ['swf', 'application/x-shockwave-flash'],\n ['tar', 'application/x-tar'],\n ['tif', 'image/tiff'],\n ['tiff', 'image/tiff'],\n ['ts', 'video/mp2t'],\n ['ttf', 'font/ttf'],\n ['txt', 'text/plain'],\n ['vsd', 'application/vnd.visio'],\n ['wav', 'audio/wav'],\n ['weba', 'audio/webm'],\n ['webm', 'video/webm'],\n ['webp', 'image/webp'],\n ['woff', 'font/woff'],\n ['woff2', 'font/woff2'],\n ['xhtml', 'application/xhtml+xml'],\n ['xls', 'application/vnd.ms-excel'],\n ['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],\n ['xml', 'application/xml'],\n ['xul', 'application/vnd.mozilla.xul+xml'],\n ['zip', 'application/zip'],\n ['7z', 'application/x-7z-compressed'],\n // Others\n ['mkv', 'video/x-matroska'],\n ['mov', 'video/quicktime'],\n ['msg', 'application/vnd.ms-outlook']\n]);\nexport function toFileWithPath(file, path) {\n var f = withMimeType(file);\n if (typeof f.path !== 'string') { // on electron, path is already set to the absolute path\n var webkitRelativePath = file.webkitRelativePath;\n Object.defineProperty(f, 'path', {\n value: typeof path === 'string'\n ? path\n // If is set,\n // the File will have a {webkitRelativePath} property\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n : typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0\n ? webkitRelativePath\n : file.name,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n return f;\n}\nfunction withMimeType(file) {\n var name = file.name;\n var hasExtension = name && name.lastIndexOf('.') !== -1;\n if (hasExtension && !file.type) {\n var ext = name.split('.')\n .pop().toLowerCase();\n var type = COMMON_MIME_TYPES.get(ext);\n if (type) {\n Object.defineProperty(file, 'type', {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n }\n return file;\n}\n//# sourceMappingURL=file.js.map","import { __awaiter, __generator, __read, __spread } from \"tslib\";\nimport { toFileWithPath } from './file';\nvar FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n '.DS_Store',\n 'Thumbs.db' // Windows\n];\n/**\n * Convert a DragEvent's DataTrasfer object to a list of File objects\n * NOTE: If some of the items are folders,\n * everything will be flattened and placed in the same list but the paths will be kept as a {path} property.\n *\n * EXPERIMENTAL: A list of https://developer.mozilla.org/en-US/docs/Web/API/FileSystemHandle objects can also be passed as an arg\n * and a list of File objects will be returned.\n *\n * @param evt\n */\nexport function fromEvent(evt) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (isObject(evt) && isDataTransfer(evt)) {\n return [2 /*return*/, getDataTransferFiles(evt.dataTransfer, evt.type)];\n }\n else if (isChangeEvt(evt)) {\n return [2 /*return*/, getInputFiles(evt)];\n }\n else if (Array.isArray(evt) && evt.every(function (item) { return 'getFile' in item && typeof item.getFile === 'function'; })) {\n return [2 /*return*/, getFsHandleFiles(evt)];\n }\n return [2 /*return*/, []];\n });\n });\n}\nfunction isDataTransfer(value) {\n return isObject(value.dataTransfer);\n}\nfunction isChangeEvt(value) {\n return isObject(value) && isObject(value.target);\n}\nfunction isObject(v) {\n return typeof v === 'object' && v !== null;\n}\nfunction getInputFiles(evt) {\n return fromList(evt.target.files).map(function (file) { return toFileWithPath(file); });\n}\n// Ee expect each handle to be https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle\nfunction getFsHandleFiles(handles) {\n return __awaiter(this, void 0, void 0, function () {\n var files;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(handles.map(function (h) { return h.getFile(); }))];\n case 1:\n files = _a.sent();\n return [2 /*return*/, files.map(function (file) { return toFileWithPath(file); })];\n }\n });\n });\n}\nfunction getDataTransferFiles(dt, type) {\n return __awaiter(this, void 0, void 0, function () {\n var items, files;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (dt === null) {\n return [2 /*return*/, []];\n }\n if (!dt.items) return [3 /*break*/, 2];\n items = fromList(dt.items)\n .filter(function (item) { return item.kind === 'file'; });\n // According to https://html.spec.whatwg.org/multipage/dnd.html#dndevents,\n // only 'dragstart' and 'drop' has access to the data (source node)\n if (type !== 'drop') {\n return [2 /*return*/, items];\n }\n return [4 /*yield*/, Promise.all(items.map(toFilePromises))];\n case 1:\n files = _a.sent();\n return [2 /*return*/, noIgnoredFiles(flatten(files))];\n case 2: return [2 /*return*/, noIgnoredFiles(fromList(dt.files)\n .map(function (file) { return toFileWithPath(file); }))];\n }\n });\n });\n}\nfunction noIgnoredFiles(files) {\n return files.filter(function (file) { return FILES_TO_IGNORE.indexOf(file.name) === -1; });\n}\n// IE11 does not support Array.from()\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Browser_compatibility\n// https://developer.mozilla.org/en-US/docs/Web/API/FileList\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList\nfunction fromList(items) {\n if (items === null) {\n return [];\n }\n var files = [];\n // tslint:disable: prefer-for-of\n for (var i = 0; i < items.length; i++) {\n var file = items[i];\n files.push(file);\n }\n return files;\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem\nfunction toFilePromises(item) {\n if (typeof item.webkitGetAsEntry !== 'function') {\n return fromDataTransferItem(item);\n }\n var entry = item.webkitGetAsEntry();\n // Safari supports dropping an image node from a different window and can be retrieved using\n // the DataTransferItem.getAsFile() API\n // NOTE: FileSystemEntry.file() throws if trying to get the file\n if (entry && entry.isDirectory) {\n return fromDirEntry(entry);\n }\n return fromDataTransferItem(item);\n}\nfunction flatten(items) {\n return items.reduce(function (acc, files) { return __spread(acc, (Array.isArray(files) ? flatten(files) : [files])); }, []);\n}\nfunction fromDataTransferItem(item) {\n var file = item.getAsFile();\n if (!file) {\n return Promise.reject(item + \" is not a File\");\n }\n var fwp = toFileWithPath(file);\n return Promise.resolve(fwp);\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry\nfunction fromEntry(entry) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry)];\n });\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry\nfunction fromDirEntry(entry) {\n var reader = entry.createReader();\n return new Promise(function (resolve, reject) {\n var entries = [];\n function readEntries() {\n var _this = this;\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries\n reader.readEntries(function (batch) { return __awaiter(_this, void 0, void 0, function () {\n var files, err_1, items;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!batch.length) return [3 /*break*/, 5];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, Promise.all(entries)];\n case 2:\n files = _a.sent();\n resolve(files);\n return [3 /*break*/, 4];\n case 3:\n err_1 = _a.sent();\n reject(err_1);\n return [3 /*break*/, 4];\n case 4: return [3 /*break*/, 6];\n case 5:\n items = Promise.all(batch.map(fromEntry));\n entries.push(items);\n // Continue reading\n readEntries();\n _a.label = 6;\n case 6: return [2 /*return*/];\n }\n });\n }); }, function (err) {\n reject(err);\n });\n }\n readEntries();\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry\nfunction fromFileEntry(entry) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve, reject) {\n entry.file(function (file) {\n var fwp = toFileWithPath(file, entry.fullPath);\n resolve(fwp);\n }, function (err) {\n reject(err);\n });\n })];\n });\n });\n}\n//# sourceMappingURL=file-selector.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport accepts from \"attr-accept\"; // Error codes\n\nexport var FILE_INVALID_TYPE = \"file-invalid-type\";\nexport var FILE_TOO_LARGE = \"file-too-large\";\nexport var FILE_TOO_SMALL = \"file-too-small\";\nexport var TOO_MANY_FILES = \"too-many-files\";\nexport var ErrorCode = {\n FileInvalidType: FILE_INVALID_TYPE,\n FileTooLarge: FILE_TOO_LARGE,\n FileTooSmall: FILE_TOO_SMALL,\n TooManyFiles: TOO_MANY_FILES\n}; // File Errors\n\nexport var getInvalidTypeRejectionErr = function getInvalidTypeRejectionErr(accept) {\n accept = Array.isArray(accept) && accept.length === 1 ? accept[0] : accept;\n var messageSuffix = Array.isArray(accept) ? \"one of \".concat(accept.join(\", \")) : accept;\n return {\n code: FILE_INVALID_TYPE,\n message: \"File type must be \".concat(messageSuffix)\n };\n};\nexport var getTooLargeRejectionErr = function getTooLargeRejectionErr(maxSize) {\n return {\n code: FILE_TOO_LARGE,\n message: \"File is larger than \".concat(maxSize, \" \").concat(maxSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var getTooSmallRejectionErr = function getTooSmallRejectionErr(minSize) {\n return {\n code: FILE_TOO_SMALL,\n message: \"File is smaller than \".concat(minSize, \" \").concat(minSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var TOO_MANY_FILES_REJECTION = {\n code: TOO_MANY_FILES,\n message: \"Too many files\"\n}; // Firefox versions prior to 53 return a bogus MIME type for every file drag, so dragovers with\n// that MIME type will always be accepted\n\nexport function fileAccepted(file, accept) {\n var isAcceptable = file.type === \"application/x-moz-file\" || accepts(file, accept);\n return [isAcceptable, isAcceptable ? null : getInvalidTypeRejectionErr(accept)];\n}\nexport function fileMatchSize(file, minSize, maxSize) {\n if (isDefined(file.size)) {\n if (isDefined(minSize) && isDefined(maxSize)) {\n if (file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n if (file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];\n } else if (isDefined(minSize) && file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];else if (isDefined(maxSize) && file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n }\n\n return [true, null];\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n\nexport function allFilesAccepted(_ref) {\n var files = _ref.files,\n accept = _ref.accept,\n minSize = _ref.minSize,\n maxSize = _ref.maxSize,\n multiple = _ref.multiple,\n maxFiles = _ref.maxFiles;\n\n if (!multiple && files.length > 1 || multiple && maxFiles >= 1 && files.length > maxFiles) {\n return false;\n }\n\n return files.every(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 1),\n accepted = _fileAccepted2[0];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 1),\n sizeMatch = _fileMatchSize2[0];\n\n return accepted && sizeMatch;\n });\n} // React's synthetic events has event.isPropagationStopped,\n// but to remain compatibility with other libs (Preact) fall back\n// to check event.cancelBubble\n\nexport function isPropagationStopped(event) {\n if (typeof event.isPropagationStopped === \"function\") {\n return event.isPropagationStopped();\n } else if (typeof event.cancelBubble !== \"undefined\") {\n return event.cancelBubble;\n }\n\n return false;\n}\nexport function isEvtWithFiles(event) {\n if (!event.dataTransfer) {\n return !!event.target && !!event.target.files;\n } // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types\n // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file\n\n\n return Array.prototype.some.call(event.dataTransfer.types, function (type) {\n return type === \"Files\" || type === \"application/x-moz-file\";\n });\n}\nexport function isKindFile(item) {\n return _typeof(item) === \"object\" && item !== null && item.kind === \"file\";\n} // allow the entire document to be a drag target\n\nexport function onDocumentDragOver(event) {\n event.preventDefault();\n}\n\nfunction isIe(userAgent) {\n return userAgent.indexOf(\"MSIE\") !== -1 || userAgent.indexOf(\"Trident/\") !== -1;\n}\n\nfunction isEdge(userAgent) {\n return userAgent.indexOf(\"Edge/\") !== -1;\n}\n\nexport function isIeOrEdge() {\n var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n return isIe(userAgent) || isEdge(userAgent);\n}\n/**\n * This is intended to be used to compose event handlers\n * They are executed in order until one of them calls `event.isPropagationStopped()`.\n * Note that the check is done on the first invoke too,\n * meaning that if propagation was stopped before invoking the fns,\n * no handlers will be executed.\n *\n * @param {Function} fns the event hanlder functions\n * @return {Function} the event handler to add to an element\n */\n\nexport function composeEventHandlers() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return fns.some(function (fn) {\n if (!isPropagationStopped(event) && fn) {\n fn.apply(void 0, [event].concat(args));\n }\n\n return isPropagationStopped(event);\n });\n };\n}\n/**\n * canUseFileSystemAccessAPI checks if the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API)\n * is supported by the browser.\n * @returns {boolean}\n */\n\nexport function canUseFileSystemAccessAPI() {\n return \"showOpenFilePicker\" in window;\n}\n/**\n * filePickerOptionsTypes returns the {types} option for https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n * based on the accept attr (see https://github.com/react-dropzone/attr-accept)\n * E.g: converts ['image/*', 'text/*'] to {'image/*': [], 'text/*': []}\n * @param {string|string[]} accept\n */\n\nexport function filePickerOptionsTypes(accept) {\n accept = typeof accept === \"string\" ? accept.split(\",\") : accept;\n return [{\n description: \"everything\",\n // TODO: Need to handle filtering more elegantly than this!\n accept: Array.isArray(accept) ? // Accept just MIME types as per spec\n // NOTE: accept can be https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers\n accept.filter(function (item) {\n return item === \"audio/*\" || item === \"video/*\" || item === \"image/*\" || item === \"text/*\" || /\\w+\\/[-+.\\w]+/g.test(item);\n }).reduce(function (a, b) {\n return _objectSpread(_objectSpread({}, a), {}, _defineProperty({}, b, []));\n }, {}) : {}\n }];\n}\n/**\n * Check if v is an exception caused by aborting a request (e.g window.showOpenFilePicker()).\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is an abort exception.\n */\n\nexport function isAbort(v) {\n return v instanceof DOMException && (v.name === \"AbortError\" || v.code === v.ABORT_ERR);\n}\n/**\n * Check if v is a security error.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is a security error.\n */\n\nexport function isSecurityError(v) {\n return v instanceof DOMException && (v.name === \"SecurityError\" || v.code === v.SECURITY_ERR);\n}","var _excluded = [\"children\"],\n _excluded2 = [\"open\"],\n _excluded3 = [\"refKey\", \"role\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"onClick\", \"onDragEnter\", \"onDragOver\", \"onDragLeave\", \"onDrop\"],\n _excluded4 = [\"refKey\", \"onChange\", \"onClick\"];\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* eslint prefer-template: 0 */\nimport React, { forwardRef, Fragment, useCallback, useEffect, useImperativeHandle, useMemo, useReducer, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { fromEvent } from \"file-selector\";\nimport { allFilesAccepted, composeEventHandlers, fileAccepted, fileMatchSize, filePickerOptionsTypes, canUseFileSystemAccessAPI, isAbort, isEvtWithFiles, isIeOrEdge, isPropagationStopped, isSecurityError, onDocumentDragOver, TOO_MANY_FILES_REJECTION } from \"./utils/index\";\n/**\n * Convenience wrapper component for the `useDropzone` hook\n *\n * ```jsx\n * \n * {({getRootProps, getInputProps}) => (\n *
\n * \n *

Drag 'n' drop some files here, or click to select files

\n *
\n * )}\n *
\n * ```\n */\n\nvar Dropzone = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n params = _objectWithoutProperties(_ref, _excluded);\n\n var _useDropzone = useDropzone(params),\n open = _useDropzone.open,\n props = _objectWithoutProperties(_useDropzone, _excluded2);\n\n useImperativeHandle(ref, function () {\n return {\n open: open\n };\n }, [open]); // TODO: Figure out why react-styleguidist cannot create docs if we don't return a jsx element\n\n return /*#__PURE__*/React.createElement(Fragment, null, children(_objectSpread(_objectSpread({}, props), {}, {\n open: open\n })));\n});\nDropzone.displayName = \"Dropzone\"; // Add default props for react-docgen\n\nvar defaultProps = {\n disabled: false,\n getFilesFromEvent: fromEvent,\n maxSize: Infinity,\n minSize: 0,\n multiple: true,\n maxFiles: 0,\n preventDropOnDocument: true,\n noClick: false,\n noKeyboard: false,\n noDrag: false,\n noDragEventsBubbling: false,\n validator: null,\n useFsAccessApi: true\n};\nDropzone.defaultProps = defaultProps;\nDropzone.propTypes = {\n /**\n * Render function that exposes the dropzone state and prop getter fns\n *\n * @param {object} params\n * @param {Function} params.getRootProps Returns the props you should apply to the root drop container you render\n * @param {Function} params.getInputProps Returns the props you should apply to hidden file input you render\n * @param {Function} params.open Open the native file selection dialog\n * @param {boolean} params.isFocused Dropzone area is in focus\n * @param {boolean} params.isFileDialogActive File dialog is opened\n * @param {boolean} params.isDragActive Active drag is in progress\n * @param {boolean} params.isDragAccept Dragged files are accepted\n * @param {boolean} params.isDragReject Some dragged files are rejected\n * @param {File[]} params.draggedFiles Files in active drag\n * @param {File[]} params.acceptedFiles Accepted files\n * @param {FileRejection[]} params.fileRejections Rejected files and why they were rejected\n */\n children: PropTypes.func,\n\n /**\n * Set accepted file types.\n * See https://github.com/okonet/attr-accept for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all.\n * See: https://github.com/react-dropzone/react-dropzone/issues/276\n */\n accept: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n\n /**\n * Allow drag 'n' drop (or selection from the file dialog) of multiple files\n */\n multiple: PropTypes.bool,\n\n /**\n * If false, allow dropped items to take over the current browser window\n */\n preventDropOnDocument: PropTypes.bool,\n\n /**\n * If true, disables click to open the native file selection dialog\n */\n noClick: PropTypes.bool,\n\n /**\n * If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n */\n noKeyboard: PropTypes.bool,\n\n /**\n * If true, disables drag 'n' drop\n */\n noDrag: PropTypes.bool,\n\n /**\n * If true, stops drag event propagation to parents\n */\n noDragEventsBubbling: PropTypes.bool,\n\n /**\n * Minimum file size (in bytes)\n */\n minSize: PropTypes.number,\n\n /**\n * Maximum file size (in bytes)\n */\n maxSize: PropTypes.number,\n\n /**\n * Maximum accepted number of files\n * The default value is 0 which means there is no limitation to how many files are accepted.\n */\n maxFiles: PropTypes.number,\n\n /**\n * Enable/disable the dropzone\n */\n disabled: PropTypes.bool,\n\n /**\n * Use this to provide a custom file aggregator\n *\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n getFilesFromEvent: PropTypes.func,\n\n /**\n * Cb for when closing the file dialog with no selection\n */\n onFileDialogCancel: PropTypes.func,\n\n /**\n * Cb for when opening the file dialog\n */\n onFileDialogOpen: PropTypes.func,\n\n /**\n * Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `` click event.\n */\n useFsAccessApi: PropTypes.bool,\n\n /**\n * Cb for when the `dragenter` event occurs.\n *\n * @param {DragEvent} event\n */\n onDragEnter: PropTypes.func,\n\n /**\n * Cb for when the `dragleave` event occurs\n *\n * @param {DragEvent} event\n */\n onDragLeave: PropTypes.func,\n\n /**\n * Cb for when the `dragover` event occurs\n *\n * @param {DragEvent} event\n */\n onDragOver: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n *\n * @param {File[]} acceptedFiles\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n onDrop: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are accepted, this callback is not invoked.\n *\n * @param {File[]} files\n * @param {(DragEvent|Event)} event\n */\n onDropAccepted: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are rejected, this callback is not invoked.\n *\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event\n */\n onDropRejected: PropTypes.func,\n\n /**\n * Custom validation function\n * @param {File} file\n * @returns {FileError|FileError[]}\n */\n validator: PropTypes.func\n};\nexport default Dropzone;\n/**\n * A function that is invoked for the `dragenter`,\n * `dragover` and `dragleave` events.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dragCb\n * @param {DragEvent} event\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dropCb\n * @param {File[]} acceptedFiles List of accepted files\n * @param {FileRejection[]} fileRejections List of rejected files and why they were rejected\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are files (such as link, text, etc.).\n *\n * @callback dropAcceptedCb\n * @param {File[]} files List of accepted files that meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n *\n * @callback dropRejectedCb\n * @param {File[]} files List of rejected files that do not meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is used aggregate files,\n * in a asynchronous fashion, from drag or input change events.\n *\n * @callback getFilesFromEvent\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n * @returns {(File[]|Promise)}\n */\n\n/**\n * An object with the current dropzone state and some helper functions.\n *\n * @typedef {object} DropzoneState\n * @property {Function} getRootProps Returns the props you should apply to the root drop container you render\n * @property {Function} getInputProps Returns the props you should apply to hidden file input you render\n * @property {Function} open Open the native file selection dialog\n * @property {boolean} isFocused Dropzone area is in focus\n * @property {boolean} isFileDialogActive File dialog is opened\n * @property {boolean} isDragActive Active drag is in progress\n * @property {boolean} isDragAccept Dragged files are accepted\n * @property {boolean} isDragReject Some dragged files are rejected\n * @property {File[]} draggedFiles Files in active drag\n * @property {File[]} acceptedFiles Accepted files\n * @property {FileRejection[]} fileRejections Rejected files and why they were rejected\n */\n\nvar initialState = {\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false,\n draggedFiles: [],\n acceptedFiles: [],\n fileRejections: []\n};\n/**\n * A React hook that creates a drag 'n' drop area.\n *\n * ```jsx\n * function MyDropzone(props) {\n * const {getRootProps, getInputProps} = useDropzone({\n * onDrop: acceptedFiles => {\n * // do something with the File objects, e.g. upload to some server\n * }\n * });\n * return (\n *
\n * \n *

Drag and drop some files here, or click to select files

\n *
\n * )\n * }\n * ```\n *\n * @function useDropzone\n *\n * @param {object} props\n * @param {string|string[]} [props.accept] Set accepted file types.\n * See https://github.com/okonet/attr-accept for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all.\n * See: https://github.com/react-dropzone/react-dropzone/issues/276\n * @param {boolean} [props.multiple=true] Allow drag 'n' drop (or selection from the file dialog) of multiple files\n * @param {boolean} [props.preventDropOnDocument=true] If false, allow dropped items to take over the current browser window\n * @param {boolean} [props.noClick=false] If true, disables click to open the native file selection dialog\n * @param {boolean} [props.noKeyboard=false] If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n * @param {boolean} [props.noDrag=false] If true, disables drag 'n' drop\n * @param {boolean} [props.noDragEventsBubbling=false] If true, stops drag event propagation to parents\n * @param {number} [props.minSize=0] Minimum file size (in bytes)\n * @param {number} [props.maxSize=Infinity] Maximum file size (in bytes)\n * @param {boolean} [props.disabled=false] Enable/disable the dropzone\n * @param {getFilesFromEvent} [props.getFilesFromEvent] Use this to provide a custom file aggregator\n * @param {Function} [props.onFileDialogCancel] Cb for when closing the file dialog with no selection\n * @param {boolean} [props.useFsAccessApi] Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `` click event.\n * @param {Function} [props.onFileDialogOpen] Cb for when opening the file dialog\n * @param {dragCb} [props.onDragEnter] Cb for when the `dragenter` event occurs.\n * @param {dragCb} [props.onDragLeave] Cb for when the `dragleave` event occurs\n * @param {dragCb} [props.onDragOver] Cb for when the `dragover` event occurs\n * @param {dropCb} [props.onDrop] Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n * @param {dropAcceptedCb} [props.onDropAccepted]\n * @param {dropRejectedCb} [props.onDropRejected]\n *\n * @returns {DropzoneState}\n */\n\nexport function useDropzone() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _defaultProps$options = _objectSpread(_objectSpread({}, defaultProps), options),\n accept = _defaultProps$options.accept,\n disabled = _defaultProps$options.disabled,\n getFilesFromEvent = _defaultProps$options.getFilesFromEvent,\n maxSize = _defaultProps$options.maxSize,\n minSize = _defaultProps$options.minSize,\n multiple = _defaultProps$options.multiple,\n maxFiles = _defaultProps$options.maxFiles,\n onDragEnter = _defaultProps$options.onDragEnter,\n onDragLeave = _defaultProps$options.onDragLeave,\n onDragOver = _defaultProps$options.onDragOver,\n onDrop = _defaultProps$options.onDrop,\n onDropAccepted = _defaultProps$options.onDropAccepted,\n onDropRejected = _defaultProps$options.onDropRejected,\n onFileDialogCancel = _defaultProps$options.onFileDialogCancel,\n onFileDialogOpen = _defaultProps$options.onFileDialogOpen,\n useFsAccessApi = _defaultProps$options.useFsAccessApi,\n preventDropOnDocument = _defaultProps$options.preventDropOnDocument,\n noClick = _defaultProps$options.noClick,\n noKeyboard = _defaultProps$options.noKeyboard,\n noDrag = _defaultProps$options.noDrag,\n noDragEventsBubbling = _defaultProps$options.noDragEventsBubbling,\n validator = _defaultProps$options.validator;\n\n var onFileDialogOpenCb = useMemo(function () {\n return typeof onFileDialogOpen === \"function\" ? onFileDialogOpen : noop;\n }, [onFileDialogOpen]);\n var onFileDialogCancelCb = useMemo(function () {\n return typeof onFileDialogCancel === \"function\" ? onFileDialogCancel : noop;\n }, [onFileDialogCancel]);\n var rootRef = useRef(null);\n var inputRef = useRef(null);\n\n var _useReducer = useReducer(reducer, initialState),\n _useReducer2 = _slicedToArray(_useReducer, 2),\n state = _useReducer2[0],\n dispatch = _useReducer2[1];\n\n var isFocused = state.isFocused,\n isFileDialogActive = state.isFileDialogActive,\n draggedFiles = state.draggedFiles;\n var fsAccessApiWorksRef = useRef(typeof window !== \"undefined\" && window.isSecureContext && useFsAccessApi && canUseFileSystemAccessAPI()); // Update file dialog active state when the window is focused on\n\n var onWindowFocus = function onWindowFocus() {\n // Execute the timeout only if the file dialog is opened in the browser\n if (!fsAccessApiWorksRef.current && isFileDialogActive) {\n setTimeout(function () {\n if (inputRef.current) {\n var files = inputRef.current.files;\n\n if (!files.length) {\n dispatch({\n type: \"closeDialog\"\n });\n onFileDialogCancelCb();\n }\n }\n }, 300);\n }\n };\n\n useEffect(function () {\n window.addEventListener(\"focus\", onWindowFocus, false);\n return function () {\n window.removeEventListener(\"focus\", onWindowFocus, false);\n };\n }, [inputRef, isFileDialogActive, onFileDialogCancelCb, fsAccessApiWorksRef]);\n var dragTargetsRef = useRef([]);\n\n var onDocumentDrop = function onDocumentDrop(event) {\n if (rootRef.current && rootRef.current.contains(event.target)) {\n // If we intercepted an event for our instance, let it propagate down to the instance's onDrop handler\n return;\n }\n\n event.preventDefault();\n dragTargetsRef.current = [];\n };\n\n useEffect(function () {\n if (preventDropOnDocument) {\n document.addEventListener(\"dragover\", onDocumentDragOver, false);\n document.addEventListener(\"drop\", onDocumentDrop, false);\n }\n\n return function () {\n if (preventDropOnDocument) {\n document.removeEventListener(\"dragover\", onDocumentDragOver);\n document.removeEventListener(\"drop\", onDocumentDrop);\n }\n };\n }, [rootRef, preventDropOnDocument]);\n var onDragEnterCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [].concat(_toConsumableArray(dragTargetsRef.current), [event.target]);\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (draggedFiles) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n dispatch({\n draggedFiles: draggedFiles,\n isDragActive: true,\n type: \"setDraggedFiles\"\n });\n\n if (onDragEnter) {\n onDragEnter(event);\n }\n });\n }\n }, [getFilesFromEvent, onDragEnter, noDragEventsBubbling]);\n var onDragOverCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event);\n var hasFiles = isEvtWithFiles(event);\n\n if (hasFiles && event.dataTransfer) {\n try {\n event.dataTransfer.dropEffect = \"copy\";\n } catch (_unused) {}\n /* eslint-disable-line no-empty */\n\n }\n\n if (hasFiles && onDragOver) {\n onDragOver(event);\n }\n\n return false;\n }, [onDragOver, noDragEventsBubbling]);\n var onDragLeaveCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event); // Only deactivate once the dropzone and all children have been left\n\n var targets = dragTargetsRef.current.filter(function (target) {\n return rootRef.current && rootRef.current.contains(target);\n }); // Make sure to remove a target present multiple times only once\n // (Firefox may fire dragenter/dragleave multiple times on the same element)\n\n var targetIdx = targets.indexOf(event.target);\n\n if (targetIdx !== -1) {\n targets.splice(targetIdx, 1);\n }\n\n dragTargetsRef.current = targets;\n\n if (targets.length > 0) {\n return;\n }\n\n dispatch({\n isDragActive: false,\n type: \"setDraggedFiles\",\n draggedFiles: []\n });\n\n if (isEvtWithFiles(event) && onDragLeave) {\n onDragLeave(event);\n }\n }, [rootRef, onDragLeave, noDragEventsBubbling]);\n var setFiles = useCallback(function (files, event) {\n var acceptedFiles = [];\n var fileRejections = [];\n files.forEach(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 2),\n accepted = _fileAccepted2[0],\n acceptError = _fileAccepted2[1];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 2),\n sizeMatch = _fileMatchSize2[0],\n sizeError = _fileMatchSize2[1];\n\n var customErrors = validator ? validator(file) : null;\n\n if (accepted && sizeMatch && !customErrors) {\n acceptedFiles.push(file);\n } else {\n var errors = [acceptError, sizeError];\n\n if (customErrors) {\n errors = errors.concat(customErrors);\n }\n\n fileRejections.push({\n file: file,\n errors: errors.filter(function (e) {\n return e;\n })\n });\n }\n });\n\n if (!multiple && acceptedFiles.length > 1 || multiple && maxFiles >= 1 && acceptedFiles.length > maxFiles) {\n // Reject everything and empty accepted files\n acceptedFiles.forEach(function (file) {\n fileRejections.push({\n file: file,\n errors: [TOO_MANY_FILES_REJECTION]\n });\n });\n acceptedFiles.splice(0);\n }\n\n dispatch({\n acceptedFiles: acceptedFiles,\n fileRejections: fileRejections,\n type: \"setFiles\"\n });\n\n if (onDrop) {\n onDrop(acceptedFiles, fileRejections, event);\n }\n\n if (fileRejections.length > 0 && onDropRejected) {\n onDropRejected(fileRejections, event);\n }\n\n if (acceptedFiles.length > 0 && onDropAccepted) {\n onDropAccepted(acceptedFiles, event);\n }\n }, [dispatch, multiple, accept, minSize, maxSize, maxFiles, onDrop, onDropAccepted, onDropRejected, validator]);\n var onDropCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [];\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n setFiles(files, event);\n });\n }\n\n dispatch({\n type: \"reset\"\n });\n }, [getFilesFromEvent, setFiles, noDragEventsBubbling]); // Fn for opening the file dialog programmatically\n\n var openFileDialog = useCallback(function () {\n // No point to use FS access APIs if context is not secure\n // https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts#feature_detection\n if (fsAccessApiWorksRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb(); // https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n\n var opts = {\n multiple: multiple,\n types: filePickerOptionsTypes(accept)\n };\n window.showOpenFilePicker(opts).then(function (handles) {\n return getFilesFromEvent(handles);\n }).then(function (files) {\n setFiles(files, null);\n dispatch({\n type: \"closeDialog\"\n });\n }).catch(function (e) {\n // AbortError means the user canceled\n if (isAbort(e)) {\n onFileDialogCancelCb(e);\n dispatch({\n type: \"closeDialog\"\n });\n } else if (isSecurityError(e)) {\n fsAccessApiWorksRef.current = false; // CORS, so cannot use this API\n // Try using the input\n\n if (inputRef.current) {\n inputRef.current.value = null;\n inputRef.current.click();\n }\n }\n });\n return;\n }\n\n if (inputRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb();\n inputRef.current.value = null;\n inputRef.current.click();\n }\n }, [dispatch, onFileDialogOpenCb, onFileDialogCancelCb, useFsAccessApi, setFiles, accept, multiple]); // Cb to open the file dialog when SPACE/ENTER occurs on the dropzone\n\n var onKeyDownCb = useCallback(function (event) {\n // Ignore keyboard events bubbling up the DOM tree\n if (!rootRef.current || !rootRef.current.isEqualNode(event.target)) {\n return;\n }\n\n if (event.key === \" \" || event.key === \"Enter\" || event.keyCode === 32 || event.keyCode === 13) {\n event.preventDefault();\n openFileDialog();\n }\n }, [rootRef, openFileDialog]); // Update focus state for the dropzone\n\n var onFocusCb = useCallback(function () {\n dispatch({\n type: \"focus\"\n });\n }, []);\n var onBlurCb = useCallback(function () {\n dispatch({\n type: \"blur\"\n });\n }, []); // Cb to open the file dialog when click occurs on the dropzone\n\n var onClickCb = useCallback(function () {\n if (noClick) {\n return;\n } // In IE11/Edge the file-browser dialog is blocking, therefore, use setTimeout()\n // to ensure React can handle state changes\n // See: https://github.com/react-dropzone/react-dropzone/issues/450\n\n\n if (isIeOrEdge()) {\n setTimeout(openFileDialog, 0);\n } else {\n openFileDialog();\n }\n }, [noClick, openFileDialog]);\n\n var composeHandler = function composeHandler(fn) {\n return disabled ? null : fn;\n };\n\n var composeKeyboardHandler = function composeKeyboardHandler(fn) {\n return noKeyboard ? null : composeHandler(fn);\n };\n\n var composeDragHandler = function composeDragHandler(fn) {\n return noDrag ? null : composeHandler(fn);\n };\n\n var stopPropagation = function stopPropagation(event) {\n if (noDragEventsBubbling) {\n event.stopPropagation();\n }\n };\n\n var getRootProps = useMemo(function () {\n return function () {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$refKey = _ref2.refKey,\n refKey = _ref2$refKey === void 0 ? \"ref\" : _ref2$refKey,\n role = _ref2.role,\n onKeyDown = _ref2.onKeyDown,\n onFocus = _ref2.onFocus,\n onBlur = _ref2.onBlur,\n onClick = _ref2.onClick,\n onDragEnter = _ref2.onDragEnter,\n onDragOver = _ref2.onDragOver,\n onDragLeave = _ref2.onDragLeave,\n onDrop = _ref2.onDrop,\n rest = _objectWithoutProperties(_ref2, _excluded3);\n\n return _objectSpread(_objectSpread(_defineProperty({\n onKeyDown: composeKeyboardHandler(composeEventHandlers(onKeyDown, onKeyDownCb)),\n onFocus: composeKeyboardHandler(composeEventHandlers(onFocus, onFocusCb)),\n onBlur: composeKeyboardHandler(composeEventHandlers(onBlur, onBlurCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onClickCb)),\n onDragEnter: composeDragHandler(composeEventHandlers(onDragEnter, onDragEnterCb)),\n onDragOver: composeDragHandler(composeEventHandlers(onDragOver, onDragOverCb)),\n onDragLeave: composeDragHandler(composeEventHandlers(onDragLeave, onDragLeaveCb)),\n onDrop: composeDragHandler(composeEventHandlers(onDrop, onDropCb)),\n role: typeof role === \"string\" && role !== \"\" ? role : \"button\"\n }, refKey, rootRef), !disabled && !noKeyboard ? {\n tabIndex: 0\n } : {}), rest);\n };\n }, [rootRef, onKeyDownCb, onFocusCb, onBlurCb, onClickCb, onDragEnterCb, onDragOverCb, onDragLeaveCb, onDropCb, noKeyboard, noDrag, disabled]);\n var onInputElementClick = useCallback(function (event) {\n event.stopPropagation();\n }, []);\n var getInputProps = useMemo(function () {\n return function () {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$refKey = _ref3.refKey,\n refKey = _ref3$refKey === void 0 ? \"ref\" : _ref3$refKey,\n onChange = _ref3.onChange,\n onClick = _ref3.onClick,\n rest = _objectWithoutProperties(_ref3, _excluded4);\n\n var inputProps = _defineProperty({\n accept: accept,\n multiple: multiple,\n type: \"file\",\n style: {\n display: \"none\"\n },\n onChange: composeHandler(composeEventHandlers(onChange, onDropCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onInputElementClick)),\n tabIndex: -1\n }, refKey, inputRef);\n\n return _objectSpread(_objectSpread({}, inputProps), rest);\n };\n }, [inputRef, accept, multiple, onDropCb, disabled]);\n var fileCount = draggedFiles.length;\n var isDragAccept = fileCount > 0 && allFilesAccepted({\n files: draggedFiles,\n accept: accept,\n minSize: minSize,\n maxSize: maxSize,\n multiple: multiple,\n maxFiles: maxFiles\n });\n var isDragReject = fileCount > 0 && !isDragAccept;\n return _objectSpread(_objectSpread({}, state), {}, {\n isDragAccept: isDragAccept,\n isDragReject: isDragReject,\n isFocused: isFocused && !disabled,\n getRootProps: getRootProps,\n getInputProps: getInputProps,\n rootRef: rootRef,\n inputRef: inputRef,\n open: composeHandler(openFileDialog)\n });\n}\n\nfunction reducer(state, action) {\n /* istanbul ignore next */\n switch (action.type) {\n case \"focus\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: true\n });\n\n case \"blur\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: false\n });\n\n case \"openDialog\":\n return _objectSpread(_objectSpread({}, initialState), {}, {\n isFileDialogActive: true\n });\n\n case \"closeDialog\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFileDialogActive: false\n });\n\n case \"setDraggedFiles\":\n /* eslint no-case-declarations: 0 */\n var isDragActive = action.isDragActive,\n draggedFiles = action.draggedFiles;\n return _objectSpread(_objectSpread({}, state), {}, {\n draggedFiles: draggedFiles,\n isDragActive: isDragActive\n });\n\n case \"setFiles\":\n return _objectSpread(_objectSpread({}, state), {}, {\n acceptedFiles: action.acceptedFiles,\n fileRejections: action.fileRejections\n });\n\n case \"reset\":\n return _objectSpread({}, initialState);\n\n default:\n return state;\n }\n}\n\nfunction noop() {}\n\nexport { ErrorCode } from \"./utils\";","import { DropzoneRootProps, useDropzone } from 'react-dropzone';\nimport { Box, Flex } from 'reflexbox/styled-components';\nimport styled from 'styled-components';\n\nimport { Colors } from '@aurorasolar/common-core/src/colors';\nimport { AuroraIcon, AuroraIconType } from '@aurorasolar/common-core/src/icon';\n\nimport { LCAIText } from '../../../typography/lcai-text/lcai-text';\nimport {\n DROP_AREA_BORDER_COLOR,\n INPUT_BACKGROUND_COLOR,\n PRIMARY_COLOR,\n SECONDARY_COLOR,\n} from '../../../utils/constants';\nimport { BillUploadTestIds } from '../../../utils/test-ids';\nimport { ValidMimeTypes } from '../utils';\n\ninterface UploaderProps {\n addFileHandler: (filesToAdd: File[]) => void;\n uploadInProgress: boolean;\n}\n\nexport function Uploader({ addFileHandler, uploadInProgress }: UploaderProps) {\n const { getRootProps, getInputProps, isDragActive, isDragAccept, isDragReject } = useDropzone({\n accept: ValidMimeTypes,\n disabled: uploadInProgress,\n multiple: true,\n onDrop: (acceptedFiles, fileRejections) => {\n const rejectedFiles = fileRejections.map((reject) => reject.file);\n addFileHandler([...acceptedFiles, ...rejectedFiles]);\n },\n });\n\n return (\n <>\n \n \n \n \n \n \n \n Attach files\n \n \n \n \n Drag and drop\n \n \n \n \n or \n \n \n browse files\n \n \n \n \n \n \n \n Attach file or take a photo\n \n \n \n \n );\n}\n\nconst DesktopDropAreaContainer = styled.div`\n border-radius: 6px;\n background: ${INPUT_BACKGROUND_COLOR};\n padding: 24px;\n\n @media (hover: none) {\n display: none;\n }\n`;\n\nconst DropAreaContents = styled.div`\n pointer-events: none;\n`;\n\ntype ValidDropzoneRootProps = Pick<\n DropzoneRootProps,\n 'isDragActive' | 'isDragAccept' | 'isDragReject'\n> & {\n isDisabled?: boolean;\n};\n\nconst DropArea = styled.div`\n border: 2px dashed\n ${({ isDragAccept, isDragReject, isDragActive }) => {\n if (isDragAccept) {\n return Colors.PRIMARY_GREEN;\n }\n if (isDragReject) {\n return Colors.RED;\n }\n if (isDragActive) {\n return Colors.BLACK;\n }\n return DROP_AREA_BORDER_COLOR;\n }};\n cursor: ${({ isDisabled }) => (isDisabled ? 'not-allowed !important' : 'pointer')};\n padding: 32px;\n transition: border 0.24s ease-in-out;\n`;\n\nconst MobileDropAreaContainer = styled(Flex)`\n background: ${INPUT_BACKGROUND_COLOR};\n border: 1px solid ${INPUT_BACKGROUND_COLOR};\n height: 48px;\n border-radius: 6px;\n align-items: center;\n justify-content: space-between;\n padding: 16px 14px 16px 16px;\n cursor: ${({ isDisabled }) => (isDisabled ? 'not-allowed !important' : 'pointer')};\n\n @media (hover: hover) {\n display: none;\n }\n`;\n","import { useCallback } from 'react';\nimport styled from 'styled-components';\n\nimport {\n Analytics,\n AnalyticsEventTypes,\n LeadCaptureBillUploadErrorTypes,\n useAppModule,\n} from '@aurorasolar/common-module-loader';\n\nimport { createUtilityBillFile, ErrorType, UtilityBillFile } from '../utils';\nimport { FileList } from './file-list';\nimport { Uploader } from './uploader';\n\ninterface BillUploadProps {\n filesToUpload: UtilityBillFile[];\n projectId: string;\n updateFilesToUpload: (files: UtilityBillFile[]) => void;\n uploadInProgress: boolean;\n}\n\nexport function BillUpload({\n filesToUpload,\n projectId,\n updateFilesToUpload,\n uploadInProgress,\n}: BillUploadProps) {\n const analytics = useAppModule(Analytics);\n\n const addFileHandler = useCallback(\n (filesToAdd: File[]) => {\n const newFiles: UtilityBillFile[] = filesToAdd.map((file) => createUtilityBillFile(file));\n\n newFiles\n .filter((newFile) => newFile.error)\n .forEach((newFile) => {\n analytics?.track(AnalyticsEventTypes.LeadCaptureBillUploadError, {\n error_type:\n newFile.error === ErrorType.FILE_SIZE_TOO_LARGE\n ? LeadCaptureBillUploadErrorTypes.FileSize\n : LeadCaptureBillUploadErrorTypes.FileType,\n file_type:\n newFile.error === ErrorType.INVALID_MIME_TYPE ? newFile.file.type : undefined,\n project_id: projectId,\n });\n });\n\n updateFilesToUpload([...filesToUpload, ...newFiles]);\n },\n [analytics, filesToUpload, projectId, updateFilesToUpload],\n );\n\n const removeFileHandler = useCallback(\n (index: number) => {\n const files = [...filesToUpload];\n files.splice(index, 1);\n\n updateFilesToUpload(files);\n },\n [filesToUpload, updateFilesToUpload],\n );\n\n return (\n \n \n \n \n );\n}\n\nconst BillUploadContainer = styled.div`\n display: grid;\n grid-row-gap: 8px;\n margin-top: 8px;\n`;\n","import { useState } from 'react';\nimport { Box } from 'reflexbox/styled-components';\n\nimport { AuroraIcon, AuroraIconType } from '@aurorasolar/common-core/src/icon';\nimport { Collapse } from '@blueprintjs/core';\n\nimport { LCAIButton, LCAIButtonIntent } from '../typography/lcai-button/lcai-button';\nimport { LCAIText } from '../typography/lcai-text/lcai-text';\nimport { TEXT_ACCORDION_COLOR } from '../utils/constants';\n\nexport enum TextAccordionTestIds {\n TEXT_BUTTON = 'text-button',\n}\n\ninterface TextAccordionProps {\n text: string;\n expandedTexts: string[];\n}\n\nexport const TextAccordion = ({ expandedTexts, text }: TextAccordionProps) => {\n const [isExpanded, setIsExpanded] = useState(false);\n\n return (\n \n setIsExpanded(!isExpanded)}\n >\n {text}\n \n \n \n {expandedTexts.map((expandedText, index) => (\n 0 ? 3 : 0}>\n \n {expandedText}\n \n \n ))}\n \n \n );\n};\n","import { TextAccordion } from '../../../shared-components';\n\nexport function Faq() {\n return (\n <>\n \n \n \n \n );\n}\n","import { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { useDebouncedCallback } from '@aurorasolar/common-core/src/hooks';\nimport {\n Analytics,\n AnalyticsEventTypes,\n AnalyticsPageTypes,\n AppRouterNavigation,\n FileUploadHandler,\n LeadCaptureBillUploadErrorTypes,\n useAppModule,\n} from '@aurorasolar/common-module-loader';\nimport { FileResultType } from '@aurorasolar/file-uploader';\n\nimport { useCreateLCAIBssUploadUrls, useRouteData } from '../../hooks';\nimport { AnimateView, BoxWithMargin, Image, SplitView, TopRail } from '../../shared-components';\nimport { LCAIText } from '../../typography/lcai-text/lcai-text';\nimport { DEBOUNCE_TIME, HEADER_COLOR } from '../../utils/constants';\nimport { SourcePage } from '../../utils/source-page';\nimport { useSubmitSanitizationJobMutation } from './bill-upload.generated';\nimport { BillUpload, Buttons, Faq, UploadStatus, UtilityBillFile } from './components';\n\nexport interface BillUploadPageProps {\n projectId: string;\n sourcePage: SourcePage;\n}\n\nexport function BillUploadPage({ projectId, sourcePage }: BillUploadPageProps) {\n const navigation = useAppModule(AppRouterNavigation);\n const analytics = useAppModule(Analytics);\n const fileUploader = useAppModule(FileUploadHandler);\n\n const { templateId } = useRouteData();\n const { fetchBssUploadUrls } = useCreateLCAIBssUploadUrls();\n\n const [submitSanitizationJob] = useSubmitSanitizationJobMutation();\n\n const [filesToUpload, setFilesToUpload] = useState([]);\n const [uploadInProgress, setUploadInProgress] = useState(false);\n\n const updateFilesToUpload = (files: UtilityBillFile[]) => {\n setFilesToUpload(files);\n };\n\n useEffect(() => {\n analytics?.page(AnalyticsPageTypes.LeadCaptureBillUpload, {\n project_id: projectId,\n });\n }, [analytics, projectId]);\n\n const isUploadAllowed = useCallback(() => {\n return (\n filesToUpload.length > 0 &&\n filesToUpload.length <= 3 &&\n filesToUpload.filter((selectedFile) => selectedFile.error).length === 0\n );\n }, [filesToUpload]);\n\n const getUploadBillArrays = useMemo(() => {\n return filesToUpload.reduce<{\n files: File[];\n inProgressFiles: UtilityBillFile[];\n }>(\n (acc, curr) => ({\n files: [...acc.files, curr.file],\n inProgressFiles: [\n ...acc.inProgressFiles,\n { ...curr, uploadStatus: UploadStatus.IN_PROGRESS },\n ],\n }),\n { files: [], inProgressFiles: [] },\n );\n }, [filesToUpload]);\n\n const uploadBillFiles = useCallback(async () => {\n const { files, inProgressFiles } = getUploadBillArrays;\n setFilesToUpload(inProgressFiles);\n\n const bssUploadUrls = await fetchBssUploadUrls({ files, projectId });\n\n const blobIdsPromises = bssUploadUrls?.map(async (uploadUrl, i) => {\n let blobId: string | undefined;\n\n try {\n if (uploadUrl) {\n blobId = await fileUploader?.uploadToSignedUrl?.(files[i], uploadUrl);\n }\n } catch {\n await analytics?.track(AnalyticsEventTypes.LeadCaptureBillUploadError, {\n error_type: LeadCaptureBillUploadErrorTypes.Upload,\n project_id: projectId,\n });\n } finally {\n inProgressFiles[i].uploadStatus = UploadStatus.COMPLETE;\n setFilesToUpload([...inProgressFiles]);\n }\n\n return blobId;\n });\n\n if (blobIdsPromises) {\n const blobIds = (await Promise.all(blobIdsPromises)).filter((id): id is string => !!id);\n if (blobIds.length > 0) {\n try {\n await submitSanitizationJob({\n variables: {\n sanitizationJobInput: {\n blobIds,\n id: projectId,\n },\n },\n });\n } catch {\n await analytics?.track(AnalyticsEventTypes.LeadCaptureBillUploadError, {\n error_type: LeadCaptureBillUploadErrorTypes.Sanitization,\n project_id: projectId,\n });\n }\n }\n }\n }, [\n analytics,\n fetchBssUploadUrls,\n fileUploader,\n getUploadBillArrays,\n projectId,\n submitSanitizationJob,\n ]);\n\n const uploadBill = useDebouncedCallback(\n async () => {\n setUploadInProgress(true);\n await uploadBillFiles();\n await analytics?.track(AnalyticsEventTypes.LeadCaptureSubmittedBill, {\n contains_files: filesToUpload.some((file) => file.type === FileResultType.DOCUMENT),\n contains_images: filesToUpload.some((file) => file.type === FileResultType.IMAGE),\n number_of_files: filesToUpload.length,\n project_id: projectId,\n });\n navigation?.navigate(`/projects/${projectId}/profile-review`, { replace: true });\n },\n [analytics, navigation, projectId, uploadBillFiles, filesToUpload],\n DEBOUNCE_TIME,\n );\n\n const skipBillUpload = useDebouncedCallback(\n async () => {\n navigation?.navigate(`/projects/${projectId}/profile-review`, { replace: true });\n },\n [navigation, projectId],\n DEBOUNCE_TIME,\n );\n\n return (\n <>\n \n \n \n }\n leftContent={\n <>\n \n Upload your utility bill to get a more accurate quote\n \n \n \n \n \n \n \n \n }\n rightContent={}\n />\n \n \n );\n}\n\nexport default BillUploadPage;\n","import { SourcePage } from './source-page';\n\nexport interface LCAIImage {\n alt: string;\n name: string;\n position?: string;\n}\n\nexport const IMAGES = {\n AddressImage: { alt: 'View of earth from space', name: 'location' },\n BillUploadImage: {\n alt: 'Bungalow with solar panels with lots of shrubs and two trees in the foreground',\n name: 'bill-upload',\n position: '0% 90%',\n },\n ComingSoonImage: {\n alt: 'Women in kitchen with wood shelves containing dishes',\n name: 'coming-soon',\n },\n DropOffImage: {\n alt: \"Bird's-eye view of a neighborhood at sunrise showing roofs with and without solar\",\n name: 'drop-off',\n },\n LandingImage: {\n alt: 'Patio scene with solar home in background',\n name: 'how-it-works',\n position: 'center 30%',\n },\n ProfileReviewImage: {\n alt: 'An older couple reviewing their solar needs with a solar expert',\n name: 'profile-review',\n position: '60% 10%',\n },\n QuoteImage: {\n alt: 'Yellow brick house with solar panels with greenery in foreground',\n name: 'get-in-touch',\n },\n ThankYouImage: {\n alt: 'Open french doors to balcony containing potted plants with trees in the distance',\n name: 'thank-you',\n },\n UtilityImage: {\n alt: 'String of electric lights hanging between trees',\n name: 'savings',\n position: 'center 75%',\n },\n};\n\nconst MAPPED_IMAGES = {\n [SourcePage.ADDRESS]: IMAGES.AddressImage,\n [SourcePage.ADDRESS_DROP]: IMAGES.DropOffImage,\n [SourcePage.BILL_UPLOAD]: IMAGES.BillUploadImage,\n [SourcePage.ERROR]: IMAGES.ComingSoonImage,\n [SourcePage.GENERIC_DROP]: IMAGES.DropOffImage,\n [SourcePage.LANDING]: IMAGES.LandingImage,\n [SourcePage.OWNERSHIP_DROP]: IMAGES.ComingSoonImage,\n [SourcePage.QUOTE]: IMAGES.QuoteImage,\n [SourcePage.THANK_YOU]: IMAGES.ThankYouImage,\n [SourcePage.UTILITY]: IMAGES.UtilityImage,\n};\n\nexport function ImageMatcher(sourcePage: SourcePage): LCAIImage {\n return MAPPED_IMAGES[sourcePage];\n}\n","import styled from 'styled-components';\n\nimport { CustomImageFragment } from '../lead-capture.generated';\nimport { S3_IMAGE_LOCATION } from '../utils/constants';\nimport { ImageMatcher } from '../utils/image-matcher';\nimport { SourcePage } from '../utils/source-page';\n\nconst DEFAULT_POSITION = 'center';\n\nexport interface ImageProps {\n customImage?: CustomImageFragment | null;\n alt?: string;\n children?: JSX.Element;\n name?: string;\n position?: string;\n sourcePage?: SourcePage;\n}\n\nexport const Image = ({\n alt,\n children,\n customImage,\n name,\n position = DEFAULT_POSITION,\n sourcePage,\n}: ImageProps) => {\n const matchedImage = sourcePage && ImageMatcher(sourcePage);\n\n const webpSrc = `${S3_IMAGE_LOCATION + (matchedImage?.name || name)}.webp`;\n const jpgSrc = `${S3_IMAGE_LOCATION + (matchedImage?.name || name)}.jpg`;\n\n const url = (customImage?.isActive && customImage?.url) || webpSrc;\n const fallbackUrl = (customImage?.isActive && customImage?.fallbackUrl) || jpgSrc;\n const altText = (customImage?.isActive && customImage?.altText) || matchedImage?.alt || alt;\n const positionAttr = (!customImage?.isActive && matchedImage?.position) || position;\n\n return (\n \n \n \n {altText}\n \n {children}\n \n );\n};\n\nconst ImageContainer = styled.div`\n position: relative;\n height: 100%;\n`;\n\nconst Img = styled.img`\n object-fit: cover;\n object-position: ${(props: Pick) => `${props.position}`};\n height: 100%;\n width: 100%;\n`;\n"],"names":["FileResultType","FileResultUploadStatus","SupportedMimeTypes","getFileResultType","mimeType","GIF","JPEG","PNG","WEBP","HEIC","DXF","DWG","IMAGE","PDF","DOCUMENT","UNKNOWN","getFileSizeFormatted","fileSize","formatNumber","style","unit","kbSize","Math","round","mbSize","defaultOptions","CreateLeadCaptureBssUploadUrlsDocument","useCreateLCAIBssUploadUrls","fileUploader","createBssUploadUrls","baseOptions","options","useCreateLeadCaptureBssUploadUrlsMutation","fetchBssUploadUrls","useCallback","async","files","projectId","hashFile","Error","bssUploadInputsPromises","map","file","blobName","name","contentLength","size","contentSha256","type","bssUploadInputs","Promise","all","result","variables","createBSSUploadUrlsInput","id","data","uploadUrls","e","SubmitSanitizationJobDocument","ErrorType","UploadStatus","ValidMimeTypes","UPLOAD_BUTTON_TEXT","UPLOAD_BUTTON_IN_PROGRESS_TEXT","Buttons","isUploadAllowed","skipBillUpload","uploadBill","uploadInProgress","UPLOAD_BUTTON","disabled","intent","PRIMARY_LIGHT","onClick","SKIP_BUTTON","GHOST_LIGHT","createUtilityBillFile","error","determineFileError","uploadStatus","PENDING","fileType","FILE_SIZE_TOO_LARGE","includes","INVALID_MIME_TYPE","FileList","filesToUpload","removeFileHandler","utilityBillFile","index","FileListItem","listItem","length","color","pt","TOO_MANY_FILES","useMemo","FileContainer","isError","width","alignItems","fillColor","IMAGE_PREVIEW","DOCUMENT_PREVIEW","testid","FILE_LIST_ICON","FileNameText","FILE_LIST_NAME","px","FileSizeText","FILE_LIST_SIZE","RemoveFileButton","REMOVE_FILE_BUTTON","iconOnly","CLOSE","height","justifyContent","IN_PROGRESS","PROGRESS_SPINNER","CHECKMARK","spin","FILE_LIST_SPINNER_ICON","FILE_LIST_COMPLETE_ICON","pb","pr","props","COMMON_MIME_TYPES","Map","toFileWithPath","path","f","lastIndexOf","ext","split","pop","toLowerCase","get","Object","defineProperty","value","writable","configurable","enumerable","withMimeType","webkitRelativePath","FILES_TO_IGNORE","isObject","v","getInputFiles","evt","fromList","target","getFsHandleFiles","handles","this","_a","label","h","getFile","sent","getDataTransferFiles","dt","items","filter","item","kind","toFilePromises","noIgnoredFiles","flatten","indexOf","i","push","webkitGetAsEntry","fromDataTransferItem","entry","isDirectory","fromDirEntry","reduce","acc","Array","isArray","getAsFile","reject","fwp","resolve","fromEntry","fromFileEntry","reader","createReader","entries","readEntries","_this","batch","err_1","trys","err","fullPath","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","apply","_objectSpread","arguments","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","obj","_slicedToArray","arr","_arrayWithHoles","_i","Symbol","iterator","_s","_e","_arr","_n","_d","call","next","done","_iterableToArrayLimit","o","minLen","_arrayLikeToArray","n","prototype","toString","slice","constructor","from","test","_unsupportedIterableToArray","TypeError","_nonIterableRest","len","arr2","FILE_INVALID_TYPE","FILE_TOO_LARGE","FILE_TOO_SMALL","getInvalidTypeRejectionErr","accept","messageSuffix","concat","join","code","message","getTooLargeRejectionErr","maxSize","getTooSmallRejectionErr","minSize","TOO_MANY_FILES_REJECTION","fileAccepted","isAcceptable","fileMatchSize","isDefined","isPropagationStopped","event","cancelBubble","isEvtWithFiles","dataTransfer","some","types","onDocumentDragOver","preventDefault","composeEventHandlers","_len","fns","_key","_len2","args","_key2","fn","filePickerOptionsTypes","description","a","b","_excluded","_excluded2","_excluded3","_excluded4","_toConsumableArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","Dropzone","forwardRef","_ref","ref","children","_useDropzone","useDropzone","open","useImperativeHandle","Fragment","displayName","defaultProps","getFilesFromEvent","isChangeEvt","every","Infinity","multiple","maxFiles","preventDropOnDocument","noClick","noKeyboard","noDrag","noDragEventsBubbling","validator","useFsAccessApi","propTypes","onFileDialogCancel","onFileDialogOpen","onDragEnter","onDragLeave","onDragOver","onDrop","onDropAccepted","onDropRejected","initialState","isFocused","isFileDialogActive","isDragActive","isDragAccept","isDragReject","draggedFiles","acceptedFiles","fileRejections","undefined","_defaultProps$options","onFileDialogOpenCb","noop","onFileDialogCancelCb","rootRef","useRef","inputRef","_useReducer2","useReducer","reducer","state","dispatch","fsAccessApiWorksRef","window","isSecureContext","onWindowFocus","current","setTimeout","useEffect","addEventListener","removeEventListener","dragTargetsRef","onDocumentDrop","contains","document","onDragEnterCb","persist","stopPropagation","then","onDragOverCb","hasFiles","dropEffect","_unused","onDragLeaveCb","targets","targetIdx","splice","setFiles","_fileAccepted2","accepted","acceptError","_fileMatchSize2","sizeMatch","sizeError","customErrors","errors","onDropCb","openFileDialog","opts","showOpenFilePicker","catch","DOMException","ABORT_ERR","SECURITY_ERR","isSecurityError","click","onKeyDownCb","isEqualNode","keyCode","onFocusCb","onBlurCb","onClickCb","userAgent","navigator","isIe","isEdge","isIeOrEdge","composeHandler","composeKeyboardHandler","composeDragHandler","getRootProps","_ref2","_ref2$refKey","refKey","role","onKeyDown","onFocus","onBlur","rest","tabIndex","onInputElementClick","getInputProps","_ref3","_ref3$refKey","onChange","display","fileCount","allFilesAccepted","action","Uploader","addFileHandler","rejectedFiles","FILE_UPLOADER_INPUT","DesktopDropAreaContainer","DropArea","isDisabled","DropAreaContents","ATTACH_FILE","ml","mt","textAlign","textDecoration","MobileDropAreaContainer","BTN_PLUS","div","PRIMARY_GREEN","RED","BLACK","BillUpload","updateFilesToUpload","analytics","filesToAdd","newFiles","newFile","track","LeadCaptureBillUploadError","error_type","FileSize","FileType","file_type","project_id","BillUploadContainer","TextAccordionTestIds","TextAccordion","expandedTexts","text","isExpanded","setIsExpanded","useState","TEXT_BUTTON","fontWeightOverride","ACCORDION","flip","CHEVRON_DOWN","isOpen","expandedText","Faq","BillUploadPage","sourcePage","navigation","templateId","submitSanitizationJob","useSubmitSanitizationJobMutation","setFilesToUpload","setUploadInProgress","page","LeadCaptureBillUpload","selectedFile","getUploadBillArrays","curr","inProgressFiles","uploadBillFiles","bssUploadUrls","blobIdsPromises","uploadUrl","blobId","uploadToSignedUrl","Upload","COMPLETE","blobIds","sanitizationJobInput","Sanitization","LeadCaptureSubmittedBill","contains_files","contains_images","number_of_files","navigate","replace","buttons","leftContent","fontWeight","rightContent","IMAGES","AddressImage","alt","BillUploadImage","position","ComingSoonImage","DropOffImage","LandingImage","ProfileReviewImage","QuoteImage","ThankYouImage","UtilityImage","MAPPED_IMAGES","ADDRESS","ADDRESS_DROP","BILL_UPLOAD","ERROR","GENERIC_DROP","LANDING","OWNERSHIP_DROP","QUOTE","THANK_YOU","UTILITY","Image","customImage","matchedImage","ImageMatcher","webpSrc","jpgSrc","url","isActive","fallbackUrl","altText","positionAttr","ImageContainer","srcSet","Img","src","img"],"sourceRoot":""}