{"version":3,"file":"static/js/FileUpload.8362bc66.js","mappings":"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","sources":["components/FileUpload/FileUpload.styled.ts","components/FileUpload/FileUpload.tsx","types/EpiElementDependency.ts","utils/evaluteVisibilityFromDependencies.ts","utils/generateValidationRules.ts"],"sourcesContent":["import { FormControl, FormHelperText } from \"@mui/material\";\nimport { styled } from \"styled-components\";\nimport theme from \"styled-theming\";\n\nimport { buttonStyle } from \"components/Button/Button.styled\";\nimport Icon from \"components/Icon\";\nimport { styleBodyL, styleBodyM } from \"style/components/Typography\";\nimport { MQ } from \"style/mediaQueries\";\n\nconst labelColor = theme(\"theme\", {\n undefined: \"--text-on-neutral-secondary\",\n lightgray: \"--text-on-neutral-secondary\",\n blue: \"--text-on-blue-secondary\",\n cyan: \"--text-on-cyan-secondary\",\n black: \"--text-on-blue-secondary\",\n});\n\nconst labelErrorColor = theme(\"theme\", {\n undefined: \"--label-on-neutral-error\",\n lightgray: \"--label-on-neutral-error\",\n blue: \"--label-on-blue-error\",\n cyan: \"--label-on-cyan-error\",\n});\n\nconst textColor = theme(\"theme\", {\n undefined: \"--text-on-neutral-primary\",\n lightgray: \"--text-on-neutral-primary\",\n blue: \"--text-on-blue-primary\",\n cyan: \"--text-on-cyan-primary\",\n});\n\nexport const Wrapper = styled(FormControl)`\n && {\n grid-column: col-start 1 / span 2;\n width: 100%;\n\n ${MQ.FROM_M} {\n grid-column: ${theme(\"displayOption\", {\n Full: \"auto / span 6\",\n Half: \"auto / span 3\",\n OneThird: \"auto / span 2\",\n TwoThirds: \"auto / span 4\",\n })};\n }\n }\n`;\n\nexport const Label = styled.label`\n ${styleBodyL}\n color: var(--color-black-o60);\n`;\n\nexport const Input = styled.input`\n display: none;\n`;\n\nexport const UploadButton = styled.span.attrs<{\n $iconOnly?: boolean;\n $variant?: \"primary\" | \"outline\" | \"simple\";\n}>(() => ({}))`\n ${buttonStyle}\n`;\n\nexport const Files = styled.div`\n display: flex;\n flex-direction: column;\n margin-bottom: 2.1875rem;\n row-gap: 0.875rem;\n\n ${MQ.FROM_XL} {\n margin-bottom: 2.625rem;\n }\n`;\n\nexport const FileName = styled.div`\n ${styleBodyM}\n color: var(${textColor});\n display: flex;\n width: 100%;\n\n button {\n color: var(--icon-decorative-coral);\n margin-left: auto;\n margin-right: 0;\n\n &:hover {\n color: var(--icon-decorative-coral);\n }\n\n svg {\n margin-left: 0.875rem;\n margin-right: 0;\n }\n }\n`;\n\nexport const DocumentIcon = styled(Icon)`\n flex-shrink: 0;\n margin-right: 0.4375rem;\n`;\n\nexport const HelperText = styled(FormHelperText)`\n && {\n ${styleBodyM};\n color: var(${labelColor});\n display: block;\n letter-spacing: normal;\n margin-left: 0;\n margin-top: 0.4375rem;\n\n &:first-of-type {\n margin-top: 0.875rem;\n }\n\n &.Mui-error {\n color: var(${labelErrorColor});\n }\n }\n`;\n","import {\n ThemeProvider as MuiThemeProvider,\n createTheme,\n} from \"@mui/material/styles\";\nimport classNames from \"classnames\";\nimport React, { ReactElement, useContext, useEffect, useState } from \"react\";\nimport { Controller, useFormContext, useWatch } from \"react-hook-form\";\nimport { ThemeContext, ThemeProvider } from \"styled-components\";\n\nimport Button from \"components/Button\";\nimport evaluteVisibilityFromDependencies from \"utils/evaluteVisibilityFromDependencies\";\nimport generateValidationRules from \"utils/generateValidationRules\";\n\nimport {\n DocumentIcon,\n FileName,\n Files,\n HelperText,\n Input,\n Label,\n UploadButton,\n Wrapper,\n} from \"./FileUpload.styled\";\nimport FileUploadProps from \"./FileUploadProps\";\n\nconst FileUpload = ({\n id,\n identifier,\n label,\n disabled,\n allowedFileExtensions,\n displayOption = \"Full\",\n description,\n allowMultiple = false,\n elementName = \"fileUpload\",\n className,\n validators,\n control,\n actionTheme = \"black\",\n setValue,\n dependencies,\n}: FileUploadProps): ReactElement => {\n const [files, setFiles] = useState(undefined);\n const formContext = useFormContext();\n const classes = classNames(\n className,\n validators?.map((validator) => {\n return validator?.model?.validationCssClass || \"\";\n }),\n );\n const watchValue = useWatch({\n control,\n name: elementName,\n });\n\n const visibleFromDependencies =\n dependencies && control\n ? evaluteVisibilityFromDependencies(dependencies, control)\n : true;\n\n useEffect(() => {\n if (elementName && setValue)\n if (visibleFromDependencies) {\n setValue(elementName, \"\");\n setFiles(undefined);\n } else formContext.unregister(elementName);\n }, [visibleFromDependencies]); // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n if (watchValue == undefined) setFiles(watchValue);\n }, [watchValue]);\n\n const removeFile = (\n event: React.MouseEvent,\n index: number,\n ) => {\n if (files) {\n event.preventDefault();\n const dt = new DataTransfer();\n\n for (let i = 0; i < files.length; i++) {\n if (index !== i) dt.items.add(files[i]);\n }\n setFiles(dt.files.length > 0 ? dt.files : undefined);\n setValue &&\n setValue(elementName, dt.files, {\n shouldValidate: true,\n shouldTouch: true,\n });\n }\n };\n\n const rules =\n validators && validators?.length > 0\n ? generateValidationRules(validators)\n : undefined;\n\n id = id || identifier;\n\n const themeContext = useContext(ThemeContext);\n\n let buttonTheme = actionTheme;\n\n switch (themeContext?.theme) {\n case \"lightgray\":\n buttonTheme = \"blue\";\n break;\n case \"blue\":\n buttonTheme = \"cyan\";\n break;\n case \"cyan\":\n buttonTheme = \"blue\";\n break;\n }\n\n return (\n \n \n {visibleFromDependencies && (\n {\n return (\n \n \n {\n if (event.target.files) {\n setFiles(\n event.target.files,\n );\n } else {\n setFiles(undefined);\n }\n return onChange(\n event.target.files,\n );\n }}\n />\n {files && (\n \n {Array.from(files).map(\n (file, index) => (\n \n \n {file.name}\n \n removeFile(\n event,\n index,\n )\n }\n icon=\"delete28\"\n iconOnly={true}\n a11y={true}\n >\n Delete\n \n \n ),\n )}\n \n )}\n \n {label}\n \n \n {error && (\n \n {error.message}\n \n )}\n {description && (\n \n {description}\n \n )}\n \n );\n }}\n />\n )}\n \n \n );\n};\n\nexport default React.memo(FileUpload);\n","export default interface EpiElementDependency {\n action?: {\n displayName?: string;\n name?: string;\n order?: number;\n clientsideAction?: EpiDependencyAction;\n };\n conditionCombination?: EpiConditionCombination;\n conditions: EpiCondition[];\n}\n\nexport interface EpiCondition {\n fieldName: string;\n operator: EpiConditionOperator;\n fieldValue: string;\n}\n\nexport enum EpiConditionCombination {\n All = \"All\",\n Any = \"Any\",\n}\n\nexport enum EpiDependencyAction {\n Hide = \"hide\",\n Show = \"show\",\n}\n\nexport enum EpiConditionOperator {\n NotApplicable = \"NotApplicable\",\n MatchRegularExpression = \"MatchRegularExpression\",\n Equals = \"Equals\",\n NotEquals = \"NotEquals\",\n Contains = \"Contains\",\n NotContains = \"NotContains\",\n}\n","import { useWatch, Control } from \"react-hook-form\";\n\nimport EpiElementDependency, {\n EpiConditionCombination,\n EpiConditionOperator,\n EpiDependencyAction,\n} from \"types/EpiElementDependency\";\n\nconst evaluateConditionByOperator = (\n operator: EpiConditionOperator,\n targetValue: string | string[],\n conditionValue: string,\n): boolean => {\n if (typeof targetValue === \"undefined\") return false;\n\n if (!Array.isArray(targetValue))\n switch (operator) {\n case EpiConditionOperator.Equals:\n return targetValue === conditionValue;\n case EpiConditionOperator.NotEquals:\n return targetValue !== conditionValue;\n case EpiConditionOperator.Contains:\n return targetValue.includes(conditionValue);\n case EpiConditionOperator.NotContains:\n return !targetValue.includes(conditionValue);\n case EpiConditionOperator.MatchRegularExpression:\n return new RegExp(conditionValue).test(targetValue);\n case EpiConditionOperator.NotApplicable:\n return true;\n default:\n return false;\n }\n else\n switch (operator) {\n case EpiConditionOperator.Equals:\n return targetValue.includes(conditionValue);\n case EpiConditionOperator.NotEquals:\n return !targetValue.includes(conditionValue);\n case EpiConditionOperator.Contains:\n return targetValue.some((value) =>\n value.includes(conditionValue),\n );\n case EpiConditionOperator.NotContains:\n return !targetValue.some((value) =>\n value.includes(conditionValue),\n );\n case EpiConditionOperator.MatchRegularExpression:\n return targetValue.some((value) =>\n new RegExp(conditionValue).test(value),\n );\n case EpiConditionOperator.NotApplicable:\n return true;\n default:\n return false;\n }\n};\n\nconst evaluteVisibleFromDependencies = (\n dependency: EpiElementDependency | undefined,\n control: Control, any>, // eslint-disable-line @typescript-eslint/no-explicit-any\n): boolean => {\n if (dependency && control) {\n const { conditionCombination, action } = dependency;\n const returnValue =\n action?.clientsideAction === EpiDependencyAction.Show;\n\n const conditions = dependency.conditions || [];\n const elementValues = conditions.map(\n (condition) =>\n useWatch({\n control,\n name: condition.fieldName,\n }) || \"\",\n );\n\n if (conditionCombination === EpiConditionCombination.Any)\n return conditions\n .map((condition, index) => {\n const { operator, fieldValue } = condition;\n const elementValue = elementValues[index];\n return evaluateConditionByOperator(\n operator,\n elementValue,\n fieldValue || \"\",\n )\n ? returnValue\n : !returnValue;\n })\n .some(Boolean);\n else\n return conditions.every((condition, index) => {\n const { operator, fieldValue } = condition;\n const elementValue = elementValues[index];\n return evaluateConditionByOperator(\n operator,\n elementValue,\n fieldValue || \"\",\n )\n ? returnValue\n : !returnValue;\n });\n }\n return true;\n};\n\nexport default evaluteVisibleFromDependencies;\n","import { ValidationRule } from \"react-hook-form\";\n\nimport EpiValidator from \"types/EpiValidator\";\n\nconst generateValidationRules = (validationRules: EpiValidator[]) => {\n let rules = { validate: {} } as Rules;\n\n validationRules.forEach((validationRule: EpiValidator, index: number) => {\n switch (validationRule.type) {\n case \"RequiredValidator\":\n rules = {\n ...rules,\n required: {\n value: true,\n message:\n validationRule?.model?.message ||\n \"This field is required\",\n },\n };\n break;\n case \"MaxLengthValidator\":\n rules = {\n ...rules,\n maxLength: {\n value: validationRule?.model?.maxLength || 100,\n message:\n validationRule?.model?.message ||\n \"This field has a too long value\",\n },\n };\n break;\n case \"AllowedExtensionsValidator\":\n rules = {\n ...rules,\n validate: {\n ...rules.validate,\n [`${validationRule.type}-${index}`]: (\n FileList: any[], //eslint-disable-line @typescript-eslint/no-explicit-any\n ): string | boolean => {\n if (FileList && FileList.length > 0) {\n const files = Array.from(FileList);\n const fallbackExtensions = [\n \"jpg\",\n \"jpeg\",\n \"png\",\n \"gif\",\n \"bmp\",\n \"webp\",\n \"svg\",\n \"doc\",\n \"docx\",\n \"xls\",\n \"xlsx\",\n \"pdf\",\n ];\n const allowedExtensions = validationRule?.model\n ?.accept\n ? validationRule.model.accept\n .replaceAll(\".\", \"\")\n .split(\",\")\n : fallbackExtensions;\n const filesExtensions = files.map((file) =>\n file.name.split(\".\").pop().toLowerCase(),\n );\n const isValid = filesExtensions.every(\n (extension) =>\n allowedExtensions.includes(extension),\n );\n if (!isValid) {\n return (\n validationRule?.model?.message ||\n \"This field is invalid\"\n );\n }\n }\n return true;\n },\n },\n };\n break;\n case \"MaxFileSizeValidator\":\n rules = {\n ...rules,\n validate: {\n ...rules.validate,\n [`${validationRule.type}-${index}`]: (\n FileList: any[], //eslint-disable-line @typescript-eslint/no-explicit-any\n ): string | boolean => {\n if (FileList && FileList.length > 0) {\n const files = Array.from(FileList);\n const fallbackSizeInBytes = 104857600;\n const allowedSizeInBytes =\n validationRule?.model?.sizeInBytes ||\n fallbackSizeInBytes;\n const isValid = files.every(\n (file) =>\n Number(file?.size) < allowedSizeInBytes,\n );\n if (!isValid) {\n return (\n validationRule?.model?.message ||\n \"This field is invalid\"\n );\n }\n }\n return true;\n },\n },\n };\n break;\n default:\n if (validationRule?.model?.jsPattern) {\n rules = {\n ...rules,\n pattern: {\n value: new RegExp(validationRule?.model?.jsPattern),\n message:\n validationRule?.model?.message ||\n \"This field is invalid\",\n },\n };\n }\n break;\n }\n });\n return rules;\n};\n\ninterface Rules {\n required?: ValidationRule;\n maxLength?: ValidationRule;\n pattern?: ValidationRule;\n validate: {\n [key: string]: (value: any) => string | boolean; //eslint-disable-line @typescript-eslint/no-explicit-any\n };\n}\n\nexport default generateValidationRules;\n"],"names":["labelColor","theme","undefined","lightgray","blue","cyan","black","labelErrorColor","textColor","Wrapper","styled","FormControl","withConfig","componentId","MQ","FROM_M","Full","Half","OneThird","TwoThirds","Label","label","styleBodyL","Input","input","UploadButton","span","attrs","buttonStyle","Files","div","FROM_XL","FileName","styleBodyM","DocumentIcon","Icon","HelperText","FormHelperText","FileUpload","id","identifier","disabled","allowedFileExtensions","displayOption","description","allowMultiple","elementName","className","validators","control","actionTheme","setValue","dependencies","files","setFiles","useState","formContext","useFormContext","classes","classNames","map","validator","_validator$model","model","validationCssClass","watchValue","useWatch","name","visibleFromDependencies","evaluteVisibilityFromDependencies","useEffect","unregister","rules","length","generateValidationRules","themeContext","useContext","ThemeContext","buttonTheme","_jsx","MuiThemeProvider","createTheme","children","ThemeProvider","size","contentTheme","Controller","render","field","onChange","fieldState","error","_jsxs","htmlFor","accept","type","multiple","ref","onBlur","event","target","Array","from","file","index","icon","Button","onClick","removeFile","preventDefault","dt","DataTransfer","i","items","add","shouldValidate","shouldTouch","iconOnly","a11y","$variant","as","message","React","EpiConditionCombination","EpiDependencyAction","EpiConditionOperator","evaluateConditionByOperator","operator","targetValue","conditionValue","isArray","Equals","includes","NotEquals","Contains","some","value","NotContains","MatchRegularExpression","RegExp","test","NotApplicable","evaluteVisibleFromDependencies","dependency","conditionCombination","action","returnValue","clientsideAction","Show","conditions","elementValues","condition","fieldName","Any","fieldValue","elementValue","Boolean","every","validationRules","validate","forEach","validationRule","_validationRule$model","_validationRule$model2","_validationRule$model3","_validationRule$model8","required","maxLength","FileList","_validationRule$model4","fallbackExtensions","allowedExtensions","replaceAll","split","_validationRule$model5","pop","toLowerCase","extension","_validationRule$model6","fallbackSizeInBytes","allowedSizeInBytes","sizeInBytes","_validationRule$model7","Number","_validationRule$model9","_validationRule$model10","jsPattern","pattern"],"sourceRoot":""}