@lifesg/web-frontend-engine 1.19.14 → 1.19.15

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.
Files changed (23) hide show
  1. package/chunks/{file-upload-manager.88131e38.js → file-upload-manager.1786802e.js} +2 -2
  2. package/chunks/{file-upload-manager.88131e38.js.map → file-upload-manager.1786802e.js.map} +1 -1
  3. package/chunks/{index.5a6b29eb.js → index.54c2add7.js} +2 -2
  4. package/chunks/{index.5a6b29eb.js.map → index.54c2add7.js.map} +1 -1
  5. package/chunks/{index.fc8f504e.js → index.a88ac40b.js} +5 -5
  6. package/chunks/{index.fc8f504e.js.map → index.a88ac40b.js.map} +1 -1
  7. package/chunks/{index.4b4ecdb7.js → index.b9888bc5.js} +2 -2
  8. package/chunks/{index.4b4ecdb7.js.map → index.b9888bc5.js.map} +1 -1
  9. package/chunks/{location-modal.ddb76a07.js → location-modal.53039680.js} +2 -2
  10. package/chunks/{location-modal.ddb76a07.js.map → location-modal.53039680.js.map} +1 -1
  11. package/cjs/chunks/{file-upload-manager.981ed57b.js → file-upload-manager.8b3a773b.js} +2 -2
  12. package/cjs/chunks/{file-upload-manager.981ed57b.js.map → file-upload-manager.8b3a773b.js.map} +1 -1
  13. package/cjs/chunks/{index.e35c6aea.js → index.b063ce55.js} +5 -5
  14. package/cjs/chunks/{index.e35c6aea.js.map → index.b063ce55.js.map} +1 -1
  15. package/cjs/chunks/{index.aa390365.js → index.ca424cf5.js} +2 -2
  16. package/cjs/chunks/{index.aa390365.js.map → index.ca424cf5.js.map} +1 -1
  17. package/cjs/chunks/{index.71a851b1.js → index.d42f693a.js} +2 -2
  18. package/cjs/chunks/{index.71a851b1.js.map → index.d42f693a.js.map} +1 -1
  19. package/cjs/chunks/{location-modal.d4929e93.js → location-modal.f9df87bc.js} +2 -2
  20. package/cjs/chunks/{location-modal.d4929e93.js.map → location-modal.f9df87bc.js.map} +1 -1
  21. package/cjs/index.js +1 -1
  22. package/index.js +1 -1
  23. package/package.json +3 -3
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("react"),i=require("./index.e35c6aea.js");require("react/jsx-runtime"),require("@lifesg/react-design-system/text"),require("@lifesg/react-design-system/markup"),require("react-dom/server"),require("@lifesg/react-design-system/media"),require("@lifesg/react-design-system/color"),require("styled-components"),require("@lifesg/react-design-system/button"),require("@lifesg/react-design-system/modal"),require("@lifesg/react-design-system/alert"),require("@lifesg/react-design-system/layout"),require("@lifesg/react-design-system/box-container"),require("@lifesg/react-design-system/divider"),require("@lifesg/react-design-system/text-list"),require("@lifesg/react-design-system/popover-v2"),require("@lifesg/react-icons"),require("@lifesg/react-design-system/tab"),require("@lifesg/react-icons/plus-circle-fill"),require("@lifesg/react-design-system/button-with-icon"),require("@lifesg/react-design-system/error-display"),require("@lifesg/react-design-system/filter"),require("@lifesg/react-design-system/uneditable-section"),require("@lifesg/react-design-system/timeline"),require("@lifesg/react-design-system/form"),require("@lifesg/react-design-system/toggle"),require("@lifesg/react-design-system/checkbox"),require("@lifesg/react-design-system/file-upload"),require("@lifesg/react-icons/cross"),require("@lifesg/react-design-system/icon-button"),require("@lifesg/react-icons/bin"),require("@lifesg/react-icons/eraser"),require("@lifesg/react-icons/pencil"),require("@lifesg/react-icons/pencil-stroke"),require("@lifesg/react-design-system"),require("@lifesg/react-icons/plus"),require("@lifesg/react-icons/exclamation-triangle"),require("@lifesg/react-icons/pin-fill"),require("@lifesg/react-design-system/design-token"),require("@lifesg/react-design-system/image-button"),require("@lifesg/react-design-system/radio-button");const t=["image/jpeg","image/gif","image/png"];exports.default=s=>{const{compressImages:r,fileTypeRule:a,id:l,maxFileSizeRule:n,upload:o,uploadRule:u,value:m}=s,{files:d,setFiles:c,setCurrentFileIds:f}=e.useContext(i.FileUploadContext),g=i.usePrevious(m),{setValue:p}=i.useFormContext(),{dispatchFieldEvent:F}=i.useFieldEvent(),y=e.useRef();e.useEffect((()=>{y.current=i.generateRandomId()}),[]),e.useEffect((()=>{d.forEach((async(e,t)=>{try{switch(e.status){case i.EFileStatus.INJECTED:await R(e,t);break;case i.EFileStatus.NONE:await q(e,t);break;case i.EFileStatus.UPLOAD_READY:await U(e,t);break;case i.EFileStatus.TO_DELETE:S(t)}}catch(e){E(t)}}));const e=d.filter((({status:e})=>e===i.EFileStatus.UPLOADED)),t=e.filter((({addedFrom:e})=>"schema"!==e)).length>0,s=d.filter((({status:e})=>e===i.EFileStatus.TO_DELETE)).length>0,r=t||s;f(e.map((({fileItem:e})=>e.id))),p(l,e.map((({dataURL:e,fileItem:i,fileUrl:t,uploadResponse:s})=>({..."base64"===o.type?{dataURL:e}:{},fileId:i.id,fileName:i.name,fileUrl:t,uploadResponse:s}))),{shouldDirty:r,shouldTouch:t})}),[d.map((({fileItem:e,status:i})=>`${e?.id}-${i}`)).join(",")]),e.useEffect((()=>{void 0!==g&&void 0===m&&d.length&&c([])}),[d,g,c,m]);const E=e=>{c((t=>{const s=[...t],r=t[e];return s[e]={...r,fileItem:{...r.fileItem,id:r.fileItem?.id||i.generateRandomId(),name:r.rawFile.name,errorMessage:u?.errorMessage||i.ERROR_MESSAGES.UPLOAD().GENERIC},status:i.EFileStatus.ERROR_GENERIC},s}))},I=async(e,s)=>{if(t.includes(s||e.fileItem?.type)){const t=await i.ImageHelper.dataUrlToImage(e.dataURL),s=await i.ImageHelper.resampleImage(t,{width:94,height:94,crop:!0});return await i.FileHelper.fileToDataUrl(s)}return""},w=async e=>{const{addedFrom:t,dataURL:s,rawFile:r}=e,l=await i.FileHelper.getType(r);if(!(!a.fileType?.length||a.fileType?.includes(l.ext)))return{errorMessage:a.errorMessage||i.ERROR_MESSAGES.UPLOAD().FILE_TYPE(a.fileType||[]),fileType:l,status:i.EFileStatus.ERROR_FORMAT};if(n.maxSizeInKb>0){const e=1024*n.maxSizeInKb;if("base64"===o.type&&i.FileHelper.getFilesizeFromBase64(s)>e||"multipart"===o.type&&r.size>e)return{errorMessage:n.errorMessage||i.ERROR_MESSAGES.UPLOAD().MAX_FILE_SIZE(n.maxSizeInKb),fileType:l,status:i.EFileStatus.ERROR_SIZE}}return"schema"===t?{fileType:l,status:i.EFileStatus.UPLOADED}:{fileType:l,status:i.EFileStatus.UPLOAD_READY}},R=async(e,t)=>{let s;if(c((e=>{const s=[...e];return s[t]={...e[t],status:i.EFileStatus.INJECTING},s})),e.dataURL){const t=await i.FileHelper.dataUrlToBlob(e.dataURL);s=new File([t],e.rawFile.name)}else if(e.fileUrl){const t=await new i.AxiosApiClient("",void 0,void 0,!1,{responseType:"blob"}).get(e.fileUrl),r=await i.FileHelper.getType(new File([t],e.rawFile.name));s=new File([t],e.rawFile.name,{type:r.mime}),e.dataURL=await i.FileHelper.fileToDataUrl(s)}const{errorMessage:r,fileType:a}=await w({...e,rawFile:s}),l=await I(e,a.mime);c((n=>{const o=[...n];return o[t]={...e,fileItem:{errorMessage:r,id:e.fileItem?.id||i.generateRandomId(),name:i.FileHelper.deduplicateFileName(d.map((({fileItem:e})=>e?.name)),t,s.name),progress:1,size:s.size,type:a.mime,thumbnailImageDataUrl:l},rawFile:s,status:i.EFileStatus.UPLOADED},o}))},q=async(e,t)=>{const s=await b(e),r=await i.FileHelper.fileToDataUrl(s.rawFile),{errorMessage:a,fileType:l,status:n}=await w({dataURL:r,...s});c((e=>{const o=[...e];return o[t]={...s,dataURL:r,fileItem:{errorMessage:a,id:i.generateRandomId(),name:i.FileHelper.deduplicateFileName(d.map((({fileItem:e})=>e?.name)),t,i.FileHelper.sanitizeFileName(s.rawFile.name)),size:s.rawFile.size,type:l.mime,progress:0},status:n},o}))},U=async(e,t)=>{c((e=>{const s=[...e];return s[t]={...e[t],status:i.EFileStatus.UPLOADING},s}));const s=new FormData;s.append("sessionId",o?.sessionId||y.current||""),s.append("fileId",e.fileItem.id),s.append("slot",e.slot.toString()),"base64"===o.type?s.append("dataURL",e.dataURL):"multipart"===o.type&&s.append("file",e.rawFile,e.fileItem?.name);try{const r=await new i.AxiosApiClient("",void 0,void 0,!0).post(o.url,s,{headers:{"Content-Type":"base64"===o.type?"application/json":"multipart/form-data",...o.headers},onUploadProgress:e=>{const{loaded:i,total:s}=e;c((e=>{if(!e[t])return e;const r=[...e];return r[t]={...e[t],fileItem:{...e[t].fileItem,progress:i/s}},r}))}}),a=await I(e);c((e=>{if(!e[t])return e;const s=[...e];return s[t]={...e[t],fileItem:{...e[t].fileItem,progress:1,thumbnailImageDataUrl:a},fileUrl:r?.data?.fileUrl,status:i.EFileStatus.UPLOADED,uploadResponse:r},s}))}catch(i){throw F("upload-error",l,{fileId:e.fileItem.id,errorData:i?.response?.data}),i}},S=e=>{c((i=>i.filter(((i,t)=>t!==e))))},b=async e=>{if(n.maxSizeInKb>0&&r){const s=1024*n.maxSizeInKb;if(e.rawFile.size>s){const s=await i.FileHelper.getType(e.rawFile);if(t.includes(s.mime)){let t=await i.ImageHelper.compressImage(e.rawFile,{fileSize:n.maxSizeInKb});return t instanceof Blob&&(t=i.FileHelper.blobToFile(t,{name:e.rawFile.name,lastModified:e.rawFile.lastModified})),{...e,rawFile:t}}}}return e};return null};
2
- //# sourceMappingURL=file-upload-manager.981ed57b.js.map
1
+ "use strict";var e=require("react"),i=require("./index.b063ce55.js");require("react/jsx-runtime"),require("@lifesg/react-design-system/text"),require("@lifesg/react-design-system/markup"),require("react-dom/server"),require("@lifesg/react-design-system/media"),require("@lifesg/react-design-system/color"),require("styled-components"),require("@lifesg/react-design-system/button"),require("@lifesg/react-design-system/modal"),require("@lifesg/react-design-system/alert"),require("@lifesg/react-design-system/layout"),require("@lifesg/react-design-system/box-container"),require("@lifesg/react-design-system/divider"),require("@lifesg/react-design-system/text-list"),require("@lifesg/react-design-system/popover-v2"),require("@lifesg/react-icons"),require("@lifesg/react-design-system/tab"),require("@lifesg/react-icons/plus-circle-fill"),require("@lifesg/react-design-system/button-with-icon"),require("@lifesg/react-design-system/error-display"),require("@lifesg/react-design-system/filter"),require("@lifesg/react-design-system/uneditable-section"),require("@lifesg/react-design-system/timeline"),require("@lifesg/react-design-system/form"),require("@lifesg/react-design-system/toggle"),require("@lifesg/react-design-system/checkbox"),require("@lifesg/react-design-system/file-upload"),require("@lifesg/react-icons/cross"),require("@lifesg/react-design-system/icon-button"),require("@lifesg/react-icons/bin"),require("@lifesg/react-icons/eraser"),require("@lifesg/react-icons/pencil"),require("@lifesg/react-icons/pencil-stroke"),require("@lifesg/react-design-system"),require("@lifesg/react-icons/plus"),require("@lifesg/react-icons/exclamation-triangle"),require("@lifesg/react-icons/pin-fill"),require("@lifesg/react-design-system/design-token"),require("@lifesg/react-design-system/image-button"),require("@lifesg/react-design-system/radio-button");const t=["image/jpeg","image/gif","image/png"];exports.default=s=>{const{compressImages:r,fileTypeRule:a,id:l,maxFileSizeRule:n,upload:o,uploadRule:u,value:m}=s,{files:d,setFiles:c,setCurrentFileIds:f}=e.useContext(i.FileUploadContext),g=i.usePrevious(m),{setValue:p}=i.useFormContext(),{dispatchFieldEvent:F}=i.useFieldEvent(),y=e.useRef();e.useEffect((()=>{y.current=i.generateRandomId()}),[]),e.useEffect((()=>{d.forEach((async(e,t)=>{try{switch(e.status){case i.EFileStatus.INJECTED:await R(e,t);break;case i.EFileStatus.NONE:await q(e,t);break;case i.EFileStatus.UPLOAD_READY:await U(e,t);break;case i.EFileStatus.TO_DELETE:S(t)}}catch(e){E(t)}}));const e=d.filter((({status:e})=>e===i.EFileStatus.UPLOADED)),t=e.filter((({addedFrom:e})=>"schema"!==e)).length>0,s=d.filter((({status:e})=>e===i.EFileStatus.TO_DELETE)).length>0,r=t||s;f(e.map((({fileItem:e})=>e.id))),p(l,e.map((({dataURL:e,fileItem:i,fileUrl:t,uploadResponse:s})=>({..."base64"===o.type?{dataURL:e}:{},fileId:i.id,fileName:i.name,fileUrl:t,uploadResponse:s}))),{shouldDirty:r,shouldTouch:t})}),[d.map((({fileItem:e,status:i})=>`${e?.id}-${i}`)).join(",")]),e.useEffect((()=>{void 0!==g&&void 0===m&&d.length&&c([])}),[d,g,c,m]);const E=e=>{c((t=>{const s=[...t],r=t[e];return s[e]={...r,fileItem:{...r.fileItem,id:r.fileItem?.id||i.generateRandomId(),name:r.rawFile.name,errorMessage:u?.errorMessage||i.ERROR_MESSAGES.UPLOAD().GENERIC},status:i.EFileStatus.ERROR_GENERIC},s}))},I=async(e,s)=>{if(t.includes(s||e.fileItem?.type)){const t=await i.ImageHelper.dataUrlToImage(e.dataURL),s=await i.ImageHelper.resampleImage(t,{width:94,height:94,crop:!0});return await i.FileHelper.fileToDataUrl(s)}return""},w=async e=>{const{addedFrom:t,dataURL:s,rawFile:r}=e,l=await i.FileHelper.getType(r);if(!(!a.fileType?.length||a.fileType?.includes(l.ext)))return{errorMessage:a.errorMessage||i.ERROR_MESSAGES.UPLOAD().FILE_TYPE(a.fileType||[]),fileType:l,status:i.EFileStatus.ERROR_FORMAT};if(n.maxSizeInKb>0){const e=1024*n.maxSizeInKb;if("base64"===o.type&&i.FileHelper.getFilesizeFromBase64(s)>e||"multipart"===o.type&&r.size>e)return{errorMessage:n.errorMessage||i.ERROR_MESSAGES.UPLOAD().MAX_FILE_SIZE(n.maxSizeInKb),fileType:l,status:i.EFileStatus.ERROR_SIZE}}return"schema"===t?{fileType:l,status:i.EFileStatus.UPLOADED}:{fileType:l,status:i.EFileStatus.UPLOAD_READY}},R=async(e,t)=>{let s;if(c((e=>{const s=[...e];return s[t]={...e[t],status:i.EFileStatus.INJECTING},s})),e.dataURL){const t=await i.FileHelper.dataUrlToBlob(e.dataURL);s=new File([t],e.rawFile.name)}else if(e.fileUrl){const t=await new i.AxiosApiClient("",void 0,void 0,!1,{responseType:"blob"}).get(e.fileUrl),r=await i.FileHelper.getType(new File([t],e.rawFile.name));s=new File([t],e.rawFile.name,{type:r.mime}),e.dataURL=await i.FileHelper.fileToDataUrl(s)}const{errorMessage:r,fileType:a}=await w({...e,rawFile:s}),l=await I(e,a.mime);c((n=>{const o=[...n];return o[t]={...e,fileItem:{errorMessage:r,id:e.fileItem?.id||i.generateRandomId(),name:i.FileHelper.deduplicateFileName(d.map((({fileItem:e})=>e?.name)),t,s.name),progress:1,size:s.size,type:a.mime,thumbnailImageDataUrl:l},rawFile:s,status:i.EFileStatus.UPLOADED},o}))},q=async(e,t)=>{const s=await b(e),r=await i.FileHelper.fileToDataUrl(s.rawFile),{errorMessage:a,fileType:l,status:n}=await w({dataURL:r,...s});c((e=>{const o=[...e];return o[t]={...s,dataURL:r,fileItem:{errorMessage:a,id:i.generateRandomId(),name:i.FileHelper.deduplicateFileName(d.map((({fileItem:e})=>e?.name)),t,i.FileHelper.sanitizeFileName(s.rawFile.name)),size:s.rawFile.size,type:l.mime,progress:0},status:n},o}))},U=async(e,t)=>{c((e=>{const s=[...e];return s[t]={...e[t],status:i.EFileStatus.UPLOADING},s}));const s=new FormData;s.append("sessionId",o?.sessionId||y.current||""),s.append("fileId",e.fileItem.id),s.append("slot",e.slot.toString()),"base64"===o.type?s.append("dataURL",e.dataURL):"multipart"===o.type&&s.append("file",e.rawFile,e.fileItem?.name);try{const r=await new i.AxiosApiClient("",void 0,void 0,!0).post(o.url,s,{headers:{"Content-Type":"base64"===o.type?"application/json":"multipart/form-data",...o.headers},onUploadProgress:e=>{const{loaded:i,total:s}=e;c((e=>{if(!e[t])return e;const r=[...e];return r[t]={...e[t],fileItem:{...e[t].fileItem,progress:i/s}},r}))}}),a=await I(e);c((e=>{if(!e[t])return e;const s=[...e];return s[t]={...e[t],fileItem:{...e[t].fileItem,progress:1,thumbnailImageDataUrl:a},fileUrl:r?.data?.fileUrl,status:i.EFileStatus.UPLOADED,uploadResponse:r},s}))}catch(i){throw F("upload-error",l,{fileId:e.fileItem.id,errorData:i?.response?.data}),i}},S=e=>{c((i=>i.filter(((i,t)=>t!==e))))},b=async e=>{if(n.maxSizeInKb>0&&r){const s=1024*n.maxSizeInKb;if(e.rawFile.size>s){const s=await i.FileHelper.getType(e.rawFile);if(t.includes(s.mime)){let t=await i.ImageHelper.compressImage(e.rawFile,{fileSize:n.maxSizeInKb});return t instanceof Blob&&(t=i.FileHelper.blobToFile(t,{name:e.rawFile.name,lastModified:e.rawFile.lastModified})),{...e,rawFile:t}}}}return e};return null};
2
+ //# sourceMappingURL=file-upload-manager.8b3a773b.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-upload-manager.981ed57b.js","sources":["../../../src/components/fields/file-upload/file-upload-manager.ts"],"sourcesContent":["import { AxiosError } from \"axios\";\nimport { useContext, useEffect, useRef } from \"react\";\nimport { useFormContext } from \"react-hook-form\";\nimport { AxiosApiClient, FileHelper, ImageHelper, generateRandomId } from \"../../../utils\";\nimport { useFieldEvent, usePrevious } from \"../../../utils/hooks\";\nimport { ERROR_MESSAGES } from \"../../shared\";\nimport { FileUploadContext } from \"./file-upload-context\";\nimport {\n\tEFileStatus,\n\tIFile,\n\tIFileUploadSchema,\n\tIFileUploadValidationRule,\n\tIFileUploadValue,\n\tTUploadErrorDetail,\n} from \"./types\";\n\ninterface IProps {\n\tcompressImages: boolean;\n\tfileTypeRule: IFileUploadValidationRule;\n\tid: string;\n\tmaxFileSizeRule: IFileUploadValidationRule;\n\tupload: IFileUploadSchema[\"uploadOnAddingFile\"];\n\tuploadRule: IFileUploadValidationRule;\n\tvalue: IFileUploadValue[];\n}\n\nconst RESIZEABLE_IMAGE_TYPES = [\"image/jpeg\", \"image/gif\", \"image/png\"];\n\nconst FileUploadManager = (props: IProps) => {\n\t// =============================================================================\n\t// CONST, STATE, REFS\n\t// =============================================================================\n\tconst { compressImages, fileTypeRule, id, maxFileSizeRule, upload, uploadRule, value } = props;\n\tconst { files, setFiles, setCurrentFileIds } = useContext(FileUploadContext);\n\tconst previousValue = usePrevious(value);\n\tconst { setValue } = useFormContext();\n\tconst { dispatchFieldEvent } = useFieldEvent();\n\tconst sessionId = useRef<string>();\n\n\t// =============================================================================\n\t// EFFECTS\n\t// =============================================================================\n\tuseEffect(() => {\n\t\tsessionId.current = generateRandomId();\n\t}, []);\n\n\tuseEffect(\n\t\t() => {\n\t\t\t// handle file status\n\t\t\tfiles.forEach(async (file, index) => {\n\t\t\t\ttry {\n\t\t\t\t\tswitch (file.status) {\n\t\t\t\t\t\tcase EFileStatus.INJECTED:\n\t\t\t\t\t\t\tawait injectFile(file, index);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase EFileStatus.NONE:\n\t\t\t\t\t\t\tawait parseFile(file, index);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase EFileStatus.UPLOAD_READY:\n\t\t\t\t\t\t\tawait uploadFile(file, index);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase EFileStatus.TO_DELETE:\n\t\t\t\t\t\t\tdeleteFile(index);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (err) {\n\t\t\t\t\thandleGenericError(index);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// track / update values\n\t\t\tconst uploadedFiles = files.filter(({ status }) => status === EFileStatus.UPLOADED);\n\t\t\tconst notPrefilledFiles = uploadedFiles.filter(({ addedFrom }) => addedFrom !== \"schema\");\n\t\t\tconst hasNotPrefilledFiles = notPrefilledFiles.length > 0;\n\t\t\tconst gotDeleteFiles = files.filter(({ status }) => status === EFileStatus.TO_DELETE).length > 0;\n\n\t\t\t/**\n\t\t\t * should dirty if\n\t\t\t * - it is dirty in the first place\n\t\t\t * - there are non-prefilled files\n\t\t\t * - user deleted file (differentiated from reset)\n\t\t\t */\n\t\t\tconst shouldDirty = hasNotPrefilledFiles || gotDeleteFiles;\n\n\t\t\tsetCurrentFileIds(uploadedFiles.map(({ fileItem }) => fileItem.id));\n\n\t\t\tsetValue(\n\t\t\t\tid,\n\t\t\t\tuploadedFiles.map(({ dataURL, fileItem, fileUrl, uploadResponse }) => ({\n\t\t\t\t\t...(upload.type === \"base64\" ? { dataURL } : {}),\n\t\t\t\t\tfileId: fileItem.id,\n\t\t\t\t\tfileName: fileItem.name,\n\t\t\t\t\tfileUrl,\n\t\t\t\t\tuploadResponse,\n\t\t\t\t})),\n\t\t\t\t{ shouldDirty, shouldTouch: hasNotPrefilledFiles }\n\t\t\t);\n\t\t}, // eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[files.map(({ fileItem, status }) => `${fileItem?.id}-${status}`).join(\",\")]\n\t);\n\n\t// for reset\n\tuseEffect(() => {\n\t\tif (previousValue !== undefined && value === undefined && files.length) {\n\t\t\tsetFiles([]);\n\t\t}\n\t}, [files, previousValue, setFiles, value]);\n\n\t// =============================================================================\n\t// HELPER FUNCTIONS\n\t// =============================================================================\n\n\tconst handleGenericError = (index: number) => {\n\t\tsetFiles((prev) => {\n\t\t\tconst updatedFiles = [...prev];\n\t\t\tconst file = prev[index];\n\t\t\tupdatedFiles[index] = {\n\t\t\t\t...file,\n\t\t\t\tfileItem: {\n\t\t\t\t\t...file.fileItem,\n\t\t\t\t\tid: file.fileItem?.id || generateRandomId(),\n\t\t\t\t\tname: file.rawFile.name,\n\t\t\t\t\terrorMessage: uploadRule?.errorMessage || ERROR_MESSAGES.UPLOAD().GENERIC,\n\t\t\t\t},\n\t\t\t\tstatus: EFileStatus.ERROR_GENERIC,\n\t\t\t};\n\t\t\treturn updatedFiles;\n\t\t});\n\t};\n\n\tconst generateThumbnail = async (file: IFile, fileType?: string | undefined) => {\n\t\tif (RESIZEABLE_IMAGE_TYPES.includes(fileType || file.fileItem?.type)) {\n\t\t\tconst image = await ImageHelper.dataUrlToImage(file.dataURL);\n\t\t\tconst thumbnail = await ImageHelper.resampleImage(image, { width: 94, height: 94, crop: true });\n\t\t\treturn await FileHelper.fileToDataUrl(thumbnail);\n\t\t}\n\t\treturn \"\";\n\t};\n\n\tconst readFile = async (fileToRead: IFile) => {\n\t\tconst { addedFrom, dataURL, rawFile } = fileToRead;\n\t\tconst fileType = await FileHelper.getType(rawFile);\n\t\tconst validFileType = fileTypeRule.fileType?.length ? fileTypeRule.fileType?.includes(fileType.ext) : true;\n\n\t\tif (!validFileType) {\n\t\t\treturn {\n\t\t\t\terrorMessage:\n\t\t\t\t\tfileTypeRule.errorMessage || ERROR_MESSAGES.UPLOAD().FILE_TYPE(fileTypeRule.fileType || []),\n\t\t\t\tfileType,\n\t\t\t\tstatus: EFileStatus.ERROR_FORMAT,\n\t\t\t};\n\t\t}\n\n\t\tif (maxFileSizeRule.maxSizeInKb > 0) {\n\t\t\tconst maxSizeInB = maxFileSizeRule.maxSizeInKb * 1024;\n\t\t\tif (\n\t\t\t\t(upload.type === \"base64\" && FileHelper.getFilesizeFromBase64(dataURL) > maxSizeInB) ||\n\t\t\t\t(upload.type === \"multipart\" && rawFile.size > maxSizeInB)\n\t\t\t) {\n\t\t\t\treturn {\n\t\t\t\t\terrorMessage:\n\t\t\t\t\t\tmaxFileSizeRule.errorMessage ||\n\t\t\t\t\t\tERROR_MESSAGES.UPLOAD().MAX_FILE_SIZE(maxFileSizeRule.maxSizeInKb),\n\t\t\t\t\tfileType,\n\t\t\t\t\tstatus: EFileStatus.ERROR_SIZE,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif (addedFrom === \"schema\") {\n\t\t\treturn {\n\t\t\t\tfileType,\n\t\t\t\tstatus: EFileStatus.UPLOADED,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tfileType,\n\t\t\tstatus: EFileStatus.UPLOAD_READY,\n\t\t};\n\t};\n\n\t// =============================================================================\n\t// FILE STATUS HANDLERS\n\t// =============================================================================\n\tconst injectFile = async (fileToInject: IFile, index: number) => {\n\t\tsetFiles((prev) => {\n\t\t\tconst updatedFiles = [...prev];\n\t\t\tupdatedFiles[index] = {\n\t\t\t\t...prev[index],\n\t\t\t\tstatus: EFileStatus.INJECTING,\n\t\t\t};\n\t\t\treturn updatedFiles;\n\t\t});\n\n\t\tlet rawFile: File;\n\t\tif (fileToInject.dataURL) {\n\t\t\tconst blob = await FileHelper.dataUrlToBlob(fileToInject.dataURL);\n\t\t\trawFile = new File([blob], fileToInject.rawFile.name);\n\t\t} else if (fileToInject.fileUrl) {\n\t\t\tconst response: Blob = await new AxiosApiClient(\"\", undefined, undefined, false, {\n\t\t\t\tresponseType: \"blob\",\n\t\t\t}).get(fileToInject.fileUrl);\n\t\t\tconst fileType = await FileHelper.getType(new File([response], fileToInject.rawFile.name));\n\t\t\trawFile = new File([response], fileToInject.rawFile.name, { type: fileType.mime });\n\t\t\tfileToInject.dataURL = await FileHelper.fileToDataUrl(rawFile);\n\t\t}\n\t\tconst { errorMessage, fileType } = await readFile({ ...fileToInject, rawFile });\n\t\tconst thumbnailImageDataUrl = await generateThumbnail(fileToInject, fileType.mime);\n\n\t\tsetFiles((prev) => {\n\t\t\tconst updatedFiles = [...prev];\n\t\t\tupdatedFiles[index] = {\n\t\t\t\t...fileToInject,\n\t\t\t\tfileItem: {\n\t\t\t\t\terrorMessage,\n\t\t\t\t\tid: fileToInject.fileItem?.id || generateRandomId(),\n\t\t\t\t\tname: FileHelper.deduplicateFileName(\n\t\t\t\t\t\tfiles.map(({ fileItem }) => fileItem?.name),\n\t\t\t\t\t\tindex,\n\t\t\t\t\t\trawFile.name\n\t\t\t\t\t),\n\t\t\t\t\tprogress: 1,\n\t\t\t\t\tsize: rawFile.size,\n\t\t\t\t\ttype: fileType.mime,\n\t\t\t\t\tthumbnailImageDataUrl,\n\t\t\t\t},\n\t\t\t\trawFile,\n\t\t\t\tstatus: EFileStatus.UPLOADED,\n\t\t\t};\n\t\t\treturn updatedFiles;\n\t\t});\n\t};\n\n\tconst parseFile = async (fileToParse: IFile, index: number) => {\n\t\tconst compressedFile = await compressImageFile(fileToParse);\n\t\tconst dataURL = await FileHelper.fileToDataUrl(compressedFile.rawFile);\n\t\tconst { errorMessage, fileType, status } = await readFile({ dataURL, ...compressedFile });\n\n\t\tsetFiles((prev) => {\n\t\t\tconst updatedFiles = [...prev];\n\t\t\tupdatedFiles[index] = {\n\t\t\t\t...compressedFile,\n\t\t\t\tdataURL,\n\t\t\t\tfileItem: {\n\t\t\t\t\terrorMessage,\n\t\t\t\t\tid: generateRandomId(),\n\t\t\t\t\tname: FileHelper.deduplicateFileName(\n\t\t\t\t\t\tfiles.map(({ fileItem }) => fileItem?.name),\n\t\t\t\t\t\tindex,\n\t\t\t\t\t\tFileHelper.sanitizeFileName(compressedFile.rawFile.name)\n\t\t\t\t\t),\n\t\t\t\t\tsize: compressedFile.rawFile.size,\n\t\t\t\t\ttype: fileType.mime,\n\t\t\t\t\tprogress: 0,\n\t\t\t\t},\n\t\t\t\tstatus,\n\t\t\t};\n\t\t\treturn updatedFiles;\n\t\t});\n\t};\n\n\tconst uploadFile = async (fileToUpload: IFile, index: number) => {\n\t\tsetFiles((prev) => {\n\t\t\tconst updatedFiles = [...prev];\n\t\t\tupdatedFiles[index] = {\n\t\t\t\t...prev[index],\n\t\t\t\tstatus: EFileStatus.UPLOADING,\n\t\t\t};\n\t\t\treturn updatedFiles;\n\t\t});\n\n\t\tconst formData = new FormData();\n\t\tformData.append(\"sessionId\", upload?.sessionId || sessionId.current || \"\");\n\t\tformData.append(\"fileId\", fileToUpload.fileItem.id);\n\t\tformData.append(\"slot\", fileToUpload.slot.toString());\n\t\tif (upload.type === \"base64\") {\n\t\t\tformData.append(\"dataURL\", fileToUpload.dataURL);\n\t\t} else if (upload.type === \"multipart\") {\n\t\t\tformData.append(\"file\", fileToUpload.rawFile, fileToUpload.fileItem?.name);\n\t\t}\n\n\t\ttry {\n\t\t\tconst response = await new AxiosApiClient(\"\", undefined, undefined, true).post(upload.url, formData, {\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": upload.type === \"base64\" ? \"application/json\" : \"multipart/form-data\",\n\t\t\t\t\t...upload.headers,\n\t\t\t\t},\n\t\t\t\tonUploadProgress: (progressEvent) => {\n\t\t\t\t\tconst { loaded, total } = progressEvent;\n\t\t\t\t\tsetFiles((prev) => {\n\t\t\t\t\t\tif (!prev[index]) return prev;\n\t\t\t\t\t\tconst updatedFiles = [...prev];\n\t\t\t\t\t\tupdatedFiles[index] = {\n\t\t\t\t\t\t\t...prev[index],\n\t\t\t\t\t\t\tfileItem: {\n\t\t\t\t\t\t\t\t...prev[index].fileItem,\n\t\t\t\t\t\t\t\tprogress: loaded / total,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\treturn updatedFiles;\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tconst thumbnailImageDataUrl = await generateThumbnail(fileToUpload);\n\t\t\tsetFiles((prev) => {\n\t\t\t\tif (!prev[index]) return prev;\n\t\t\t\tconst updatedFiles = [...prev];\n\t\t\t\tupdatedFiles[index] = {\n\t\t\t\t\t...prev[index],\n\t\t\t\t\tfileItem: {\n\t\t\t\t\t\t...prev[index].fileItem,\n\t\t\t\t\t\tprogress: 1,\n\t\t\t\t\t\tthumbnailImageDataUrl,\n\t\t\t\t\t},\n\t\t\t\t\tfileUrl: response?.[\"data\"]?.[\"fileUrl\"],\n\t\t\t\t\tstatus: EFileStatus.UPLOADED,\n\t\t\t\t\tuploadResponse: response,\n\t\t\t\t};\n\t\t\t\treturn updatedFiles;\n\t\t\t});\n\t\t} catch (err) {\n\t\t\tdispatchFieldEvent<TUploadErrorDetail>(\"upload-error\", id, {\n\t\t\t\tfileId: fileToUpload.fileItem.id,\n\t\t\t\terrorData: (err as AxiosError)?.response?.data,\n\t\t\t});\n\n\t\t\tthrow err;\n\t\t}\n\t};\n\n\tconst deleteFile = (index: number) => {\n\t\tsetFiles((prev) => prev.filter((_file, i) => i !== index));\n\t};\n\n\tconst compressImageFile = async (fileToCompress: IFile) => {\n\t\tif (maxFileSizeRule.maxSizeInKb > 0 && compressImages) {\n\t\t\tconst maxSizeInB = maxFileSizeRule.maxSizeInKb * 1024;\n\t\t\tif (fileToCompress.rawFile.size > maxSizeInB) {\n\t\t\t\tconst fileType = await FileHelper.getType(fileToCompress.rawFile);\n\t\t\t\tif (RESIZEABLE_IMAGE_TYPES.includes(fileType.mime)) {\n\t\t\t\t\tlet fileOrBlob = await ImageHelper.compressImage(fileToCompress.rawFile, {\n\t\t\t\t\t\tfileSize: maxFileSizeRule.maxSizeInKb,\n\t\t\t\t\t});\n\t\t\t\t\tif (fileOrBlob instanceof Blob) {\n\t\t\t\t\t\tfileOrBlob = FileHelper.blobToFile(fileOrBlob, {\n\t\t\t\t\t\t\tname: fileToCompress.rawFile.name,\n\t\t\t\t\t\t\tlastModified: fileToCompress.rawFile.lastModified,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...fileToCompress,\n\t\t\t\t\t\trawFile: fileOrBlob,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn fileToCompress;\n\t};\n\n\t// =============================================================================\n\t// RENDER FUNCTIONS\n\t// =============================================================================\n\treturn null;\n};\n\nexport default FileUploadManager;\n"],"names":["RESIZEABLE_IMAGE_TYPES","props","compressImages","fileTypeRule","id","maxFileSizeRule","upload","uploadRule","value","files","setFiles","setCurrentFileIds","useContext","FileUploadContext","previousValue","usePrevious","setValue","useFormContext","dispatchFieldEvent","useFieldEvent","sessionId","useRef","useEffect","current","generateRandomId","forEach","async","file","index","status","EFileStatus","INJECTED","injectFile","NONE","parseFile","UPLOAD_READY","uploadFile","TO_DELETE","deleteFile","err","handleGenericError","uploadedFiles","filter","UPLOADED","hasNotPrefilledFiles","addedFrom","length","gotDeleteFiles","shouldDirty","map","fileItem","dataURL","fileUrl","uploadResponse","type","fileId","fileName","name","shouldTouch","join","undefined","prev","updatedFiles","rawFile","errorMessage","ERROR_MESSAGES","UPLOAD","GENERIC","ERROR_GENERIC","generateThumbnail","fileType","includes","image","ImageHelper","dataUrlToImage","thumbnail","resampleImage","width","height","crop","FileHelper","fileToDataUrl","readFile","fileToRead","getType","ext","FILE_TYPE","ERROR_FORMAT","maxSizeInKb","maxSizeInB","getFilesizeFromBase64","size","MAX_FILE_SIZE","ERROR_SIZE","fileToInject","INJECTING","blob","dataUrlToBlob","File","response","AxiosApiClient","responseType","get","mime","thumbnailImageDataUrl","deduplicateFileName","progress","fileToParse","compressedFile","compressImageFile","sanitizeFileName","fileToUpload","UPLOADING","formData","FormData","append","slot","toString","post","url","headers","onUploadProgress","progressEvent","loaded","total","errorData","data","_file","i","fileToCompress","fileOrBlob","compressImage","fileSize","Blob","blobToFile","lastModified"],"mappings":"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"}
1
+ {"version":3,"file":"file-upload-manager.8b3a773b.js","sources":["../../../src/components/fields/file-upload/file-upload-manager.ts"],"sourcesContent":["import { AxiosError } from \"axios\";\nimport { useContext, useEffect, useRef } from \"react\";\nimport { useFormContext } from \"react-hook-form\";\nimport { AxiosApiClient, FileHelper, ImageHelper, generateRandomId } from \"../../../utils\";\nimport { useFieldEvent, usePrevious } from \"../../../utils/hooks\";\nimport { ERROR_MESSAGES } from \"../../shared\";\nimport { FileUploadContext } from \"./file-upload-context\";\nimport {\n\tEFileStatus,\n\tIFile,\n\tIFileUploadSchema,\n\tIFileUploadValidationRule,\n\tIFileUploadValue,\n\tTUploadErrorDetail,\n} from \"./types\";\n\ninterface IProps {\n\tcompressImages: boolean;\n\tfileTypeRule: IFileUploadValidationRule;\n\tid: string;\n\tmaxFileSizeRule: IFileUploadValidationRule;\n\tupload: IFileUploadSchema[\"uploadOnAddingFile\"];\n\tuploadRule: IFileUploadValidationRule;\n\tvalue: IFileUploadValue[];\n}\n\nconst RESIZEABLE_IMAGE_TYPES = [\"image/jpeg\", \"image/gif\", \"image/png\"];\n\nconst FileUploadManager = (props: IProps) => {\n\t// =============================================================================\n\t// CONST, STATE, REFS\n\t// =============================================================================\n\tconst { compressImages, fileTypeRule, id, maxFileSizeRule, upload, uploadRule, value } = props;\n\tconst { files, setFiles, setCurrentFileIds } = useContext(FileUploadContext);\n\tconst previousValue = usePrevious(value);\n\tconst { setValue } = useFormContext();\n\tconst { dispatchFieldEvent } = useFieldEvent();\n\tconst sessionId = useRef<string>();\n\n\t// =============================================================================\n\t// EFFECTS\n\t// =============================================================================\n\tuseEffect(() => {\n\t\tsessionId.current = generateRandomId();\n\t}, []);\n\n\tuseEffect(\n\t\t() => {\n\t\t\t// handle file status\n\t\t\tfiles.forEach(async (file, index) => {\n\t\t\t\ttry {\n\t\t\t\t\tswitch (file.status) {\n\t\t\t\t\t\tcase EFileStatus.INJECTED:\n\t\t\t\t\t\t\tawait injectFile(file, index);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase EFileStatus.NONE:\n\t\t\t\t\t\t\tawait parseFile(file, index);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase EFileStatus.UPLOAD_READY:\n\t\t\t\t\t\t\tawait uploadFile(file, index);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase EFileStatus.TO_DELETE:\n\t\t\t\t\t\t\tdeleteFile(index);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (err) {\n\t\t\t\t\thandleGenericError(index);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// track / update values\n\t\t\tconst uploadedFiles = files.filter(({ status }) => status === EFileStatus.UPLOADED);\n\t\t\tconst notPrefilledFiles = uploadedFiles.filter(({ addedFrom }) => addedFrom !== \"schema\");\n\t\t\tconst hasNotPrefilledFiles = notPrefilledFiles.length > 0;\n\t\t\tconst gotDeleteFiles = files.filter(({ status }) => status === EFileStatus.TO_DELETE).length > 0;\n\n\t\t\t/**\n\t\t\t * should dirty if\n\t\t\t * - it is dirty in the first place\n\t\t\t * - there are non-prefilled files\n\t\t\t * - user deleted file (differentiated from reset)\n\t\t\t */\n\t\t\tconst shouldDirty = hasNotPrefilledFiles || gotDeleteFiles;\n\n\t\t\tsetCurrentFileIds(uploadedFiles.map(({ fileItem }) => fileItem.id));\n\n\t\t\tsetValue(\n\t\t\t\tid,\n\t\t\t\tuploadedFiles.map(({ dataURL, fileItem, fileUrl, uploadResponse }) => ({\n\t\t\t\t\t...(upload.type === \"base64\" ? { dataURL } : {}),\n\t\t\t\t\tfileId: fileItem.id,\n\t\t\t\t\tfileName: fileItem.name,\n\t\t\t\t\tfileUrl,\n\t\t\t\t\tuploadResponse,\n\t\t\t\t})),\n\t\t\t\t{ shouldDirty, shouldTouch: hasNotPrefilledFiles }\n\t\t\t);\n\t\t}, // eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[files.map(({ fileItem, status }) => `${fileItem?.id}-${status}`).join(\",\")]\n\t);\n\n\t// for reset\n\tuseEffect(() => {\n\t\tif (previousValue !== undefined && value === undefined && files.length) {\n\t\t\tsetFiles([]);\n\t\t}\n\t}, [files, previousValue, setFiles, value]);\n\n\t// =============================================================================\n\t// HELPER FUNCTIONS\n\t// =============================================================================\n\n\tconst handleGenericError = (index: number) => {\n\t\tsetFiles((prev) => {\n\t\t\tconst updatedFiles = [...prev];\n\t\t\tconst file = prev[index];\n\t\t\tupdatedFiles[index] = {\n\t\t\t\t...file,\n\t\t\t\tfileItem: {\n\t\t\t\t\t...file.fileItem,\n\t\t\t\t\tid: file.fileItem?.id || generateRandomId(),\n\t\t\t\t\tname: file.rawFile.name,\n\t\t\t\t\terrorMessage: uploadRule?.errorMessage || ERROR_MESSAGES.UPLOAD().GENERIC,\n\t\t\t\t},\n\t\t\t\tstatus: EFileStatus.ERROR_GENERIC,\n\t\t\t};\n\t\t\treturn updatedFiles;\n\t\t});\n\t};\n\n\tconst generateThumbnail = async (file: IFile, fileType?: string | undefined) => {\n\t\tif (RESIZEABLE_IMAGE_TYPES.includes(fileType || file.fileItem?.type)) {\n\t\t\tconst image = await ImageHelper.dataUrlToImage(file.dataURL);\n\t\t\tconst thumbnail = await ImageHelper.resampleImage(image, { width: 94, height: 94, crop: true });\n\t\t\treturn await FileHelper.fileToDataUrl(thumbnail);\n\t\t}\n\t\treturn \"\";\n\t};\n\n\tconst readFile = async (fileToRead: IFile) => {\n\t\tconst { addedFrom, dataURL, rawFile } = fileToRead;\n\t\tconst fileType = await FileHelper.getType(rawFile);\n\t\tconst validFileType = fileTypeRule.fileType?.length ? fileTypeRule.fileType?.includes(fileType.ext) : true;\n\n\t\tif (!validFileType) {\n\t\t\treturn {\n\t\t\t\terrorMessage:\n\t\t\t\t\tfileTypeRule.errorMessage || ERROR_MESSAGES.UPLOAD().FILE_TYPE(fileTypeRule.fileType || []),\n\t\t\t\tfileType,\n\t\t\t\tstatus: EFileStatus.ERROR_FORMAT,\n\t\t\t};\n\t\t}\n\n\t\tif (maxFileSizeRule.maxSizeInKb > 0) {\n\t\t\tconst maxSizeInB = maxFileSizeRule.maxSizeInKb * 1024;\n\t\t\tif (\n\t\t\t\t(upload.type === \"base64\" && FileHelper.getFilesizeFromBase64(dataURL) > maxSizeInB) ||\n\t\t\t\t(upload.type === \"multipart\" && rawFile.size > maxSizeInB)\n\t\t\t) {\n\t\t\t\treturn {\n\t\t\t\t\terrorMessage:\n\t\t\t\t\t\tmaxFileSizeRule.errorMessage ||\n\t\t\t\t\t\tERROR_MESSAGES.UPLOAD().MAX_FILE_SIZE(maxFileSizeRule.maxSizeInKb),\n\t\t\t\t\tfileType,\n\t\t\t\t\tstatus: EFileStatus.ERROR_SIZE,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif (addedFrom === \"schema\") {\n\t\t\treturn {\n\t\t\t\tfileType,\n\t\t\t\tstatus: EFileStatus.UPLOADED,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tfileType,\n\t\t\tstatus: EFileStatus.UPLOAD_READY,\n\t\t};\n\t};\n\n\t// =============================================================================\n\t// FILE STATUS HANDLERS\n\t// =============================================================================\n\tconst injectFile = async (fileToInject: IFile, index: number) => {\n\t\tsetFiles((prev) => {\n\t\t\tconst updatedFiles = [...prev];\n\t\t\tupdatedFiles[index] = {\n\t\t\t\t...prev[index],\n\t\t\t\tstatus: EFileStatus.INJECTING,\n\t\t\t};\n\t\t\treturn updatedFiles;\n\t\t});\n\n\t\tlet rawFile: File;\n\t\tif (fileToInject.dataURL) {\n\t\t\tconst blob = await FileHelper.dataUrlToBlob(fileToInject.dataURL);\n\t\t\trawFile = new File([blob], fileToInject.rawFile.name);\n\t\t} else if (fileToInject.fileUrl) {\n\t\t\tconst response: Blob = await new AxiosApiClient(\"\", undefined, undefined, false, {\n\t\t\t\tresponseType: \"blob\",\n\t\t\t}).get(fileToInject.fileUrl);\n\t\t\tconst fileType = await FileHelper.getType(new File([response], fileToInject.rawFile.name));\n\t\t\trawFile = new File([response], fileToInject.rawFile.name, { type: fileType.mime });\n\t\t\tfileToInject.dataURL = await FileHelper.fileToDataUrl(rawFile);\n\t\t}\n\t\tconst { errorMessage, fileType } = await readFile({ ...fileToInject, rawFile });\n\t\tconst thumbnailImageDataUrl = await generateThumbnail(fileToInject, fileType.mime);\n\n\t\tsetFiles((prev) => {\n\t\t\tconst updatedFiles = [...prev];\n\t\t\tupdatedFiles[index] = {\n\t\t\t\t...fileToInject,\n\t\t\t\tfileItem: {\n\t\t\t\t\terrorMessage,\n\t\t\t\t\tid: fileToInject.fileItem?.id || generateRandomId(),\n\t\t\t\t\tname: FileHelper.deduplicateFileName(\n\t\t\t\t\t\tfiles.map(({ fileItem }) => fileItem?.name),\n\t\t\t\t\t\tindex,\n\t\t\t\t\t\trawFile.name\n\t\t\t\t\t),\n\t\t\t\t\tprogress: 1,\n\t\t\t\t\tsize: rawFile.size,\n\t\t\t\t\ttype: fileType.mime,\n\t\t\t\t\tthumbnailImageDataUrl,\n\t\t\t\t},\n\t\t\t\trawFile,\n\t\t\t\tstatus: EFileStatus.UPLOADED,\n\t\t\t};\n\t\t\treturn updatedFiles;\n\t\t});\n\t};\n\n\tconst parseFile = async (fileToParse: IFile, index: number) => {\n\t\tconst compressedFile = await compressImageFile(fileToParse);\n\t\tconst dataURL = await FileHelper.fileToDataUrl(compressedFile.rawFile);\n\t\tconst { errorMessage, fileType, status } = await readFile({ dataURL, ...compressedFile });\n\n\t\tsetFiles((prev) => {\n\t\t\tconst updatedFiles = [...prev];\n\t\t\tupdatedFiles[index] = {\n\t\t\t\t...compressedFile,\n\t\t\t\tdataURL,\n\t\t\t\tfileItem: {\n\t\t\t\t\terrorMessage,\n\t\t\t\t\tid: generateRandomId(),\n\t\t\t\t\tname: FileHelper.deduplicateFileName(\n\t\t\t\t\t\tfiles.map(({ fileItem }) => fileItem?.name),\n\t\t\t\t\t\tindex,\n\t\t\t\t\t\tFileHelper.sanitizeFileName(compressedFile.rawFile.name)\n\t\t\t\t\t),\n\t\t\t\t\tsize: compressedFile.rawFile.size,\n\t\t\t\t\ttype: fileType.mime,\n\t\t\t\t\tprogress: 0,\n\t\t\t\t},\n\t\t\t\tstatus,\n\t\t\t};\n\t\t\treturn updatedFiles;\n\t\t});\n\t};\n\n\tconst uploadFile = async (fileToUpload: IFile, index: number) => {\n\t\tsetFiles((prev) => {\n\t\t\tconst updatedFiles = [...prev];\n\t\t\tupdatedFiles[index] = {\n\t\t\t\t...prev[index],\n\t\t\t\tstatus: EFileStatus.UPLOADING,\n\t\t\t};\n\t\t\treturn updatedFiles;\n\t\t});\n\n\t\tconst formData = new FormData();\n\t\tformData.append(\"sessionId\", upload?.sessionId || sessionId.current || \"\");\n\t\tformData.append(\"fileId\", fileToUpload.fileItem.id);\n\t\tformData.append(\"slot\", fileToUpload.slot.toString());\n\t\tif (upload.type === \"base64\") {\n\t\t\tformData.append(\"dataURL\", fileToUpload.dataURL);\n\t\t} else if (upload.type === \"multipart\") {\n\t\t\tformData.append(\"file\", fileToUpload.rawFile, fileToUpload.fileItem?.name);\n\t\t}\n\n\t\ttry {\n\t\t\tconst response = await new AxiosApiClient(\"\", undefined, undefined, true).post(upload.url, formData, {\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": upload.type === \"base64\" ? \"application/json\" : \"multipart/form-data\",\n\t\t\t\t\t...upload.headers,\n\t\t\t\t},\n\t\t\t\tonUploadProgress: (progressEvent) => {\n\t\t\t\t\tconst { loaded, total } = progressEvent;\n\t\t\t\t\tsetFiles((prev) => {\n\t\t\t\t\t\tif (!prev[index]) return prev;\n\t\t\t\t\t\tconst updatedFiles = [...prev];\n\t\t\t\t\t\tupdatedFiles[index] = {\n\t\t\t\t\t\t\t...prev[index],\n\t\t\t\t\t\t\tfileItem: {\n\t\t\t\t\t\t\t\t...prev[index].fileItem,\n\t\t\t\t\t\t\t\tprogress: loaded / total,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\treturn updatedFiles;\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tconst thumbnailImageDataUrl = await generateThumbnail(fileToUpload);\n\t\t\tsetFiles((prev) => {\n\t\t\t\tif (!prev[index]) return prev;\n\t\t\t\tconst updatedFiles = [...prev];\n\t\t\t\tupdatedFiles[index] = {\n\t\t\t\t\t...prev[index],\n\t\t\t\t\tfileItem: {\n\t\t\t\t\t\t...prev[index].fileItem,\n\t\t\t\t\t\tprogress: 1,\n\t\t\t\t\t\tthumbnailImageDataUrl,\n\t\t\t\t\t},\n\t\t\t\t\tfileUrl: response?.[\"data\"]?.[\"fileUrl\"],\n\t\t\t\t\tstatus: EFileStatus.UPLOADED,\n\t\t\t\t\tuploadResponse: response,\n\t\t\t\t};\n\t\t\t\treturn updatedFiles;\n\t\t\t});\n\t\t} catch (err) {\n\t\t\tdispatchFieldEvent<TUploadErrorDetail>(\"upload-error\", id, {\n\t\t\t\tfileId: fileToUpload.fileItem.id,\n\t\t\t\terrorData: (err as AxiosError)?.response?.data,\n\t\t\t});\n\n\t\t\tthrow err;\n\t\t}\n\t};\n\n\tconst deleteFile = (index: number) => {\n\t\tsetFiles((prev) => prev.filter((_file, i) => i !== index));\n\t};\n\n\tconst compressImageFile = async (fileToCompress: IFile) => {\n\t\tif (maxFileSizeRule.maxSizeInKb > 0 && compressImages) {\n\t\t\tconst maxSizeInB = maxFileSizeRule.maxSizeInKb * 1024;\n\t\t\tif (fileToCompress.rawFile.size > maxSizeInB) {\n\t\t\t\tconst fileType = await FileHelper.getType(fileToCompress.rawFile);\n\t\t\t\tif (RESIZEABLE_IMAGE_TYPES.includes(fileType.mime)) {\n\t\t\t\t\tlet fileOrBlob = await ImageHelper.compressImage(fileToCompress.rawFile, {\n\t\t\t\t\t\tfileSize: maxFileSizeRule.maxSizeInKb,\n\t\t\t\t\t});\n\t\t\t\t\tif (fileOrBlob instanceof Blob) {\n\t\t\t\t\t\tfileOrBlob = FileHelper.blobToFile(fileOrBlob, {\n\t\t\t\t\t\t\tname: fileToCompress.rawFile.name,\n\t\t\t\t\t\t\tlastModified: fileToCompress.rawFile.lastModified,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...fileToCompress,\n\t\t\t\t\t\trawFile: fileOrBlob,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn fileToCompress;\n\t};\n\n\t// =============================================================================\n\t// RENDER FUNCTIONS\n\t// =============================================================================\n\treturn null;\n};\n\nexport default FileUploadManager;\n"],"names":["RESIZEABLE_IMAGE_TYPES","props","compressImages","fileTypeRule","id","maxFileSizeRule","upload","uploadRule","value","files","setFiles","setCurrentFileIds","useContext","FileUploadContext","previousValue","usePrevious","setValue","useFormContext","dispatchFieldEvent","useFieldEvent","sessionId","useRef","useEffect","current","generateRandomId","forEach","async","file","index","status","EFileStatus","INJECTED","injectFile","NONE","parseFile","UPLOAD_READY","uploadFile","TO_DELETE","deleteFile","err","handleGenericError","uploadedFiles","filter","UPLOADED","hasNotPrefilledFiles","addedFrom","length","gotDeleteFiles","shouldDirty","map","fileItem","dataURL","fileUrl","uploadResponse","type","fileId","fileName","name","shouldTouch","join","undefined","prev","updatedFiles","rawFile","errorMessage","ERROR_MESSAGES","UPLOAD","GENERIC","ERROR_GENERIC","generateThumbnail","fileType","includes","image","ImageHelper","dataUrlToImage","thumbnail","resampleImage","width","height","crop","FileHelper","fileToDataUrl","readFile","fileToRead","getType","ext","FILE_TYPE","ERROR_FORMAT","maxSizeInKb","maxSizeInB","getFilesizeFromBase64","size","MAX_FILE_SIZE","ERROR_SIZE","fileToInject","INJECTING","blob","dataUrlToBlob","File","response","AxiosApiClient","responseType","get","mime","thumbnailImageDataUrl","deduplicateFileName","progress","fileToParse","compressedFile","compressImageFile","sanitizeFileName","fileToUpload","UPLOADING","formData","FormData","append","slot","toString","post","url","headers","onUploadProgress","progressEvent","loaded","total","errorData","data","_file","i","fileToCompress","fileOrBlob","compressImage","fileSize","Blob","blobToFile","lastModified"],"mappings":"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"}
@@ -381,7 +381,7 @@ function zO(e){return"[object Object]"===Object.prototype.toString.call(e)}Objec
381
381
  margin: 0;
