@bigbinary/neeto-molecules 5.3.0 → 5.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"FileUpload.js","sources":["../../src/components/FileUpload/constants.js","../../src/components/FileUpload/DropZone.jsx","../../src/components/FileUpload/utils.js","../../src/components/FileUpload/ErrorMessages.jsx","../../src/components/FileUpload/Progress.jsx","../../src/components/FileUpload/FilePreview.jsx","../../src/components/FileUpload/hooks/useFileUpload.js","../../src/components/FileUpload/FileUpload.jsx","../../src/components/FileUpload/FormikFileUpload.jsx"],"sourcesContent":["import { globalProps } from \"neetocommons/initializers\";\n\nexport const FILE_MIME_TYPES = {\n pdf: [\"application/pdf\"],\n doc: [\"application/msword\", \"application/wps-writer\"],\n docx: [\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n ],\n xls: [\"application/vnd.ms-excel\"],\n xlsx: [\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"],\n csv: [\"text/csv\"],\n txt: [\"text/plain\"],\n rtf: [\"application/rtf\", \"text/rtf\"],\n html: [\"text/html\"],\n htm: [\"text/html\"],\n md: [\"text/markdown\", \"text/x-markdown\"],\n zip: [\"application/zip\"],\n mp3: [\"audio/mpeg\"],\n wma: [\"audio/x-ms-wma\", \"video/x-ms-asf\"],\n mp4: [\"video/mp4\"],\n mpg: [\"video/mpeg\"],\n mpeg: [\"video/mpeg\"],\n flv: [\"video/x-flv\"],\n avi: [\"video/x-msvideo\"],\n jpg: [\"image/jpeg\"],\n jpeg: [\"image/jpeg\"],\n png: [\"image/png\"],\n gif: [\"image/gif\"],\n json: [\"application/json\"],\n epub: [\"application/epub+zip\"],\n aac: [\"audio/aac\"],\n svg: [\"image/svg+xml\"],\n ico: [\"image/vnd.microsoft.icon\"],\n};\n\nexport const ERROR_CODES = {\n FILE_TOO_LARGE: \"file-too-large\",\n FILE_INVALID_TYPE: \"file-invalid-type\",\n TOO_MANY_FILES: \"too-many-files\",\n};\n\nexport const DIRECT_UPLOAD_URL = \"/api/direct_uploads\";\n\nexport const MAX_FILE_SIZE =\n globalProps?.endUserUploadedFileSizeLimitInMb || 10;\n","import classnames from \"classnames\";\nimport { FileUpload } from \"neetoicons\";\nimport { useTranslation } from \"react-i18next\";\n\nconst DropZone = ({\n isDragActive,\n getRootProps,\n getInputProps,\n multipleFilesAllowed,\n maxFileSize,\n allowedFileTypes,\n hasFileSizeLimit,\n}) => {\n const { t } = useTranslation();\n\n const shouldAllowSingleFileUpload = !multipleFilesAllowed;\n const shouldShowFileSizeLimit = hasFileSizeLimit && maxFileSize;\n\n return (\n <div\n {...getRootProps({\n className: classnames([\"neeto-molecules-file-upload__dropzone\"], {\n \"neeto-molecules-file-upload__dropzone--drag-active\": isDragActive,\n }),\n })}\n >\n <div\n className=\"neeto-molecules-file-upload__dropzone-inner\"\n data-testid=\"file-upload-body\"\n >\n <FileUpload\n className=\"neeto-molecules-file-upload__upload-icon\"\n size=\"36\"\n />\n <div className=\"neeto-molecules-file-upload__dropzone-content\">\n <label\n className=\"neeto-molecules-file-upload__upload-label\"\n htmlFor=\"file-upload\"\n >\n <span className=\"neeto-molecules-file-upload__choose-file\">\n {t(\n \"neetoMolecules.fileUpload.filesDropzone.chooseFileOrDragHere\"\n )}\n </span>\n <input {...getInputProps()} data-testid=\"image-browse-button\" />\n </label>\n <div className=\"neeto-molecules-file-upload__dropzone-helper-block\">\n {shouldAllowSingleFileUpload && (\n <p\n className=\"neeto-molecules-file-upload__dropzone-helper-text\"\n data-testid=\"upload-only-one-file-text\"\n >\n {t(\"neetoMolecules.fileUpload.filesDropzone.oneFileAllowed\")}\n </p>\n )}\n {shouldShowFileSizeLimit && (\n <p\n className=\"neeto-molecules-file-upload__dropzone-helper-text\"\n data-testid=\"maximum-allowed-size-text\"\n >\n {t(\"neetoMolecules.fileUpload.filesDropzone.maxFileSize\", {\n size: maxFileSize,\n unit: \"MB\",\n })}\n </p>\n )}\n {allowedFileTypes && (\n <p\n className=\"neeto-molecules-file-upload__dropzone-helper-text\"\n data-testid=\"allowed-files-types-text\"\n >\n {t(\"neetoMolecules.fileUpload.filesDropzone.allowedFileTypes\", {\n types: allowedFileTypes,\n })}\n </p>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default DropZone;\n","import path from \"path\";\n\nimport { t } from \"i18next\";\nimport { isNotPresent } from \"neetocist\";\n\nimport { FILE_MIME_TYPES, ERROR_CODES } from \"./constants\";\n\nexport const getAcceptedFileTypes = allowedFileTypes => {\n const accepted = {};\n\n allowedFileTypes.split(\", \").forEach(type => {\n const mimeTypes = FILE_MIME_TYPES[type] || [\"application/octet-stream\"];\n const extension = `.${type}`;\n\n if (isNotPresent(type) || isNotPresent(mimeTypes)) return;\n\n mimeTypes.forEach(mimeType => {\n if (accepted[mimeType]) accepted[mimeType].push(extension);\n else accepted[mimeType] = [extension];\n });\n });\n\n return accepted;\n};\n\nexport const convertBytesToMb = bytes =>\n ((bytes - 10) / (1024 * 1024)).toFixed(2);\n\nexport const renderErrorMessage = (errorObject, maxFileSize, isMultiple) => {\n const error = errorObject.errors[0];\n const file = errorObject.file;\n if (error) {\n const { code } = error;\n if (code === ERROR_CODES.FILE_TOO_LARGE) {\n return t(\"neetoMolecules.fileUpload.filesDropzone.errors.fileTooLarge\", {\n fileName: file.name,\n maxSize: `${Math.round(maxFileSize / 1048576)}MB`,\n });\n } else if (code === ERROR_CODES.FILE_INVALID_TYPE) {\n return t(\n \"neetoMolecules.fileUpload.filesDropzone.errors.fileInvalidType\",\n { fileType: path.extname(file.name) }\n );\n } else if (code === ERROR_CODES.TOO_MANY_FILES && !isMultiple) {\n return t(\"neetoMolecules.fileUpload.filesDropzone.errors.tooManyFiles\", {\n maxFiles: 1,\n });\n }\n }\n\n return t(\"neetoMolecules.fileUpload.filesDropzone.errors.defaultError\", {\n fileName: file.name,\n });\n};\n\nexport const convertMbToBytes = mb => mb * 1024 * 1024 + 10;\n","import { useTranslation } from \"react-i18next\";\n\nimport { ERROR_CODES } from \"./constants\";\nimport { renderErrorMessage } from \"./utils\";\n\nconst ErrorMessages = ({ fileRejections, maxFileSizeInBytes }) => {\n const { t } = useTranslation();\n\n const hasMultipleFileErrors = fileRejections.some(\n ({ errors }) => errors[0].code === ERROR_CODES.TOO_MANY_FILES\n );\n\n return (\n <>\n {hasMultipleFileErrors && (\n <p\n className=\"neeto-molecules-input__error-text\"\n data-testid=\"form-file-upload-input-error\"\n >\n <span className=\"neeto-molecules-input__error-text-style-handle\">\n {t(\"neetoMolecules.fileUpload.filesDropzone.errors.tooManyFiles\", {\n maxFiles: 1,\n })}\n </span>\n </p>\n )}\n {fileRejections\n .filter(({ errors }) => errors[0].code !== ERROR_CODES.TOO_MANY_FILES)\n .map((file, index) => (\n <p\n className=\"neeto-molecules-input__error-text\"\n data-testid=\"form-file-upload-input-error\"\n key={index}\n >\n <span className=\"neeto-molecules-input__error-text-style-handle\">\n {renderErrorMessage(file, maxFileSizeInBytes, false)}\n </span>\n </p>\n ))}\n </>\n );\n};\n\nexport default ErrorMessages;\n","import { motion, useReducedMotion } from \"framer-motion\";\n\nconst Progress = ({\n percents,\n stroke = \"currentColor\",\n emptyStroke = stroke,\n emptyStrokeOpacity = 0.25,\n duration = 0.5,\n delay = 0,\n size = 100,\n strokeWidth = 12,\n}) => {\n const shouldReduceMotion = useReducedMotion();\n const radius = 45;\n const circumference = Math.ceil(2 * Math.PI * radius);\n const fillPercents = Math.abs(\n Math.ceil((circumference / 100) * (percents - 100))\n );\n\n const transition = {\n duration: shouldReduceMotion ? 0 : duration,\n delay: shouldReduceMotion ? 0 : delay,\n };\n\n const variants = {\n hidden: { strokeDashoffset: circumference, transition },\n show: { strokeDashoffset: fillPercents, transition },\n };\n\n return (\n <div className=\"neeto-molecules-progress__circle\">\n <div\n className=\"neeto-molecules-progress__circle-wrapper\"\n style={{ height: size }}\n >\n <svg\n height={size}\n version=\"1.1\"\n viewBox=\"0 0 100 100\"\n width={size}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n {...{ strokeWidth }}\n className=\"circle\"\n cx=\"50\"\n cy=\"50\"\n fill=\"transparent\"\n r={radius}\n stroke={emptyStroke}\n strokeOpacity={emptyStrokeOpacity}\n />\n </svg>\n <svg\n height={size}\n viewBox=\"0 0 100 100\"\n width={size}\n style={{\n position: \"absolute\",\n transform: \"rotate(-90deg)\",\n overflow: \"visible\",\n top: 0,\n }}\n >\n <motion.circle\n {...{ stroke, strokeWidth, variants }}\n animate=\"show\"\n cx=\"50\"\n cy=\"50\"\n fill=\"transparent\"\n initial=\"hidden\"\n r={radius}\n strokeDasharray={circumference}\n strokeDashoffset={fillPercents}\n />\n </svg>\n </div>\n </div>\n );\n};\n\nexport default Progress;\n","import classnames from \"classnames\";\nimport { FileGeneric, Check, Close } from \"neetoicons\";\n\nimport Progress from \"./Progress\";\nimport { convertBytesToMb } from \"./utils\";\n\nconst FilePreview = ({ file, isUploading, cancel, progress }) => (\n <li\n className=\"neeto-molecules-file-upload__uploaded-list-item\"\n key={file.url}\n >\n <div className=\"neeto-molecules-file-upload__file-preview\">\n <a\n className={classnames({ \"neeto-molecules-invisible\": isUploading })}\n href={file.url}\n rel=\"noreferrer\"\n target=\"_blank\"\n >\n <FileGeneric />\n </a>\n {isUploading && (\n <div className=\"neeto-molecules-progress\">\n <Progress percents={progress || 0} size={20} />\n </div>\n )}\n </div>\n <div className=\"neeto-molecules-file-upload__file-info\">\n <span\n className=\"neeto-molecules-file-upload__file-info-name\"\n data-testid=\"file-name\"\n >\n {file.name}\n </span>\n <span className=\"neeto-molecules-file-upload__file-info-size\">\n {file.size ? `${convertBytesToMb(file.size)} MB` : \"\"}\n </span>\n </div>\n <div className=\"neeto-molecules-file-upload__actions\">\n <span\n className={classnames(\n \"neeto-molecules-file-upload__success-indicator\",\n { \"neeto-molecules-file-upload__success-indicator--active\": file.url }\n )}\n >\n {file.url && <Check data-testid=\"file-upload-success\" />}\n </span>\n <button\n className=\"neeto-molecules-file-upload__button--red neeto-molecules-file-upload__remove-button\"\n type=\"button\"\n onClick={cancel}\n >\n <Close />\n </button>\n </div>\n </li>\n);\n\nexport default FilePreview;\n","import { useState, useCallback, useEffect, useRef } from \"react\";\n\nimport { DirectUpload } from \"@rails/activestorage\";\nimport { assoc } from \"ramda\";\nimport { useDropzone } from \"react-dropzone\";\n\nimport { DIRECT_UPLOAD_URL } from \"../constants\";\nimport { convertMbToBytes, renderErrorMessage } from \"../utils\";\n\nconst useFileUpload = ({\n disabled,\n accept,\n multiple,\n maxFileSize,\n minFileSize,\n files,\n onChange,\n setError,\n setTouched,\n hasFileSizeLimit,\n}) => {\n const [uploadProgress, setUploadProgress] = useState({});\n const [uploadError, setUploadError] = useState(\"\");\n\n const filesRef = useRef(files);\n filesRef.current = files;\n\n const cancel = useCallback(\n index => () => {\n setUploadProgress(assoc(files[index].uploadId, null));\n const newFiles = files?.filter((_, idx) => idx !== index);\n onChange(newFiles);\n },\n [files]\n );\n\n useEffect(() => {\n uploadError && setError(uploadError);\n }, [uploadError]);\n\n const onDropAccepted = acceptedFiles => {\n setTouched(false);\n setUploadError(\"\");\n const initialFiles = acceptedFiles.map(file => ({\n // Filenames are not unique, so each file gets a unique id to match\n // upload results back to their entries.\n uploadId: `upload-${Math.random().toString(36).substring(2, 13)}`,\n name: file.name,\n size: file.size,\n }));\n\n const filesWithPendingUploads = multiple\n ? [...(files || []), ...initialFiles]\n : initialFiles;\n filesRef.current = filesWithPendingUploads;\n onChange(filesWithPendingUploads);\n\n acceptedFiles.forEach((file, fileIndex) => {\n const initialFile = initialFiles[fileIndex];\n const { uploadId } = initialFile;\n setUploadProgress(assoc(uploadId, 0));\n\n const upload = new DirectUpload(file, DIRECT_UPLOAD_URL, {\n directUploadWillStoreFileWithXHR: xhr => {\n xhr.upload.addEventListener(\"progress\", event => {\n const percentComplete = Math.round(\n (event.loaded / event.total) * 100\n );\n setUploadProgress(assoc(uploadId, percentComplete));\n });\n\n xhr.upload.addEventListener(\"load\", () => {\n setUploadProgress(assoc(uploadId, undefined));\n });\n },\n });\n\n upload.create((error, blob) => {\n if (error) {\n setUploadError(error);\n setUploadProgress(assoc(uploadId, null));\n\n return;\n }\n\n const uploadedFile = {\n uploadId,\n url: blob.blob_url,\n name: blob.filename,\n signedId: blob.signed_id,\n };\n\n let filesWithUploadMetadata = [{ ...initialFile, ...uploadedFile }];\n if (multiple) {\n filesWithUploadMetadata = filesRef.current.map(file =>\n file.uploadId === uploadedFile.uploadId\n ? { ...file, ...uploadedFile }\n : file\n );\n }\n\n filesRef.current = filesWithUploadMetadata;\n onChange(filesWithUploadMetadata);\n });\n });\n };\n\n const onDropRejected = fileRejections => {\n fileRejections.forEach(fileObject => {\n setTouched(true);\n if (fileObject.errors[0].code === \"too-many-files\") {\n setUploadError(renderErrorMessage(fileObject, maxFileSize, multiple));\n } else {\n setUploadError(renderErrorMessage(fileObject, maxFileSize, multiple));\n }\n });\n };\n\n const { getRootProps, getInputProps, isDragActive, fileRejections } =\n useDropzone({\n disabled,\n accept,\n multiple,\n minSize: convertMbToBytes(minFileSize),\n onDropAccepted,\n onDropRejected,\n ...(maxFileSize &&\n hasFileSizeLimit && { maxSize: convertMbToBytes(maxFileSize) }),\n });\n\n return {\n progress: uploadProgress,\n cancel,\n getRootProps,\n getInputProps,\n isDragActive,\n fileRejections,\n };\n};\n\nexport default useFileUpload;\n","import { isNotEmpty, noop } from \"neetocist\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty, isNotNil } from \"ramda\";\n\nimport { MAX_FILE_SIZE } from \"./constants\";\nimport DropZone from \"./DropZone\";\nimport ErrorMessages from \"./ErrorMessages\";\nimport \"./file-upload.scss\";\nimport FilePreview from \"./FilePreview\";\nimport useFileUpload from \"./hooks/useFileUpload\";\nimport { getAcceptedFileTypes } from \"./utils\";\n\nconst FileUpload = ({\n allowedFileTypes = \"\",\n multipleFilesAllowed = true,\n maxFileSize = MAX_FILE_SIZE,\n hasFileSizeLimit = true,\n isPreview = false,\n minFileSize = 0,\n files = [],\n onChange = noop,\n error,\n setError = noop,\n setTouched = noop,\n}) => {\n const {\n progress,\n cancel,\n getRootProps,\n getInputProps,\n isDragActive,\n fileRejections,\n } = useFileUpload({\n disabled: isPreview,\n accept: getAcceptedFileTypes(allowedFileTypes),\n multiple: multipleFilesAllowed,\n maxFileSize,\n minFileSize,\n files,\n onChange,\n setError,\n setTouched,\n hasFileSizeLimit,\n });\n\n const maxFileSizeInBytes = maxFileSize * 1024 * 1024;\n\n const isUploadingFile = file =>\n isNotNil(progress[file.uploadId]) &&\n (progress[file.uploadId] !== 100 || !file.url);\n\n const shouldShowError = error && isEmpty(fileRejections);\n\n return (\n <>\n <DropZone\n {...{\n allowedFileTypes,\n getInputProps,\n getRootProps,\n hasFileSizeLimit,\n isDragActive,\n maxFileSize,\n multipleFilesAllowed,\n }}\n />\n {!isEmpty(files) && (\n <ul className=\"neeto-molecules-file-upload__uploaded-list\">\n {files?.map((file, idx) => (\n <FilePreview\n {...{ file }}\n cancel={cancel(idx)}\n isUploading={isUploadingFile(file)}\n key={file.uploadId ?? idx}\n progress={progress[file.uploadId]}\n />\n ))}\n </ul>\n )}\n {isNotEmpty(fileRejections) && (\n <ErrorMessages {...{ fileRejections, maxFileSizeInBytes }} />\n )}\n {shouldShowError && (\n <p\n className=\"neeto-molecules-input__error-text\"\n data-testid=\"form-file-upload-input-error\"\n >\n <span className=\"neeto-molecules-input__error-text-style-handle\">\n {error}\n </span>\n </p>\n )}\n </>\n );\n};\n\nFileUpload.propTypes = {\n /**\n * Allowed file types for the file upload component.\n */\n allowedFileTypes: PropTypes.string,\n /**\n * Boolean to allow multiple files to be uploaded.\n */\n multipleFilesAllowed: PropTypes.bool,\n /**\n * Maximum file size allowed for the file upload component(MB).\n */\n maxFileSize: PropTypes.number,\n /**\n * Boolean to check if file size limit is enabled.\n */\n hasFileSizeLimit: PropTypes.bool,\n /**\n * Boolean to use component as a preview component.\n */\n isPreview: PropTypes.bool,\n /**\n * Minimum file size allowed for the file upload component(MB).\n */\n minFileSize: PropTypes.number,\n /**\n * Uploaded files.\n */\n files: PropTypes.arrayOf(\n PropTypes.shape({\n uploadId: PropTypes.string,\n name: PropTypes.string,\n size: PropTypes.number,\n url: PropTypes.string,\n })\n ),\n /**\n * Function to be called on file upload, with the updated files array.\n */\n onChange: PropTypes.func,\n /**\n * Error message to be displayed.\n */\n error: PropTypes.string,\n /**\n * Function to set error message.\n */\n setError: PropTypes.func,\n};\n\nexport default FileUpload;\n","import { useField } from \"formik\";\n\nimport FileUpload from \"./FileUpload\";\n\nconst FormikFileUpload = ({ name, ...props }) => {\n const [_, { value, touched, error }, { setValue, setTouched, setError }] =\n useField(name);\n\n const errorToDisplay = touched && error ? error : \"\";\n\n return (\n <FileUpload\n {...{ ...props, setError, setTouched }}\n error={errorToDisplay}\n files={value}\n onChange={setValue}\n />\n );\n};\n\nexport default FormikFileUpload;\n"],"names":["FILE_MIME_TYPES","pdf","doc","docx","xls","xlsx","csv","txt","rtf","html","htm","md","zip","mp3","wma","mp4","mpg","mpeg","flv","avi","jpg","jpeg","png","gif","json","epub","aac","svg","ico","ERROR_CODES","FILE_TOO_LARGE","FILE_INVALID_TYPE","TOO_MANY_FILES","DIRECT_UPLOAD_URL","MAX_FILE_SIZE","globalProps","endUserUploadedFileSizeLimitInMb","DropZone","_ref","isDragActive","getRootProps","getInputProps","multipleFilesAllowed","maxFileSize","allowedFileTypes","hasFileSizeLimit","_useTranslation","useTranslation","t","shouldAllowSingleFileUpload","shouldShowFileSizeLimit","_jsx","_objectSpread","className","classnames","children","_jsxs","FileUpload","size","htmlFor","unit","types","getAcceptedFileTypes","accepted","split","forEach","type","mimeTypes","extension","concat","isNotPresent","mimeType","push","convertBytesToMb","bytes","toFixed","renderErrorMessage","errorObject","isMultiple","error","errors","file","code","fileName","name","maxSize","Math","round","fileType","path","extname","maxFiles","convertMbToBytes","mb","ErrorMessages","fileRejections","maxFileSizeInBytes","hasMultipleFileErrors","some","_ref2","_Fragment","filter","_ref3","map","index","Progress","percents","_ref$stroke","stroke","_ref$emptyStroke","emptyStroke","_ref$emptyStrokeOpaci","emptyStrokeOpacity","_ref$duration","duration","_ref$delay","delay","_ref$size","_ref$strokeWidth","strokeWidth","shouldReduceMotion","useReducedMotion","radius","circumference","ceil","PI","fillPercents","abs","transition","variants","hidden","strokeDashoffset","show","style","height","version","viewBox","width","xmlns","cx","cy","fill","r","strokeOpacity","position","transform","overflow","top","motion","circle","animate","initial","strokeDasharray","FilePreview","isUploading","cancel","progress","href","url","rel","target","FileGeneric","Check","onClick","Close","useFileUpload","disabled","accept","multiple","minFileSize","files","onChange","setError","setTouched","_useState","useState","_useState2","_slicedToArray","uploadProgress","setUploadProgress","_useState3","_useState4","uploadError","setUploadError","filesRef","useRef","current","useCallback","assoc","uploadId","newFiles","_","idx","useEffect","onDropAccepted","acceptedFiles","initialFiles","random","toString","substring","filesWithPendingUploads","_toConsumableArray","fileIndex","initialFile","upload","DirectUpload","directUploadWillStoreFileWithXHR","xhr","addEventListener","event","percentComplete","loaded","total","undefined","create","blob","uploadedFile","blob_url","filename","signedId","signed_id","filesWithUploadMetadata","onDropRejected","fileObject","_useDropzone","useDropzone","minSize","_ref$allowedFileTypes","_ref$multipleFilesAll","_ref$maxFileSize","_ref$hasFileSizeLimit","_ref$isPreview","isPreview","_ref$minFileSize","_ref$files","_ref$onChange","noop","_ref$setError","_ref$setTouched","_useFileUpload","isUploadingFile","isNotNil","shouldShowError","isEmpty","_file$uploadId","_createElement","key","isNotEmpty","FormikFileUpload","props","_objectWithoutProperties","_excluded","_useField","useField","_useField2","_useField2$","value","touched","_useField2$2","setValue","errorToDisplay"],"mappings":"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"}
1
+ {"version":3,"file":"FileUpload.js","sources":["../../src/components/FileUpload/constants.js","../../src/components/FileUpload/DropZone.jsx","../../src/components/FileUpload/utils.js","../../src/components/FileUpload/ErrorMessages.jsx","../../src/components/FileUpload/Progress.jsx","../../src/components/FileUpload/FilePreview.jsx","../../src/components/FileUpload/hooks/useFileUpload.js","../../src/components/FileUpload/FileUpload.jsx","../../src/components/FileUpload/FormikFileUpload.jsx"],"sourcesContent":["import { globalProps } from \"neetocommons/initializers\";\n\nexport const FILE_MIME_TYPES = {\n pdf: [\"application/pdf\"],\n doc: [\"application/msword\", \"application/wps-writer\"],\n docx: [\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n ],\n xls: [\"application/vnd.ms-excel\"],\n xlsx: [\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"],\n csv: [\"text/csv\"],\n txt: [\"text/plain\"],\n rtf: [\"application/rtf\", \"text/rtf\"],\n html: [\"text/html\"],\n htm: [\"text/html\"],\n md: [\"text/markdown\", \"text/x-markdown\"],\n zip: [\"application/zip\"],\n mp3: [\"audio/mpeg\"],\n wma: [\"audio/x-ms-wma\", \"video/x-ms-asf\"],\n mp4: [\"video/mp4\"],\n mpg: [\"video/mpeg\"],\n mpeg: [\"video/mpeg\"],\n flv: [\"video/x-flv\"],\n avi: [\"video/x-msvideo\"],\n jpg: [\"image/jpeg\"],\n jpeg: [\"image/jpeg\"],\n png: [\"image/png\"],\n gif: [\"image/gif\"],\n json: [\"application/json\"],\n epub: [\"application/epub+zip\"],\n aac: [\"audio/aac\"],\n svg: [\"image/svg+xml\"],\n ico: [\"image/vnd.microsoft.icon\"],\n};\n\nexport const ERROR_CODES = {\n FILE_TOO_LARGE: \"file-too-large\",\n FILE_INVALID_TYPE: \"file-invalid-type\",\n TOO_MANY_FILES: \"too-many-files\",\n};\n\nexport const DIRECT_UPLOAD_URL = \"/api/direct_uploads\";\n\nexport const MAX_FILE_SIZE =\n globalProps?.endUserUploadedFileSizeLimitInMb || 10;\n","import classnames from \"classnames\";\nimport { FileUpload } from \"neetoicons\";\nimport { useTranslation } from \"react-i18next\";\n\nconst DropZone = ({\n isDragActive,\n getRootProps,\n getInputProps,\n multipleFilesAllowed,\n maxFileSize,\n allowedFileTypes,\n hasFileSizeLimit,\n}) => {\n const { t } = useTranslation();\n\n const shouldAllowSingleFileUpload = !multipleFilesAllowed;\n const shouldShowFileSizeLimit = hasFileSizeLimit && maxFileSize;\n\n return (\n <div\n {...getRootProps({\n className: classnames([\"neeto-molecules-file-upload__dropzone\"], {\n \"neeto-molecules-file-upload__dropzone--drag-active\": isDragActive,\n }),\n })}\n >\n <div\n className=\"neeto-molecules-file-upload__dropzone-inner\"\n data-testid=\"file-upload-body\"\n >\n <FileUpload\n className=\"neeto-molecules-file-upload__upload-icon\"\n size=\"36\"\n />\n <div className=\"neeto-molecules-file-upload__dropzone-content\">\n <label\n className=\"neeto-molecules-file-upload__upload-label\"\n htmlFor=\"file-upload\"\n >\n <span className=\"neeto-molecules-file-upload__choose-file\">\n {t(\n \"neetoMolecules.fileUpload.filesDropzone.chooseFileOrDragHere\"\n )}\n </span>\n <input {...getInputProps()} data-testid=\"image-browse-button\" />\n </label>\n <div className=\"neeto-molecules-file-upload__dropzone-helper-block\">\n {shouldAllowSingleFileUpload && (\n <p\n className=\"neeto-molecules-file-upload__dropzone-helper-text\"\n data-testid=\"upload-only-one-file-text\"\n >\n {t(\"neetoMolecules.fileUpload.filesDropzone.oneFileAllowed\")}\n </p>\n )}\n {shouldShowFileSizeLimit && (\n <p\n className=\"neeto-molecules-file-upload__dropzone-helper-text\"\n data-testid=\"maximum-allowed-size-text\"\n >\n {t(\"neetoMolecules.fileUpload.filesDropzone.maxFileSize\", {\n size: maxFileSize,\n unit: \"MB\",\n })}\n </p>\n )}\n {allowedFileTypes && (\n <p\n className=\"neeto-molecules-file-upload__dropzone-helper-text\"\n data-testid=\"allowed-files-types-text\"\n >\n {t(\"neetoMolecules.fileUpload.filesDropzone.allowedFileTypes\", {\n types: allowedFileTypes,\n })}\n </p>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default DropZone;\n","import path from \"path\";\n\nimport { t } from \"i18next\";\nimport { isNotPresent } from \"neetocist\";\n\nimport { FILE_MIME_TYPES, ERROR_CODES } from \"./constants\";\n\nexport const getAcceptedFileTypes = allowedFileTypes => {\n const accepted = {};\n\n allowedFileTypes.split(\", \").forEach(type => {\n const mimeTypes = FILE_MIME_TYPES[type] || [\"application/octet-stream\"];\n const extension = `.${type}`;\n\n if (isNotPresent(type) || isNotPresent(mimeTypes)) return;\n\n mimeTypes.forEach(mimeType => {\n if (accepted[mimeType]) accepted[mimeType].push(extension);\n else accepted[mimeType] = [extension];\n });\n });\n\n return accepted;\n};\n\nexport const convertBytesToMb = bytes =>\n ((bytes - 10) / (1024 * 1024)).toFixed(2);\n\nexport const renderErrorMessage = (errorObject, maxFileSize, isMultiple) => {\n const error = errorObject.errors[0];\n const file = errorObject.file;\n if (error) {\n const { code } = error;\n if (code === ERROR_CODES.FILE_TOO_LARGE) {\n return t(\"neetoMolecules.fileUpload.filesDropzone.errors.fileTooLarge\", {\n fileName: file.name,\n maxSize: `${Math.round(maxFileSize / 1048576)}MB`,\n });\n } else if (code === ERROR_CODES.FILE_INVALID_TYPE) {\n return t(\n \"neetoMolecules.fileUpload.filesDropzone.errors.fileInvalidType\",\n { fileType: path.extname(file.name) }\n );\n } else if (code === ERROR_CODES.TOO_MANY_FILES && !isMultiple) {\n return t(\"neetoMolecules.fileUpload.filesDropzone.errors.tooManyFiles\", {\n maxFiles: 1,\n });\n }\n }\n\n return t(\"neetoMolecules.fileUpload.filesDropzone.errors.defaultError\", {\n fileName: file.name,\n });\n};\n\nexport const convertMbToBytes = mb => mb * 1024 * 1024 + 10;\n","import { useTranslation } from \"react-i18next\";\n\nimport { ERROR_CODES } from \"./constants\";\nimport { renderErrorMessage } from \"./utils\";\n\nconst ErrorMessages = ({ fileRejections, maxFileSizeInBytes }) => {\n const { t } = useTranslation();\n\n const hasMultipleFileErrors = fileRejections.some(\n ({ errors }) => errors[0].code === ERROR_CODES.TOO_MANY_FILES\n );\n\n return (\n <>\n {hasMultipleFileErrors && (\n <p\n className=\"neeto-molecules-input__error-text\"\n data-testid=\"form-file-upload-input-error\"\n >\n <span className=\"neeto-molecules-input__error-text-style-handle\">\n {t(\"neetoMolecules.fileUpload.filesDropzone.errors.tooManyFiles\", {\n maxFiles: 1,\n })}\n </span>\n </p>\n )}\n {fileRejections\n .filter(({ errors }) => errors[0].code !== ERROR_CODES.TOO_MANY_FILES)\n .map((file, index) => (\n <p\n className=\"neeto-molecules-input__error-text\"\n data-testid=\"form-file-upload-input-error\"\n key={index}\n >\n <span className=\"neeto-molecules-input__error-text-style-handle\">\n {renderErrorMessage(file, maxFileSizeInBytes, false)}\n </span>\n </p>\n ))}\n </>\n );\n};\n\nexport default ErrorMessages;\n","import { motion, useReducedMotion } from \"framer-motion\";\n\nconst Progress = ({\n percents,\n stroke = \"currentColor\",\n emptyStroke = stroke,\n emptyStrokeOpacity = 0.25,\n duration = 0.5,\n delay = 0,\n size = 100,\n strokeWidth = 12,\n}) => {\n const shouldReduceMotion = useReducedMotion();\n const radius = 45;\n const circumference = Math.ceil(2 * Math.PI * radius);\n const fillPercents = Math.abs(\n Math.ceil((circumference / 100) * (percents - 100))\n );\n\n const transition = {\n duration: shouldReduceMotion ? 0 : duration,\n delay: shouldReduceMotion ? 0 : delay,\n };\n\n const variants = {\n hidden: { strokeDashoffset: circumference, transition },\n show: { strokeDashoffset: fillPercents, transition },\n };\n\n return (\n <div className=\"neeto-molecules-progress__circle\">\n <div\n className=\"neeto-molecules-progress__circle-wrapper\"\n style={{ height: size }}\n >\n <svg\n height={size}\n version=\"1.1\"\n viewBox=\"0 0 100 100\"\n width={size}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n {...{ strokeWidth }}\n className=\"circle\"\n cx=\"50\"\n cy=\"50\"\n fill=\"transparent\"\n r={radius}\n stroke={emptyStroke}\n strokeOpacity={emptyStrokeOpacity}\n />\n </svg>\n <svg\n height={size}\n viewBox=\"0 0 100 100\"\n width={size}\n style={{\n position: \"absolute\",\n transform: \"rotate(-90deg)\",\n overflow: \"visible\",\n top: 0,\n }}\n >\n <motion.circle\n {...{ stroke, strokeWidth, variants }}\n animate=\"show\"\n cx=\"50\"\n cy=\"50\"\n fill=\"transparent\"\n initial=\"hidden\"\n r={radius}\n strokeDasharray={circumference}\n strokeDashoffset={fillPercents}\n />\n </svg>\n </div>\n </div>\n );\n};\n\nexport default Progress;\n","import { withT } from \"neetocommons/react-utils\";\nimport { CheckCircle, Close, FileGeneric } from \"neetoicons\";\n\nimport Progress from \"./Progress\";\nimport { convertBytesToMb } from \"./utils\";\n\nconst FilePreview = withT(({ t, file, isUploading, cancel, progress }) => (\n <li className=\"neeto-molecules-file-upload__uploaded-list-item\">\n <div className=\"neeto-molecules-file-upload__file-preview\">\n {isUploading && (\n <div className=\"neeto-molecules-progress\">\n <Progress percents={progress || 0} size={20} />\n </div>\n )}\n {!isUploading && file.url && (\n <span\n aria-label={t(\"neetoMolecules.fileUpload.fileUploadSuccessful\")}\n className=\"neeto-molecules-file-upload__success-indicator\"\n role=\"img\"\n >\n <CheckCircle data-testid=\"file-upload-success\" />\n </span>\n )}\n {!isUploading && !file.url && <FileGeneric />}\n </div>\n <div className=\"neeto-molecules-file-upload__file-info\">\n {file.url ? (\n <a\n className=\"neeto-molecules-file-upload__file-info-name\"\n data-testid=\"file-name\"\n href={file.url}\n rel=\"noreferrer\"\n target=\"_blank\"\n >\n {file.name}\n </a>\n ) : (\n <span\n className=\"neeto-molecules-file-upload__file-info-name\"\n data-testid=\"file-name\"\n >\n {file.name}\n </span>\n )}\n <span className=\"neeto-molecules-file-upload__file-info-size\">\n {file.size ? `${convertBytesToMb(file.size)} MB` : \"\"}\n </span>\n </div>\n <button\n className=\"neeto-molecules-file-upload__remove-button\"\n type=\"button\"\n onClick={cancel}\n >\n <Close size={16} />\n </button>\n </li>\n));\n\nexport default FilePreview;\n","import { useState, useCallback, useEffect, useRef } from \"react\";\n\nimport { DirectUpload } from \"@rails/activestorage\";\nimport { assoc } from \"ramda\";\nimport { useDropzone } from \"react-dropzone\";\n\nimport { DIRECT_UPLOAD_URL } from \"../constants\";\nimport { convertMbToBytes, renderErrorMessage } from \"../utils\";\n\nconst useFileUpload = ({\n disabled,\n accept,\n multiple,\n maxFileSize,\n minFileSize,\n files,\n onChange,\n setError,\n setTouched,\n hasFileSizeLimit,\n}) => {\n const [uploadProgress, setUploadProgress] = useState({});\n const [uploadError, setUploadError] = useState(\"\");\n\n const filesRef = useRef(files);\n filesRef.current = files;\n\n const cancel = useCallback(\n index => () => {\n setUploadProgress(assoc(files[index].uploadId, null));\n const newFiles = files?.filter((_, idx) => idx !== index);\n onChange(newFiles);\n },\n [files]\n );\n\n useEffect(() => {\n uploadError && setError(uploadError);\n }, [uploadError]);\n\n const onDropAccepted = acceptedFiles => {\n setTouched(false);\n setUploadError(\"\");\n const initialFiles = acceptedFiles.map(file => ({\n // Filenames are not unique, so each file gets a unique id to match\n // upload results back to their entries.\n uploadId: `upload-${Math.random().toString(36).substring(2, 13)}`,\n name: file.name,\n size: file.size,\n }));\n\n const filesWithPendingUploads = multiple\n ? [...(files || []), ...initialFiles]\n : initialFiles;\n filesRef.current = filesWithPendingUploads;\n onChange(filesWithPendingUploads);\n\n acceptedFiles.forEach((file, fileIndex) => {\n const initialFile = initialFiles[fileIndex];\n const { uploadId } = initialFile;\n setUploadProgress(assoc(uploadId, 0));\n\n const upload = new DirectUpload(file, DIRECT_UPLOAD_URL, {\n directUploadWillStoreFileWithXHR: xhr => {\n xhr.upload.addEventListener(\"progress\", event => {\n const percentComplete = Math.round(\n (event.loaded / event.total) * 100\n );\n setUploadProgress(assoc(uploadId, percentComplete));\n });\n\n xhr.upload.addEventListener(\"load\", () => {\n setUploadProgress(assoc(uploadId, undefined));\n });\n },\n });\n\n upload.create((error, blob) => {\n if (error) {\n setUploadError(error);\n setUploadProgress(assoc(uploadId, null));\n\n return;\n }\n\n const uploadedFile = {\n uploadId,\n url: blob.blob_url,\n name: blob.filename,\n signedId: blob.signed_id,\n };\n\n let filesWithUploadMetadata = [{ ...initialFile, ...uploadedFile }];\n if (multiple) {\n filesWithUploadMetadata = filesRef.current.map(file =>\n file.uploadId === uploadedFile.uploadId\n ? { ...file, ...uploadedFile }\n : file\n );\n }\n\n filesRef.current = filesWithUploadMetadata;\n onChange(filesWithUploadMetadata);\n });\n });\n };\n\n const onDropRejected = fileRejections => {\n fileRejections.forEach(fileObject => {\n setTouched(true);\n if (fileObject.errors[0].code === \"too-many-files\") {\n setUploadError(renderErrorMessage(fileObject, maxFileSize, multiple));\n } else {\n setUploadError(renderErrorMessage(fileObject, maxFileSize, multiple));\n }\n });\n };\n\n const { getRootProps, getInputProps, isDragActive, fileRejections } =\n useDropzone({\n disabled,\n accept,\n multiple,\n minSize: convertMbToBytes(minFileSize),\n onDropAccepted,\n onDropRejected,\n ...(maxFileSize &&\n hasFileSizeLimit && { maxSize: convertMbToBytes(maxFileSize) }),\n });\n\n return {\n progress: uploadProgress,\n cancel,\n getRootProps,\n getInputProps,\n isDragActive,\n fileRejections,\n };\n};\n\nexport default useFileUpload;\n","import { isNotEmpty, noop } from \"neetocist\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty, isNotNil } from \"ramda\";\n\nimport { MAX_FILE_SIZE } from \"./constants\";\nimport DropZone from \"./DropZone\";\nimport ErrorMessages from \"./ErrorMessages\";\nimport \"./file-upload.scss\";\nimport FilePreview from \"./FilePreview\";\nimport useFileUpload from \"./hooks/useFileUpload\";\nimport { getAcceptedFileTypes } from \"./utils\";\n\nconst FileUpload = ({\n allowedFileTypes = \"\",\n multipleFilesAllowed = true,\n maxFileSize = MAX_FILE_SIZE,\n hasFileSizeLimit = true,\n isPreview = false,\n minFileSize = 0,\n files = [],\n onChange = noop,\n error,\n setError = noop,\n setTouched = noop,\n}) => {\n const {\n progress,\n cancel,\n getRootProps,\n getInputProps,\n isDragActive,\n fileRejections,\n } = useFileUpload({\n disabled: isPreview,\n accept: getAcceptedFileTypes(allowedFileTypes),\n multiple: multipleFilesAllowed,\n maxFileSize,\n minFileSize,\n files,\n onChange,\n setError,\n setTouched,\n hasFileSizeLimit,\n });\n\n const maxFileSizeInBytes = maxFileSize * 1024 * 1024;\n\n const isUploadingFile = file =>\n isNotNil(progress[file.uploadId]) &&\n (progress[file.uploadId] !== 100 || !file.url);\n\n const shouldShowError = error && isEmpty(fileRejections);\n\n return (\n <>\n <DropZone\n {...{\n allowedFileTypes,\n getInputProps,\n getRootProps,\n hasFileSizeLimit,\n isDragActive,\n maxFileSize,\n multipleFilesAllowed,\n }}\n />\n {!isEmpty(files) && (\n <ul className=\"neeto-molecules-file-upload__uploaded-list\">\n {files?.map((file, idx) => (\n <FilePreview\n {...{ file }}\n cancel={cancel(idx)}\n isUploading={isUploadingFile(file)}\n key={file.uploadId ?? idx}\n progress={progress[file.uploadId]}\n />\n ))}\n </ul>\n )}\n {isNotEmpty(fileRejections) && (\n <ErrorMessages {...{ fileRejections, maxFileSizeInBytes }} />\n )}\n {shouldShowError && (\n <p\n className=\"neeto-molecules-input__error-text\"\n data-testid=\"form-file-upload-input-error\"\n >\n <span className=\"neeto-molecules-input__error-text-style-handle\">\n {error}\n </span>\n </p>\n )}\n </>\n );\n};\n\nFileUpload.propTypes = {\n /**\n * Allowed file types for the file upload component.\n */\n allowedFileTypes: PropTypes.string,\n /**\n * Boolean to allow multiple files to be uploaded.\n */\n multipleFilesAllowed: PropTypes.bool,\n /**\n * Maximum file size allowed for the file upload component(MB).\n */\n maxFileSize: PropTypes.number,\n /**\n * Boolean to check if file size limit is enabled.\n */\n hasFileSizeLimit: PropTypes.bool,\n /**\n * Boolean to use component as a preview component.\n */\n isPreview: PropTypes.bool,\n /**\n * Minimum file size allowed for the file upload component(MB).\n */\n minFileSize: PropTypes.number,\n /**\n * Uploaded files.\n */\n files: PropTypes.arrayOf(\n PropTypes.shape({\n uploadId: PropTypes.string,\n name: PropTypes.string,\n size: PropTypes.number,\n url: PropTypes.string,\n })\n ),\n /**\n * Function to be called on file upload, with the updated files array.\n */\n onChange: PropTypes.func,\n /**\n * Error message to be displayed.\n */\n error: PropTypes.string,\n /**\n * Function to set error message.\n */\n setError: PropTypes.func,\n};\n\nexport default FileUpload;\n","import { useField } from \"formik\";\n\nimport FileUpload from \"./FileUpload\";\n\nconst FormikFileUpload = ({ name, ...props }) => {\n const [_, { value, touched, error }, { setValue, setTouched, setError }] =\n useField(name);\n\n const errorToDisplay = touched && error ? error : \"\";\n\n return (\n <FileUpload\n {...{ ...props, setError, setTouched }}\n error={errorToDisplay}\n files={value}\n onChange={setValue}\n />\n );\n};\n\nexport default FormikFileUpload;\n"],"names":["FILE_MIME_TYPES","pdf","doc","docx","xls","xlsx","csv","txt","rtf","html","htm","md","zip","mp3","wma","mp4","mpg","mpeg","flv","avi","jpg","jpeg","png","gif","json","epub","aac","svg","ico","ERROR_CODES","FILE_TOO_LARGE","FILE_INVALID_TYPE","TOO_MANY_FILES","DIRECT_UPLOAD_URL","MAX_FILE_SIZE","globalProps","endUserUploadedFileSizeLimitInMb","DropZone","_ref","isDragActive","getRootProps","getInputProps","multipleFilesAllowed","maxFileSize","allowedFileTypes","hasFileSizeLimit","_useTranslation","useTranslation","t","shouldAllowSingleFileUpload","shouldShowFileSizeLimit","_jsx","_objectSpread","className","classnames","children","_jsxs","FileUpload","size","htmlFor","unit","types","getAcceptedFileTypes","accepted","split","forEach","type","mimeTypes","extension","concat","isNotPresent","mimeType","push","convertBytesToMb","bytes","toFixed","renderErrorMessage","errorObject","isMultiple","error","errors","file","code","fileName","name","maxSize","Math","round","fileType","path","extname","maxFiles","convertMbToBytes","mb","ErrorMessages","fileRejections","maxFileSizeInBytes","hasMultipleFileErrors","some","_ref2","_Fragment","filter","_ref3","map","index","Progress","percents","_ref$stroke","stroke","_ref$emptyStroke","emptyStroke","_ref$emptyStrokeOpaci","emptyStrokeOpacity","_ref$duration","duration","_ref$delay","delay","_ref$size","_ref$strokeWidth","strokeWidth","shouldReduceMotion","useReducedMotion","radius","circumference","ceil","PI","fillPercents","abs","transition","variants","hidden","strokeDashoffset","show","style","height","version","viewBox","width","xmlns","cx","cy","fill","r","strokeOpacity","position","transform","overflow","top","motion","circle","animate","initial","strokeDasharray","FilePreview","withT","isUploading","cancel","progress","url","role","CheckCircle","FileGeneric","href","rel","target","onClick","Close","useFileUpload","disabled","accept","multiple","minFileSize","files","onChange","setError","setTouched","_useState","useState","_useState2","_slicedToArray","uploadProgress","setUploadProgress","_useState3","_useState4","uploadError","setUploadError","filesRef","useRef","current","useCallback","assoc","uploadId","newFiles","_","idx","useEffect","onDropAccepted","acceptedFiles","initialFiles","random","toString","substring","filesWithPendingUploads","_toConsumableArray","fileIndex","initialFile","upload","DirectUpload","directUploadWillStoreFileWithXHR","xhr","addEventListener","event","percentComplete","loaded","total","undefined","create","blob","uploadedFile","blob_url","filename","signedId","signed_id","filesWithUploadMetadata","onDropRejected","fileObject","_useDropzone","useDropzone","minSize","_ref$allowedFileTypes","_ref$multipleFilesAll","_ref$maxFileSize","_ref$hasFileSizeLimit","_ref$isPreview","isPreview","_ref$minFileSize","_ref$files","_ref$onChange","noop","_ref$setError","_ref$setTouched","_useFileUpload","isUploadingFile","isNotNil","shouldShowError","isEmpty","_file$uploadId","_createElement","key","isNotEmpty","FormikFileUpload","props","_objectWithoutProperties","_excluded","_useField","useField","_useField2","_useField2$","value","touched","_useField2$2","setValue","errorToDisplay"],"mappings":"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"}
@@ -197,6 +197,7 @@ var ReplyToField = function ReplyToField(_ref) {
197
197
  "data-testid": "reply-to-select-field",
198
198
  label: t("neetoMolecules.emailForm.labels.replyTo"),
199
199
  name: "replyTo",
200
+ size: "large",
200
201
  onChange: function onChange(value) {
201
202
  return setFieldValue("replyTo", value !== null && value !== void 0 ? value : "");
202
203
  }
@@ -205,7 +206,6 @@ var ReplyToField = function ReplyToField(_ref) {
205
206
  return /*#__PURE__*/jsxRuntime.jsx(formik$1.Input, {
206
207
  labelProps: labelProps,
207
208
  autoFocus: true,
208
- nakedInput: true,
209
209
  required: true,
210
210
  className: "w-full",
211
211
  "data-testid": "reply-to-input-field",
@@ -271,8 +271,8 @@ var SubjectField = function SubjectField(_ref) {
271
271
  var tagClickHandler = function tagClickHandler(_ref2) {
272
272
  var slug = _ref2.key,
273
273
  category = _ref2.category;
274
- var textAreaElement = document.querySelector("textarea[name=".concat(name, "]"));
275
- var splitIndex = isFieldFocusedOnce && textAreaElement ? textAreaElement.selectionEnd : text.length;
274
+ var inputElement = document.querySelector("[name=".concat(name, "]"));
275
+ var splitIndex = isFieldFocusedOnce && inputElement ? inputElement.selectionEnd : text.length;
276
276
  var variable = category ? "".concat(category, ".").concat(slug) : slug;
277
277
  var updatedSubject = [text.slice(0, splitIndex), " {{".concat(variable, "}}"), text.slice(splitIndex)].join("");
278
278
  updateText(updatedSubject);
@@ -282,19 +282,22 @@ var SubjectField = function SubjectField(_ref) {
282
282
  name: name,
283
283
  onBlur: onBlur,
284
284
  required: required,
285
- nakedInput: true,
286
285
  label: t("neetoMolecules.emailForm.labels.subject"),
287
286
  placeholder: t("neetoMolecules.emailForm.placeholders.subject"),
287
+ size: "large",
288
288
  value: text,
289
- suffix: /*#__PURE__*/jsxRuntime.jsx(v2_DynamicVariables, {
290
- buttonProps: {
291
- className: "m-1"
292
- },
293
- dropdownProps: {
294
- className: "overflow-y-auto"
295
- },
296
- variables: subjectVariables,
297
- onVariableClick: tagClickHandler
289
+ suffix: /*#__PURE__*/jsxRuntime.jsx("div", {
290
+ className: "me-2 inline-flex",
291
+ children: /*#__PURE__*/jsxRuntime.jsx(v2_DynamicVariables, {
292
+ buttonProps: {
293
+ className: "self-center"
294
+ },
295
+ dropdownProps: {
296
+ className: "overflow-y-auto"
297
+ },
298
+ variables: subjectVariables,
299
+ onVariableClick: tagClickHandler
300
+ })
298
301
  }),
299
302
  onChange: general.withEventTargetValue(updateText),
300
303
  onFocus: function onFocus() {
@@ -386,7 +389,7 @@ var EmailForm = function EmailForm(_ref) {
386
389
  showCcField: showCcField,
387
390
  showSendToTextField: showSendToTextField
388
391
  }), showReplyToField && /*#__PURE__*/jsxRuntime.jsx("div", {
389
- className: "border-border w-full border-b pb-1",
392
+ className: "w-full",
390
393
  children: /*#__PURE__*/jsxRuntime.jsx(ReplyToField, _objectSpread$2({
391
394
  options: replyToOptions
392
395
  }, replyToFieldProps))
@@ -400,7 +403,7 @@ var EmailForm = function EmailForm(_ref) {
400
403
  error = _ref3$meta.error,
401
404
  touched = _ref3$meta.touched;
402
405
  return /*#__PURE__*/jsxRuntime.jsx("div", {
403
- className: "border-border w-full border-b pb-1",
406
+ className: "w-full",
404
407
  children: /*#__PURE__*/jsxRuntime.jsx(SubjectField, {
405
408
  onBlur: onBlur,
406
409
  subjectVariables: subjectVariables,
@@ -1 +1 @@
1
- {"version":3,"file":"EmailForm.js","sources":["../../../src/v2/components/EmailForm/constants.js","../../../src/v2/components/EmailForm/contexts/EmailForm.js","../../../src/v2/components/EmailForm/utils.js","../../../src/v2/components/EmailForm/ReplyToField.jsx","../../../src/v2/components/EmailForm/SendToField.jsx","../../../src/v2/components/EmailForm/SubjectField.jsx","../../../src/v2/components/EmailForm/EmailForm.jsx","../../../src/v2/components/EmailForm/EmailFormComponent/index.jsx","../../../src/v2/components/EmailForm/EmailFormProvider.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { isEditorEmpty } from \"neetoeditor/v2\";\nimport { prop } from \"ramda\";\nimport * as yup from \"yup\";\n\nexport const INITIAL_FORM_VALUES = {\n sendTo: [],\n sendToId: \"\",\n sendToCc: [],\n sendToBcc: [],\n replyTo: \"\",\n showCopyEmails: false,\n subject: \"\",\n message: \"\",\n isEnabled: false,\n};\n\nexport const EMAIL_FORM_VALIDATION_SCHEMA = yup.object({\n subject: yup\n .string()\n .required(t(\"neetoMolecules.emailForm.errors.subjectRequired\")),\n message: yup\n .string()\n .test(\n \"message\",\n t(\"neetoMolecules.emailForm.errors.messageRequired\"),\n value => !isEditorEmpty(value)\n ),\n});\n\nexport const sendToFieldValidation = maxEmails => {\n const validation = yup\n .array()\n .test(\n \"all-emails-valid\",\n t(\"neetoMolecules.emailForm.errors.invalidEmailAddress\"),\n emails => emails?.every(prop(\"valid\"))\n )\n .test(\n \"max-email-count\",\n t(\"neetoMolecules.emailForm.errors.maxEmails\", { count: maxEmails }),\n emails => emails?.length <= maxEmails\n );\n\n return yup.object({\n sendTo: validation\n .min(\n 1,\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.fields.sendToEmailAddress\"),\n })\n )\n .nullable(),\n sendToCc: validation,\n sendToBcc: validation,\n });\n};\n\nexport const SEND_TO_ID_FIELD_VALIDATION = yup.object({\n sendToId: yup.string().required(\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.labels.sendTo\"),\n })\n ),\n});\n\nexport const REPLY_TO_FIELD_VALIDATION = yup.object({\n replyTo: yup\n .string()\n .nullable()\n .email(t(\"neetoMolecules.emailForm.errors.invalidEmailAddress\"))\n .required(\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.fields.replyToEmailAddress\"),\n })\n ),\n});\n\nexport const EDITOR_ADDONS = [\n \"highlight\",\n \"emoji\",\n \"code-block\",\n \"block-quote\",\n \"image-upload\",\n \"divider\",\n \"video-embed\",\n];\n\nexport const ALLOWED_FILE_PICKER_TYPES = [\".csv\"];\n","/* eslint-disable @bigbinary/neeto/use-zustand-for-global-state-management */\nimport { createContext } from \"react\";\n\nconst EmailFormContext = createContext({\n showSendToField: false,\n showSendToAsRadio: false,\n showReplyToField: false,\n showCcField: false,\n showBccField: false,\n});\n\nexport { EmailFormContext };\n","import { t } from \"i18next\";\nimport { isPresent } from \"neetocist\";\n\nimport {\n EMAIL_FORM_VALIDATION_SCHEMA,\n REPLY_TO_FIELD_VALIDATION,\n sendToFieldValidation,\n SEND_TO_ID_FIELD_VALIDATION,\n} from \"./constants\";\n\nexport const getValidationSchema = ({\n showSendToField,\n showReplyToField,\n showSendToAsRadio,\n customValidations,\n maxEmails,\n}) => {\n let schema = EMAIL_FORM_VALIDATION_SCHEMA.clone();\n\n if (showSendToField) {\n schema = schema.concat(\n showSendToAsRadio\n ? SEND_TO_ID_FIELD_VALIDATION\n : sendToFieldValidation(maxEmails)\n );\n }\n\n if (showReplyToField) schema = schema.concat(REPLY_TO_FIELD_VALIDATION);\n\n const isYupObject = customValidations.type === \"object\";\n\n if (isYupObject) {\n const customFields = customValidations.fields || {};\n schema = schema.shape(customFields);\n } else if (typeof customValidations === \"object\") {\n schema = schema.shape(customValidations);\n }\n\n return schema;\n};\n\nexport const getReplyToFieldLabelProps = ({ popoverProps }) => ({\n helpIconProps: {\n className: \"reply-to-help-icon\",\n ...(isPresent(popoverProps)\n ? {\n popoverProps: {\n ...popoverProps,\n description:\n popoverProps.description ||\n t(\"neetoMolecules.emailForm.tooltips.replyTo\"),\n },\n }\n : {\n tooltipProps: {\n content: t(\"neetoMolecules.emailForm.tooltips.replyTo\"),\n },\n }),\n },\n});\n\nexport const resolveContent = (content, func, variable) => {\n if (typeof func === \"function\") {\n return func(content, variable);\n }\n\n return content;\n};\n\nexport const normalizeHtmlString = str => {\n if (typeof str !== \"string\") return str;\n\n return str\n .replace(/\\uFEFF/g, \"\")\n .replace(/\\r\\n|\\r/g, \"\\n\")\n .replace(/&nbsp;/g, \" \")\n .replace(/[\\t ]+/g, \" \")\n .replace(/\\s*\\n\\s*/g, \"\\n\")\n .replace(/\\n+/g, \"\\n\")\n .replace(/>\\s+</g, \"><\")\n .trim();\n};\n","import { Input, Select } from \"@bigbinary/neeto-atoms/formik\";\nimport { useFormikContext } from \"formik\";\nimport { isNotEmpty } from \"neetocist\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { getReplyToFieldLabelProps } from \"./utils\";\n\nconst ReplyToField = ({ options = [], popoverProps = {} }) => {\n const { t } = useTranslation();\n const { setFieldValue } = useFormikContext();\n\n const isDropdownField = isNotEmpty(options);\n const labelProps = getReplyToFieldLabelProps({ popoverProps });\n\n if (isDropdownField) {\n return (\n <Select\n {...{ labelProps, options }}\n isClearable\n className=\"w-full\"\n data-testid=\"reply-to-select-field\"\n label={t(\"neetoMolecules.emailForm.labels.replyTo\")}\n name=\"replyTo\"\n onChange={value => setFieldValue(\"replyTo\", value ?? \"\")}\n />\n );\n }\n\n return (\n <Input\n {...{ labelProps }}\n autoFocus\n nakedInput\n required\n className=\"w-full\"\n data-testid=\"reply-to-input-field\"\n label={t(\"neetoMolecules.emailForm.labels.replyTo\")}\n name=\"replyTo\"\n placeholder={t(\"neetoMolecules.emailForm.placeholders.emailPlaceholder\")}\n size=\"large\"\n onChange={event =>\n setFieldValue(\"replyTo\", event.target.value?.toLowerCase())\n }\n />\n );\n};\n\nexport default ReplyToField;\n","import { useTranslation } from \"react-i18next\";\n\nimport SendToFields from \"../SendToFields\";\n\nconst SendToField = ({ showBccField, showCcField, showSendToTextField }) => {\n const { t } = useTranslation();\n\n if (!showSendToTextField && !showBccField && !showCcField) return null;\n\n return (\n <SendToFields\n showCcBccButton\n showBccField={showSendToTextField ? false : showBccField}\n showCcField={showSendToTextField ? false : showCcField}\n showSendToField={showSendToTextField}\n bccInputProps={{\n label: t(\"neetoMolecules.emailForm.labels.bCc\"),\n name: \"sendToBcc\",\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n }}\n ccInputProps={{\n label: t(\"neetoMolecules.emailForm.labels.cc\"),\n name: \"sendToCc\",\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n }}\n emailInputProps={{\n id: \"sendTo\",\n name: \"sendTo\",\n label: t(\"neetoMolecules.emailForm.labels.sendTo\"),\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n required: true,\n }}\n />\n );\n};\n\nexport default SendToField;\n","import { useState } from \"react\";\n\nimport { Input } from \"@bigbinary/neeto-atoms\";\nimport { withEventTargetValue } from \"neetocommons/v2/utils/general\";\nimport { useTranslation } from \"react-i18next\";\n\nimport DynamicVariables from \"../DynamicVariables\";\n\nconst SubjectField = ({\n name,\n text,\n updateText,\n subjectVariables = [],\n error,\n required = false,\n onBlur,\n}) => {\n const [isFieldFocusedOnce, setIsFieldFocusedOnce] = useState(false);\n\n const { t } = useTranslation();\n\n const tagClickHandler = ({ key: slug, category }) => {\n const textAreaElement = document.querySelector(`textarea[name=${name}]`);\n const splitIndex =\n isFieldFocusedOnce && textAreaElement\n ? textAreaElement.selectionEnd\n : text.length;\n\n const variable = category ? `${category}.${slug}` : slug;\n const updatedSubject = [\n text.slice(0, splitIndex),\n ` {{${variable}}}`,\n text.slice(splitIndex),\n ].join(\"\");\n updateText(updatedSubject);\n };\n\n return (\n <Input\n {...{ error, name, onBlur, required }}\n nakedInput\n label={t(\"neetoMolecules.emailForm.labels.subject\")}\n placeholder={t(\"neetoMolecules.emailForm.placeholders.subject\")}\n value={text}\n suffix={\n <DynamicVariables\n buttonProps={{ className: \"m-1\" }}\n dropdownProps={{ className: \"overflow-y-auto\" }}\n variables={subjectVariables}\n onVariableClick={tagClickHandler}\n />\n }\n onChange={withEventTargetValue(updateText)}\n onFocus={() => setIsFieldFocusedOnce(true)}\n />\n );\n};\n\nexport default SubjectField;\n","import { useContext } from \"react\";\n\nimport { Button } from \"@bigbinary/neeto-atoms\";\nimport { ActionBlock, RadioGroup } from \"@bigbinary/neeto-atoms/formik\";\nimport classnames from \"classnames\";\nimport { Field, useFormikContext } from \"formik\";\nimport { notEqualsDeep, isNotEmpty } from \"neetocist\";\nimport { globalProps } from \"neetocommons/v2/initializers\";\nimport { FormikEditor } from \"neetoeditor/v2\";\nimport PropTypes from \"prop-types\";\nimport { equals } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { EDITOR_ADDONS } from \"./constants\";\nimport { EmailFormContext } from \"./contexts/EmailForm\";\nimport ReplyToField from \"./ReplyToField\";\nimport SendToField from \"./SendToField\";\nimport SubjectField from \"./SubjectField\";\nimport { normalizeHtmlString } from \"./utils\";\n\nconst EmailForm = ({\n messageVariables = [],\n subjectVariables = [],\n handleCancel,\n handleResetToDefault,\n isLoading,\n replyToFieldProps,\n sendToFieldProps,\n replyToOptions,\n sendToOptions = [],\n isUpdating = false,\n isResetting = false,\n showFields = true,\n className = \"\",\n editorAddons = EDITOR_ADDONS,\n showResetToDefaultButton,\n editorRef = null,\n defaultValues = {},\n}) => {\n const { t } = useTranslation();\n\n const {\n showSendToField,\n showSendToAsRadio,\n showReplyToField,\n showCcField,\n showBccField,\n } = useContext(EmailFormContext);\n\n const { setFieldValue, values, resetForm } = useFormikContext();\n\n const normalizedValues = {\n ...values,\n message: normalizeHtmlString(values.message),\n };\n\n const normalizedDefaultValues = {\n ...defaultValues,\n message: normalizeHtmlString(defaultValues?.message),\n };\n\n normalizedDefaultValues.replyTo ||= globalProps.user?.email;\n\n const disabled = equals(normalizedValues, normalizedDefaultValues);\n\n const sendToFieldOptions = sendToFieldProps?.options || sendToOptions;\n const showSendToRadioField =\n showSendToField && showSendToAsRadio && isNotEmpty(sendToFieldOptions);\n\n const showSendToTextField = showSendToField && !showSendToRadioField;\n\n return (\n <div\n data-testid=\"email-form\"\n className={classnames(\"flex flex-1 flex-col items-start gap-2 !pb-0\", {\n [className]: className,\n })}\n >\n <div className=\"w-full grow\">\n {showFields && (\n <div className=\"flex w-full flex-col items-start justify-start gap-5\">\n {showSendToRadioField && (\n <RadioGroup\n className=\"pb-2\"\n data-testid=\"send-to-id\"\n label={t(\"neetoMolecules.emailForm.labels.sendTo\")}\n labelProps={{ required: true }}\n name=\"sendToId\"\n >\n {sendToFieldOptions.map(({ label, value }) => (\n <RadioGroup.Item {...{ label, value }} key={value} />\n ))}\n </RadioGroup>\n )}\n <SendToField\n {...{ showBccField, showCcField, showSendToTextField }}\n />\n {showReplyToField && (\n <div className=\"border-border w-full border-b pb-1\">\n <ReplyToField options={replyToOptions} {...replyToFieldProps} />\n </div>\n )}\n <Field name=\"subject\">\n {({ field: { value, onBlur }, meta: { error, touched } }) => (\n <div className=\"border-border w-full border-b pb-1\">\n <SubjectField\n {...{ onBlur, subjectVariables }}\n required\n error={touched && error ? t(error) : undefined}\n name=\"subject\"\n text={value}\n updateText={text => setFieldValue(\"subject\", text)}\n />\n </div>\n )}\n </Field>\n <div className=\"w-full\" data-testid=\"message-input-container\">\n <FormikEditor\n required\n addons={editorAddons}\n data-testid=\"message-input-field\"\n hideSlashCommands={false}\n id=\"form_message\"\n menuType=\"fixed\"\n name=\"message\"\n placeholder={t(\"neetoMolecules.emailForm.placeholders.message\")}\n ref={editorRef}\n variables={messageVariables}\n shouldUpdate={(nextProps, prevProps) =>\n notEqualsDeep(nextProps.variables, prevProps.variables)\n }\n />\n </div>\n </div>\n )}\n </div>\n <div className=\"bg-background z-10 flex w-full justify-between py-6 lg:sticky lg:bottom-0\">\n <ActionBlock\n cancelButtonProps={{ onClick: handleCancel }}\n isSubmitting={isLoading || isUpdating}\n />\n {showResetToDefaultButton && (\n <div>\n <Button\n {...{ disabled }}\n data-testid=\"reset-to-default-button\"\n label={t(\"neetoMolecules.emailForm.labels.resetToDefault\")}\n loading={isResetting}\n variant=\"secondary\"\n onClick={() => {\n resetForm();\n handleResetToDefault();\n }}\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nEmailForm.propTypes = {\n /**\n * This is an array of objects used for templating within the message field. Each object in the array has a **label** and a **key**.\n */\n messageVariables: PropTypes.array,\n /**\n * This is an array of objects used for templating within the subject field. Each object in the array has a **label** and a **key**.\n */\n subjectVariables: PropTypes.array,\n /**\n * This function that gets triggered when the 'Cancel' button is clicked.\n */\n handleCancel: PropTypes.func,\n /**\n * This function that gets triggered when the 'Reset to default' button is clicked.\n */\n handleResetToDefault: PropTypes.func,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Save changes' button.\"\n */\n isLoading: PropTypes.bool,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Reset to default' button.\n */\n isResetting: PropTypes.bool,\n /**\n * An array of objects, with each object having **label** and **value** properties. This prop transforms the 'Reply To' field into a dropdown menu with given options. Without this prop, 'Reply To' will be a text input field.\n */\n replyToOptions: PropTypes.array,\n /**\n * An array of objects, with each object having **label** and **value** properties. This prop transforms the 'Send To' field into a radio group with given options. Without this prop, 'Send To' will be a multi email input field.\n */\n sendToOptions: PropTypes.array,\n /**\n * A Boolean flag indicating whether an update operation is currently in progress. When set to `true`, the 'Save changes' button is disabled.\n */\n isUpdating: PropTypes.bool,\n /**\n * To provide additional classnames to the button.\n */\n className: PropTypes.string,\n /**\n * To provide props to the replyToField. Supports options that will\n * be rendered as the reply to options and popover props.\n */\n replyToFieldProps: PropTypes.object,\n /**\n * To provide props to the sendToField. Supports sendTo options.\n */\n sendToFieldProps: PropTypes.object,\n /**\n * This Boolean value, when set to true, shows reset to default button.\n */\n showResetToDefaultButton: PropTypes.bool,\n /**\n * A reference to the editor.\n */\n editorRef: PropTypes.any,\n /**\n * To override the default editor addons\n */\n editorAddons: PropTypes.array,\n /**\n * The default values for the email form.\n */\n defaultValues: PropTypes.object,\n};\n\nexport default EmailForm;\n","import { Tooltip } from \"@bigbinary/neeto-atoms\";\nimport { BlockNavigation, Switch } from \"@bigbinary/neeto-atoms/formik\";\nimport { noop, isNotEmpty } from \"neetocist\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty, pluck } from \"ramda\";\n\nimport { EmailFormProvider, EmailForm, EmailPreview } from \"..\";\nimport Header from \"../../Header\";\nimport MobilePreviewHeader from \"../../MobilePreviewHeader\";\nimport { INITIAL_FORM_VALUES } from \"../constants\";\nimport { resolveContent } from \"../utils\";\n\nconst EmailFormComponent = ({\n onSubmit = noop,\n initialValues = INITIAL_FORM_VALUES,\n children,\n formikProps,\n validationSchema,\n showSendToField = false,\n showReplyToField = false,\n showSendToAsRadio = false,\n blockNavigation = true,\n showCcField = false,\n showBccField = false,\n isLoading = false,\n maxEmails = 10,\n emailFormProps = {},\n emailPreviewProps = {},\n headerProps = {},\n tooltipProps = {},\n switchProps = {},\n mobilePreviewProps = {},\n}) => {\n const { formatBody, formatSubject, bodyVariables, subjectVariables } =\n emailPreviewProps;\n\n const shouldShowFields = values => isEmpty(switchProps) || values.isEnabled;\n\n return (\n <EmailFormProvider\n {...{\n formikProps,\n initialValues,\n maxEmails,\n onSubmit,\n showBccField,\n showCcField,\n showReplyToField,\n showSendToAsRadio,\n showSendToField,\n validationSchema,\n }}\n >\n {({ values, isSubmitting }) => (\n <div className=\"flex h-[calc(100dvh-64px)] flex-grow flex-col overflow-y-auto lg:flex-row\">\n <div className=\"flex w-full flex-col px-5 md:px-10 lg:h-full lg:w-1/2 lg:overflow-y-auto\">\n {blockNavigation && <BlockNavigation />}\n {isNotEmpty(headerProps) && (\n <Header className=\"px-0\" size=\"small\" {...headerProps} />\n )}\n {isNotEmpty(switchProps) && (\n <div className=\"flex items-center justify-between gap-y-0.5 pb-6\">\n <Tooltip\n disabled={!switchProps?.disabled}\n position=\"top\"\n {...tooltipProps}\n >\n <div className=\"flex items-center gap-2\">\n <Switch\n data-testid=\"switch\"\n name=\"isEnabled\"\n {...switchProps}\n />\n </div>\n </Tooltip>\n </div>\n )}\n {shouldShowFields(values) && children}\n <EmailForm\n isLoading={isSubmitting || isLoading}\n isUpdating={isSubmitting || isLoading}\n showFields={shouldShowFields(values)}\n {...emailFormProps}\n />\n </div>\n {shouldShowFields(values) && (\n <MobilePreviewHeader\n className=\"lg:hidden\"\n {...mobilePreviewProps}\n />\n )}\n {shouldShowFields(values) && (\n <div className=\"bg-muted w-full px-6 py-10 lg:w-1/2 lg:overflow-y-auto\">\n <EmailPreview\n body={resolveContent(values.message, formatBody, bodyVariables)}\n from={values.sendFrom}\n to={pluck(\"value\", values?.sendTo ?? [])}\n subject={resolveContent(\n values.subject,\n formatSubject,\n subjectVariables\n )}\n {...emailPreviewProps}\n />\n </div>\n )}\n </div>\n )}\n </EmailFormProvider>\n );\n};\n\nEmailFormComponent.propTypes = {\n /**\n * A function that will be triggered with input values when the 'Save changes' button is clicked.\n */\n onSubmit: PropTypes.func,\n /**\n * These are the predefined values that populate the form fields when the form is first rendered.\n */\n initialValues: PropTypes.shape({\n sendTo: PropTypes.array,\n sendToId: PropTypes.string,\n sendToCc: PropTypes.array,\n sendToBcc: PropTypes.array,\n replyTo: PropTypes.string,\n showCopyEmails: PropTypes.bool,\n subject: PropTypes.string,\n message: PropTypes.string,\n isEnabled: PropTypes.bool,\n }),\n /**\n * A prop that can be used to override the default Formik properties that are set within the component, providing customization flexibility.\n */\n formikProps: PropTypes.object,\n /**\n * A Yup object defining custom form validation rules, which will be merged with the default rules using the concat method.\n */\n validationSchema: PropTypes.object,\n /**\n * A prop used for rendering either standard React element or a render prop function.\n */\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be displayed or not.\n */\n showSendToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**replyTo**' field should be displayed or not.\n */\n showReplyToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be radio type or not.\n */\n showSendToAsRadio: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**Cc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showCcField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**Bcc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showBccField: PropTypes.bool,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Save changes' button.\"\n */\n isLoading: PropTypes.bool,\n /**\n * A prop to limit number of send to emails\n */\n maxEmails: PropTypes.number,\n /**\n * These are the values that will be passed to EmailForm Component\n */\n emailFormProps: PropTypes.shape({\n messageVariables: PropTypes.array,\n subjectVariables: PropTypes.array,\n handleCancel: PropTypes.func,\n handleResetToDefault: PropTypes.func,\n isLoading: PropTypes.bool,\n replyToFieldProps: PropTypes.object,\n sendToFieldProps: PropTypes.object,\n replyToOptions: PropTypes.array,\n sendToOptions: PropTypes.array,\n isUpdating: PropTypes.bool,\n showFields: PropTypes.bool,\n className: PropTypes.string,\n showResetToDefaultButton: PropTypes.bool,\n editorRef: PropTypes.any,\n editorAddons: PropTypes.array,\n }),\n /**\n * These are the values that will be passed to EmailPreview Component\n */\n emailPreviewProps: PropTypes.shape({\n to: PropTypes.array,\n from: PropTypes.string,\n subject: PropTypes.string,\n body: PropTypes.string,\n actionButtonText: PropTypes.string,\n logo: PropTypes.string,\n customContent: PropTypes.string,\n className: PropTypes.string,\n formatBody: PropTypes.func,\n formatSubject: PropTypes.func,\n bodyVariables: PropTypes.object,\n subjectVariables: PropTypes.object,\n }),\n /**\n * These are the values that will be passed to Header Component\n */\n headerProps: PropTypes.object,\n /**\n * These are the values that will be passed to Tooltip Component\n */\n tooltipProps: PropTypes.object,\n /**\n * These are the values that will be passed to Switch Component\n */\n switchProps: PropTypes.object,\n /**\n * These are the values that will be passed to MobilePreviewHeader Component\n */\n mobilePreviewProps: PropTypes.object,\n};\n\nexport default EmailFormComponent;\n","import { Form } from \"@bigbinary/neeto-atoms/formik\";\nimport { noop } from \"neetocist\";\nimport { globalProps } from \"neetocommons/v2/initializers\";\nimport PropTypes from \"prop-types\";\n\nimport { INITIAL_FORM_VALUES } from \"./constants\";\nimport { EmailFormContext } from \"./contexts/EmailForm\";\nimport { getValidationSchema } from \"./utils\";\n\nconst EmailFormProvider = ({\n onSubmit = noop,\n initialValues = INITIAL_FORM_VALUES,\n children,\n formikProps,\n validationSchema: customValidations = {},\n showSendToField = false,\n showReplyToField = false,\n showSendToAsRadio = false,\n showCcField = false,\n showBccField = false,\n maxEmails = 10,\n}) => (\n <div data-testid=\"email-form-provider\">\n <EmailFormContext.Provider\n value={{\n showSendToField,\n showSendToAsRadio,\n showReplyToField,\n showCcField,\n showBccField,\n }}\n >\n <Form\n formikProps={{\n enableReinitialize: true,\n validationSchema: getValidationSchema({\n showSendToField,\n showReplyToField,\n showSendToAsRadio,\n customValidations,\n maxEmails,\n }),\n initialValues: {\n ...initialValues,\n replyTo: initialValues.replyTo || globalProps.user?.email,\n },\n onSubmit,\n ...formikProps,\n }}\n >\n {children}\n </Form>\n </EmailFormContext.Provider>\n </div>\n);\n\nEmailFormProvider.propTypes = {\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be displayed or not.\n */\n showSendToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**replyTo**' field should be displayed or not.\n */\n showReplyToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be radio type or not.\n */\n showSendToAsRadio: PropTypes.bool,\n /**\n * A function that will be triggered with input values when the 'Save changes' button is clicked.\n */\n onSubmit: PropTypes.func,\n /**\n * These are the predefined values that populate the form fields when the form is first rendered.\n */\n initialValues: PropTypes.shape({\n sendTo: PropTypes.array,\n sendToId: PropTypes.string,\n sendToCc: PropTypes.array,\n sendToBcc: PropTypes.array,\n replyTo: PropTypes.string,\n showCopyEmails: PropTypes.bool,\n subject: PropTypes.string,\n message: PropTypes.string,\n }),\n /**\n * A prop used for rendering either standard React element or a render prop function.\n */\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n /**\n * A prop that can be used to override the default Formik properties that are set within the component, providing customization flexibility.\n */\n formikProps: PropTypes.object,\n /**\n * A Yup object defining custom form validation rules, which will be merged with the default rules using the concat method.\n */\n validationSchema: PropTypes.object,\n /**\n * A prop to limit number of send to emails\n */\n maxEmails: PropTypes.number,\n /**\n * A Boolean value that determines whether the '**Cc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showCcField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**Bcc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showBccField: PropTypes.bool,\n};\n\nexport default EmailFormProvider;\n"],"names":["INITIAL_FORM_VALUES","sendTo","sendToId","sendToCc","sendToBcc","replyTo","showCopyEmails","subject","message","isEnabled","EMAIL_FORM_VALIDATION_SCHEMA","yup","object","string","required","t","test","value","isEditorEmpty","sendToFieldValidation","maxEmails","validation","array","emails","every","prop","count","length","min","entity","nullable","SEND_TO_ID_FIELD_VALIDATION","REPLY_TO_FIELD_VALIDATION","email","EDITOR_ADDONS","EmailFormContext","createContext","showSendToField","showSendToAsRadio","showReplyToField","showCcField","showBccField","getValidationSchema","_ref","customValidations","schema","clone","concat","isYupObject","type","customFields","fields","shape","_typeof","getReplyToFieldLabelProps","_ref2","popoverProps","helpIconProps","_objectSpread","className","isPresent","description","tooltipProps","content","resolveContent","func","variable","normalizeHtmlString","str","replace","trim","ReplyToField","_ref$options","options","_ref$popoverProps","_useTranslation","useTranslation","_useFormikContext","useFormikContext","setFieldValue","isDropdownField","isNotEmpty","labelProps","_jsx","Select","isClearable","label","name","onChange","Input","autoFocus","nakedInput","placeholder","size","event","_event$target$value","target","toLowerCase","SendToField","showSendToTextField","SendToFields","showCcBccButton","bccInputProps","ccInputProps","emailInputProps","id","SubjectField","text","updateText","_ref$subjectVariables","subjectVariables","error","_ref$required","onBlur","_useState","useState","_useState2","_slicedToArray","isFieldFocusedOnce","setIsFieldFocusedOnce","tagClickHandler","slug","key","category","textAreaElement","document","querySelector","splitIndex","selectionEnd","updatedSubject","slice","join","suffix","DynamicVariables","buttonProps","dropdownProps","variables","onVariableClick","withEventTargetValue","onFocus","EmailForm","_globalProps$user","_ref$messageVariables","messageVariables","handleCancel","handleResetToDefault","isLoading","replyToFieldProps","sendToFieldProps","replyToOptions","_ref$sendToOptions","sendToOptions","_ref$isUpdating","isUpdating","_ref$isResetting","isResetting","_ref$showFields","showFields","_ref$className","_ref$editorAddons","editorAddons","showResetToDefaultButton","_ref$editorRef","editorRef","_ref$defaultValues","defaultValues","_useContext","useContext","values","resetForm","normalizedValues","normalizedDefaultValues","globalProps","user","disabled","equals","sendToFieldOptions","showSendToRadioField","_jsxs","classnames","_defineProperty","children","RadioGroup","map","_createElement","Item","Field","_ref3","_ref3$field","field","_ref3$meta","meta","touched","undefined","FormikEditor","addons","hideSlashCommands","menuType","ref","shouldUpdate","nextProps","prevProps","notEqualsDeep","ActionBlock","cancelButtonProps","onClick","isSubmitting","Button","loading","variant","EmailFormComponent","_ref$onSubmit","onSubmit","noop","_ref$initialValues","initialValues","formikProps","validationSchema","_ref$showSendToField","_ref$showReplyToField","_ref$showSendToAsRadi","_ref$blockNavigation","blockNavigation","_ref$showCcField","_ref$showBccField","_ref$isLoading","_ref$maxEmails","_ref$emailFormProps","emailFormProps","_ref$emailPreviewProp","emailPreviewProps","_ref$headerProps","headerProps","_ref$tooltipProps","_ref$switchProps","switchProps","_ref$mobilePreviewPro","mobilePreviewProps","formatBody","formatSubject","bodyVariables","shouldShowFields","isEmpty","EmailFormProvider","_values$sendTo","BlockNavigation","Header","Tooltip","position","Switch","MobilePreviewHeader","EmailPreview","body","from","sendFrom","to","pluck","_ref$validationSchema","Provider","Form","enableReinitialize"],"mappings":"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"}
1
+ {"version":3,"file":"EmailForm.js","sources":["../../../src/v2/components/EmailForm/constants.js","../../../src/v2/components/EmailForm/contexts/EmailForm.js","../../../src/v2/components/EmailForm/utils.js","../../../src/v2/components/EmailForm/ReplyToField.jsx","../../../src/v2/components/EmailForm/SendToField.jsx","../../../src/v2/components/EmailForm/SubjectField.jsx","../../../src/v2/components/EmailForm/EmailForm.jsx","../../../src/v2/components/EmailForm/EmailFormComponent/index.jsx","../../../src/v2/components/EmailForm/EmailFormProvider.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { isEditorEmpty } from \"neetoeditor/v2\";\nimport { prop } from \"ramda\";\nimport * as yup from \"yup\";\n\nexport const INITIAL_FORM_VALUES = {\n sendTo: [],\n sendToId: \"\",\n sendToCc: [],\n sendToBcc: [],\n replyTo: \"\",\n showCopyEmails: false,\n subject: \"\",\n message: \"\",\n isEnabled: false,\n};\n\nexport const EMAIL_FORM_VALIDATION_SCHEMA = yup.object({\n subject: yup\n .string()\n .required(t(\"neetoMolecules.emailForm.errors.subjectRequired\")),\n message: yup\n .string()\n .test(\n \"message\",\n t(\"neetoMolecules.emailForm.errors.messageRequired\"),\n value => !isEditorEmpty(value)\n ),\n});\n\nexport const sendToFieldValidation = maxEmails => {\n const validation = yup\n .array()\n .test(\n \"all-emails-valid\",\n t(\"neetoMolecules.emailForm.errors.invalidEmailAddress\"),\n emails => emails?.every(prop(\"valid\"))\n )\n .test(\n \"max-email-count\",\n t(\"neetoMolecules.emailForm.errors.maxEmails\", { count: maxEmails }),\n emails => emails?.length <= maxEmails\n );\n\n return yup.object({\n sendTo: validation\n .min(\n 1,\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.fields.sendToEmailAddress\"),\n })\n )\n .nullable(),\n sendToCc: validation,\n sendToBcc: validation,\n });\n};\n\nexport const SEND_TO_ID_FIELD_VALIDATION = yup.object({\n sendToId: yup.string().required(\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.labels.sendTo\"),\n })\n ),\n});\n\nexport const REPLY_TO_FIELD_VALIDATION = yup.object({\n replyTo: yup\n .string()\n .nullable()\n .email(t(\"neetoMolecules.emailForm.errors.invalidEmailAddress\"))\n .required(\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.fields.replyToEmailAddress\"),\n })\n ),\n});\n\nexport const EDITOR_ADDONS = [\n \"highlight\",\n \"emoji\",\n \"code-block\",\n \"block-quote\",\n \"image-upload\",\n \"divider\",\n \"video-embed\",\n];\n\nexport const ALLOWED_FILE_PICKER_TYPES = [\".csv\"];\n","/* eslint-disable @bigbinary/neeto/use-zustand-for-global-state-management */\nimport { createContext } from \"react\";\n\nconst EmailFormContext = createContext({\n showSendToField: false,\n showSendToAsRadio: false,\n showReplyToField: false,\n showCcField: false,\n showBccField: false,\n});\n\nexport { EmailFormContext };\n","import { t } from \"i18next\";\nimport { isPresent } from \"neetocist\";\n\nimport {\n EMAIL_FORM_VALIDATION_SCHEMA,\n REPLY_TO_FIELD_VALIDATION,\n sendToFieldValidation,\n SEND_TO_ID_FIELD_VALIDATION,\n} from \"./constants\";\n\nexport const getValidationSchema = ({\n showSendToField,\n showReplyToField,\n showSendToAsRadio,\n customValidations,\n maxEmails,\n}) => {\n let schema = EMAIL_FORM_VALIDATION_SCHEMA.clone();\n\n if (showSendToField) {\n schema = schema.concat(\n showSendToAsRadio\n ? SEND_TO_ID_FIELD_VALIDATION\n : sendToFieldValidation(maxEmails)\n );\n }\n\n if (showReplyToField) schema = schema.concat(REPLY_TO_FIELD_VALIDATION);\n\n const isYupObject = customValidations.type === \"object\";\n\n if (isYupObject) {\n const customFields = customValidations.fields || {};\n schema = schema.shape(customFields);\n } else if (typeof customValidations === \"object\") {\n schema = schema.shape(customValidations);\n }\n\n return schema;\n};\n\nexport const getReplyToFieldLabelProps = ({ popoverProps }) => ({\n helpIconProps: {\n className: \"reply-to-help-icon\",\n ...(isPresent(popoverProps)\n ? {\n popoverProps: {\n ...popoverProps,\n description:\n popoverProps.description ||\n t(\"neetoMolecules.emailForm.tooltips.replyTo\"),\n },\n }\n : {\n tooltipProps: {\n content: t(\"neetoMolecules.emailForm.tooltips.replyTo\"),\n },\n }),\n },\n});\n\nexport const resolveContent = (content, func, variable) => {\n if (typeof func === \"function\") {\n return func(content, variable);\n }\n\n return content;\n};\n\nexport const normalizeHtmlString = str => {\n if (typeof str !== \"string\") return str;\n\n return str\n .replace(/\\uFEFF/g, \"\")\n .replace(/\\r\\n|\\r/g, \"\\n\")\n .replace(/&nbsp;/g, \" \")\n .replace(/[\\t ]+/g, \" \")\n .replace(/\\s*\\n\\s*/g, \"\\n\")\n .replace(/\\n+/g, \"\\n\")\n .replace(/>\\s+</g, \"><\")\n .trim();\n};\n","import { Input, Select } from \"@bigbinary/neeto-atoms/formik\";\nimport { useFormikContext } from \"formik\";\nimport { isNotEmpty } from \"neetocist\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { getReplyToFieldLabelProps } from \"./utils\";\n\nconst ReplyToField = ({ options = [], popoverProps = {} }) => {\n const { t } = useTranslation();\n const { setFieldValue } = useFormikContext();\n\n const isDropdownField = isNotEmpty(options);\n const labelProps = getReplyToFieldLabelProps({ popoverProps });\n\n if (isDropdownField) {\n return (\n <Select\n {...{ labelProps, options }}\n isClearable\n className=\"w-full\"\n data-testid=\"reply-to-select-field\"\n label={t(\"neetoMolecules.emailForm.labels.replyTo\")}\n name=\"replyTo\"\n size=\"large\"\n onChange={value => setFieldValue(\"replyTo\", value ?? \"\")}\n />\n );\n }\n\n return (\n <Input\n {...{ labelProps }}\n autoFocus\n required\n className=\"w-full\"\n data-testid=\"reply-to-input-field\"\n label={t(\"neetoMolecules.emailForm.labels.replyTo\")}\n name=\"replyTo\"\n placeholder={t(\"neetoMolecules.emailForm.placeholders.emailPlaceholder\")}\n size=\"large\"\n onChange={event =>\n setFieldValue(\"replyTo\", event.target.value?.toLowerCase())\n }\n />\n );\n};\n\nexport default ReplyToField;\n","import { useTranslation } from \"react-i18next\";\n\nimport SendToFields from \"../SendToFields\";\n\nconst SendToField = ({ showBccField, showCcField, showSendToTextField }) => {\n const { t } = useTranslation();\n\n if (!showSendToTextField && !showBccField && !showCcField) return null;\n\n return (\n <SendToFields\n showCcBccButton\n showBccField={showSendToTextField ? false : showBccField}\n showCcField={showSendToTextField ? false : showCcField}\n showSendToField={showSendToTextField}\n bccInputProps={{\n label: t(\"neetoMolecules.emailForm.labels.bCc\"),\n name: \"sendToBcc\",\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n }}\n ccInputProps={{\n label: t(\"neetoMolecules.emailForm.labels.cc\"),\n name: \"sendToCc\",\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n }}\n emailInputProps={{\n id: \"sendTo\",\n name: \"sendTo\",\n label: t(\"neetoMolecules.emailForm.labels.sendTo\"),\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n required: true,\n }}\n />\n );\n};\n\nexport default SendToField;\n","import { useState } from \"react\";\n\nimport { Input } from \"@bigbinary/neeto-atoms\";\nimport { withEventTargetValue } from \"neetocommons/v2/utils/general\";\nimport { useTranslation } from \"react-i18next\";\n\nimport DynamicVariables from \"../DynamicVariables\";\n\nconst SubjectField = ({\n name,\n text,\n updateText,\n subjectVariables = [],\n error,\n required = false,\n onBlur,\n}) => {\n const [isFieldFocusedOnce, setIsFieldFocusedOnce] = useState(false);\n\n const { t } = useTranslation();\n\n const tagClickHandler = ({ key: slug, category }) => {\n const inputElement = document.querySelector(`[name=${name}]`);\n const splitIndex =\n isFieldFocusedOnce && inputElement\n ? inputElement.selectionEnd\n : text.length;\n\n const variable = category ? `${category}.${slug}` : slug;\n const updatedSubject = [\n text.slice(0, splitIndex),\n ` {{${variable}}}`,\n text.slice(splitIndex),\n ].join(\"\");\n updateText(updatedSubject);\n };\n\n return (\n <Input\n {...{ error, name, onBlur, required }}\n label={t(\"neetoMolecules.emailForm.labels.subject\")}\n placeholder={t(\"neetoMolecules.emailForm.placeholders.subject\")}\n size=\"large\"\n value={text}\n suffix={\n <div className=\"me-2 inline-flex\">\n <DynamicVariables\n buttonProps={{ className: \"self-center\" }}\n dropdownProps={{ className: \"overflow-y-auto\" }}\n variables={subjectVariables}\n onVariableClick={tagClickHandler}\n />\n </div>\n }\n onChange={withEventTargetValue(updateText)}\n onFocus={() => setIsFieldFocusedOnce(true)}\n />\n );\n};\n\nexport default SubjectField;\n","import { useContext } from \"react\";\n\nimport { Button } from \"@bigbinary/neeto-atoms\";\nimport { ActionBlock, RadioGroup } from \"@bigbinary/neeto-atoms/formik\";\nimport classnames from \"classnames\";\nimport { Field, useFormikContext } from \"formik\";\nimport { notEqualsDeep, isNotEmpty } from \"neetocist\";\nimport { globalProps } from \"neetocommons/v2/initializers\";\nimport { FormikEditor } from \"neetoeditor/v2\";\nimport PropTypes from \"prop-types\";\nimport { equals } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { EDITOR_ADDONS } from \"./constants\";\nimport { EmailFormContext } from \"./contexts/EmailForm\";\nimport ReplyToField from \"./ReplyToField\";\nimport SendToField from \"./SendToField\";\nimport SubjectField from \"./SubjectField\";\nimport { normalizeHtmlString } from \"./utils\";\n\nconst EmailForm = ({\n messageVariables = [],\n subjectVariables = [],\n handleCancel,\n handleResetToDefault,\n isLoading,\n replyToFieldProps,\n sendToFieldProps,\n replyToOptions,\n sendToOptions = [],\n isUpdating = false,\n isResetting = false,\n showFields = true,\n className = \"\",\n editorAddons = EDITOR_ADDONS,\n showResetToDefaultButton,\n editorRef = null,\n defaultValues = {},\n}) => {\n const { t } = useTranslation();\n\n const {\n showSendToField,\n showSendToAsRadio,\n showReplyToField,\n showCcField,\n showBccField,\n } = useContext(EmailFormContext);\n\n const { setFieldValue, values, resetForm } = useFormikContext();\n\n const normalizedValues = {\n ...values,\n message: normalizeHtmlString(values.message),\n };\n\n const normalizedDefaultValues = {\n ...defaultValues,\n message: normalizeHtmlString(defaultValues?.message),\n };\n\n normalizedDefaultValues.replyTo ||= globalProps.user?.email;\n\n const disabled = equals(normalizedValues, normalizedDefaultValues);\n\n const sendToFieldOptions = sendToFieldProps?.options || sendToOptions;\n const showSendToRadioField =\n showSendToField && showSendToAsRadio && isNotEmpty(sendToFieldOptions);\n\n const showSendToTextField = showSendToField && !showSendToRadioField;\n\n return (\n <div\n data-testid=\"email-form\"\n className={classnames(\"flex flex-1 flex-col items-start gap-2 !pb-0\", {\n [className]: className,\n })}\n >\n <div className=\"w-full grow\">\n {showFields && (\n <div className=\"flex w-full flex-col items-start justify-start gap-5\">\n {showSendToRadioField && (\n <RadioGroup\n className=\"pb-2\"\n data-testid=\"send-to-id\"\n label={t(\"neetoMolecules.emailForm.labels.sendTo\")}\n labelProps={{ required: true }}\n name=\"sendToId\"\n >\n {sendToFieldOptions.map(({ label, value }) => (\n <RadioGroup.Item {...{ label, value }} key={value} />\n ))}\n </RadioGroup>\n )}\n <SendToField\n {...{ showBccField, showCcField, showSendToTextField }}\n />\n {showReplyToField && (\n <div className=\"w-full\">\n <ReplyToField options={replyToOptions} {...replyToFieldProps} />\n </div>\n )}\n <Field name=\"subject\">\n {({ field: { value, onBlur }, meta: { error, touched } }) => (\n <div className=\"w-full\">\n <SubjectField\n {...{ onBlur, subjectVariables }}\n required\n error={touched && error ? t(error) : undefined}\n name=\"subject\"\n text={value}\n updateText={text => setFieldValue(\"subject\", text)}\n />\n </div>\n )}\n </Field>\n <div className=\"w-full\" data-testid=\"message-input-container\">\n <FormikEditor\n required\n addons={editorAddons}\n data-testid=\"message-input-field\"\n hideSlashCommands={false}\n id=\"form_message\"\n menuType=\"fixed\"\n name=\"message\"\n placeholder={t(\"neetoMolecules.emailForm.placeholders.message\")}\n ref={editorRef}\n variables={messageVariables}\n shouldUpdate={(nextProps, prevProps) =>\n notEqualsDeep(nextProps.variables, prevProps.variables)\n }\n />\n </div>\n </div>\n )}\n </div>\n <div className=\"bg-background z-10 flex w-full justify-between py-6 lg:sticky lg:bottom-0\">\n <ActionBlock\n cancelButtonProps={{ onClick: handleCancel }}\n isSubmitting={isLoading || isUpdating}\n />\n {showResetToDefaultButton && (\n <div>\n <Button\n {...{ disabled }}\n data-testid=\"reset-to-default-button\"\n label={t(\"neetoMolecules.emailForm.labels.resetToDefault\")}\n loading={isResetting}\n variant=\"secondary\"\n onClick={() => {\n resetForm();\n handleResetToDefault();\n }}\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nEmailForm.propTypes = {\n /**\n * This is an array of objects used for templating within the message field. Each object in the array has a **label** and a **key**.\n */\n messageVariables: PropTypes.array,\n /**\n * This is an array of objects used for templating within the subject field. Each object in the array has a **label** and a **key**.\n */\n subjectVariables: PropTypes.array,\n /**\n * This function that gets triggered when the 'Cancel' button is clicked.\n */\n handleCancel: PropTypes.func,\n /**\n * This function that gets triggered when the 'Reset to default' button is clicked.\n */\n handleResetToDefault: PropTypes.func,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Save changes' button.\"\n */\n isLoading: PropTypes.bool,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Reset to default' button.\n */\n isResetting: PropTypes.bool,\n /**\n * An array of objects, with each object having **label** and **value** properties. This prop transforms the 'Reply To' field into a dropdown menu with given options. Without this prop, 'Reply To' will be a text input field.\n */\n replyToOptions: PropTypes.array,\n /**\n * An array of objects, with each object having **label** and **value** properties. This prop transforms the 'Send To' field into a radio group with given options. Without this prop, 'Send To' will be a multi email input field.\n */\n sendToOptions: PropTypes.array,\n /**\n * A Boolean flag indicating whether an update operation is currently in progress. When set to `true`, the 'Save changes' button is disabled.\n */\n isUpdating: PropTypes.bool,\n /**\n * To provide additional classnames to the button.\n */\n className: PropTypes.string,\n /**\n * To provide props to the replyToField. Supports options that will\n * be rendered as the reply to options and popover props.\n */\n replyToFieldProps: PropTypes.object,\n /**\n * To provide props to the sendToField. Supports sendTo options.\n */\n sendToFieldProps: PropTypes.object,\n /**\n * This Boolean value, when set to true, shows reset to default button.\n */\n showResetToDefaultButton: PropTypes.bool,\n /**\n * A reference to the editor.\n */\n editorRef: PropTypes.any,\n /**\n * To override the default editor addons\n */\n editorAddons: PropTypes.array,\n /**\n * The default values for the email form.\n */\n defaultValues: PropTypes.object,\n};\n\nexport default EmailForm;\n","import { Tooltip } from \"@bigbinary/neeto-atoms\";\nimport { BlockNavigation, Switch } from \"@bigbinary/neeto-atoms/formik\";\nimport { noop, isNotEmpty } from \"neetocist\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty, pluck } from \"ramda\";\n\nimport { EmailFormProvider, EmailForm, EmailPreview } from \"..\";\nimport Header from \"../../Header\";\nimport MobilePreviewHeader from \"../../MobilePreviewHeader\";\nimport { INITIAL_FORM_VALUES } from \"../constants\";\nimport { resolveContent } from \"../utils\";\n\nconst EmailFormComponent = ({\n onSubmit = noop,\n initialValues = INITIAL_FORM_VALUES,\n children,\n formikProps,\n validationSchema,\n showSendToField = false,\n showReplyToField = false,\n showSendToAsRadio = false,\n blockNavigation = true,\n showCcField = false,\n showBccField = false,\n isLoading = false,\n maxEmails = 10,\n emailFormProps = {},\n emailPreviewProps = {},\n headerProps = {},\n tooltipProps = {},\n switchProps = {},\n mobilePreviewProps = {},\n}) => {\n const { formatBody, formatSubject, bodyVariables, subjectVariables } =\n emailPreviewProps;\n\n const shouldShowFields = values => isEmpty(switchProps) || values.isEnabled;\n\n return (\n <EmailFormProvider\n {...{\n formikProps,\n initialValues,\n maxEmails,\n onSubmit,\n showBccField,\n showCcField,\n showReplyToField,\n showSendToAsRadio,\n showSendToField,\n validationSchema,\n }}\n >\n {({ values, isSubmitting }) => (\n <div className=\"flex h-[calc(100dvh-64px)] flex-grow flex-col overflow-y-auto lg:flex-row\">\n <div className=\"flex w-full flex-col px-5 md:px-10 lg:h-full lg:w-1/2 lg:overflow-y-auto\">\n {blockNavigation && <BlockNavigation />}\n {isNotEmpty(headerProps) && (\n <Header className=\"px-0\" size=\"small\" {...headerProps} />\n )}\n {isNotEmpty(switchProps) && (\n <div className=\"flex items-center justify-between gap-y-0.5 pb-6\">\n <Tooltip\n disabled={!switchProps?.disabled}\n position=\"top\"\n {...tooltipProps}\n >\n <div className=\"flex items-center gap-2\">\n <Switch\n data-testid=\"switch\"\n name=\"isEnabled\"\n {...switchProps}\n />\n </div>\n </Tooltip>\n </div>\n )}\n {shouldShowFields(values) && children}\n <EmailForm\n isLoading={isSubmitting || isLoading}\n isUpdating={isSubmitting || isLoading}\n showFields={shouldShowFields(values)}\n {...emailFormProps}\n />\n </div>\n {shouldShowFields(values) && (\n <MobilePreviewHeader\n className=\"lg:hidden\"\n {...mobilePreviewProps}\n />\n )}\n {shouldShowFields(values) && (\n <div className=\"bg-muted w-full px-6 py-10 lg:w-1/2 lg:overflow-y-auto\">\n <EmailPreview\n body={resolveContent(values.message, formatBody, bodyVariables)}\n from={values.sendFrom}\n to={pluck(\"value\", values?.sendTo ?? [])}\n subject={resolveContent(\n values.subject,\n formatSubject,\n subjectVariables\n )}\n {...emailPreviewProps}\n />\n </div>\n )}\n </div>\n )}\n </EmailFormProvider>\n );\n};\n\nEmailFormComponent.propTypes = {\n /**\n * A function that will be triggered with input values when the 'Save changes' button is clicked.\n */\n onSubmit: PropTypes.func,\n /**\n * These are the predefined values that populate the form fields when the form is first rendered.\n */\n initialValues: PropTypes.shape({\n sendTo: PropTypes.array,\n sendToId: PropTypes.string,\n sendToCc: PropTypes.array,\n sendToBcc: PropTypes.array,\n replyTo: PropTypes.string,\n showCopyEmails: PropTypes.bool,\n subject: PropTypes.string,\n message: PropTypes.string,\n isEnabled: PropTypes.bool,\n }),\n /**\n * A prop that can be used to override the default Formik properties that are set within the component, providing customization flexibility.\n */\n formikProps: PropTypes.object,\n /**\n * A Yup object defining custom form validation rules, which will be merged with the default rules using the concat method.\n */\n validationSchema: PropTypes.object,\n /**\n * A prop used for rendering either standard React element or a render prop function.\n */\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be displayed or not.\n */\n showSendToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**replyTo**' field should be displayed or not.\n */\n showReplyToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be radio type or not.\n */\n showSendToAsRadio: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**Cc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showCcField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**Bcc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showBccField: PropTypes.bool,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Save changes' button.\"\n */\n isLoading: PropTypes.bool,\n /**\n * A prop to limit number of send to emails\n */\n maxEmails: PropTypes.number,\n /**\n * These are the values that will be passed to EmailForm Component\n */\n emailFormProps: PropTypes.shape({\n messageVariables: PropTypes.array,\n subjectVariables: PropTypes.array,\n handleCancel: PropTypes.func,\n handleResetToDefault: PropTypes.func,\n isLoading: PropTypes.bool,\n replyToFieldProps: PropTypes.object,\n sendToFieldProps: PropTypes.object,\n replyToOptions: PropTypes.array,\n sendToOptions: PropTypes.array,\n isUpdating: PropTypes.bool,\n showFields: PropTypes.bool,\n className: PropTypes.string,\n showResetToDefaultButton: PropTypes.bool,\n editorRef: PropTypes.any,\n editorAddons: PropTypes.array,\n }),\n /**\n * These are the values that will be passed to EmailPreview Component\n */\n emailPreviewProps: PropTypes.shape({\n to: PropTypes.array,\n from: PropTypes.string,\n subject: PropTypes.string,\n body: PropTypes.string,\n actionButtonText: PropTypes.string,\n logo: PropTypes.string,\n customContent: PropTypes.string,\n className: PropTypes.string,\n formatBody: PropTypes.func,\n formatSubject: PropTypes.func,\n bodyVariables: PropTypes.object,\n subjectVariables: PropTypes.object,\n }),\n /**\n * These are the values that will be passed to Header Component\n */\n headerProps: PropTypes.object,\n /**\n * These are the values that will be passed to Tooltip Component\n */\n tooltipProps: PropTypes.object,\n /**\n * These are the values that will be passed to Switch Component\n */\n switchProps: PropTypes.object,\n /**\n * These are the values that will be passed to MobilePreviewHeader Component\n */\n mobilePreviewProps: PropTypes.object,\n};\n\nexport default EmailFormComponent;\n","import { Form } from \"@bigbinary/neeto-atoms/formik\";\nimport { noop } from \"neetocist\";\nimport { globalProps } from \"neetocommons/v2/initializers\";\nimport PropTypes from \"prop-types\";\n\nimport { INITIAL_FORM_VALUES } from \"./constants\";\nimport { EmailFormContext } from \"./contexts/EmailForm\";\nimport { getValidationSchema } from \"./utils\";\n\nconst EmailFormProvider = ({\n onSubmit = noop,\n initialValues = INITIAL_FORM_VALUES,\n children,\n formikProps,\n validationSchema: customValidations = {},\n showSendToField = false,\n showReplyToField = false,\n showSendToAsRadio = false,\n showCcField = false,\n showBccField = false,\n maxEmails = 10,\n}) => (\n <div data-testid=\"email-form-provider\">\n <EmailFormContext.Provider\n value={{\n showSendToField,\n showSendToAsRadio,\n showReplyToField,\n showCcField,\n showBccField,\n }}\n >\n <Form\n formikProps={{\n enableReinitialize: true,\n validationSchema: getValidationSchema({\n showSendToField,\n showReplyToField,\n showSendToAsRadio,\n customValidations,\n maxEmails,\n }),\n initialValues: {\n ...initialValues,\n replyTo: initialValues.replyTo || globalProps.user?.email,\n },\n onSubmit,\n ...formikProps,\n }}\n >\n {children}\n </Form>\n </EmailFormContext.Provider>\n </div>\n);\n\nEmailFormProvider.propTypes = {\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be displayed or not.\n */\n showSendToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**replyTo**' field should be displayed or not.\n */\n showReplyToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be radio type or not.\n */\n showSendToAsRadio: PropTypes.bool,\n /**\n * A function that will be triggered with input values when the 'Save changes' button is clicked.\n */\n onSubmit: PropTypes.func,\n /**\n * These are the predefined values that populate the form fields when the form is first rendered.\n */\n initialValues: PropTypes.shape({\n sendTo: PropTypes.array,\n sendToId: PropTypes.string,\n sendToCc: PropTypes.array,\n sendToBcc: PropTypes.array,\n replyTo: PropTypes.string,\n showCopyEmails: PropTypes.bool,\n subject: PropTypes.string,\n message: PropTypes.string,\n }),\n /**\n * A prop used for rendering either standard React element or a render prop function.\n */\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n /**\n * A prop that can be used to override the default Formik properties that are set within the component, providing customization flexibility.\n */\n formikProps: PropTypes.object,\n /**\n * A Yup object defining custom form validation rules, which will be merged with the default rules using the concat method.\n */\n validationSchema: PropTypes.object,\n /**\n * A prop to limit number of send to emails\n */\n maxEmails: PropTypes.number,\n /**\n * A Boolean value that determines whether the '**Cc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showCcField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**Bcc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showBccField: PropTypes.bool,\n};\n\nexport default EmailFormProvider;\n"],"names":["INITIAL_FORM_VALUES","sendTo","sendToId","sendToCc","sendToBcc","replyTo","showCopyEmails","subject","message","isEnabled","EMAIL_FORM_VALIDATION_SCHEMA","yup","object","string","required","t","test","value","isEditorEmpty","sendToFieldValidation","maxEmails","validation","array","emails","every","prop","count","length","min","entity","nullable","SEND_TO_ID_FIELD_VALIDATION","REPLY_TO_FIELD_VALIDATION","email","EDITOR_ADDONS","EmailFormContext","createContext","showSendToField","showSendToAsRadio","showReplyToField","showCcField","showBccField","getValidationSchema","_ref","customValidations","schema","clone","concat","isYupObject","type","customFields","fields","shape","_typeof","getReplyToFieldLabelProps","_ref2","popoverProps","helpIconProps","_objectSpread","className","isPresent","description","tooltipProps","content","resolveContent","func","variable","normalizeHtmlString","str","replace","trim","ReplyToField","_ref$options","options","_ref$popoverProps","_useTranslation","useTranslation","_useFormikContext","useFormikContext","setFieldValue","isDropdownField","isNotEmpty","labelProps","_jsx","Select","isClearable","label","name","size","onChange","Input","autoFocus","placeholder","event","_event$target$value","target","toLowerCase","SendToField","showSendToTextField","SendToFields","showCcBccButton","bccInputProps","ccInputProps","emailInputProps","id","SubjectField","text","updateText","_ref$subjectVariables","subjectVariables","error","_ref$required","onBlur","_useState","useState","_useState2","_slicedToArray","isFieldFocusedOnce","setIsFieldFocusedOnce","tagClickHandler","slug","key","category","inputElement","document","querySelector","splitIndex","selectionEnd","updatedSubject","slice","join","suffix","children","DynamicVariables","buttonProps","dropdownProps","variables","onVariableClick","withEventTargetValue","onFocus","EmailForm","_globalProps$user","_ref$messageVariables","messageVariables","handleCancel","handleResetToDefault","isLoading","replyToFieldProps","sendToFieldProps","replyToOptions","_ref$sendToOptions","sendToOptions","_ref$isUpdating","isUpdating","_ref$isResetting","isResetting","_ref$showFields","showFields","_ref$className","_ref$editorAddons","editorAddons","showResetToDefaultButton","_ref$editorRef","editorRef","_ref$defaultValues","defaultValues","_useContext","useContext","values","resetForm","normalizedValues","normalizedDefaultValues","globalProps","user","disabled","equals","sendToFieldOptions","showSendToRadioField","_jsxs","classnames","_defineProperty","RadioGroup","map","_createElement","Item","Field","_ref3","_ref3$field","field","_ref3$meta","meta","touched","undefined","FormikEditor","addons","hideSlashCommands","menuType","ref","shouldUpdate","nextProps","prevProps","notEqualsDeep","ActionBlock","cancelButtonProps","onClick","isSubmitting","Button","loading","variant","EmailFormComponent","_ref$onSubmit","onSubmit","noop","_ref$initialValues","initialValues","formikProps","validationSchema","_ref$showSendToField","_ref$showReplyToField","_ref$showSendToAsRadi","_ref$blockNavigation","blockNavigation","_ref$showCcField","_ref$showBccField","_ref$isLoading","_ref$maxEmails","_ref$emailFormProps","emailFormProps","_ref$emailPreviewProp","emailPreviewProps","_ref$headerProps","headerProps","_ref$tooltipProps","_ref$switchProps","switchProps","_ref$mobilePreviewPro","mobilePreviewProps","formatBody","formatSubject","bodyVariables","shouldShowFields","isEmpty","EmailFormProvider","_values$sendTo","BlockNavigation","Header","Tooltip","position","Switch","MobilePreviewHeader","EmailPreview","body","from","sendFrom","to","pluck","_ref$validationSchema","Provider","Form","enableReinitialize"],"mappings":"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"}