382
382
  padding: 0;
383
383
  }
384
- `,x$=({Field:n,id:r,schema:i,warning:a})=>{const{control:o,setValue:s}=we(),{formSchema:{defaultValues:u,restoreMode:l="none"}}=Ok(),{getField:c,setField:d,setRegisteredFields:f}=Ck(),{removeFieldValidationConfig:p}=Nk(),h=t.useRef(l);t.useEffect((()=>{h.current=l}),[l]),DI((()=>(s(r,c(r)),f((e=>[...e,r])),()=>{switch(h.current){case"default-value":d(r,u?.[r]);break;case"none":{const e=c(r);Gr(e)?d(r,[]):Qk(e)?d(r,""):(EI(e)||mI(e))&&d(r,void 0);break}}f((e=>e.filter((e=>e!==r)))),p(r)})),[]);const m=(t,n)=>{const r=n.label;return"string"==typeof r?{children:e.jsx(XL,{inline:!0,children:r})}:r&&"object"==typeof r&&r.mainLabel?{children:e.jsx(XL,{inline:!0,children:r.mainLabel}),subtitle:e.jsx(w$,{className:"sub-label",children:r.subLabel}),addon:r.hint?.content?{type:"popover",content:e.jsx(T$,{className:"label-hint",children:r.hint?.content}),"data-testid":(n["data-testid"]||t)+"-popover",zIndex:r.hint?.zIndex}:void 0}:void 0};return e.jsx(Fe,{control:o,name:r,shouldUnregister:!0,render:({field:t,fieldState:o})=>{const s={...t,id:r,formattedLabel:m(r,i),value:c(r),warning:a,ref:void 0};return e.jsx(n,{schema:i,...s,...o})}})},w$=H.default(XL)`
384
+ `,x$=({Field:n,id:r,schema:i,warning:a})=>{const{control:o,setValue:s}=we(),{formSchema:{defaultValues:u,restoreMode:l="none"}}=Ok(),{getField:c,setField:d,setRegisteredFields:f}=Ck(),{removeFieldValidationConfig:p}=Nk(),h=t.useRef(l);t.useEffect((()=>{h.current=l}),[l]),DI((()=>(s(r,c(r)),f((e=>[...e,r])),()=>{switch(h.current){case"default-value":d(r,u?.[r]);break;case"none":{const e=c(r);Gr(e)?d(r,[]):Qk(e)?d(r,""):(EI(e)||mI(e))&&d(r,void 0);break}}f((e=>e.filter((e=>e!==r)))),p(r)})),[]);const m=(t,n)=>{const r=n.label;return"string"==typeof r?{children:e.jsx(XL,{inline:!0,children:r})}:r&&"object"==typeof r&&r.mainLabel?{children:e.jsx(XL,{inline:!0,children:r.mainLabel}),subtitle:e.jsx(w$,{className:"sub-label",children:r.subLabel}),addon:r.hint?.content?{type:"popover",content:e.jsx(T$,{className:"label-hint",children:r.hint?.content}),"data-testid":(n["data-testid"]||t)+"-popover",zIndex:r.hint?.zIndex}:void 0}:void 0};return e.jsx(Fe,{control:o,name:r,shouldUnregister:!0,render:({field:t,fieldState:o})=>{const{ref:s,...u}=t,l={...u,id:r,formattedLabel:m(r,i),value:c(r),warning:a};return e.jsx(n,{schema:i,...l,...o})}})},w$=H.default(XL)`
385
385
  &.sub-label {
386
386
  display: block;
387
387
  ${r.TextStyleHelper.getFontFamily("BodySmall",400)};
@@ -433,7 +433,7 @@ function zO(e){return"[object Object]"===Object.prototype.toString.call(e)}Objec
433
433
  cursor: pointer;
434
434
  `,VF=H.default(c.Alert)`
435
435
  margin-top: 0.5rem;
436
- `;var HF=Hr,GF=Gr,YF=Kt?Kt.isConcatSpreadable:void 0;var WF=ua,qF=function(e){return GF(e)||HF(e)||!!(YF&&e&&e[YF])};var KF=function e(t,n,r,i,a){var o=-1,s=t.length;for(r||(r=qF),a||(a=[]);++o<s;){var u=t[o];n>0&&r(u)?n>1?e(u,n-1,r,i,a):WF(a,u):i||(a[a.length]=u)}return a};var JF=Da,XF=function(){},QF=JF&&1/eA(new JF([,-0]))[1]==1/0?function(e){return new JF(e)}:XF,ez=Qb,tz=sE,nz=uE,rz=lE,iz=QF,az=eA;var oz=function(e,t,n){var r=-1,i=tz,a=e.length,o=!0,s=[],u=s;if(n)o=!1,i=nz;else if(a>=200){var l=t?null:iz(e);if(l)return az(l);o=!1,i=rz,u=new ez}else u=t?[]:s;e:for(;++r<a;){var c=e[r],d=t?t(c):c;if(c=n||0!==c?c:0,o&&d==d){for(var f=u.length;f--;)if(u[f]===d)continue e;t&&u.push(d),s.push(c)}else i(u,d,n)||(u!==s&&u.push(d),s.push(c))}return s},sz=h$,uz=KF,lz=oz;var cz=function(e,t,n){var r=e.length;if(r<2)return r?lz(e[0]):[];for(var i=-1,a=Array(r);++i<r;)for(var o=e[i],s=-1;++s<r;)s!=i&&(a[i]=sz(a[i]||o,e[s],t,n));return lz(uz(a,1),t,n)},dz=Ji,fz=cz,pz=kE,hz=DE((function(e){return fz(dz(e,pz))}));const mz=t.createContext({files:[],setFiles:()=>null,currentFileIds:[],setCurrentFileIds:()=>null}),gz=({children:n})=>{const[r,i]=t.useState([]),[a,o]=t.useState([]),s=t.useMemo((()=>({files:r,setFiles:i,currentFileIds:a,setCurrentFileIds:o})),[r,a]);return e.jsx(mz.Provider,{value:s,children:n})};var yz,_z;!function(e){e.findAvailableSlot=e=>{const t=e.reduce(((e,{slot:t})=>t>e?t:e),0),n=Math.max(t,e.length),r=Array(n).fill(0).map(((e,t)=>t)),i=e.map((({slot:e})=>e));return r.filter((e=>!i.includes(e)))[0]??n}}(yz||(yz={})),exports.EFileStatus=void 0,(_z=exports.EFileStatus||(exports.EFileStatus={}))[_z.INJECTED=-99]="INJECTED",_z[_z.INJECTING=-98]="INJECTING",_z[_z.TO_DELETE=-4]="TO_DELETE",_z[_z.ERROR_FORMAT=-3]="ERROR_FORMAT",_z[_z.ERROR_GENERIC=-2]="ERROR_GENERIC",_z[_z.ERROR_SIZE=-1]="ERROR_SIZE",_z[_z.NONE=0]="NONE",_z[_z.UPLOAD_READY=4]="UPLOAD_READY",_z[_z.UPLOADING=5]="UPLOADING",_z[_z.UPLOADED=6]="UPLOADED";const vz=t.lazy((()=>Promise.resolve().then((function(){return require("./file-upload-manager.981ed57b.js")})))),bz=n=>{const{id:r,error:i,isDirty:a,isTouched:o,value:s,schema:{compressImages:u,description:l,label:c,uploadOnAddingFile:d,validation:f,warning:p,...h},warning:m}=n,{files:g,currentFileIds:y,setFiles:_}=t.useContext(mz),v=t.useRef({}),b=t.useRef({}),E=t.useRef({}),S=t.useRef({}),{setFieldValidationConfig:A}=Nk(),{dispatchFieldEvent:x}=LI(),{clearErrors:w,setError:T}=we(),[O,C]=t.useState(),N=t.useRef(g),D=t.useCallback(((e,t)=>{const n=[...t],i=n.length;e.forEach(((e,t)=>{!b.current.max||i+t<b.current.max?(n.push({...e,slot:yz.findAvailableSlot(n)}),w(r)):T(r,{type:"max",message:b.current.errorMessage||Uh.UPLOAD().MAX_FILES(b.current.max)})})),_(n)}),[w,r,T,_]);t.useEffect((()=>{N.current=g}),[g]),t.useEffect((()=>{x("mount",r)}),[x,r]),t.useEffect((()=>{const e=f?.find((e=>"required"in e)),t=f?.find((e=>"fileType"in e)),n=f?.find((e=>"maxSizeInKb"in e)),i=f?.find((e=>"upload"in e&&e.upload));v.current=t?.fileType?t:{},E.current=n?.maxSizeInKb>0?n:{},S.current=i||{};const a=f?.find((e=>"length"in e)),o=f?.find((e=>"max"in e));b.current=a?{max:a.length,errorMessage:a.errorMessage}:o?{max:o.max,errorMessage:o.errorMessage}:{},A(r,yT().of(mT().shape({dataURL:ew(),fileId:ew(),fileName:ew(),fileUrl:ew(),uploadResponse:mT()})).test("is-empty-array",e?.errorMessage||Uh.UPLOAD().REQUIRED,(t=>!t||!e?.required||t.length>0)).test("max-size-in-kb",E.current.errorMessage||Uh.UPLOAD().MAX_FILE_SIZE(E.current.maxSizeInKb),(e=>!(e&&Array.isArray(e)&&E.current.maxSizeInKb)||g.filter((e=>e.status===exports.EFileStatus.UPLOADED)).every((e=>"base64"===d.type?exports.FileHelper.getFilesizeFromBase64(e.dataURL)<=1024*E.current.maxSizeInKb:"multipart"===d.type?e.rawFile.size<=1024*E.current.maxSizeInKb:void 0)))).test("max-files",b.current.errorMessage||Uh.UPLOAD().MAX_FILES(b.current.max),(e=>!(e&&Array.isArray(e)&&b.current.max)||e.length<=b.current.max)),f)}),[f,g.map((e=>e.status)).join(",")]),t.useEffect((()=>{if(!a&&!o){const e=Array.isArray(s)?s:[];if(!(hz(e.map((({fileId:e})=>e)),y).length>0))return;const t=[];e.forEach((({dataURL:e,fileId:n,fileName:r,fileUrl:i,uploadResponse:a})=>{t.push({addedFrom:"schema",dataURL:e,fileItem:{id:n},uploadResponse:a,fileUrl:i,rawFile:{name:r},slot:null,status:exports.EFileStatus.INJECTED})})),D(t,[])}}),[D,a,o,y,s]),t.useEffect((()=>{if(i?.message)try{const{message:e,fileErrors:t}=JSON.parse(i.message);t&&_(N.current.map((e=>{const n=t[e.fileItem.id];return n?{...e,fileItem:{...e.fileItem,errorMessage:n}}:e}))),e&&C(e)}catch(e){C(i.message)}else C(void 0)}),[i?.message,_]);const L=t=>t?e.jsx(XL,{children:t}):null;return e.jsxs(e.Fragment,{children:[e.jsx(t.Suspense,{fallback:null,children:e.jsx(vz,{id:r,fileTypeRule:v.current,maxFileSizeRule:E.current,uploadRule:S.current,upload:d,value:s,compressImages:!!u})}),e.jsx(M.FileUpload,{...h,accept:v.current.fileType?.map((e=>`.${e}`)).join(","),description:L(l),errorMessage:L(O),fileItems:g.filter((({fileItem:e,status:t})=>!!e&&t!==exports.EFileStatus.INJECTED&&t!==exports.EFileStatus.INJECTING)).map((({fileItem:e})=>e)),id:r,maxFiles:b.current.max,onChange:e=>{D(e.map((e=>({addedFrom:"input",rawFile:e,slot:null,status:exports.EFileStatus.NONE}))),g)},onDelete:e=>{_(g.map((t=>t.fileItem.id!==e.id?t:{...t,status:exports.EFileStatus.TO_DELETE}))),w(r)},title:L(c),warning:L(m||p)})]})},Ez=t.createContext({images:[],setImages:()=>null,errorCount:0,setErrorCount:()=>null,currentFileIds:[],setCurrentFileIds:()=>null}),Sz=({children:n})=>{const[r,i]=t.useState([]),[a,o]=t.useState(0),[s,u]=t.useState([]);return e.jsx(Ez.Provider,{value:{images:r,setImages:i,errorCount:a,setErrorCount:o,currentFileIds:s,setCurrentFileIds:u},children:n})};var Az;!function(e){e.findAvailableSlot=e=>{const t=e.reduce(((e,{slot:t})=>t>e?t:e),0),n=Math.max(t,e.length),r=Array(n).fill(0).map(((e,t)=>t)),i=e.map((({slot:e})=>e));return r.filter((e=>!i.includes(e)))[0]??n}}(Az||(Az={}));const xz=["jpg","gif","png","heic","heif","webp"];var wz;exports.EImageStatus=void 0,(wz=exports.EImageStatus||(exports.EImageStatus={}))[wz.INJECTED=-99]="INJECTED",wz[wz.ERROR_CUSTOM_MUTED=-7]="ERROR_CUSTOM_MUTED",wz[wz.ERROR_EXCEED=-6]="ERROR_EXCEED",wz[wz.ERROR_CUSTOM=-5]="ERROR_CUSTOM",wz[wz.TO_DELETE=-4]="TO_DELETE",wz[wz.ERROR_FORMAT=-3]="ERROR_FORMAT",wz[wz.ERROR_GENERIC=-2]="ERROR_GENERIC",wz[wz.ERROR_SIZE=-1]="ERROR_SIZE",wz[wz.NONE=0]="NONE",wz[wz.TO_RECOMPRESS=1]="TO_RECOMPRESS",wz[wz.COMPRESSED=2]="COMPRESSED",wz[wz.RECOMPRESSED=2]="RECOMPRESSED",wz[wz.CONVERTED=2]="CONVERTED",wz[wz.EDITED=3]="EDITED",wz[wz.UPLOAD_READY=4]="UPLOAD_READY",wz[wz.UPLOADING=5]="UPLOADING",wz[wz.UPLOADED=6]="UPLOADED",wz[wz.PENDING=7]="PENDING";var Tz,Mz={exports:{}},Oz={exports:{}},Cz={};var Nz,Dz,Lz,Iz,kz,$z,Rz,Fz,zz,Pz,jz,Zz,Uz,Bz,Vz={};
436
+ `;var HF=Hr,GF=Gr,YF=Kt?Kt.isConcatSpreadable:void 0;var WF=ua,qF=function(e){return GF(e)||HF(e)||!!(YF&&e&&e[YF])};var KF=function e(t,n,r,i,a){var o=-1,s=t.length;for(r||(r=qF),a||(a=[]);++o<s;){var u=t[o];n>0&&r(u)?n>1?e(u,n-1,r,i,a):WF(a,u):i||(a[a.length]=u)}return a};var JF=Da,XF=function(){},QF=JF&&1/eA(new JF([,-0]))[1]==1/0?function(e){return new JF(e)}:XF,ez=Qb,tz=sE,nz=uE,rz=lE,iz=QF,az=eA;var oz=function(e,t,n){var r=-1,i=tz,a=e.length,o=!0,s=[],u=s;if(n)o=!1,i=nz;else if(a>=200){var l=t?null:iz(e);if(l)return az(l);o=!1,i=rz,u=new ez}else u=t?[]:s;e:for(;++r<a;){var c=e[r],d=t?t(c):c;if(c=n||0!==c?c:0,o&&d==d){for(var f=u.length;f--;)if(u[f]===d)continue e;t&&u.push(d),s.push(c)}else i(u,d,n)||(u!==s&&u.push(d),s.push(c))}return s},sz=h$,uz=KF,lz=oz;var cz=function(e,t,n){var r=e.length;if(r<2)return r?lz(e[0]):[];for(var i=-1,a=Array(r);++i<r;)for(var o=e[i],s=-1;++s<r;)s!=i&&(a[i]=sz(a[i]||o,e[s],t,n));return lz(uz(a,1),t,n)},dz=Ji,fz=cz,pz=kE,hz=DE((function(e){return fz(dz(e,pz))}));const mz=t.createContext({files:[],setFiles:()=>null,currentFileIds:[],setCurrentFileIds:()=>null}),gz=({children:n})=>{const[r,i]=t.useState([]),[a,o]=t.useState([]),s=t.useMemo((()=>({files:r,setFiles:i,currentFileIds:a,setCurrentFileIds:o})),[r,a]);return e.jsx(mz.Provider,{value:s,children:n})};var yz,_z;!function(e){e.findAvailableSlot=e=>{const t=e.reduce(((e,{slot:t})=>t>e?t:e),0),n=Math.max(t,e.length),r=Array(n).fill(0).map(((e,t)=>t)),i=e.map((({slot:e})=>e));return r.filter((e=>!i.includes(e)))[0]??n}}(yz||(yz={})),exports.EFileStatus=void 0,(_z=exports.EFileStatus||(exports.EFileStatus={}))[_z.INJECTED=-99]="INJECTED",_z[_z.INJECTING=-98]="INJECTING",_z[_z.TO_DELETE=-4]="TO_DELETE",_z[_z.ERROR_FORMAT=-3]="ERROR_FORMAT",_z[_z.ERROR_GENERIC=-2]="ERROR_GENERIC",_z[_z.ERROR_SIZE=-1]="ERROR_SIZE",_z[_z.NONE=0]="NONE",_z[_z.UPLOAD_READY=4]="UPLOAD_READY",_z[_z.UPLOADING=5]="UPLOADING",_z[_z.UPLOADED=6]="UPLOADED";const vz=t.lazy((()=>Promise.resolve().then((function(){return require("./file-upload-manager.8b3a773b.js")})))),bz=n=>{const{id:r,error:i,isDirty:a,isTouched:o,value:s,schema:{compressImages:u,description:l,label:c,uploadOnAddingFile:d,validation:f,warning:p,...h},warning:m}=n,{files:g,currentFileIds:y,setFiles:_}=t.useContext(mz),v=t.useRef({}),b=t.useRef({}),E=t.useRef({}),S=t.useRef({}),{setFieldValidationConfig:A}=Nk(),{dispatchFieldEvent:x}=LI(),{clearErrors:w,setError:T}=we(),[O,C]=t.useState(),N=t.useRef(g),D=t.useCallback(((e,t)=>{const n=[...t],i=n.length;e.forEach(((e,t)=>{!b.current.max||i+t<b.current.max?(n.push({...e,slot:yz.findAvailableSlot(n)}),w(r)):T(r,{type:"max",message:b.current.errorMessage||Uh.UPLOAD().MAX_FILES(b.current.max)})})),_(n)}),[w,r,T,_]);t.useEffect((()=>{N.current=g}),[g]),t.useEffect((()=>{x("mount",r)}),[x,r]),t.useEffect((()=>{const e=f?.find((e=>"required"in e)),t=f?.find((e=>"fileType"in e)),n=f?.find((e=>"maxSizeInKb"in e)),i=f?.find((e=>"upload"in e&&e.upload));v.current=t?.fileType?t:{},E.current=n?.maxSizeInKb>0?n:{},S.current=i||{};const a=f?.find((e=>"length"in e)),o=f?.find((e=>"max"in e));b.current=a?{max:a.length,errorMessage:a.errorMessage}:o?{max:o.max,errorMessage:o.errorMessage}:{},A(r,yT().of(mT().shape({dataURL:ew(),fileId:ew(),fileName:ew(),fileUrl:ew(),uploadResponse:mT()})).test("is-empty-array",e?.errorMessage||Uh.UPLOAD().REQUIRED,(t=>!t||!e?.required||t.length>0)).test("max-size-in-kb",E.current.errorMessage||Uh.UPLOAD().MAX_FILE_SIZE(E.current.maxSizeInKb),(e=>!(e&&Array.isArray(e)&&E.current.maxSizeInKb)||g.filter((e=>e.status===exports.EFileStatus.UPLOADED)).every((e=>"base64"===d.type?exports.FileHelper.getFilesizeFromBase64(e.dataURL)<=1024*E.current.maxSizeInKb:"multipart"===d.type?e.rawFile.size<=1024*E.current.maxSizeInKb:void 0)))).test("max-files",b.current.errorMessage||Uh.UPLOAD().MAX_FILES(b.current.max),(e=>!(e&&Array.isArray(e)&&b.current.max)||e.length<=b.current.max)),f)}),[f,g.map((e=>e.status)).join(",")]),t.useEffect((()=>{if(!a&&!o){const e=Array.isArray(s)?s:[];if(!(hz(e.map((({fileId:e})=>e)),y).length>0))return;const t=[];e.forEach((({dataURL:e,fileId:n,fileName:r,fileUrl:i,uploadResponse:a})=>{t.push({addedFrom:"schema",dataURL:e,fileItem:{id:n},uploadResponse:a,fileUrl:i,rawFile:{name:r},slot:null,status:exports.EFileStatus.INJECTED})})),D(t,[])}}),[D,a,o,y,s]),t.useEffect((()=>{if(i?.message)try{const{message:e,fileErrors:t}=JSON.parse(i.message);t&&_(N.current.map((e=>{const n=t[e.fileItem.id];return n?{...e,fileItem:{...e.fileItem,errorMessage:n}}:e}))),e&&C(e)}catch(e){C(i.message)}else C(void 0)}),[i?.message,_]);const L=t=>t?e.jsx(XL,{children:t}):null;return e.jsxs(e.Fragment,{children:[e.jsx(t.Suspense,{fallback:null,children:e.jsx(vz,{id:r,fileTypeRule:v.current,maxFileSizeRule:E.current,uploadRule:S.current,upload:d,value:s,compressImages:!!u})}),e.jsx(M.FileUpload,{...h,accept:v.current.fileType?.map((e=>`.${e}`)).join(","),description:L(l),errorMessage:L(O),fileItems:g.filter((({fileItem:e,status:t})=>!!e&&t!==exports.EFileStatus.INJECTED&&t!==exports.EFileStatus.INJECTING)).map((({fileItem:e})=>e)),id:r,maxFiles:b.current.max,onChange:e=>{D(e.map((e=>({addedFrom:"input",rawFile:e,slot:null,status:exports.EFileStatus.NONE}))),g)},onDelete:e=>{_(g.map((t=>t.fileItem.id!==e.id?t:{...t,status:exports.EFileStatus.TO_DELETE}))),w(r)},title:L(c),warning:L(m||p)})]})},Ez=t.createContext({images:[],setImages:()=>null,errorCount:0,setErrorCount:()=>null,currentFileIds:[],setCurrentFileIds:()=>null}),Sz=({children:n})=>{const[r,i]=t.useState([]),[a,o]=t.useState(0),[s,u]=t.useState([]);return e.jsx(Ez.Provider,{value:{images:r,setImages:i,errorCount:a,setErrorCount:o,currentFileIds:s,setCurrentFileIds:u},children:n})};var Az;!function(e){e.findAvailableSlot=e=>{const t=e.reduce(((e,{slot:t})=>t>e?t:e),0),n=Math.max(t,e.length),r=Array(n).fill(0).map(((e,t)=>t)),i=e.map((({slot:e})=>e));return r.filter((e=>!i.includes(e)))[0]??n}}(Az||(Az={}));const xz=["jpg","gif","png","heic","heif","webp"];var wz;exports.EImageStatus=void 0,(wz=exports.EImageStatus||(exports.EImageStatus={}))[wz.INJECTED=-99]="INJECTED",wz[wz.ERROR_CUSTOM_MUTED=-7]="ERROR_CUSTOM_MUTED",wz[wz.ERROR_EXCEED=-6]="ERROR_EXCEED",wz[wz.ERROR_CUSTOM=-5]="ERROR_CUSTOM",wz[wz.TO_DELETE=-4]="TO_DELETE",wz[wz.ERROR_FORMAT=-3]="ERROR_FORMAT",wz[wz.ERROR_GENERIC=-2]="ERROR_GENERIC",wz[wz.ERROR_SIZE=-1]="ERROR_SIZE",wz[wz.NONE=0]="NONE",wz[wz.TO_RECOMPRESS=1]="TO_RECOMPRESS",wz[wz.COMPRESSED=2]="COMPRESSED",wz[wz.RECOMPRESSED=2]="RECOMPRESSED",wz[wz.CONVERTED=2]="CONVERTED",wz[wz.EDITED=3]="EDITED",wz[wz.UPLOAD_READY=4]="UPLOAD_READY",wz[wz.UPLOADING=5]="UPLOADING",wz[wz.UPLOADED=6]="UPLOADED",wz[wz.PENDING=7]="PENDING";var Tz,Mz={exports:{}},Oz={exports:{}},Cz={};var Nz,Dz,Lz,Iz,kz,$z,Rz,Fz,zz,Pz,jz,Zz,Uz,Bz,Vz={};
437
437
  /** @license React v16.13.1
438
438
  * react-is.development.js
439
439
  *
@@ -927,7 +927,7 @@ object-assign
927
927
  stroke: ${i.Color.Primary};
928
928
  stroke-width: 1;
929
929
  }
930
- `,sZ=n=>{const{accepts:r,activeFileIndex:i,capture:o,id:s="image-thumbnails",images:u,maxFiles:l,onClickThumbnail:c,onSelectFile:d,multiple:f}=n,p=t.useRef(null),h=a.useTheme(),m=async e=>{const t=Array.from(e.target.files||[]);t.length&&setTimeout((()=>{d(t)}),100)},g=()=>p?.current?.click();return e.jsxs(Xj,{id:exports.TestHelper.generateId(s),children:[u.map(((t,n)=>t.status===exports.EImageStatus.NONE?e.jsx(rZ,{children:[...Array(4)].map(((t,n)=>e.jsx(nZ,{},`dot-${n}`)))},n):t.status>exports.EImageStatus.NONE||t.status===exports.EImageStatus.ERROR_CUSTOM_MUTED?e.jsx(Qj,{id:exports.TestHelper.generateId(s,`item-${n+1}`),"data-testid":exports.TestHelper.generateId(s,`item-${n+1}`),src:t.thumbnailDataURL||t.dataURL||"https://assets.life.gov.sg/web-frontend-engine/img/icons/photo-placeholder-add.svg",type:"button","aria-label":`thumbnail of ${t.name}`,onClick:()=>c(n),children:e.jsx(iZ,{isSelected:i===n})},n):"reviewModal"===t.addedFrom||t.status<exports.EImageStatus.NONE?e.jsxs(Qj,{id:exports.TestHelper.generateId(s,`item-${n+1}`),"data-testid":exports.TestHelper.generateId(s,`item-${n+1}`),type:"button","aria-label":`error with ${t.name}`,onClick:()=>c(n),error:!0,children:[e.jsx(iZ,{isSelected:i===n}),e.jsx(eZ,{})]},n):void 0)),(u.filter((({status:e,addedFrom:t})=>e>=exports.EImageStatus.NONE||e===exports.EImageStatus.ERROR_CUSTOM_MUTED||"reviewModal"===t)).length<l||!l)&&e.jsxs(e.Fragment,{children:[e.jsx(aZ,{id:exports.TestHelper.generateId(s,"file-input"),"data-testid":exports.TestHelper.generateId(s,"file-input"),type:"file","aria-hidden":"true",tabIndex:-1,capture:o,ref:p,accept:r.map((e=>`.${e}`)).join(", "),onChange:m,multiple:f,value:""}),e.jsx(oZ,{type:"button",id:exports.TestHelper.generateId(s,"add-image-button"),"data-testid":exports.TestHelper.generateId(s,"add-image-button"),"aria-label":"add image",onClick:g,theme:h||k.BaseTheme,children:e.jsx($.PlusIcon,{})})]})]})},uZ=t.lazy((()=>Promise.resolve().then((function(){return require("./index.71a851b1.js")})))),lZ=[{color:"#282828",label:"black"},{color:"#FFF",colorScheme:"light",label:"white"},{color:"#017cd3",label:"blue"},{color:"#fb0101",label:"red"},{color:"#22910c",label:"green"},{color:"#f8e821",label:"yellow"}],cZ=n=>{const{accepts:r,capture:i,className:a,compress:o,dimensions:u,id:l="image-review",maxFiles:c,maxSizeInKb:d,onExit:f,outputType:p,show:h,multiple:m,maxFilesErrorMessage:g,imageReviewModalStyles:y}=n,{images:_,setImages:v}=t.useContext(Ez),{dispatchFieldEvent:b,addFieldEventListener:E,removeFieldEventListener:S}=LI(),A=Ik(h),[x,w]=t.useState(_.length-1),[T,M]=t.useState(!1),[C,N]=t.useState(),D=!!_?.find((({status:e})=>e===exports.EImageStatus.NONE)),[L,I]=t.useState(lZ[0].color),[k,$]=t.useState(!1),R=t.useRef(null),F=!!_?.find((({addedFrom:e,status:t})=>"reviewModal"===e&&t<=exports.EImageStatus.NONE))||!_.length,z=t.useCallback((e=>{e.detail.removePendingImages&&v((e=>e.filter((({status:e})=>e===exports.EImageStatus.UPLOADED||e===exports.EImageStatus.ERROR_CUSTOM_MUTED)))),f()}),[f,v]),P=e=>{!c||e.length+_.filter((({status:e,addedFrom:t})=>e>=exports.EImageStatus.NONE||"reviewModal"===t)).length<=c?e.forEach((e=>{v((t=>{const n=Az.findAvailableSlot(t);return[...t,{id:Vh(),file:e,name:e.name,dimensions:u,status:exports.EImageStatus.NONE,uploadProgress:0,addedFrom:"reviewModal",slot:n}]}))})):v((t=>{const n=Az.findAvailableSlot(t);return[...t,{id:Vh(),file:e[0],name:e[0].name,dimensions:u,status:exports.EImageStatus.ERROR_EXCEED,uploadProgress:0,addedFrom:"reviewModal",slot:n}]}))},j=e=>{e&&(v((e=>e.map(((e,t)=>({...e,...t===x?{status:exports.EImageStatus.TO_DELETE}:{}}))))),w(Math.max(0,x-1))),N(null)},Z=t.useCallback((()=>{v((e=>e.filter((({status:e})=>e>=exports.EImageStatus.NONE||e===exports.EImageStatus.ERROR_CUSTOM_MUTED)).map((e=>{const t={...e};return e.drawingDataURL&&(t.dataURL=e.drawingDataURL),e.status<exports.EImageStatus.UPLOAD_READY&&e.status>exports.EImageStatus.NONE&&(t.status=exports.EImageStatus.UPLOAD_READY),t.drawingDataURL=void 0,t.drawing=void 0,t}))))}),[v]),U=()=>{!b("save-review-images",l,{images:_,retry:U})||(Z(),f())},B=()=>{M(!0),I(lZ[0].color)},V=async()=>{const{dataURL:e,drawing:t}=R.current?.export()||{},n=await exports.ImageHelper.dataUrlToImage(e),r=await exports.ImageHelper.resampleImage(n,{scale:96/n.width,type:exports.FileHelper.fileExtensionToMimeType(p)}),i=await exports.FileHelper.fileToDataUrl(r);v((n=>{const r=[...n];return r[x]={...r[x],thumbnailDataURL:i,drawingDataURL:e,drawing:t,status:o?exports.EImageStatus.TO_RECOMPRESS:exports.EImageStatus.EDITED},r})),M(!1),G()},H=()=>{G(),$(!0)},G=()=>{I(""),$(!1)};t.useEffect((()=>{const e={"trigger-save-review-images":Z,"dismiss-review-modal":z};return Object.entries(e).forEach((([e,t])=>{E(e,l,t)})),()=>{Object.entries(e).forEach((([e,t])=>{S(e,l,t)}))}}),[E,z,Z,l,S]),t.useEffect((()=>{w(_.length-1)}),[_.length]),t.useEffect((()=>{h?b("show-review-modal",l):A&&b("hide-review-modal",l)}),[h]);return e.jsx(s.Modal,{id:exports.TestHelper.generateId(l,void 0,h?"show":"hide"),className:a?`${a}-review`:void 0,show:h,children:e.jsx(Dj,{className:a?`${a}-review-modal-box`:void 0,imageReviewModalStyles:y,showCloseButton:!1,children:h?e.jsxs(e.Fragment,{children:[e.jsx(Lj,{className:a?`${a}-header`:void 0,$drawActive:T,children:T?e.jsxs(e.Fragment,{children:[e.jsx(Rj,{id:exports.TestHelper.generateId(l,"clear-drawing-button"),"data-testid":exports.TestHelper.generateId(l,"clear-drawing-button"),onClick:()=>N("clear-drawing"),children:"Clear"}),e.jsx(Rj,{id:exports.TestHelper.generateId(l,"save-drawing"),"data-testid":exports.TestHelper.generateId(l,"save-drawing"),onClick:V,children:"Save"})]}):e.jsxs(e.Fragment,{children:[e.jsx(Ij,{id:exports.TestHelper.generateId(l,"close-button"),"data-testid":exports.TestHelper.generateId(l,"close-button"),"aria-label":"exit review modal",onClick:()=>N("exit"),children:e.jsx(O.CrossIcon,{type:"cross"})}),e.jsx(kj,{weight:"semibold",children:"Review photos"})]})}),e.jsxs(Fj,{children:[_.length>0&&e.jsx(Vj,{className:a?`${a}-editor`:void 0,children:e.jsx(t.Suspense,{fallback:null,children:e.jsx(uZ,{baseImageDataURL:_[x]?.dataURL,drawing:_[x]?.drawing,color:T?L:void 0,erase:!!T&&k,ref:R,maxSizeInKb:d})})}),_.length>0&&e.jsx(zj,{children:"Loading Preview..."}),!T&&_[x]?.status>=exports.EImageStatus.NONE&&e.jsxs(Pj,{children:[e.jsxs(jj,{id:exports.TestHelper.generateId(l,"draw-button"),"data-testid":exports.TestHelper.generateId(l,"draw-button"),onClick:B,disabled:D,children:[e.jsx(Uj,{$disabled:D}),e.jsx(Zj,{weight:"semibold",$disabled:D,children:"Draw"})]}),e.jsxs(jj,{id:exports.TestHelper.generateId(l,"delete-button"),"data-testid":exports.TestHelper.generateId(l,"delete-button"),onClick:()=>N("delete"),disabled:D,children:[e.jsx(Bj,{$disabled:D}),e.jsx(Zj,{weight:"semibold",$disabled:D,children:"Delete"})]})]}),_[x]?.status<exports.EImageStatus.NONE&&e.jsx(Cj,{id:`${l}-photo-error`,image:_[x],accepts:r,maxSizeInKb:d,onClickOk:()=>j(!0),maxFilesErrorMessage:g,maxFiles:c})]}),e.jsx(Hj,{className:a?`${a}-footer`:void 0,children:T?e.jsxs(e.Fragment,{children:[e.jsx(Yj,{id:exports.TestHelper.generateId(l,"eraser-button"),"data-testid":exports.TestHelper.generateId(l,"eraser-button"),"aria-label":"eraser",onClick:H,children:e.jsx(Wj,{$eraseMode:k})}),e.jsx(Kj,{children:lZ.map((({color:t,colorScheme:n,label:r},i)=>e.jsx(Jj,{id:exports.TestHelper.generateId(l,`palette-color-${i}`),"aria-label":`${r} brush`,$color:t,$colorScheme:n,onClick:()=>(e=>{G(),I(e)})(t),children:L===t&&e.jsx(qj,{$colorScheme:n})},t)))})]}):e.jsxs(e.Fragment,{children:[e.jsx(sZ,{id:`${l}-image-thumbnails`,activeFileIndex:x,accepts:r,capture:i,maxFiles:c,images:_,onClickThumbnail:w,onSelectFile:P,multiple:m}),e.jsx(Gj,{id:exports.TestHelper.generateId(l,"save-button"),"data-testid":exports.TestHelper.generateId(l,"save-button"),onClick:U,disabled:F,children:"Save"})]})}),e.jsx(Nj,{images:_,show:C,onDecideClearDrawing:e=>{e&&R.current.clearDrawing(),N(null)},onDecideDelete:j,onDecideExit:e=>{e&&(v(_.filter((({addedFrom:e,status:t})=>t>=exports.EImageStatus.UPLOADED||t<exports.EImageStatus.NONE&&"dragInput"===e)).map((e=>({...e,drawingDataURL:void 0,drawing:void 0})))),f()),N(null)}})]}):e.jsx(e.Fragment,{})})})},dZ=t.lazy((()=>Promise.resolve().then((function(){return require("./index.aa390365.js")})))),fZ=n=>{const{schema:{buttonLabel:r,capture:i,className:a,compress:o,description:s,dimensions:u={width:1e3,height:1e3},editImage:l,label:c,outputType:d="jpg",uploadOnAddingFile:f,validation:p,multiple:h,imageReviewModalStyles:m},id:g,isDirty:y,isTouched:_,value:v,warning:b,...E}=n,{images:S,setImages:A,currentFileIds:x}=t.useContext(Ez),w=Ik(S),[T,M]=t.useState([...xz]),[O,C]=t.useState(0),[N,D]=t.useState(0),[L,I]=t.useState(!1),[k,$]=t.useState(!1),{setFieldValidationConfig:R}=Nk(),{dispatchFieldEvent:F}=LI();t.useEffect((()=>{F("mount",g)}),[F,g]),t.useEffect((()=>{if(!y&&!_){const e=Array.isArray(v)?v:[];if(!(hz(e.map((({fileId:e})=>e)),x).length>0))return;const t=[];e.forEach((({fileId:e,fileName:n,dataURL:r,uploadResponse:i},a)=>{const o={id:e||Vh(),file:{},name:n,dimensions:{width:10,height:10},dataURL:r,status:exports.EImageStatus.INJECTED,addedFrom:"schema",uploadProgress:100,slot:a,uploadResponse:i};t.push(o)})),A(t)}}),[y,_,x,A,v]),t.useEffect((()=>{const e=p?.find((e=>"required"in e)),t=p?.find((e=>"fileType"in e)),n=p?.find((e=>"maxSizeInKb"in e));t?.fileType&&t?.fileType!==T&&M(t?.fileType),n?.maxSizeInKb&&n?.maxSizeInKb!==N&&D(n?.maxSizeInKb);const r=p?.find((e=>"length"in e)),i=p?.find((e=>"max"in e));let a;r?a={maxFiles:r.length,errorMessage:r.errorMessage}:i&&(a={maxFiles:i.max,errorMessage:i.errorMessage}),a?.maxFiles&&O!==a.maxFiles&&C(a.maxFiles),R(g,yT().of(mT().shape({fileName:ew(),dataURL:ew()})).test("is-empty-array",e?.errorMessage||Uh.UPLOAD("photo").REQUIRED,(t=>!t||!e?.required||t.length>0)).test("max-size-in-kb",n?.errorMessage||Uh.UPLOAD("photo").MAX_FILE_SIZE(n?.maxSizeInKb),(e=>!(e&&Array.isArray(e)&&n?.maxSizeInKb)||e.every((e=>exports.FileHelper.getFilesizeFromBase64(e.dataURL)<=1024*n?.maxSizeInKb)))),p)}),[p]),t.useEffect((()=>{S.some(((e,t)=>{const n=w?.[t];if(e.status!==n?.status||e.dataURL!==n.dataURL)switch(e.status){case exports.EImageStatus.COMPRESSED:case exports.EImageStatus.CONVERTED:if(l&&!k)return exports.WindowHelper.isMobileView()?$(!0):I(!0),!0}})),0===S.length&&$(!1)}),[S.map((e=>e.status)).join(","),S.map((e=>e.dataURL)).join(",")]);const z=(e=!1)=>{e?l&&(document.body.classList.remove("lifesg-ds-overlay-open"),$(!0)):A((e=>e.map((e=>e.status<exports.EImageStatus.UPLOAD_READY&&e.status>exports.EImageStatus.NONE?{...e,status:exports.EImageStatus.UPLOAD_READY}:e)))),I(!1)};return e.jsxs(e.Fragment,{children:[e.jsx(t.Suspense,{fallback:null,children:e.jsx(dZ,{accepts:T,compress:!!o,dimensions:u,editImage:l,id:g,maxSizeInKb:N,outputType:d,upload:f,value:v})}),e.jsx(Sj,{id:g,capture:i,className:a,label:c,description:s,buttonLabel:r,accepts:T,maxFiles:O,maxSizeInKb:N,dimensions:u,errorMessage:E.error?.message,validation:p,multiple:h,warning:b}),e.jsx(kT,{id:`${g}-review-prompt`,title:"Review photos?",size:"large",show:L,description:"This lets you check if you've selected the correct photos, and draw on them to highlight the issue.",buttons:[{id:"ok",title:"Ok",onClick:()=>z(!0)},{id:"skip",title:"Skip",buttonStyle:"secondary",onClick:()=>z()}]}),(()=>{const t=p?.find((e=>"max"in e));return e.jsx(cZ,{accepts:T,dimensions:u,id:g,className:a,maxFiles:O,maxFilesErrorMessage:t?.errorMessage,maxSizeInKb:N,onExit:()=>$(!1),outputType:d,show:k,multiple:h,capture:i,imageReviewModalStyles:m})})()]})},pZ=a.css`
930
+ `,sZ=n=>{const{accepts:r,activeFileIndex:i,capture:o,id:s="image-thumbnails",images:u,maxFiles:l,onClickThumbnail:c,onSelectFile:d,multiple:f}=n,p=t.useRef(null),h=a.useTheme(),m=async e=>{const t=Array.from(e.target.files||[]);t.length&&setTimeout((()=>{d(t)}),100)},g=()=>p?.current?.click();return e.jsxs(Xj,{id:exports.TestHelper.generateId(s),children:[u.map(((t,n)=>t.status===exports.EImageStatus.NONE?e.jsx(rZ,{children:[...Array(4)].map(((t,n)=>e.jsx(nZ,{},`dot-${n}`)))},n):t.status>exports.EImageStatus.NONE||t.status===exports.EImageStatus.ERROR_CUSTOM_MUTED?e.jsx(Qj,{id:exports.TestHelper.generateId(s,`item-${n+1}`),"data-testid":exports.TestHelper.generateId(s,`item-${n+1}`),src:t.thumbnailDataURL||t.dataURL||"https://assets.life.gov.sg/web-frontend-engine/img/icons/photo-placeholder-add.svg",type:"button","aria-label":`thumbnail of ${t.name}`,onClick:()=>c(n),children:e.jsx(iZ,{isSelected:i===n})},n):"reviewModal"===t.addedFrom||t.status<exports.EImageStatus.NONE?e.jsxs(Qj,{id:exports.TestHelper.generateId(s,`item-${n+1}`),"data-testid":exports.TestHelper.generateId(s,`item-${n+1}`),type:"button","aria-label":`error with ${t.name}`,onClick:()=>c(n),error:!0,children:[e.jsx(iZ,{isSelected:i===n}),e.jsx(eZ,{})]},n):void 0)),(u.filter((({status:e,addedFrom:t})=>e>=exports.EImageStatus.NONE||e===exports.EImageStatus.ERROR_CUSTOM_MUTED||"reviewModal"===t)).length<l||!l)&&e.jsxs(e.Fragment,{children:[e.jsx(aZ,{id:exports.TestHelper.generateId(s,"file-input"),"data-testid":exports.TestHelper.generateId(s,"file-input"),type:"file","aria-hidden":"true",tabIndex:-1,capture:o,ref:p,accept:r.map((e=>`.${e}`)).join(", "),onChange:m,multiple:f,value:""}),e.jsx(oZ,{type:"button",id:exports.TestHelper.generateId(s,"add-image-button"),"data-testid":exports.TestHelper.generateId(s,"add-image-button"),"aria-label":"add image",onClick:g,theme:h||k.BaseTheme,children:e.jsx($.PlusIcon,{})})]})]})},uZ=t.lazy((()=>Promise.resolve().then((function(){return require("./index.d42f693a.js")})))),lZ=[{color:"#282828",label:"black"},{color:"#FFF",colorScheme:"light",label:"white"},{color:"#017cd3",label:"blue"},{color:"#fb0101",label:"red"},{color:"#22910c",label:"green"},{color:"#f8e821",label:"yellow"}],cZ=n=>{const{accepts:r,capture:i,className:a,compress:o,dimensions:u,id:l="image-review",maxFiles:c,maxSizeInKb:d,onExit:f,outputType:p,show:h,multiple:m,maxFilesErrorMessage:g,imageReviewModalStyles:y}=n,{images:_,setImages:v}=t.useContext(Ez),{dispatchFieldEvent:b,addFieldEventListener:E,removeFieldEventListener:S}=LI(),A=Ik(h),[x,w]=t.useState(_.length-1),[T,M]=t.useState(!1),[C,N]=t.useState(),D=!!_?.find((({status:e})=>e===exports.EImageStatus.NONE)),[L,I]=t.useState(lZ[0].color),[k,$]=t.useState(!1),R=t.useRef(null),F=!!_?.find((({addedFrom:e,status:t})=>"reviewModal"===e&&t<=exports.EImageStatus.NONE))||!_.length,z=t.useCallback((e=>{e.detail.removePendingImages&&v((e=>e.filter((({status:e})=>e===exports.EImageStatus.UPLOADED||e===exports.EImageStatus.ERROR_CUSTOM_MUTED)))),f()}),[f,v]),P=e=>{!c||e.length+_.filter((({status:e,addedFrom:t})=>e>=exports.EImageStatus.NONE||"reviewModal"===t)).length<=c?e.forEach((e=>{v((t=>{const n=Az.findAvailableSlot(t);return[...t,{id:Vh(),file:e,name:e.name,dimensions:u,status:exports.EImageStatus.NONE,uploadProgress:0,addedFrom:"reviewModal",slot:n}]}))})):v((t=>{const n=Az.findAvailableSlot(t);return[...t,{id:Vh(),file:e[0],name:e[0].name,dimensions:u,status:exports.EImageStatus.ERROR_EXCEED,uploadProgress:0,addedFrom:"reviewModal",slot:n}]}))},j=e=>{e&&(v((e=>e.map(((e,t)=>({...e,...t===x?{status:exports.EImageStatus.TO_DELETE}:{}}))))),w(Math.max(0,x-1))),N(null)},Z=t.useCallback((()=>{v((e=>e.filter((({status:e})=>e>=exports.EImageStatus.NONE||e===exports.EImageStatus.ERROR_CUSTOM_MUTED)).map((e=>{const t={...e};return e.drawingDataURL&&(t.dataURL=e.drawingDataURL),e.status<exports.EImageStatus.UPLOAD_READY&&e.status>exports.EImageStatus.NONE&&(t.status=exports.EImageStatus.UPLOAD_READY),t.drawingDataURL=void 0,t.drawing=void 0,t}))))}),[v]),U=()=>{!b("save-review-images",l,{images:_,retry:U})||(Z(),f())},B=()=>{M(!0),I(lZ[0].color)},V=async()=>{const{dataURL:e,drawing:t}=R.current?.export()||{},n=await exports.ImageHelper.dataUrlToImage(e),r=await exports.ImageHelper.resampleImage(n,{scale:96/n.width,type:exports.FileHelper.fileExtensionToMimeType(p)}),i=await exports.FileHelper.fileToDataUrl(r);v((n=>{const r=[...n];return r[x]={...r[x],thumbnailDataURL:i,drawingDataURL:e,drawing:t,status:o?exports.EImageStatus.TO_RECOMPRESS:exports.EImageStatus.EDITED},r})),M(!1),G()},H=()=>{G(),$(!0)},G=()=>{I(""),$(!1)};t.useEffect((()=>{const e={"trigger-save-review-images":Z,"dismiss-review-modal":z};return Object.entries(e).forEach((([e,t])=>{E(e,l,t)})),()=>{Object.entries(e).forEach((([e,t])=>{S(e,l,t)}))}}),[E,z,Z,l,S]),t.useEffect((()=>{w(_.length-1)}),[_.length]),t.useEffect((()=>{h?b("show-review-modal",l):A&&b("hide-review-modal",l)}),[h]);return e.jsx(s.Modal,{id:exports.TestHelper.generateId(l,void 0,h?"show":"hide"),className:a?`${a}-review`:void 0,show:h,children:e.jsx(Dj,{className:a?`${a}-review-modal-box`:void 0,imageReviewModalStyles:y,showCloseButton:!1,children:h?e.jsxs(e.Fragment,{children:[e.jsx(Lj,{className:a?`${a}-header`:void 0,$drawActive:T,children:T?e.jsxs(e.Fragment,{children:[e.jsx(Rj,{id:exports.TestHelper.generateId(l,"clear-drawing-button"),"data-testid":exports.TestHelper.generateId(l,"clear-drawing-button"),onClick:()=>N("clear-drawing"),children:"Clear"}),e.jsx(Rj,{id:exports.TestHelper.generateId(l,"save-drawing"),"data-testid":exports.TestHelper.generateId(l,"save-drawing"),onClick:V,children:"Save"})]}):e.jsxs(e.Fragment,{children:[e.jsx(Ij,{id:exports.TestHelper.generateId(l,"close-button"),"data-testid":exports.TestHelper.generateId(l,"close-button"),"aria-label":"exit review modal",onClick:()=>N("exit"),children:e.jsx(O.CrossIcon,{type:"cross"})}),e.jsx(kj,{weight:"semibold",children:"Review photos"})]})}),e.jsxs(Fj,{children:[_.length>0&&e.jsx(Vj,{className:a?`${a}-editor`:void 0,children:e.jsx(t.Suspense,{fallback:null,children:e.jsx(uZ,{baseImageDataURL:_[x]?.dataURL,drawing:_[x]?.drawing,color:T?L:void 0,erase:!!T&&k,ref:R,maxSizeInKb:d})})}),_.length>0&&e.jsx(zj,{children:"Loading Preview..."}),!T&&_[x]?.status>=exports.EImageStatus.NONE&&e.jsxs(Pj,{children:[e.jsxs(jj,{id:exports.TestHelper.generateId(l,"draw-button"),"data-testid":exports.TestHelper.generateId(l,"draw-button"),onClick:B,disabled:D,children:[e.jsx(Uj,{$disabled:D}),e.jsx(Zj,{weight:"semibold",$disabled:D,children:"Draw"})]}),e.jsxs(jj,{id:exports.TestHelper.generateId(l,"delete-button"),"data-testid":exports.TestHelper.generateId(l,"delete-button"),onClick:()=>N("delete"),disabled:D,children:[e.jsx(Bj,{$disabled:D}),e.jsx(Zj,{weight:"semibold",$disabled:D,children:"Delete"})]})]}),_[x]?.status<exports.EImageStatus.NONE&&e.jsx(Cj,{id:`${l}-photo-error`,image:_[x],accepts:r,maxSizeInKb:d,onClickOk:()=>j(!0),maxFilesErrorMessage:g,maxFiles:c})]}),e.jsx(Hj,{className:a?`${a}-footer`:void 0,children:T?e.jsxs(e.Fragment,{children:[e.jsx(Yj,{id:exports.TestHelper.generateId(l,"eraser-button"),"data-testid":exports.TestHelper.generateId(l,"eraser-button"),"aria-label":"eraser",onClick:H,children:e.jsx(Wj,{$eraseMode:k})}),e.jsx(Kj,{children:lZ.map((({color:t,colorScheme:n,label:r},i)=>e.jsx(Jj,{id:exports.TestHelper.generateId(l,`palette-color-${i}`),"aria-label":`${r} brush`,$color:t,$colorScheme:n,onClick:()=>(e=>{G(),I(e)})(t),children:L===t&&e.jsx(qj,{$colorScheme:n})},t)))})]}):e.jsxs(e.Fragment,{children:[e.jsx(sZ,{id:`${l}-image-thumbnails`,activeFileIndex:x,accepts:r,capture:i,maxFiles:c,images:_,onClickThumbnail:w,onSelectFile:P,multiple:m}),e.jsx(Gj,{id:exports.TestHelper.generateId(l,"save-button"),"data-testid":exports.TestHelper.generateId(l,"save-button"),onClick:U,disabled:F,children:"Save"})]})}),e.jsx(Nj,{images:_,show:C,onDecideClearDrawing:e=>{e&&R.current.clearDrawing(),N(null)},onDecideDelete:j,onDecideExit:e=>{e&&(v(_.filter((({addedFrom:e,status:t})=>t>=exports.EImageStatus.UPLOADED||t<exports.EImageStatus.NONE&&"dragInput"===e)).map((e=>({...e,drawingDataURL:void 0,drawing:void 0})))),f()),N(null)}})]}):e.jsx(e.Fragment,{})})})},dZ=t.lazy((()=>Promise.resolve().then((function(){return require("./index.ca424cf5.js")})))),fZ=n=>{const{schema:{buttonLabel:r,capture:i,className:a,compress:o,description:s,dimensions:u={width:1e3,height:1e3},editImage:l,label:c,outputType:d="jpg",uploadOnAddingFile:f,validation:p,multiple:h,imageReviewModalStyles:m},id:g,isDirty:y,isTouched:_,value:v,warning:b,...E}=n,{images:S,setImages:A,currentFileIds:x}=t.useContext(Ez),w=Ik(S),[T,M]=t.useState([...xz]),[O,C]=t.useState(0),[N,D]=t.useState(0),[L,I]=t.useState(!1),[k,$]=t.useState(!1),{setFieldValidationConfig:R}=Nk(),{dispatchFieldEvent:F}=LI();t.useEffect((()=>{F("mount",g)}),[F,g]),t.useEffect((()=>{if(!y&&!_){const e=Array.isArray(v)?v:[];if(!(hz(e.map((({fileId:e})=>e)),x).length>0))return;const t=[];e.forEach((({fileId:e,fileName:n,dataURL:r,uploadResponse:i},a)=>{const o={id:e||Vh(),file:{},name:n,dimensions:{width:10,height:10},dataURL:r,status:exports.EImageStatus.INJECTED,addedFrom:"schema",uploadProgress:100,slot:a,uploadResponse:i};t.push(o)})),A(t)}}),[y,_,x,A,v]),t.useEffect((()=>{const e=p?.find((e=>"required"in e)),t=p?.find((e=>"fileType"in e)),n=p?.find((e=>"maxSizeInKb"in e));t?.fileType&&t?.fileType!==T&&M(t?.fileType),n?.maxSizeInKb&&n?.maxSizeInKb!==N&&D(n?.maxSizeInKb);const r=p?.find((e=>"length"in e)),i=p?.find((e=>"max"in e));let a;r?a={maxFiles:r.length,errorMessage:r.errorMessage}:i&&(a={maxFiles:i.max,errorMessage:i.errorMessage}),a?.maxFiles&&O!==a.maxFiles&&C(a.maxFiles),R(g,yT().of(mT().shape({fileName:ew(),dataURL:ew()})).test("is-empty-array",e?.errorMessage||Uh.UPLOAD("photo").REQUIRED,(t=>!t||!e?.required||t.length>0)).test("max-size-in-kb",n?.errorMessage||Uh.UPLOAD("photo").MAX_FILE_SIZE(n?.maxSizeInKb),(e=>!(e&&Array.isArray(e)&&n?.maxSizeInKb)||e.every((e=>exports.FileHelper.getFilesizeFromBase64(e.dataURL)<=1024*n?.maxSizeInKb)))),p)}),[p]),t.useEffect((()=>{S.some(((e,t)=>{const n=w?.[t];if(e.status!==n?.status||e.dataURL!==n.dataURL)switch(e.status){case exports.EImageStatus.COMPRESSED:case exports.EImageStatus.CONVERTED:if(l&&!k)return exports.WindowHelper.isMobileView()?$(!0):I(!0),!0}})),0===S.length&&$(!1)}),[S.map((e=>e.status)).join(","),S.map((e=>e.dataURL)).join(",")]);const z=(e=!1)=>{e?l&&(document.body.classList.remove("lifesg-ds-overlay-open"),$(!0)):A((e=>e.map((e=>e.status<exports.EImageStatus.UPLOAD_READY&&e.status>exports.EImageStatus.NONE?{...e,status:exports.EImageStatus.UPLOAD_READY}:e)))),I(!1)};return e.jsxs(e.Fragment,{children:[e.jsx(t.Suspense,{fallback:null,children:e.jsx(dZ,{accepts:T,compress:!!o,dimensions:u,editImage:l,id:g,maxSizeInKb:N,outputType:d,upload:f,value:v})}),e.jsx(Sj,{id:g,capture:i,className:a,label:c,description:s,buttonLabel:r,accepts:T,maxFiles:O,maxSizeInKb:N,dimensions:u,errorMessage:E.error?.message,validation:p,multiple:h,warning:b}),e.jsx(kT,{id:`${g}-review-prompt`,title:"Review photos?",size:"large",show:L,description:"This lets you check if you've selected the correct photos, and draw on them to highlight the issue.",buttons:[{id:"ok",title:"Ok",onClick:()=>z(!0)},{id:"skip",title:"Skip",buttonStyle:"secondary",onClick:()=>z()}]}),(()=>{const t=p?.find((e=>"max"in e));return e.jsx(cZ,{accepts:T,dimensions:u,id:g,className:a,maxFiles:O,maxFilesErrorMessage:t?.errorMessage,maxSizeInKb:N,onExit:()=>$(!1),outputType:d,show:k,multiple:h,capture:i,imageReviewModalStyles:m})})()]})},pZ=a.css`
931
931
  border: 1px solid ${i.Color.Accent.Light[1]};
932
932
  box-shadow: none;
933
933
  `,hZ=a.css`
@@ -1010,7 +1010,7 @@ object-assign
1010
1010
  ${e=>a.css`
1011
1011
  margin-left: ${e.$readOnly?"0.25rem":"0.75rem"};
1012
1012
  `}
1013
- `,vZ=t=>{const{id:n,"data-testid":r,className:i,disabled:a,readOnly:o,onFocus:s,value:u,placeholder:l,error:c}=t;return e.jsxs(gZ,{id:n,"data-testid":r,type:"button",className:i,disabled:a,$readOnly:o,$error:c,onFocus:s,onClick:e=>{a||e.currentTarget.focus()},tabIndex:a?-1:0,"aria-disabled":a||void 0,"aria-haspopup":"dialog","aria-readonly":o,children:[l&&!u?e.jsx(yZ,{$placeholder:!0,$disabled:a,children:l}):e.jsx(yZ,{$disabled:a,children:u}),e.jsx(_Z,{$disabled:a,$readOnly:o,"aria-hidden":"true",children:e.jsx(F.PinFillIcon,{})})]})},bZ=t=>{const{id:n,label:r,className:i,locationInputPlaceholder:a="",onFocus:o,value:s,errorMessage:u,disabled:l,readOnly:c}=t;return e.jsx(x.Form.CustomField,{id:exports.TestHelper.generateId(n,"location-input"),"data-testid":exports.TestHelper.generateId(n,"location-input"),label:r,errorMessage:u,children:e.jsx(vZ,{id:exports.TestHelper.generateId(n,"location-input-base"),"data-testid":exports.TestHelper.generateId(n,"location-input-base"),disabled:l,readOnly:c,placeholder:a,onFocus:o,value:s,error:!!u,className:i})})},EZ=t.lazy((()=>Promise.resolve().then((function(){return require("./location-modal.d4929e93.js")}))));class SZ extends Error{code;message;constructor(e){super(),Object.assign(this,e)}}const AZ=H.default(r.Text.BodySmall)`
1013
+ `,vZ=t=>{const{id:n,"data-testid":r,className:i,disabled:a,readOnly:o,onFocus:s,value:u,placeholder:l,error:c}=t;return e.jsxs(gZ,{id:n,"data-testid":r,type:"button",className:i,disabled:a,$readOnly:o,$error:c,onFocus:s,onClick:e=>{a||e.currentTarget.focus()},tabIndex:a?-1:0,"aria-disabled":a||void 0,"aria-haspopup":"dialog","aria-readonly":o,children:[l&&!u?e.jsx(yZ,{$placeholder:!0,$disabled:a,children:l}):e.jsx(yZ,{$disabled:a,children:u}),e.jsx(_Z,{$disabled:a,$readOnly:o,"aria-hidden":"true",children:e.jsx(F.PinFillIcon,{})})]})},bZ=t=>{const{id:n,label:r,className:i,locationInputPlaceholder:a="",onFocus:o,value:s,errorMessage:u,disabled:l,readOnly:c}=t;return e.jsx(x.Form.CustomField,{id:exports.TestHelper.generateId(n,"location-input"),"data-testid":exports.TestHelper.generateId(n,"location-input"),label:r,errorMessage:u,children:e.jsx(vZ,{id:exports.TestHelper.generateId(n,"location-input-base"),"data-testid":exports.TestHelper.generateId(n,"location-input-base"),disabled:l,readOnly:c,placeholder:a,onFocus:o,value:s,error:!!u,className:i})})},EZ=t.lazy((()=>Promise.resolve().then((function(){return require("./location-modal.f9df87bc.js")}))));class SZ extends Error{code;message;constructor(e){super(),Object.assign(this,e)}}const AZ=H.default(r.Text.BodySmall)`
1014
1014
  cursor: ${e=>e.disabled?"not-allowed":"pointer"};
1015
1015
  `,xZ=H.default(j.RadioButton)`
1016
1016
  margin-right: 5px;
@@ -1051,4 +1051,4 @@ object-assign
1051
1051
  `,jZ=H.default.div`
1052
1052
  flex: 1;
1053
1053
  `,ZZ=t=>{const{sectionSchema:{children:n,layoutType:r},...i}=t;switch(r){case"grid":return e.jsx(d.Layout.Section,{children:e.jsx(PZ,{type:"grid",children:e.jsx(zZ,{...i,children:n})})});case"contain":return e.jsx(d.Layout.Content,{children:e.jsx(jZ,{children:e.jsx(zZ,{...i,children:n})})});default:return e.jsx(zZ,{...i,children:n})}},UZ=()=>{const{formSchema:{sections:t,overrides:n},overrideSchema:r}=Ok();return e.jsx(e.Fragment,{children:(()=>{const i=r(t,n);return i?Object.entries(i).map((([t,n],r)=>e.jsx(ZZ,{id:t,sectionSchema:n},`section-${r}`))):e.jsxs(e.Fragment,{children:["Unable to render Frontend Engine schema, make sure schema is declared within ",e.jsx("code",{children:"sections"}),"."]})})()})},BZ=t.forwardRef(((n,r)=>{const{data:i,className:a=null,components:o,onSubmit:s,onSubmitError:u,wrapInForm:l=!0}=n,{className:c=null,defaultValues:d,id:f,stripUnknown:p,revalidationMode:h="onChange",validationMode:m="onTouched"}=i||{},{addFieldEventListener:g,dispatchFieldEvent:y,removeFieldEventListener:_}=LI(),{setCustomComponents:v}=NI(),{setSubmitHandler:b,setWrapInForm:E}=Dk(),{addWarnings:S,performSoftValidation:A,softValidationSchema:x,hardValidationSchema:w,rebuildValidationSchema:T,yupId:M}=kk(),O=function(e={}){const t=B.default.useRef(void 0),n=B.default.useRef(void 0),[r,i]=B.default.useState({isDirty:!1,isValidating:!1,isLoading:Ve(e.defaultValues),isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,submitCount:0,dirtyFields:{},touchedFields:{},validatingFields:{},errors:e.errors||{},disabled:e.disabled||!1,defaultValues:Ve(e.defaultValues)?void 0:e.defaultValues});t.current||(t.current={...vt(e),formState:r});const a=t.current.control;return a._options=e,Le({subject:a._subjects.state,next:e=>{Ce(e,a._proxyFormState,a._updateFormState,!0)&&i({...a._formState})}}),B.default.useEffect((()=>a._disableForm(e.disabled)),[a,e.disabled]),B.default.useEffect((()=>{if(a._proxyFormState.isDirty){const e=a._getDirty();e!==r.isDirty&&a._subjects.state.next({isDirty:e})}}),[a,r.isDirty]),B.default.useEffect((()=>{e.values&&!ot(e.values,n.current)?(a._reset(e.values,a._options.resetOptions),n.current=e.values,i((e=>({...e})))):a._resetDefaultValues()}),[e.values,a]),B.default.useEffect((()=>{e.errors&&a._setErrors(e.errors)}),[e.errors,a]),B.default.useEffect((()=>{a._state.mount||(a._updateValid(),a._state.mount=!0),a._state.watch&&(a._state.watch=!1,a._subjects.state.next({...a._formState})),a._removeUnmounted()})),B.default.useEffect((()=>{e.shouldUnregister&&a._subjects.values.next({values:a._getWatch()})}),[e.shouldUnregister,a]),t.current.formState=Me(r,a),t.current}({mode:m,reValidateMode:h,defaultValues:d,resolver:async(e,t,n)=>(A(x,e),await function(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),function(r,i,a){try{return Promise.resolve(function(o,s){try{var u=(t.context&&"development"===process.env.NODE_ENV&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead"),Promise.resolve(e["sync"===n.mode?"validateSync":"validate"](r,Object.assign({abortEarly:!1},t,{context:i}))).then((function(e){return a.shouldUseNativeValidation&&Et({},a),{values:n.rawValues?r:e,errors:{}}})))}catch(e){return s(e)}return u&&u.then?u.then(void 0,s):u}(0,(function(e){if(!e.inner)throw e;return{values:{},errors:St((t=e,n=!a.shouldUseNativeValidation&&"all"===a.criteriaMode,(t.inner||[]).reduce((function(e,t){if(e[t.path]||(e[t.path]={message:t.message,type:t.type}),n){var r=e[t.path].types,i=r&&r[t.type];e[t.path]=ze(t.path,n,e,t.type,i?[].concat(i,t.message):t.message)}return e}),{})),a)};var t,n})))}catch(e){return Promise.reject(e)}}}(w)(e,t,n))}),{setFormSchema:C}=Ok(),{reset:N,handleSubmit:D,getValues:L,setValue:I,setError:k,trigger:$,formState:R,clearErrors:F}=O,{resetFields:z,setFields:P,getFormValues:j,registeredFields:Z}=Ck(O),U=t.useRef(Z),{checkIsFormValid:V}=((e,n)=>{const{data:r,onChange:i,onValueChange:a}=e,{stripUnknown:o}=r||{},{hardValidationSchema:s}=kk(),{formValidationConfig:u}=Nk(),{watch:l,getValues:c,formState:d,clearErrors:f}=n,{setFields:p,setField:h,getFormValues:m}=Ck(n),[g,y]=t.useState({}),[_,v]=t.useState(!1),b=Ik(u),E=Ik(s),S=t.useRef(void 0),A=t.useRef(void 0),x=t.useCallback(((e=!1)=>{if(!e)try{return s.validateSync(c()),!0}catch(e){return!1}return(async()=>{try{return await s.validate(c()),!0}catch(e){return!1}})()}),[c,s]),w=t.useRef((async()=>{}));return w.current=async()=>{const e=m(void 0,o),t=await x(!0);a&&Object.keys(u||{}).length&&(A.current===t&&yI(S.current,e)||a(e,t)),S.current=e,A.current=t},t.useEffect((()=>{const e=l(((e,{name:t})=>{t?h(t,e[t]):p(e)}));return()=>e.unsubscribe()}),[]),t.useEffect((()=>{if(i&&Object.keys(u||{}).length){const e=l((async()=>{const e=await x(!0);i(m(void 0,o),e)}));return x(!0).then((e=>i(m(void 0,o),e))),()=>e.unsubscribe()}}),[x,i,l,u]),t.useEffect((()=>{const e=l((async()=>{await w.current()}));return()=>e.unsubscribe()}),[l]),t.useEffect((()=>{if(b){const e=e=>Object.entries(e).map((([e,{validationRules:t}])=>[e,t])),t=e(b),n=e(u);yI(t,n)||v(!0)}}),[u]),t.useEffect((()=>{_&&E!==s&&w.current().then((()=>v(!1)))}),[_,s]),t.useEffect((()=>{const e=d.errors;if(e&&!Bb(e)){const e=l((e=>{const t=Object.fromEntries(Object.entries(d.errors).filter((([e,t])=>"api"===t.type)));t&&!Bb(t)&&Object.keys(t).forEach((t=>{g[t]!==e[t]&&f(t)})),y(e)}));return()=>e.unsubscribe()}}),[d,l]),{checkIsFormValid:x}})(n,O);t.useImperativeHandle(r,(()=>({addFieldEventListener:g,addCustomValidation:H,dispatchFieldEvent:y,getValues:e=>j(e,p),isDirty:R.isDirty,isValid:V,validate:$,removeFieldEventListener:_,reset:(e,t)=>{N(e,t),z("function"==typeof e?e(O.getValues())??d:e??d)},setErrors:W,clearErrors:F,setWarnings:q,setValue:I,submit:D(G,Y)})));const H=(e,t,n,r=!1)=>{fI.addCondition(e,t,n,M,r),T()},G=t.useCallback((()=>{s?.(j(void 0,p))}),[j,s,p]),Y=t.useCallback((e=>{setTimeout((()=>u?.(e)))}),[u]),W=e=>{Object.entries(e).forEach((([e,t])=>{U.current.includes(e)&&(Array.isArray(t)?k(e,{type:"api",message:t[0]}):k(e,"object"==typeof t?{type:"api",message:JSON.stringify(t)}:{type:"api",message:t}))}))},q=e=>{const t={};Object.entries(e).forEach((([e,n])=>{U.current.includes(e)&&(t[e]=n)})),S(t)};t.useEffect((()=>{P(L())}),[]),vs((()=>{N(fs(d))}),[d]),_s((()=>{C(i)}),[i||{}]),t.useEffect((()=>{v(o)}),[o]),t.useEffect((()=>{b((()=>D(G,Y)))}),[G,Y]),t.useEffect((()=>{E(l)}),[l]),t.useEffect((()=>{U.current=Z}),[Z]);const K=f?`frontend-engine-${f}`:"frontend-engine",J=[a,c].join(" ").trim(),X=l?"form":"div";return i?e.jsx(Te,{...O,children:e.jsx(X,{id:K,"data-testid":f?exports.TestHelper.generateId(f,"frontend-engine"):K,className:J,noValidate:!0,onSubmit:D(G,Y),ref:r,children:e.jsx(UZ,{})})}):e.jsxs(e.Fragment,{children:["Missing ",e.jsx("code",{children:"data"})," prop, unable to render Frontend Engine."]})})),VZ=t.forwardRef(((t,n)=>e.jsx(CI,{children:e.jsx(BZ,{...t,ref:n})})));exports.AxiosApiClient=Wl,exports.Description=LT,exports.ERROR_MESSAGES=Uh,exports.FileUploadContext=mz,exports.FrontendEngine=VZ,exports.GeolocationPositionErrorWrapper=SZ,exports.ImageContext=Ez,exports.OneMapError=iI,exports.OneMapService=nI,exports.Prompt=kT,exports.Sanitize=XL,exports.commonjsGlobal=At,exports.generateRandomId=Vh,exports.lodash=QL,exports.useFieldEvent=LI,exports.useFormContext=we,exports.useFrontendEngineComponent=()=>{const{addFieldEventListener:e,dispatchFieldEvent:t,removeFieldEventListener:n}=LI(),r=we(),{setFieldValidationConfig:i,removeFieldValidationConfig:a}=Nk();return{event:{addFieldEventListener:e,dispatchFieldEvent:t,removeFieldEventListener:n},formContext:r,validation:{setValidation:i,removeValidation:a}}},exports.usePrevious=Ik;
1054
- //# sourceMappingURL=index.e35c6aea.js.map
1054
+ //# sourceMappingURL=index.b063ce55.js.map