@lifesg/web-frontend-engine 1.19.20 → 1.19.21

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.072099ea.js → file-upload-manager.1921fbad.js} +2 -2
  2. package/chunks/{file-upload-manager.072099ea.js.map → file-upload-manager.1921fbad.js.map} +1 -1
  3. package/chunks/{index.0dbde68f.js → index.26df19ea.js} +5 -5
  4. package/chunks/{index.0dbde68f.js.map → index.26df19ea.js.map} +1 -1
  5. package/chunks/{index.2cd8e0dd.js → index.977447f6.js} +2 -2
  6. package/chunks/{index.2cd8e0dd.js.map → index.977447f6.js.map} +1 -1
  7. package/chunks/{index.2a176c7d.js → index.c7765648.js} +2 -2
  8. package/chunks/{index.2a176c7d.js.map → index.c7765648.js.map} +1 -1
  9. package/chunks/{location-modal.54ab5d47.js → location-modal.d71a86e7.js} +2 -2
  10. package/chunks/{location-modal.54ab5d47.js.map → location-modal.d71a86e7.js.map} +1 -1
  11. package/cjs/chunks/{file-upload-manager.b0dc7ccd.js → file-upload-manager.40a495d7.js} +2 -2
  12. package/cjs/chunks/{file-upload-manager.b0dc7ccd.js.map → file-upload-manager.40a495d7.js.map} +1 -1
  13. package/cjs/chunks/{index.bb56604f.js → index.56c92603.js} +5 -5
  14. package/cjs/chunks/{index.bb56604f.js.map → index.56c92603.js.map} +1 -1
  15. package/cjs/chunks/{index.b96b1565.js → index.70d271b4.js} +2 -2
  16. package/cjs/chunks/{index.b96b1565.js.map → index.70d271b4.js.map} +1 -1
  17. package/cjs/chunks/{index.e6c89bb0.js → index.c6117cf7.js} +2 -2
  18. package/cjs/chunks/{index.e6c89bb0.js.map → index.c6117cf7.js.map} +1 -1
  19. package/cjs/chunks/{location-modal.c6e65d41.js → location-modal.cb34554b.js} +2 -2
  20. package/cjs/chunks/{location-modal.c6e65d41.js.map → location-modal.cb34554b.js.map} +1 -1
  21. package/cjs/index.js +1 -1
  22. package/index.js +1 -1
  23. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("react"),i=require("./index.bb56604f.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,hideThumbnail:l,id:n,maxFileSizeRule:o,upload:u,uploadRule:m,value:d}=s,{files:c,setFiles:f,setCurrentFileIds:g}=e.useContext(i.FileUploadContext),p=i.usePrevious(d),{setValue:F}=i.useFormContext(),{dispatchFieldEvent:y}=i.useFieldEvent(),E=e.useRef();e.useEffect((()=>{E.current=i.generateRandomId()}),[]),e.useEffect((()=>{c.forEach((async(e,t)=>{try{switch(e.status){case i.EFileStatus.INJECTED:await U(e,t);break;case i.EFileStatus.NONE:await b(e,t);break;case i.EFileStatus.UPLOAD_READY:await T(e,t);break;case i.EFileStatus.TO_DELETE:D(t)}}catch(e){I(t)}}));const e=c.filter((({status:e})=>e===i.EFileStatus.UPLOADED)),t=e.filter((({addedFrom:e})=>"schema"!==e)).length>0,s=c.filter((({status:e})=>e===i.EFileStatus.TO_DELETE)).length>0,r=t||s;g(e.map((({fileItem:e})=>e.id))),F(n,e.map((({dataURL:e,fileItem:i,fileUrl:t,uploadResponse:s})=>({..."base64"===u.type?{dataURL:e}:{},fileId:i.id,fileName:i.name,fileUrl:t,uploadResponse:s}))),{shouldDirty:r,shouldTouch:t})}),[c.map((({fileItem:e,status:i})=>`${e?.id}-${i}`)).join(",")]),e.useEffect((()=>{void 0!==p&&void 0===d&&c.length&&f([])}),[c,p,f,d]);const I=e=>{f((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:m?.errorMessage||i.ERROR_MESSAGES.UPLOAD().GENERIC},status:i.EFileStatus.ERROR_GENERIC},s}))},w=async(e,s)=>{if(!0!==l&&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""},R=async e=>{const{addedFrom:t,dataURL:s,rawFile:r}=e,a=await i.FileHelper.getType(r),l=q(a);if(l?.status<0)return l;const n="base64"===u.type?i.FileHelper.getFilesizeFromBase64(s):r.size,{errorMessage:o,status:m}=S(n);return m<0?{errorMessage:o,fileType:a,status:m}:"schema"===t?{fileType:a,status:i.EFileStatus.UPLOADED}:{fileType:a,status:i.EFileStatus.UPLOAD_READY}},q=e=>!a.fileType?.length||a.fileType?.includes(e.ext)?{}:{errorMessage:a.errorMessage||i.ERROR_MESSAGES.UPLOAD().FILE_TYPE(a.fileType||[]),fileType:e,status:i.EFileStatus.ERROR_FORMAT},S=e=>{if(o.maxSizeInKb>0){if(e>1024*o.maxSizeInKb)return{errorMessage:o.errorMessage||i.ERROR_MESSAGES.UPLOAD().MAX_FILE_SIZE(o.maxSizeInKb),status:i.EFileStatus.ERROR_SIZE}}return{}},U=async(e,t)=>{let s;if(f((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 r=e.uploadResponse?.data||e.uploadResponse,{errorMessage:a,fileType:l}=s?await R({...e,rawFile:s}):q({mime:r?.mimeType,ext:r?.ext});let n=s?.size||r?.fileSize||0;isNaN(n)&&(n=0);const{errorMessage:o}=S(n),u=s?await w(e,l?.mime):void 0;f((m=>{const d=[...m];return d[t]={...e,fileItem:{errorMessage:a||o,id:e.fileItem?.id||i.generateRandomId(),name:i.FileHelper.deduplicateFileName(c.map((({fileItem:e})=>e.name)),t,s?.name||e.rawFile.name),progress:1,size:n,type:l?.mime||r?.mimeType,thumbnailImageDataUrl:u},rawFile:s,status:i.EFileStatus.UPLOADED},d}))},b=async(e,t)=>{const s=await h(e),r=await i.FileHelper.fileToDataUrl(s.rawFile),{errorMessage:a,fileType:l,status:n}=await R({dataURL:r,...s});f((e=>{const o=[...e];return o[t]={...s,dataURL:r,fileItem:{errorMessage:a,id:i.generateRandomId(),name:i.FileHelper.deduplicateFileName(c.map((({fileItem:e})=>e?.name)),t,i.FileHelper.sanitizeFileName(s.rawFile.name)),size:s.rawFile.size,type:l.mime,progress:0},status:n},o}))},T=async(e,t)=>{f((e=>{const s=[...e];return s[t]={...e[t],status:i.EFileStatus.UPLOADING},s}));const s=new FormData;s.append("sessionId",u?.sessionId||E.current||""),s.append("fileId",e.fileItem.id),s.append("slot",e.slot.toString()),"base64"===u.type?s.append("dataURL",e.dataURL):"multipart"===u.type&&s.append("file",e.rawFile,e.fileItem?.name);try{const r=await new i.AxiosApiClient("",void 0,void 0,!0).post(u.url,s,{headers:{"Content-Type":"base64"===u.type?"application/json":"multipart/form-data",...u.headers},onUploadProgress:e=>{const{loaded:i,total:s}=e;f((e=>{if(!e[t])return e;const r=[...e];return r[t]={...e[t],fileItem:{...e[t].fileItem,progress:i/s}},r}))}}),a=await w(e);f((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 y("upload-error",n,{fileId:e.fileItem.id,errorData:i?.response?.data}),i}},D=e=>{f((i=>i.filter(((i,t)=>t!==e))))},h=async e=>{if(o.maxSizeInKb>0&&r){const s=1024*o.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:o.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.b0dc7ccd.js.map
1
+ "use strict";var e=require("react"),i=require("./index.56c92603.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,hideThumbnail:l,id:n,maxFileSizeRule:o,upload:u,uploadRule:m,value:d}=s,{files:c,setFiles:f,setCurrentFileIds:g}=e.useContext(i.FileUploadContext),p=i.usePrevious(d),{setValue:F}=i.useFormContext(),{dispatchFieldEvent:y}=i.useFieldEvent(),E=e.useRef();e.useEffect((()=>{E.current=i.generateRandomId()}),[]),e.useEffect((()=>{c.forEach((async(e,t)=>{try{switch(e.status){case i.EFileStatus.INJECTED:await U(e,t);break;case i.EFileStatus.NONE:await T(e,t);break;case i.EFileStatus.UPLOAD_READY:await b(e,t);break;case i.EFileStatus.TO_DELETE:D(t)}}catch(e){I(t)}}));const e=c.filter((({status:e})=>e===i.EFileStatus.UPLOADED)),t=e.filter((({addedFrom:e})=>"schema"!==e)).length>0,s=c.filter((({status:e})=>e===i.EFileStatus.TO_DELETE)).length>0,r=t||s;g(e.map((({fileItem:e})=>e.id))),F(n,e.map((({dataURL:e,fileItem:i,fileUrl:t,uploadResponse:s})=>({..."base64"===u.type?{dataURL:e}:{},fileId:i.id,fileName:i.name,fileUrl:t,uploadResponse:s}))),{shouldDirty:r,shouldTouch:t})}),[c.map((({fileItem:e,status:i})=>`${e?.id}-${i}`)).join(",")]),e.useEffect((()=>{void 0!==p&&void 0===d&&c.length&&f([])}),[c,p,f,d]);const I=e=>{f((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:m?.errorMessage||i.ERROR_MESSAGES.UPLOAD().GENERIC},status:i.EFileStatus.ERROR_GENERIC},s}))},w=async(e,s)=>{if(!0!==l&&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""},R=async e=>{const{addedFrom:t,dataURL:s,rawFile:r}=e,a=await i.FileHelper.getType(r),l=q(a);if(l?.status<0)return l;const n="base64"===u.type?i.FileHelper.getFilesizeFromBase64(s):r.size,{errorMessage:o,status:m}=S(n);return m<0?{errorMessage:o,fileType:a,status:m}:"schema"===t?{fileType:a,status:i.EFileStatus.UPLOADED}:{fileType:a,status:i.EFileStatus.UPLOAD_READY}},q=e=>!a.fileType?.length||a.fileType?.includes(e.ext)?{}:{errorMessage:a.errorMessage||i.ERROR_MESSAGES.UPLOAD().FILE_TYPE(a.fileType||[]),fileType:e,status:i.EFileStatus.ERROR_FORMAT},S=e=>{if(o.maxSizeInKb>0){if(e>1024*o.maxSizeInKb)return{errorMessage:o.errorMessage||i.ERROR_MESSAGES.UPLOAD().MAX_FILE_SIZE(o.maxSizeInKb),status:i.EFileStatus.ERROR_SIZE}}return{}},U=async(e,t)=>{let s;if(f((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 r=e.uploadResponse?.data||e.uploadResponse,{errorMessage:a,fileType:l}=s?await R({...e,rawFile:s}):q({mime:r?.mimeType,ext:r?.ext});let n=s?.size||r?.fileSize||0;isNaN(n)&&(n=0);const{errorMessage:o}=S(n),u=s?await w(e,l?.mime):void 0;f((m=>{const d=[...m];return d[t]={...e,fileItem:{errorMessage:a||o,id:e.fileItem?.id||i.generateRandomId(),name:i.FileHelper.deduplicateFileName(c.map((({fileItem:e})=>e.name)),t,s?.name||e.rawFile.name),progress:1,size:n,type:l?.mime||r?.mimeType,thumbnailImageDataUrl:u},rawFile:s,status:i.EFileStatus.UPLOADED},d}))},T=async(e,t)=>{const s=await h(e),r=await i.FileHelper.fileToDataUrl(s.rawFile),{errorMessage:a,fileType:l,status:n}=await R({dataURL:r,...s});f((e=>{const o=[...e];return o[t]={...s,dataURL:r,fileItem:{errorMessage:a,id:i.generateRandomId(),name:i.FileHelper.deduplicateFileName(c.map((({fileItem:e})=>e?.name)),t,i.FileHelper.sanitizeFileName(s.rawFile.name)),size:s.rawFile.size,type:l.mime,progress:0},status:n},o}))},b=async(e,t)=>{f((e=>{const s=[...e];return s[t]={...e[t],status:i.EFileStatus.UPLOADING},s}));const s=new FormData;s.append("sessionId",u?.sessionId||E.current||""),s.append("fileId",e.fileItem.id),s.append("slot",e.slot.toString()),"base64"===u.type?s.append("dataURL",e.dataURL):"multipart"===u.type&&s.append("file",e.rawFile,e.fileItem?.name);try{const r=await new i.AxiosApiClient("",void 0,void 0,!0).post(u.url,s,{headers:{"Content-Type":"base64"===u.type?"application/json":"multipart/form-data",...u.headers},onUploadProgress:e=>{const{loaded:i,total:s}=e;f((e=>{if(!e[t])return e;const r=[...e];return r[t]={...e[t],fileItem:{...e[t].fileItem,progress:i/s}},r}))}}),a=await w(e);f((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 y("upload-error",n,{fileId:e.fileItem.id,errorData:i?.response?.data}),i}},D=e=>{f((i=>i.filter(((i,t)=>t!==e))))},h=async e=>{if(o.maxSizeInKb>0&&r){const s=1024*o.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:o.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.40a495d7.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-upload-manager.b0dc7ccd.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\thideThumbnail?: boolean | undefined;\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, hideThumbnail, 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 (hideThumbnail !== true && 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 fileTypeResult = validateFileType(fileType);\n\n\t\tif (fileTypeResult?.status < 0) {\n\t\t\treturn fileTypeResult;\n\t\t}\n\n\t\tconst fileSize = upload.type === \"base64\" ? FileHelper.getFilesizeFromBase64(dataURL) : rawFile.size;\n\t\tconst { errorMessage, status } = validateFileSize(fileSize);\n\t\tif (status < 0) {\n\t\t\treturn { errorMessage, fileType, status };\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\tconst validateFileType = (fileType: { mime: string; ext: string }) => {\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\treturn {};\n\t};\n\n\tconst validateFileSize = (fileSizeInKb: number) => {\n\t\tif (maxFileSizeRule.maxSizeInKb > 0) {\n\t\t\tconst maxSizeInB = maxFileSizeRule.maxSizeInKb * 1024;\n\t\t\tif (fileSizeInKb > maxSizeInB) {\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\tstatus: EFileStatus.ERROR_SIZE,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn {};\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\n\t\t// rawFile may not be available because some use cases is not able to return dataURL / fileUrl due to security concerns\n\t\t// in such cases, we will rely on the uploadResponse for file info\n\t\tconst uploadData = fileToInject.uploadResponse?.[\"data\"] || fileToInject.uploadResponse;\n\t\tconst { errorMessage, fileType } = rawFile\n\t\t\t? await readFile({ ...fileToInject, rawFile })\n\t\t\t: validateFileType({\n\t\t\t\t\tmime: uploadData?.[\"mimeType\"],\n\t\t\t\t\text: uploadData?.[\"ext\"],\n\t\t\t });\n\n\t\tlet size = rawFile?.size || uploadData?.[\"fileSize\"] || 0;\n\t\tif (isNaN(size)) {\n\t\t\tsize = 0;\n\t\t}\n\t\tconst { errorMessage: filesizeErrorMessage } = validateFileSize(size);\n\n\t\tconst thumbnailImageDataUrl = rawFile ? await generateThumbnail(fileToInject, fileType?.mime) : undefined;\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: errorMessage || filesizeErrorMessage,\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 || fileToInject.rawFile.name\n\t\t\t\t\t),\n\t\t\t\t\tprogress: 1,\n\t\t\t\t\tsize,\n\t\t\t\t\ttype: fileType?.mime || uploadData?.[\"mimeType\"],\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","hideThumbnail","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","fileTypeResult","validateFileType","fileSize","getFilesizeFromBase64","size","validateFileSize","ext","FILE_TYPE","ERROR_FORMAT","fileSizeInKb","maxSizeInKb","MAX_FILE_SIZE","ERROR_SIZE","fileToInject","INJECTING","blob","dataUrlToBlob","File","response","AxiosApiClient","responseType","get","mime","uploadData","isNaN","filesizeErrorMessage","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","maxSizeInB","fileOrBlob","compressImage","Blob","blobToFile","lastModified"],"mappings":"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"}
1
+ {"version":3,"file":"file-upload-manager.40a495d7.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\thideThumbnail?: boolean | undefined;\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, hideThumbnail, 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 (hideThumbnail !== true && 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 fileTypeResult = validateFileType(fileType);\n\n\t\tif (fileTypeResult?.status < 0) {\n\t\t\treturn fileTypeResult;\n\t\t}\n\n\t\tconst fileSize = upload.type === \"base64\" ? FileHelper.getFilesizeFromBase64(dataURL) : rawFile.size;\n\t\tconst { errorMessage, status } = validateFileSize(fileSize);\n\t\tif (status < 0) {\n\t\t\treturn { errorMessage, fileType, status };\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\tconst validateFileType = (fileType: { mime: string; ext: string }) => {\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\treturn {};\n\t};\n\n\tconst validateFileSize = (fileSizeInKb: number) => {\n\t\tif (maxFileSizeRule.maxSizeInKb > 0) {\n\t\t\tconst maxSizeInB = maxFileSizeRule.maxSizeInKb * 1024;\n\t\t\tif (fileSizeInKb > maxSizeInB) {\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\tstatus: EFileStatus.ERROR_SIZE,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn {};\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\n\t\t// rawFile may not be available because some use cases is not able to return dataURL / fileUrl due to security concerns\n\t\t// in such cases, we will rely on the uploadResponse for file info\n\t\tconst uploadData = fileToInject.uploadResponse?.[\"data\"] || fileToInject.uploadResponse;\n\t\tconst { errorMessage, fileType } = rawFile\n\t\t\t? await readFile({ ...fileToInject, rawFile })\n\t\t\t: validateFileType({\n\t\t\t\t\tmime: uploadData?.[\"mimeType\"],\n\t\t\t\t\text: uploadData?.[\"ext\"],\n\t\t\t });\n\n\t\tlet size = rawFile?.size || uploadData?.[\"fileSize\"] || 0;\n\t\tif (isNaN(size)) {\n\t\t\tsize = 0;\n\t\t}\n\t\tconst { errorMessage: filesizeErrorMessage } = validateFileSize(size);\n\n\t\tconst thumbnailImageDataUrl = rawFile ? await generateThumbnail(fileToInject, fileType?.mime) : undefined;\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: errorMessage || filesizeErrorMessage,\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 || fileToInject.rawFile.name\n\t\t\t\t\t),\n\t\t\t\t\tprogress: 1,\n\t\t\t\t\tsize,\n\t\t\t\t\ttype: fileType?.mime || uploadData?.[\"mimeType\"],\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","hideThumbnail","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","fileTypeResult","validateFileType","fileSize","getFilesizeFromBase64","size","validateFileSize","ext","FILE_TYPE","ERROR_FORMAT","fileSizeInKb","maxSizeInKb","MAX_FILE_SIZE","ERROR_SIZE","fileToInject","INJECTING","blob","dataUrlToBlob","File","response","AxiosApiClient","responseType","get","mime","uploadData","isNaN","filesizeErrorMessage","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","maxSizeInB","fileOrBlob","compressImage","Blob","blobToFile","lastModified"],"mappings":"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"}
@@ -436,7 +436,7 @@ function XO(e){return"[object Object]"===Object.prototype.toString.call(e)}Objec
436
436
  cursor: pointer;
437
437
  `,az=H.default(c.Alert)`
438
438
  margin-top: 0.5rem;
439
- `;var oz=Hr,sz=Gr,uz=Kt?Kt.isConcatSpreadable:void 0;var lz=ua,cz=function(e){return sz(e)||oz(e)||!!(uz&&e&&e[uz])};var dz=function e(t,n,r,i,a){var o=-1,s=t.length;for(r||(r=cz),a||(a=[]);++o<s;){var u=t[o];n>0&&r(u)?n>1?e(u,n-1,r,i,a):lz(a,u):i||(a[a.length]=u)}return a};var fz=Da,pz=function(){},hz=fz&&1/hA(new fz([,-0]))[1]==1/0?function(e){return new fz(e)}:pz,mz=pE,gz=EE,yz=SE,_z=AE,vz=hz,bz=hA;var Ez=function(e,t,n){var r=-1,i=gz,a=e.length,o=!0,s=[],u=s;if(n)o=!1,i=yz;else if(a>=200){var l=t?null:vz(e);if(l)return bz(l);o=!1,i=_z,u=new mz}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=C$,Az=dz,xz=Ez;var wz=function(e,t,n){var r=e.length;if(r<2)return r?xz(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 xz(Az(a,1),t,n)},Tz=Ji,Mz=wz,Oz=WE,Cz=HE((function(e){return Mz(Tz(e,Oz))}));const Nz=t.createContext({files:[],setFiles:()=>null,currentFileIds:[],setCurrentFileIds:()=>null}),Dz=({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(Nz.Provider,{value:s,children:n})};var Lz,Iz;!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}}(Lz||(Lz={})),exports.EFileStatus=void 0,(Iz=exports.EFileStatus||(exports.EFileStatus={}))[Iz.INJECTED=-99]="INJECTED",Iz[Iz.INJECTING=-98]="INJECTING",Iz[Iz.TO_DELETE=-4]="TO_DELETE",Iz[Iz.ERROR_FORMAT=-3]="ERROR_FORMAT",Iz[Iz.ERROR_GENERIC=-2]="ERROR_GENERIC",Iz[Iz.ERROR_SIZE=-1]="ERROR_SIZE",Iz[Iz.NONE=0]="NONE",Iz[Iz.UPLOAD_READY=4]="UPLOAD_READY",Iz[Iz.UPLOADING=5]="UPLOADING",Iz[Iz.UPLOADED=6]="UPLOADED";const kz=t.lazy((()=>Promise.resolve().then((function(){return require("./file-upload-manager.b0dc7ccd.js")})))),$z=n=>{const{id:r,error:i,isDirty:a,isTouched:o,value:s,schema:{compressImages:u,description:l,hideThumbnail:c,label:d,uploadOnAddingFile:f,validation:p,warning:h,...m},warning:g}=n,{files:y,currentFileIds:_,setFiles:v}=t.useContext(Nz),b=t.useRef({}),E=t.useRef({}),S=t.useRef({}),A=t.useRef({}),{setFieldValidationConfig:x}=Hk(),{dispatchFieldEvent:w}=YI(),{clearErrors:T,setError:O}=we(),[C,N]=t.useState(),D=t.useRef(y),L=t.useCallback(((e,t)=>{const n=[...t],i=n.length;e.forEach(((e,t)=>{!E.current.max||i+t<E.current.max?(n.push({...e,slot:Lz.findAvailableSlot(n)}),T(r)):O(r,{type:"max",message:E.current.errorMessage||nm.UPLOAD().MAX_FILES(E.current.max)})})),v(n)}),[T,r,O,v]);t.useEffect((()=>{D.current=y}),[y]),t.useEffect((()=>{w("mount",r)}),[w,r]),t.useEffect((()=>{const e=p?.find((e=>"required"in e)),t=p?.find((e=>"fileType"in e)),n=p?.find((e=>"maxSizeInKb"in e)),i=p?.find((e=>"upload"in e&&e.upload));b.current=t?.fileType?t:{},S.current=n?.maxSizeInKb>0?n:{},A.current=i||{};const a=p?.find((e=>"length"in e)),o=p?.find((e=>"max"in e));E.current=a?{max:a.length,errorMessage:a.errorMessage}:o?{max:o.max,errorMessage:o.errorMessage}:{},x(r,DT().of(CT().shape({dataURL:hw(),fileId:hw(),fileName:hw(),fileUrl:hw(),uploadResponse:CT()})).test("is-empty-array",e?.errorMessage||nm.UPLOAD().REQUIRED,(t=>!t||!e?.required||t.length>0)).test("max-size-in-kb",S.current.errorMessage||nm.UPLOAD().MAX_FILE_SIZE(S.current.maxSizeInKb),(e=>!(e&&Array.isArray(e)&&S.current.maxSizeInKb)||y.filter((e=>e.status===exports.EFileStatus.UPLOADED)).every((e=>{if("base64"===f.type&&e.dataURL)return exports.FileHelper.getFilesizeFromBase64(e.dataURL)<=1024*S.current.maxSizeInKb;if("multipart"===f.type){const t=e.uploadResponse?.data||e.uploadResponse;let n=e.rawFile?.size||t?.fileSize;return isNaN(n)&&(n=0),n<=1024*S.current.maxSizeInKb}})))).test("max-files",E.current.errorMessage||nm.UPLOAD().MAX_FILES(E.current.max),(e=>!(e&&Array.isArray(e)&&E.current.max)||e.length<=E.current.max)).test("no-interim-statuses",nm.UPLOAD().UPLOADING,(()=>{const e=new Set([exports.EFileStatus.INJECTED,exports.EFileStatus.INJECTING,exports.EFileStatus.NONE,exports.EFileStatus.UPLOAD_READY,exports.EFileStatus.UPLOADING]);return!D.current.some((t=>e.has(t.status)))})),p)}),[p,y.map((e=>e.status)).join(",")]),t.useEffect((()=>{if(!a&&!o){const e=Array.isArray(s)?s:[];if(!(Cz(e.map((({fileId:e})=>e)),_).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})})),L(t,[])}}),[L,a,o,_,s]),t.useEffect((()=>{if(i?.message)try{const{message:e,fileErrors:t}=JSON.parse(i.message);t&&v(D.current.map((e=>{const n=t[e.fileItem.id];return n?{...e,fileItem:{...e.fileItem,errorMessage:n}}:e}))),e&&N(e)}catch(e){N(i.message)}else N(void 0)}),[i?.message,v]);const I=t=>t?e.jsx(pI,{children:t}):null;return e.jsxs(e.Fragment,{children:[e.jsx(t.Suspense,{fallback:null,children:e.jsx(kz,{compressImages:!!u,fileTypeRule:b.current,hideThumbnail:c,id:r,maxFileSizeRule:S.current,upload:f,uploadRule:A.current,value:s})}),e.jsx(M.FileUpload,{...m,accept:b.current.fileType?.map((e=>`.${e}`)).join(","),description:I(l),errorMessage:I(C),fileItems:y.filter((({fileItem:e,status:t})=>!!e&&t!==exports.EFileStatus.INJECTED&&t!==exports.EFileStatus.INJECTING)).map((({fileItem:e})=>e)),id:r,maxFiles:E.current.max,onChange:e=>{L(e.map((e=>({addedFrom:"input",rawFile:e,slot:null,status:exports.EFileStatus.NONE}))),y)},onDelete:e=>{v(y.map((t=>t.fileItem.id!==e.id?t:{...t,status:exports.EFileStatus.TO_DELETE}))),T(r)},title:I(d),warning:I(g||h)})]})},Rz=t.createContext({images:[],setImages:()=>null,errorCount:0,setErrorCount:()=>null,currentFileIds:[],setCurrentFileIds:()=>null}),Fz=({children:n})=>{const[r,i]=t.useState([]),[a,o]=t.useState(0),[s,u]=t.useState([]);return e.jsx(Rz.Provider,{value:{images:r,setImages:i,errorCount:a,setErrorCount:o,currentFileIds:s,setCurrentFileIds:u},children:n})};var zz;!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}}(zz||(zz={}));const Pz=["jpg","gif","png","heic","heif","webp"];var jz;exports.EImageStatus=void 0,(jz=exports.EImageStatus||(exports.EImageStatus={}))[jz.INJECTED=-99]="INJECTED",jz[jz.ERROR_CUSTOM_MUTED=-7]="ERROR_CUSTOM_MUTED",jz[jz.ERROR_EXCEED=-6]="ERROR_EXCEED",jz[jz.ERROR_CUSTOM=-5]="ERROR_CUSTOM",jz[jz.TO_DELETE=-4]="TO_DELETE",jz[jz.ERROR_FORMAT=-3]="ERROR_FORMAT",jz[jz.ERROR_GENERIC=-2]="ERROR_GENERIC",jz[jz.ERROR_SIZE=-1]="ERROR_SIZE",jz[jz.NONE=0]="NONE",jz[jz.TO_RECOMPRESS=1]="TO_RECOMPRESS",jz[jz.COMPRESSED=2]="COMPRESSED",jz[jz.RECOMPRESSED=2]="RECOMPRESSED",jz[jz.CONVERTED=2]="CONVERTED",jz[jz.EDITED=3]="EDITED",jz[jz.UPLOAD_READY=4]="UPLOAD_READY",jz[jz.UPLOADING=5]="UPLOADING",jz[jz.UPLOADED=6]="UPLOADED",jz[jz.PENDING=7]="PENDING";var Zz,Uz={exports:{}},Bz={exports:{}},Vz={};var Hz,Gz,Yz,Wz,qz,Kz,Jz,Xz,Qz,eP,tP,nP,rP,iP,aP={};
439
+ `;var oz=Hr,sz=Gr,uz=Kt?Kt.isConcatSpreadable:void 0;var lz=ua,cz=function(e){return sz(e)||oz(e)||!!(uz&&e&&e[uz])};var dz=function e(t,n,r,i,a){var o=-1,s=t.length;for(r||(r=cz),a||(a=[]);++o<s;){var u=t[o];n>0&&r(u)?n>1?e(u,n-1,r,i,a):lz(a,u):i||(a[a.length]=u)}return a};var fz=Da,pz=function(){},hz=fz&&1/hA(new fz([,-0]))[1]==1/0?function(e){return new fz(e)}:pz,mz=pE,gz=EE,yz=SE,_z=AE,vz=hz,bz=hA;var Ez=function(e,t,n){var r=-1,i=gz,a=e.length,o=!0,s=[],u=s;if(n)o=!1,i=yz;else if(a>=200){var l=t?null:vz(e);if(l)return bz(l);o=!1,i=_z,u=new mz}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=C$,Az=dz,xz=Ez;var wz=function(e,t,n){var r=e.length;if(r<2)return r?xz(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 xz(Az(a,1),t,n)},Tz=Ji,Mz=wz,Oz=WE,Cz=HE((function(e){return Mz(Tz(e,Oz))}));const Nz=t.createContext({files:[],setFiles:()=>null,currentFileIds:[],setCurrentFileIds:()=>null}),Dz=({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(Nz.Provider,{value:s,children:n})};var Lz,Iz;!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}}(Lz||(Lz={})),exports.EFileStatus=void 0,(Iz=exports.EFileStatus||(exports.EFileStatus={}))[Iz.INJECTED=-99]="INJECTED",Iz[Iz.INJECTING=-98]="INJECTING",Iz[Iz.TO_DELETE=-4]="TO_DELETE",Iz[Iz.ERROR_FORMAT=-3]="ERROR_FORMAT",Iz[Iz.ERROR_GENERIC=-2]="ERROR_GENERIC",Iz[Iz.ERROR_SIZE=-1]="ERROR_SIZE",Iz[Iz.NONE=0]="NONE",Iz[Iz.UPLOAD_READY=4]="UPLOAD_READY",Iz[Iz.UPLOADING=5]="UPLOADING",Iz[Iz.UPLOADED=6]="UPLOADED";const kz=t.lazy((()=>Promise.resolve().then((function(){return require("./file-upload-manager.40a495d7.js")})))),$z=n=>{const{id:r,error:i,isDirty:a,isTouched:o,value:s,schema:{compressImages:u,description:l,hideThumbnail:c,label:d,uploadOnAddingFile:f,validation:p,warning:h,...m},warning:g}=n,{files:y,currentFileIds:_,setFiles:v}=t.useContext(Nz),b=t.useRef({}),E=t.useRef({}),S=t.useRef({}),A=t.useRef({}),{setFieldValidationConfig:x}=Hk(),{dispatchFieldEvent:w}=YI(),{clearErrors:T,setError:O}=we(),[C,N]=t.useState(),D=t.useRef(y),L=t.useCallback(((e,t)=>{const n=[...t],i=n.length;e.forEach(((e,t)=>{!E.current.max||i+t<E.current.max?(n.push({...e,slot:Lz.findAvailableSlot(n)}),T(r)):O(r,{type:"max",message:E.current.errorMessage||nm.UPLOAD().MAX_FILES(E.current.max)})})),v(n)}),[T,r,O,v]);t.useEffect((()=>{D.current=y}),[y]),t.useEffect((()=>{w("mount",r)}),[w,r]),t.useEffect((()=>{const e=p?.find((e=>"required"in e)),t=p?.find((e=>"fileType"in e)),n=p?.find((e=>"maxSizeInKb"in e)),i=p?.find((e=>"upload"in e&&e.upload));b.current=t?.fileType?t:{},S.current=n?.maxSizeInKb>0?n:{},A.current=i||{};const a=p?.find((e=>"length"in e)),o=p?.find((e=>"max"in e));E.current=a?{max:a.length,errorMessage:a.errorMessage}:o?{max:o.max,errorMessage:o.errorMessage}:{},x(r,DT().of(CT().shape({dataURL:hw(),fileId:hw(),fileName:hw(),fileUrl:hw(),uploadResponse:CT()})).test("is-empty-array",e?.errorMessage||nm.UPLOAD().REQUIRED,(t=>!t||!e?.required||t.length>0)).test("max-size-in-kb",S.current.errorMessage||nm.UPLOAD().MAX_FILE_SIZE(S.current.maxSizeInKb),(e=>!(e&&Array.isArray(e)&&S.current.maxSizeInKb)||y.filter((e=>e.status===exports.EFileStatus.UPLOADED)).every((e=>{if("base64"===f.type&&e.dataURL)return exports.FileHelper.getFilesizeFromBase64(e.dataURL)<=1024*S.current.maxSizeInKb;if("multipart"===f.type){const t=e.uploadResponse?.data||e.uploadResponse;let n=e.rawFile?.size||t?.fileSize;return isNaN(n)&&(n=0),n<=1024*S.current.maxSizeInKb}})))).test("max-files",E.current.errorMessage||nm.UPLOAD().MAX_FILES(E.current.max),(e=>!(e&&Array.isArray(e)&&E.current.max)||e.length<=E.current.max)).test("no-interim-statuses",nm.UPLOAD().UPLOADING,(()=>{const e=new Set([exports.EFileStatus.INJECTED,exports.EFileStatus.INJECTING,exports.EFileStatus.NONE,exports.EFileStatus.UPLOAD_READY,exports.EFileStatus.UPLOADING]);return!D.current.some((t=>e.has(t.status)))})),p)}),[p,y.map((e=>e.status)).join(",")]),t.useEffect((()=>{if(!a&&!o){const e=Array.isArray(s)?s:[];if(!(Cz(e.map((({fileId:e})=>e)),_).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})})),L(t,[])}}),[L,a,o,_,s]),t.useEffect((()=>{if(i?.message)try{const{message:e,fileErrors:t}=JSON.parse(i.message);t&&v(D.current.map((e=>{const n=t[e.fileItem.id];return n?{...e,fileItem:{...e.fileItem,errorMessage:n}}:e}))),e&&N(e)}catch(e){N(i.message)}else N(void 0)}),[i?.message,v]);const I=t=>t?e.jsx(pI,{children:t}):null;return e.jsxs(e.Fragment,{children:[e.jsx(t.Suspense,{fallback:null,children:e.jsx(kz,{compressImages:!!u,fileTypeRule:b.current,hideThumbnail:c,id:r,maxFileSizeRule:S.current,upload:f,uploadRule:A.current,value:s})}),e.jsx(M.FileUpload,{...m,accept:b.current.fileType?.map((e=>`.${e}`)).join(","),description:I(l),errorMessage:I(C),fileItems:y.filter((({fileItem:e,status:t})=>!!e&&t!==exports.EFileStatus.INJECTED&&t!==exports.EFileStatus.INJECTING)).map((({fileItem:e})=>e)),id:r,maxFiles:E.current.max,onChange:e=>{L(e.map((e=>({addedFrom:"input",rawFile:e,slot:null,status:exports.EFileStatus.NONE}))),y)},onDelete:e=>{v(y.map((t=>t.fileItem.id!==e.id?t:{...t,status:exports.EFileStatus.TO_DELETE}))),T(r)},title:I(d),warning:I(g||h)})]})},Rz=t.createContext({images:[],setImages:()=>null,errorCount:0,setErrorCount:()=>null,currentFileIds:[],setCurrentFileIds:()=>null}),Fz=({children:n})=>{const[r,i]=t.useState([]),[a,o]=t.useState(0),[s,u]=t.useState([]);return e.jsx(Rz.Provider,{value:{images:r,setImages:i,errorCount:a,setErrorCount:o,currentFileIds:s,setCurrentFileIds:u},children:n})};var zz;!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}}(zz||(zz={}));const Pz=["jpg","gif","png","heic","heif","webp"];var jz;exports.EImageStatus=void 0,(jz=exports.EImageStatus||(exports.EImageStatus={}))[jz.INJECTED=-99]="INJECTED",jz[jz.ERROR_CUSTOM_MUTED=-7]="ERROR_CUSTOM_MUTED",jz[jz.ERROR_EXCEED=-6]="ERROR_EXCEED",jz[jz.ERROR_CUSTOM=-5]="ERROR_CUSTOM",jz[jz.TO_DELETE=-4]="TO_DELETE",jz[jz.ERROR_FORMAT=-3]="ERROR_FORMAT",jz[jz.ERROR_GENERIC=-2]="ERROR_GENERIC",jz[jz.ERROR_SIZE=-1]="ERROR_SIZE",jz[jz.NONE=0]="NONE",jz[jz.TO_RECOMPRESS=1]="TO_RECOMPRESS",jz[jz.COMPRESSED=2]="COMPRESSED",jz[jz.RECOMPRESSED=2]="RECOMPRESSED",jz[jz.CONVERTED=2]="CONVERTED",jz[jz.EDITED=3]="EDITED",jz[jz.UPLOAD_READY=4]="UPLOAD_READY",jz[jz.UPLOADING=5]="UPLOADING",jz[jz.UPLOADED=6]="UPLOADED",jz[jz.PENDING=7]="PENDING";var Zz,Uz={exports:{}},Bz={exports:{}},Vz={};var Hz,Gz,Yz,Wz,qz,Kz,Jz,Xz,Qz,eP,tP,nP,rP,iP,aP={};
440
440
  /** @license React v16.13.1
441
441
  * react-is.development.js
442
442
  *
@@ -930,7 +930,7 @@ object-assign
930
930
  stroke: ${i.Color.Primary};
931
931
  stroke-width: 1;
932
932
  }
933
- `,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(pZ,{id:exports.TestHelper.generateId(s),children:[u.map(((t,n)=>t.status===exports.EImageStatus.NONE?e.jsx(_Z,{children:[...Array(4)].map(((t,n)=>e.jsx(yZ,{},`dot-${n}`)))},n):t.status>exports.EImageStatus.NONE||t.status===exports.EImageStatus.ERROR_CUSTOM_MUTED?e.jsx(hZ,{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(vZ,{isSelected:i===n})},n):"reviewModal"===t.addedFrom||t.status<exports.EImageStatus.NONE?e.jsxs(hZ,{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(vZ,{isSelected:i===n}),e.jsx(mZ,{})]},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(bZ,{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(EZ,{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,{})})]})]})},AZ=t.lazy((()=>Promise.resolve().then((function(){return require("./index.e6c89bb0.js")})))),xZ=[{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"}],wZ=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(Rz),{dispatchFieldEvent:b,addFieldEventListener:E,removeFieldEventListener:S}=YI(),A=Wk(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(xZ[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=zz.findAvailableSlot(t);return[...t,{id:im(),file:e,name:e.name,dimensions:u,status:exports.EImageStatus.NONE,uploadProgress:0,addedFrom:"reviewModal",slot:n}]}))})):v((t=>{const n=zz.findAvailableSlot(t);return[...t,{id:im(),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(xZ[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(Gj,{className:a?`${a}-review-modal-box`:void 0,imageReviewModalStyles:y,showCloseButton:!1,children:h?e.jsxs(e.Fragment,{children:[e.jsx(Yj,{className:a?`${a}-header`:void 0,$drawActive:T,children:T?e.jsxs(e.Fragment,{children:[e.jsx(Jj,{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(Jj,{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(Wj,{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(qj,{weight:"semibold",children:"Review photos"})]})}),e.jsxs(Xj,{children:[_.length>0&&e.jsx(aZ,{className:a?`${a}-editor`:void 0,children:e.jsx(t.Suspense,{fallback:null,children:e.jsx(AZ,{baseImageDataURL:_[x]?.dataURL,drawing:_[x]?.drawing,color:T?L:void 0,erase:!!T&&k,ref:R,maxSizeInKb:d})})}),_.length>0&&e.jsx(Qj,{children:"Loading Preview..."}),!T&&_[x]?.status>=exports.EImageStatus.NONE&&e.jsxs(eZ,{children:[e.jsxs(tZ,{id:exports.TestHelper.generateId(l,"draw-button"),"data-testid":exports.TestHelper.generateId(l,"draw-button"),onClick:B,disabled:D,children:[e.jsx(rZ,{$disabled:D}),e.jsx(nZ,{weight:"semibold",$disabled:D,children:"Draw"})]}),e.jsxs(tZ,{id:exports.TestHelper.generateId(l,"delete-button"),"data-testid":exports.TestHelper.generateId(l,"delete-button"),onClick:()=>N("delete"),disabled:D,children:[e.jsx(iZ,{$disabled:D}),e.jsx(nZ,{weight:"semibold",$disabled:D,children:"Delete"})]})]}),_[x]?.status<exports.EImageStatus.NONE&&e.jsx(Vj,{id:`${l}-photo-error`,image:_[x],accepts:r,maxSizeInKb:d,onClickOk:()=>j(!0),maxFilesErrorMessage:g,maxFiles:c})]}),e.jsx(oZ,{className:a?`${a}-footer`:void 0,children:T?e.jsxs(e.Fragment,{children:[e.jsx(uZ,{id:exports.TestHelper.generateId(l,"eraser-button"),"data-testid":exports.TestHelper.generateId(l,"eraser-button"),"aria-label":"eraser",onClick:H,children:e.jsx(lZ,{$eraseMode:k})}),e.jsx(dZ,{children:xZ.map((({color:t,colorScheme:n,label:r},i)=>e.jsx(fZ,{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(cZ,{$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(sZ,{id:exports.TestHelper.generateId(l,"save-button"),"data-testid":exports.TestHelper.generateId(l,"save-button"),onClick:U,disabled:F,children:"Save"})]})}),e.jsx(Hj,{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,{})})})},TZ=t.lazy((()=>Promise.resolve().then((function(){return require("./index.b96b1565.js")})))),MZ=n=>{const{schema:{buttonLabel:r,capture:i,className:a,compress:o,crop:s,description:u,dimensions:l={width:1e3,height:1e3},editImage:c,label:d,outputType:f="jpg",uploadOnAddingFile:p,validation:h,multiple:m,imageReviewModalStyles:g},id:y,isDirty:_,isTouched:v,value:b,warning:E,...S}=n,{images:A,setImages:x,currentFileIds:w}=t.useContext(Rz),T=Wk(A),[M,O]=t.useState([...Pz]),[C,N]=t.useState(0),[D,L]=t.useState(0),[I,k]=t.useState(!1),[$,R]=t.useState(!1),{setFieldValidationConfig:F}=Hk(),{dispatchFieldEvent:z}=YI();t.useEffect((()=>{z("mount",y)}),[z,y]),t.useEffect((()=>{if(!_&&!v){const e=Array.isArray(b)?b:[];if(!(Cz(e.map((({fileId:e})=>e)),w).length>0))return;const t=[];e.forEach((({fileId:e,fileName:n,dataURL:r,uploadResponse:i},a)=>{const o={id:e||im(),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)})),x(t)}}),[_,v,w,x,b]),t.useEffect((()=>{const e=h?.find((e=>"required"in e)),t=h?.find((e=>"fileType"in e)),n=h?.find((e=>"maxSizeInKb"in e));t?.fileType&&t?.fileType!==M&&O(t?.fileType),n?.maxSizeInKb&&n?.maxSizeInKb!==D&&L(n?.maxSizeInKb);const r=h?.find((e=>"length"in e)),i=h?.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&&C!==a.maxFiles&&N(a.maxFiles),F(y,DT().of(CT().shape({fileName:hw(),dataURL:hw()})).test("is-empty-array",e?.errorMessage||nm.UPLOAD("photo").REQUIRED,(t=>!t||!e?.required||t.length>0)).test("max-size-in-kb",n?.errorMessage||nm.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)))),h)}),[h]),t.useEffect((()=>{A.some((e=>e.status===exports.EImageStatus.NONE))||(A.some(((e,t)=>{const n=T?.[t];if(e.status!==n?.status||e.dataURL!==n.dataURL)switch(e.status){case exports.EImageStatus.COMPRESSED:case exports.EImageStatus.CONVERTED:if(c&&!$)return exports.WindowHelper.isMobileView()?R(!0):k(!0),!0}})),0===A.length&&R(!1))}),[A.map((e=>e.status)).join(","),A.map((e=>e.dataURL)).join(",")]);const P=(e=!1)=>{e?c&&(document.body.classList.remove("lifesg-ds-overlay-open"),R(!0)):x((e=>e.map((e=>e.status<exports.EImageStatus.UPLOAD_READY&&e.status>exports.EImageStatus.NONE?{...e,status:exports.EImageStatus.UPLOAD_READY}:e)))),k(!1)};return e.jsxs(e.Fragment,{children:[e.jsx(t.Suspense,{fallback:null,children:e.jsx(TZ,{accepts:M,compress:!!o,crop:!!s,dimensions:l,editImage:c,id:y,maxSizeInKb:D,outputType:f,upload:p,value:b})}),e.jsx(Fj,{id:y,capture:i,className:a,label:d,description:u,buttonLabel:r,accepts:M,maxFiles:C,maxSizeInKb:D,dimensions:l,errorMessage:S.error?.message,validation:h,multiple:m,warning:E}),e.jsx(WT,{id:`${y}-review-prompt`,title:"Review photos?",size:"large",show:I,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:()=>P(!0)},{id:"skip",title:"Skip",buttonStyle:"secondary",onClick:()=>P()}]}),(()=>{const t=h?.find((e=>"max"in e));return e.jsx(wZ,{accepts:M,dimensions:l,id:y,className:a,maxFiles:C,maxFilesErrorMessage:t?.errorMessage,maxSizeInKb:D,onExit:()=>R(!1),outputType:f,show:$,multiple:m,capture:i,imageReviewModalStyles:g})})()]})},OZ=a.css`
933
+ `,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(pZ,{id:exports.TestHelper.generateId(s),children:[u.map(((t,n)=>t.status===exports.EImageStatus.NONE?e.jsx(_Z,{children:[...Array(4)].map(((t,n)=>e.jsx(yZ,{},`dot-${n}`)))},n):t.status>exports.EImageStatus.NONE||t.status===exports.EImageStatus.ERROR_CUSTOM_MUTED?e.jsx(hZ,{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(vZ,{isSelected:i===n})},n):"reviewModal"===t.addedFrom||t.status<exports.EImageStatus.NONE?e.jsxs(hZ,{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(vZ,{isSelected:i===n}),e.jsx(mZ,{})]},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(bZ,{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(EZ,{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,{})})]})]})},AZ=t.lazy((()=>Promise.resolve().then((function(){return require("./index.c6117cf7.js")})))),xZ=[{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"}],wZ=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(Rz),{dispatchFieldEvent:b,addFieldEventListener:E,removeFieldEventListener:S}=YI(),A=Wk(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(xZ[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=zz.findAvailableSlot(t);return[...t,{id:im(),file:e,name:e.name,dimensions:u,status:exports.EImageStatus.NONE,uploadProgress:0,addedFrom:"reviewModal",slot:n}]}))})):v((t=>{const n=zz.findAvailableSlot(t);return[...t,{id:im(),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(xZ[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(Gj,{className:a?`${a}-review-modal-box`:void 0,imageReviewModalStyles:y,showCloseButton:!1,children:h?e.jsxs(e.Fragment,{children:[e.jsx(Yj,{className:a?`${a}-header`:void 0,$drawActive:T,children:T?e.jsxs(e.Fragment,{children:[e.jsx(Jj,{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(Jj,{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(Wj,{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(qj,{weight:"semibold",children:"Review photos"})]})}),e.jsxs(Xj,{children:[_.length>0&&e.jsx(aZ,{className:a?`${a}-editor`:void 0,children:e.jsx(t.Suspense,{fallback:null,children:e.jsx(AZ,{baseImageDataURL:_[x]?.dataURL,drawing:_[x]?.drawing,color:T?L:void 0,erase:!!T&&k,ref:R,maxSizeInKb:d})})}),_.length>0&&e.jsx(Qj,{children:"Loading Preview..."}),!T&&_[x]?.status>=exports.EImageStatus.NONE&&e.jsxs(eZ,{children:[e.jsxs(tZ,{id:exports.TestHelper.generateId(l,"draw-button"),"data-testid":exports.TestHelper.generateId(l,"draw-button"),onClick:B,disabled:D,children:[e.jsx(rZ,{$disabled:D}),e.jsx(nZ,{weight:"semibold",$disabled:D,children:"Draw"})]}),e.jsxs(tZ,{id:exports.TestHelper.generateId(l,"delete-button"),"data-testid":exports.TestHelper.generateId(l,"delete-button"),onClick:()=>N("delete"),disabled:D,children:[e.jsx(iZ,{$disabled:D}),e.jsx(nZ,{weight:"semibold",$disabled:D,children:"Delete"})]})]}),_[x]?.status<exports.EImageStatus.NONE&&e.jsx(Vj,{id:`${l}-photo-error`,image:_[x],accepts:r,maxSizeInKb:d,onClickOk:()=>j(!0),maxFilesErrorMessage:g,maxFiles:c})]}),e.jsx(oZ,{className:a?`${a}-footer`:void 0,children:T?e.jsxs(e.Fragment,{children:[e.jsx(uZ,{id:exports.TestHelper.generateId(l,"eraser-button"),"data-testid":exports.TestHelper.generateId(l,"eraser-button"),"aria-label":"eraser",onClick:H,children:e.jsx(lZ,{$eraseMode:k})}),e.jsx(dZ,{children:xZ.map((({color:t,colorScheme:n,label:r},i)=>e.jsx(fZ,{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(cZ,{$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(sZ,{id:exports.TestHelper.generateId(l,"save-button"),"data-testid":exports.TestHelper.generateId(l,"save-button"),onClick:U,disabled:F,children:"Save"})]})}),e.jsx(Hj,{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,{})})})},TZ=t.lazy((()=>Promise.resolve().then((function(){return require("./index.70d271b4.js")})))),MZ=n=>{const{schema:{buttonLabel:r,capture:i,className:a,compress:o,crop:s,description:u,dimensions:l={width:1e3,height:1e3},editImage:c,label:d,outputType:f="jpg",uploadOnAddingFile:p,validation:h,multiple:m,imageReviewModalStyles:g},id:y,isDirty:_,isTouched:v,value:b,warning:E,...S}=n,{images:A,setImages:x,currentFileIds:w}=t.useContext(Rz),T=Wk(A),[M,O]=t.useState([...Pz]),[C,N]=t.useState(0),[D,L]=t.useState(0),[I,k]=t.useState(!1),[$,R]=t.useState(!1),{setFieldValidationConfig:F}=Hk(),{dispatchFieldEvent:z}=YI();t.useEffect((()=>{z("mount",y)}),[z,y]),t.useEffect((()=>{if(!_&&!v){const e=Array.isArray(b)?b:[];if(!(Cz(e.map((({fileId:e})=>e)),w).length>0))return;const t=[];e.forEach((({fileId:e,fileName:n,dataURL:r,uploadResponse:i},a)=>{const o={id:e||im(),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)})),x(t)}}),[_,v,w,x,b]),t.useEffect((()=>{const e=h?.find((e=>"required"in e)),t=h?.find((e=>"fileType"in e)),n=h?.find((e=>"maxSizeInKb"in e));t?.fileType&&t?.fileType!==M&&O(t?.fileType),n?.maxSizeInKb&&n?.maxSizeInKb!==D&&L(n?.maxSizeInKb);const r=h?.find((e=>"length"in e)),i=h?.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&&C!==a.maxFiles&&N(a.maxFiles),F(y,DT().of(CT().shape({fileName:hw(),dataURL:hw()})).test("is-empty-array",e?.errorMessage||nm.UPLOAD("photo").REQUIRED,(t=>!t||!e?.required||t.length>0)).test("max-size-in-kb",n?.errorMessage||nm.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)))),h)}),[h]),t.useEffect((()=>{A.some((e=>e.status===exports.EImageStatus.NONE))||(A.some(((e,t)=>{const n=T?.[t];if(e.status!==n?.status||e.dataURL!==n.dataURL)switch(e.status){case exports.EImageStatus.COMPRESSED:case exports.EImageStatus.CONVERTED:if(c&&!$)return exports.WindowHelper.isMobileView()?R(!0):k(!0),!0}})),0===A.length&&R(!1))}),[A.map((e=>e.status)).join(","),A.map((e=>e.dataURL)).join(",")]);const P=(e=!1)=>{e?c&&(document.body.classList.remove("lifesg-ds-overlay-open"),R(!0)):x((e=>e.map((e=>e.status<exports.EImageStatus.UPLOAD_READY&&e.status>exports.EImageStatus.NONE?{...e,status:exports.EImageStatus.UPLOAD_READY}:e)))),k(!1)};return e.jsxs(e.Fragment,{children:[e.jsx(t.Suspense,{fallback:null,children:e.jsx(TZ,{accepts:M,compress:!!o,crop:!!s,dimensions:l,editImage:c,id:y,maxSizeInKb:D,outputType:f,upload:p,value:b})}),e.jsx(Fj,{id:y,capture:i,className:a,label:d,description:u,buttonLabel:r,accepts:M,maxFiles:C,maxSizeInKb:D,dimensions:l,errorMessage:S.error?.message,validation:h,multiple:m,warning:E}),e.jsx(WT,{id:`${y}-review-prompt`,title:"Review photos?",size:"large",show:I,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:()=>P(!0)},{id:"skip",title:"Skip",buttonStyle:"secondary",onClick:()=>P()}]}),(()=>{const t=h?.find((e=>"max"in e));return e.jsx(wZ,{accepts:M,dimensions:l,id:y,className:a,maxFiles:C,maxFilesErrorMessage:t?.errorMessage,maxSizeInKb:D,onExit:()=>R(!1),outputType:f,show:$,multiple:m,capture:i,imageReviewModalStyles:g})})()]})},OZ=a.css`
934
934
  border: 1px solid ${i.Color.Accent.Light[1]};
935
935
  box-shadow: none;
936
936
  `,CZ=a.css`
@@ -1013,7 +1013,7 @@ object-assign
1013
1013
  ${e=>a.css`
1014
1014
  margin-left: ${e.$readOnly?"0.25rem":"0.75rem"};
1015
1015
  `}
1016
- `,kZ=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(DZ,{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(LZ,{$placeholder:!0,$disabled:a,children:l}):e.jsx(LZ,{$disabled:a,children:u}),e.jsx(IZ,{$disabled:a,$readOnly:o,"aria-hidden":"true",children:e.jsx(F.PinFillIcon,{})})]})},$Z=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(kZ,{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})})},RZ=t.lazy((()=>Promise.resolve().then((function(){return require("./location-modal.c6e65d41.js")}))));class FZ extends Error{code;message;constructor(e){super(),Object.assign(this,e)}}const zZ=H.default(r.Text.BodySmall)`
1016
+ `,kZ=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(DZ,{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(LZ,{$placeholder:!0,$disabled:a,children:l}):e.jsx(LZ,{$disabled:a,children:u}),e.jsx(IZ,{$disabled:a,$readOnly:o,"aria-hidden":"true",children:e.jsx(F.PinFillIcon,{})})]})},$Z=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(kZ,{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})})},RZ=t.lazy((()=>Promise.resolve().then((function(){return require("./location-modal.cb34554b.js")}))));class FZ extends Error{code;message;constructor(e){super(),Object.assign(this,e)}}const zZ=H.default(r.Text.BodySmall)`
1017
1017
  cursor: ${e=>e.disabled?"not-allowed":"pointer"};
1018
1018
  `,PZ=H.default(j.RadioButton)`
1019
1019
  margin-right: 5px;
@@ -1049,9 +1049,9 @@ object-assign
1049
1049
  gap: 1rem;
1050
1050
  `,GZ=H.default.div`
1051
1051
  ${({$color:e})=>e&&`color: ${e};`}
1052
- `;var YZ;exports.EFieldType=void 0,(YZ=exports.EFieldType||(exports.EFieldType={})).BUTTON="ButtonField",YZ.CHECKBOX="CheckboxGroup",YZ.CHIPS="Chips",YZ["CONTACT-FIELD"]="ContactField",YZ["DATE-FIELD"]="DateField",YZ["DATE-RANGE-FIELD"]="DateRangeField",YZ["EMAIL-FIELD"]="TextField",YZ["E-SIGNATURE-FIELD"]="ESignatureField",YZ["ERROR-FIELD"]="ErrorField",YZ["FILE-UPLOAD"]="FileUpload",YZ["HIDDEN-FIELD"]="HiddenField",YZ["HISTOGRAM-SLIDER"]="HistogramSlider",YZ["IMAGE-UPLOAD"]="ImageUpload",YZ["LOCATION-FIELD"]="LocationField",YZ["MASKED-FIELD"]="MaskedField",YZ["MULTI-SELECT"]="MultiSelect",YZ["NESTED-MULTI-SELECT"]="NestedMultiSelect",YZ["RANGE-SELECT"]="RangeSelect",YZ["NUMERIC-FIELD"]="TextField",YZ.RADIO="RadioButtonGroup",YZ.RESET="ResetButton",YZ.SELECT="Select",YZ["SELECT-HISTOGRAM"]="SelectHistogram",YZ.SLIDER="Slider",YZ.SUBMIT="SubmitButton",YZ.SWITCH="Switch",YZ.TEXTAREA="Textarea",YZ["TEXT-FIELD"]="TextField",YZ["TIME-FIELD"]="TimeField",YZ["UNIT-NUMBER-FIELD"]="UnitNumberField";var WZ=Object.freeze({__proto__:null,ButtonField:t=>{const{schema:{label:n,uiType:r,startIcon:i,endIcon:a,href:o,target:s,...u},id:l,...c}=t,{dispatchFieldEvent:d}=YI(),f=t=>{if(!t)return null;const n=G[t];return e.jsx(n,{})};return e.jsxs(S$,{type:"button",...u,...c,onClick:e=>{d("click",l,e),o&&(e=>{try{return!!new URL(e)}catch{return!1}})(o)&&(s?window.open(o,s,"noopener noreferrer"):window.location.href=o)},children:[f(i),n,f(a)]})},CheckboxGroup:n=>{const{formattedLabel:r,error:i,id:a,onChange:o,schema:{className:s,customOptions:u,disabled:l,label:c,options:d,validation:f,...p},value:h,warning:m}=n,{setValue:g}=we(),[y,_]=t.useState(h||[]),{setFieldValidationConfig:v}=Hk();t.useEffect((()=>{const e=f?.find((e=>"required"in e));v(a,DT().of(hw()).test("is-empty-array",e?.errorMessage||nm.COMMON.REQUIRED_OPTION,(t=>!t||!e?.required||t.length>0)),f)}),[f]),_s((()=>{const e=h?.filter((e=>d.find((t=>t.value===e))));g(a,e)}),[d]),t.useEffect((()=>{_(h||[])}),[h]);const b=(e,t)=>{const n=d.find((e=>!0===e.none));let r=[...y];t?r=r.includes(e)?[]:[e]:r.includes(e)?r=I$(r,e,n?.value):(r.push(e),r=I$(r,n?.value)),o({target:{value:r}})},E=e=>y.includes(e),S=()=>{const e=im();return`${a}-${e}`},A=t=>"string"==typeof t?e.jsx(pI,{inline:!0,children:t}):e.jsx(QZ,{children:t});return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.CustomField,{id:a,label:r,errorMessage:i?.message,children:"toggle"===u?.styleType?d.length>0&&"toggle"===u.styleType&&e.jsx(F$,{$layoutType:u?.layoutType??"horizontal",className:s?`${s}-checkbox-container`:void 0,children:d.map(((t,n)=>{const r=S();return e.jsx(z$,{type:"checkbox","data-testid":exports.TestHelper.generateId(a,"toggle"),id:r,className:s,disabled:l??t.disabled,name:r,indicator:u?.indicator,styleType:!1===u?.border?"no-border":"default",checked:E(t.value),onChange:()=>b(t.value,t.none),error:!!i?.message,compositeSection:t.children?{children:e.jsx(QZ,{children:t.children}),collapsible:!1}:null,subLabel:!!t.subLabel&&A(t.subLabel),children:A(t.label)},n)}))}):d.length>0&&d.map(((t,n)=>{const r=S();return e.jsxs(R$,{className:s?`${s}-checkbox-container`:void 0,children:[e.jsx($$,{...p,"data-testid":exports.TestHelper.generateId(a,"checkbox"),id:r,className:s,disabled:l??t.disabled,name:r,value:t.value,checked:E(t.value),onChange:()=>b(t.value)}),e.jsx(k$,{as:"label",htmlFor:r,disabled:l??t.disabled,children:A(t.label)})]},n)}))}),e.jsx(xI,{id:a,message:m})]})},Chips:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,schema:{disabled:s,label:u,options:l,textarea:c,validation:d,...f},value:p,warning:h,...m}=n,[g,y]=t.useState(p||[]),[_,v]=t.useState(!1),[b,E]=t.useState(!0),{setValue:S,unregister:A}=we(),{setFieldValidationConfig:w,removeFieldValidationConfig:T}=Hk();t.useEffect((()=>{_||A(O())}),[]),t.useEffect((()=>{const e=d?.find((e=>"required"in e)),t=d?.find((e=>"max"in e)),n=d?.find((e=>"length"in e));w(a,DT().of(hw()).test("is-empty-array",e?.errorMessage||nm.COMMON.REQUIRED_OPTION,(t=>!t||!e?.required||t.length>0)),d),1!==t?.max&&1!==n?.length||E(!1)}),[d]),_s((()=>{const e=[...l.map((e=>e.value)),c?.label],t=p?.filter((t=>e.includes(t)));S(a,t)}),[l]),t.useEffect((()=>{p?.includes(C())?N(!0):N(),y(p||[])}),[p]);const M=e=>g.includes(e),O=()=>`${a}-textarea`,C=()=>"string"==typeof c?.label?c?.label:c?.label?.mainLabel,N=(e=!1)=>{v(e),e||T(O())},D=e=>{let t=[...g];if(t.includes(e))return t=t.filter((t=>t!==e)),void o({target:{value:t}});b?t.push(e):t=[e],o({target:{value:t}})};return e.jsxs(e.Fragment,{children:[e.jsxs(x.Form.CustomField,{label:i,errorMessage:r?.message,...m,children:[e.jsxs(G$,{"data-testid":exports.TestHelper.generateId(a,"chips"),$showTextarea:_,children:[l.map(((e,n)=>t.createElement(zT,{...f,key:n,onClick:()=>D(e.value),isActive:M(e.value),disabled:s??e.disabled},e.label))),(()=>{if(!c?.label)return;const t=C();return e.jsx(zT,{...f,onClick:()=>{D(t)},isActive:M(t),children:t})})()]}),(()=>{if(!c?.label)return e.jsx(e.Fragment,{});const t=O(),n={uiType:"textarea",className:f.className?`${f.className}-textarea`:void 0,...c};return _?e.jsx(P$,{id:t,schema:n,Field:H$}):e.jsx(e.Fragment,{})})()]}),e.jsx(xI,{id:a,message:h})]})},ContactField:n=>{const{isDirty:r,formattedLabel:i,error:a,id:o,name:s,onChange:u,schema:{defaultCountry:l,disabled:c,enableSearch:d,label:f,placeholder:p,validation:h,...m},value:g,warning:y,..._}=n,{resetField:v}=we(),[b,E]=t.useState(g||""),S=Wk(l),[A,w]=t.useState(l),[T]=t.useState((()=>{const e=new Map;return Y$.forEach((t=>{const[n,...r]=t,i=r.find((e=>/^\d+$/.test(e)));e.set(n,i)})),e})()),[M,O]=t.useState(),[C,N]=t.useState(),[D,L]=t.useState(void 0),{setFieldValidationConfig:I}=Hk();t.useEffect((()=>{const e=h?.find((e=>"contactNumber"in e)),t=e?.contactNumber?.singaporeNumber,n=e?.contactNumber?.internationalNumber,r=e?.errorMessage;T.has(n)?(w(n),L(!0)):["default","house","mobile"].includes(t)?(w("Singapore"),L(!0)):L(!1),N(t),I(o,hw().test("singaporeNumber",r||nm.CONTACT.INVALID_SINGAPORE_NUMBER,(e=>!e||!t||KF.isSingaporeNumber(e,t))).test("internationalNumber",r||nm.CONTACT.INVALID_INTERNATIONAL_NUMBER,(e=>!(e&&!t&&n)||KF.isInternationalNumber(M?.name,e))),h)}),[h,M]),t.useEffect((()=>{const e=A||"Singapore";O({name:e,prefix:T.get(e)})}),[A,T]),t.useEffect((()=>{const e=h?.find((e=>"contactNumber"in e)),t=e?.contactNumber?.singaporeNumber,n=e?.contactNumber?.internationalNumber;!l||S===l||T.has(n)||["default","house","mobile"].includes(t)||w(l)}),[h,l]),t.useEffect((()=>{if(void 0!==D&&!r){const{prefix:e,number:t}=KF.getParsedPhoneNumber(g||""),n=e.replace(/\+/g,""),r=(e=>{for(const[t,,,n]of Y$)if(t===e)return n})(A||"Singapore");if(!D||D&&n===r){const n=k({countryCode:e||r,number:t});v(o,{defaultValue:n,keepDirty:!0})}else{const e=k({countryCode:"",number:""});v(o,{defaultValue:e,keepDirty:!0})}}}),[g,r,D,A]);const k=e=>{const{countryCode:t,number:n}=e,r=t.replace(/\+/g,"");if(!1===D&&r!==M?.prefix){const e=((e,t)=>{for(const[n,r]of t.entries())if(r===e)return n})(r,T);e&&O({name:e,prefix:t})}return E(n),KF.formatPhoneNumber(e.countryCode,e.number)||""};return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.PhoneNumberInput,{...m,..._,"data-testid":exports.TestHelper.generateId(o,"contact"),disabled:c,enableSearch:d,errorMessage:a?.message,fixedCountry:D,id:o,label:i,name:s,placeholder:(()=>{if(p)return p;if(C){return`Enter ${"mobile"===C?"mobile":"home"} number`}return"Enter contact number"})(),value:(()=>{if(!M)return;const{prefix:e}=M;return{number:b,countryCode:e}})(),onChange:e=>{const t=k(e);u({target:{value:t}})}}),e.jsx(xI,{id:o,message:y})]})},DateField:n=>{const{error:r,formattedLabel:i,id:a,isDirty:o,onChange:s,schema:{label:u,useCurrentDate:l,dateFormat:c=JF,validation:d,...f},value:p,warning:h,...m}=n,{setValue:g}=we(),[y,_]=t.useState(p||""),[v,b]=t.useState(),{setFieldValidationConfig:E}=Hk();t.useEffect((()=>{const e=d?.find((e=>"dateFormat"in e&&e.dateFormat)),t=d?.find((e=>"future"in e)),n=d?.find((e=>"past"in e)),r=d?.find((e=>"notFuture"in e)),i=d?.find((e=>"notPast"in e)),o=d?.find((e=>"minDate"in e)),s=d?.find((e=>"maxDate"in e)),u=d?.find((e=>"excludedDates"in e)),l=d?.find((e=>"withinDays"in e)),f=d?.find((e=>"beyondDays"in e)),p=rm.toLocalDateOrTime(o?.minDate,c,"date"),h=rm.toLocalDateOrTime(s?.maxDate,c,"date");E(a,hw().test("is-date",e?.errorMessage||nm.DATE.INVALID,(e=>!e||""===e||!!w(e)&&!!rm.toLocalDateOrTime(e,c,"date"))).test("future",t?.errorMessage||nm.DATE.MUST_BE_FUTURE,(e=>{if(!w(e)||!t?.future)return!0;const n=rm.toLocalDateOrTime(e,c,"date");return!!n?.isAfter(gf.now())})).test("past",n?.errorMessage||nm.DATE.MUST_BE_PAST,(e=>{if(!w(e)||!n?.past)return!0;const t=rm.toLocalDateOrTime(e,c,"date");return!!t?.isBefore(gf.now())})).test("not-future",r?.errorMessage||nm.DATE.CANNOT_BE_FUTURE,(e=>{if(!w(e)||!r?.notFuture)return!0;const t=rm.toLocalDateOrTime(e,c,"date");return!t?.isAfter(gf.now())})).test("not-past",i?.errorMessage||nm.DATE.CANNOT_BE_PAST,(e=>{if(!w(e)||!i?.notPast)return!0;const t=rm.toLocalDateOrTime(e,c,"date");return!t?.isBefore(gf.now())})).test("min-date",o?.errorMessage||nm.DATE.MIN_DATE(rm.formatDateTime(o?.minDate,"dd/MM/uuuu","date")),(e=>{if(!w(e)||!p)return!0;const t=rm.toLocalDateOrTime(e,c,"date");return!t?.isBefore(p)})).test("max-date",s?.errorMessage||nm.DATE.MAX_DATE(rm.formatDateTime(s?.maxDate,"dd/MM/uuuu","date")),(e=>{if(!w(e)||!h)return!0;const t=rm.toLocalDateOrTime(e,c,"date");return!t?.isAfter(h)})).test("excluded-dates",u?.errorMessage||nm.DATE.DISABLED_DATES,(e=>!w(e)||!u||!u.excludedDates.includes(e))).test("within-days",l?.errorMessage||l?.withinDays&&nm.DATE.WITHIN_DAYS(l?.withinDays),(e=>!w(e)||!l||rm.checkWithinDays(e,{...l.withinDays,dateFormat:c}))).test("beyond-days",f?.errorMessage||f?.beyondDays&&nm.DATE.BEYOND_DAYS(f?.beyondDays),(e=>!w(e)||!f||rm.checkBeyondDays(e,{...f.beyondDays,dateFormat:c}))),d);const m=l?.withinDays&&rm.calculateDisabledWithinDaysRange({...l.withinDays,dateFormat:c}),g=f?.beyondDays&&rm.calculateDisabledBeyondDaysRange({...f.beyondDays,dateFormat:c}),y=A([p,t?.future&&gf.now().plusDays(1),i?.notPast&&gf.now(),m?.startDate,g?.startDate]),_=S([h,n?.past&&gf.now().minusDays(1),r?.notFuture&&gf.now(),m?.endDate,g?.endDate]),v=[...u?.excludedDates||[]];(y||_||v)&&b((e=>({...e,minDate:y?.format(XF),maxDate:_?.format(XF),disabledDates:v})))}),[d]),t.useEffect((()=>{if(c)if(p)if(w(p)){const e=rm.toLocalDateOrTime(p,c,"date");_(rm.formatDateTime(e?.toString(),JF,"date",nm.DATE.INVALID))}else _(nm.DATE.INVALID);else if(!o)if(l){const e=rm.formatDateTime(gf.now().toString(),c,"date");g(a,e);const t=rm.formatDateTime(gf.now().toString(),JF,"date");_(t)}else _(void 0)}),[l,p,c,o]);const S=e=>e.filter((e=>e)).sort(((e,t)=>e.isAfter(t)?1:-1))?.[0],A=e=>e.filter((e=>e)).sort(((e,t)=>e.isBefore(t)?1:-1))?.[0],w=e=>e&&e!==nm.DATE.INVALID;return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.DateInput,{...f,...m,...v,id:a,"data-testid":exports.TestHelper.generateId(a,"date"),label:i,errorMessage:r?.message,onChange:e=>{s({target:{value:rm.formatDateTime(e,c,"date",nm.DATE.INVALID)}})},value:y}),e.jsx(xI,{id:a,message:h})]})},DateRangeField:n=>{const{error:r,formattedLabel:i,id:a,isDirty:o,onChange:s,schema:{dateFormat:u=ez,label:l,validation:c,variant:d,...f},value:p={from:void 0,to:void 0},warning:h,...m}=n,[g,y]=t.useState(p.from||""),[_,v]=t.useState(p.to||""),[b,E]=t.useState(),{setFieldValidationConfig:S}=Hk();t.useEffect((()=>{const e=c?.find((e=>"dateFormat"in e&&e.dateFormat)),t=c?.find((e=>"future"in e)),n=c?.find((e=>"past"in e)),r=c?.find((e=>"notFuture"in e)),i=c?.find((e=>"notPast"in e)),o=c?.find((e=>"minDate"in e)),s=c?.find((e=>"maxDate"in e)),l=c?.find((e=>"required"in e)),f=c?.find((e=>"excludedDates"in e)),p=c?.find((e=>"numberOfDays"in e)),h=rm.toLocalDateOrTime(o?.minDate,u,"date"),m=rm.toLocalDateOrTime(s?.maxDate,u,"date");S(a,CT().shape({from:hw(),to:hw()}).test("is-empty-string",l?.errorMessage||nm.DATE_RANGE.REQUIRED,(e=>!e||!l||e.from?.length>0&&e.to?.length>0)).test("is-date",e?.errorMessage||nm.DATE_RANGE.INVALID,(e=>!(!hI.exports.isEmpty(e?.from)&&!hI.exports.isEmpty(e?.to))||T(e.from)&&T(e.to)&&!!rm.toLocalDateOrTime(e.from,u,"date")&&!!rm.toLocalDateOrTime(e.to,u,"date"))).test("number-of-days",p?.errorMessage||nm.DATE_RANGE.MUST_HAVE_NUMBER_OF_DAYS(p?.numberOfDays),(e=>{if("week"===d)return!0;if(!T(e.from)||!T(e.to)||!p?.numberOfDays)return!0;const t=rm.toLocalDateOrTime(e.from,u,"date");return rm.toLocalDateOrTime(e.to,u,"date").equals(t.plusDays(p?.numberOfDays-1))})).test("future",t?.errorMessage||nm.DATE_RANGE.MUST_BE_FUTURE,(e=>{if("week"===d)return!0;if(!T(e.from)||!T(e.to)||!t?.future)return!0;const n=rm.toLocalDateOrTime(e.from,u,"date"),r=rm.toLocalDateOrTime(e.to,u,"date");return!!n?.isAfter(gf.now())&&!!r?.isAfter(gf.now())})).test("past",n?.errorMessage||nm.DATE_RANGE.MUST_BE_PAST,(e=>{if("week"===d)return!0;if(!T(e.from)||!T(e.to)||!n?.past)return!0;const t=rm.toLocalDateOrTime(e.from,u,"date"),r=rm.toLocalDateOrTime(e.to,u,"date");return!!t?.isBefore(gf.now())&&!!r?.isBefore(gf.now())})).test("not-future",r?.errorMessage||nm.DATE_RANGE.CANNOT_BE_FUTURE,(e=>{if("week"===d)return!0;if(!T(e.from)||!T(e.to)||!r?.notFuture)return!0;const t=rm.toLocalDateOrTime(e.from,u,"date"),n=rm.toLocalDateOrTime(e.to,u,"date");return!t?.isAfter(gf.now())&&!n?.isAfter(gf.now())})).test("not-past",i?.errorMessage||nm.DATE_RANGE.CANNOT_BE_PAST,(e=>{if("week"===d)return!0;if(!T(e.from)||!T(e.to)||!i?.notPast)return!0;const t=rm.toLocalDateOrTime(e.from,u,"date"),n=rm.toLocalDateOrTime(e.to,u,"date");return!t?.isBefore(gf.now())&&!n?.isBefore(gf.now())})).test("min-date",o?.errorMessage||nm.DATE_RANGE.MIN_DATE(rm.formatDateTime(o?.minDate,"dd/MM/uuuu","date")),(e=>{if("week"===d)return!0;if(!T(e.from)||!T(e.to)||!h)return!0;const t=rm.toLocalDateOrTime(e.from,u,"date"),n=rm.toLocalDateOrTime(e.to,u,"date");return!t?.isBefore(h)&&!n?.isBefore(h)})).test("max-date",s?.errorMessage||nm.DATE_RANGE.MAX_DATE(rm.formatDateTime(s?.maxDate,"dd/MM/uuuu","date")),(e=>{if("week"===d)return!0;if(!T(e.from)||!T(e.to)||!m)return!0;const t=rm.toLocalDateOrTime(e.from,u,"date"),n=rm.toLocalDateOrTime(e.to,u,"date");return!t?.isAfter(m)&&!n?.isAfter(m)})).test("excluded-dates",f?.errorMessage||nm.DATE_RANGE.DISABLED_DATES,(e=>{if("week"===d)return!0;if(!T(e.from)||!T(e.to)||!f)return!0;const t=rm.toLocalDateOrTime(e.from,u,"date"),n=rm.toLocalDateOrTime(e.to,u,"date");try{const e=f.excludedDates.map((e=>rm.toLocalDateOrTime(e,u,"date")));for(const r of e)if(t.isEqual(r)||n.isEqual(r))return!1;return!0}catch{return!1}})),c);const g=w([h,t?.future&&gf.now().plusDays(1),i?.notPast&&gf.now()]),y=A([m,n?.past&&gf.now().minusDays(1),r?.notFuture&&gf.now()]),_=f?.excludedDates,v=p?.numberOfDays;(g||y||_||v)&&E((e=>({...e,minDate:g?.format(tz),maxDate:y?.format(tz),disabledDates:_,numberOfDays:v})))}),[c]),t.useEffect((()=>{M(QF.START)}),[p.from,u,o]),t.useEffect((()=>{M(QF.END)}),[p.to,u,o]);const A=e=>e.filter((e=>e)).sort(((e,t)=>e.isAfter(t)?1:-1))?.[0],w=e=>e.filter((e=>e)).sort(((e,t)=>e.isBefore(t)?1:-1))?.[0],T=e=>e&&e!==nm.DATE_RANGE.INVALID,M=e=>{const t=e===QF.START?p.from:p.to,n=e===QF.START?y:v;if(u)if(t)if(T(t)){const e=rm.toLocalDateOrTime(t,u,"date");n(rm.formatDateTime(e?.toString(),ez,"date",nm.DATE_RANGE.INVALID))}else n(nm.DATE_RANGE.INVALID);else o||n(void 0)};return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.DateRangeInput,{...f,...m,...b,id:a,"data-testid":exports.TestHelper.generateId(a,"date"),label:i,errorMessage:r?.message,onChange:(e,t)=>{s({target:{value:{from:rm.formatDateTime(e,u,"date",nm.DATE_RANGE.INVALID),to:rm.formatDateTime(t,u,"date",nm.DATE_RANGE.INVALID)}}})},value:g,valueEnd:_,variant:d}),e.jsx(xI,{id:a,message:h})]})},get TDateRangeInputType(){return QF},ESignatureField:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,schema:{label:s,uiType:u,upload:l,validation:c,...d},value:f,warning:p}=n,[h,m]=t.useState(null),[g,y]=t.useState(0),[_,v]=t.useState(0),[b,E]=t.useState(null),{setFieldValidationConfig:S}=Hk(),A=t.useRef(null),{clearErrors:w}=we();t.useEffect((()=>{const e=c?.find((e=>"upload"in e&&e.upload));A.current=e,S(a,CT().shape({fileId:hw().required(),dataURL:hw(),fileUrl:hw(),uploadResponse:aw().nullable()}).default(void 0),c)}),[c]),t.useEffect((()=>{if(v(0),M(f)){if(f.dataURL)m(f.dataURL);else if(f.fileUrl){const e=C(f.fileId,f.fileUrl);return()=>e.abort()}}else m(null)}),[f]);const T=async e=>{const t=im();if(m(e),v(0),rE(l))o({target:{value:{fileId:t,dataURL:e}}});else try{const n=await O(t,e);o({target:{value:{fileId:t,..."base64"===l.type&&{dataURL:e},fileUrl:n?.data?.fileUrl,uploadResponse:n}}}),w(a),y(0)}catch(e){y((e=>e+1)),E(null)}},M=e=>!!e,O=async(e,t)=>{E(0);const n=new FormData;if(n.append("fileId",e),l.sessionId&&n.append("sessionId",l.sessionId),"base64"===l.type)n.append("dataURL",t);else if("multipart"===l.type){const r=await exports.FileHelper.dataUrlToBlob(t),i=exports.FileHelper.blobToFile(r,{name:e,lastModified:Date.now()});n.append("file",i,e)}const r=await new uc("",void 0,void 0,!0).post(l.url,n,{headers:{"Content-Type":"base64"===l.type?"application/json":"multipart/form-data",...l.headers},onUploadProgress:e=>{const{loaded:t,total:n}=e;E(t/n)}});return E(null),r},C=(e,t)=>{const n=new AbortController;return(async()=>{try{const r=await new uc("",void 0,void 0,!1,{responseType:"blob"}).get(t,{signal:n.signal}),i=await exports.FileHelper.getType(new File([r],e)),a=new File([r],e,{type:i.mime}),o=await exports.FileHelper.fileToDataUrl(a);m(o),v(0)}catch(e){if(e instanceof Gl)return;v((e=>e+1))}})(),n};return e.jsxs(nz,{children:[e.jsx(x.Form.ESignature,{...d,id:a,label:i,onChange:T,value:h,...null!==b&&{loadingProgress:b}}),(r?.message||g||_)&&null===b?g>0?e.jsxs(rz,{children:[A.current?.errorMessage||nm.ESIGNATURE.UPLOAD,e.jsx(iz,{type:"button",onClick:()=>T(h),children:"Please try again."}),g>=3&&e.jsx(az,{type:"warning","data-testid":"upload-refresh-alert",children:"Refresh this page if you cannot upload your signature."})]}):_>0&&M(f)?e.jsxs(rz,{children:["Failed to load.",e.jsx(iz,{type:"button",onClick:()=>C(f.fileId,f.fileUrl),children:"Please try again."}),_>=3&&e.jsx(az,{type:"warning","data-testid":"load-refresh-alert",children:"Refresh this page if your signature failed to load."})]}):e.jsx(rz,{children:r?.message}):null,e.jsx(xI,{id:a,message:p})]})},ErrorField:n=>{const{id:r,schema:{children:i}}=n,{setFieldValidationConfig:a}=Hk();return t.useEffect((()=>{a(r,aw().test((()=>!1)),[])}),[]),i?e.jsx(QZ,{children:i}):null},FileUploadInner:$z,FileUpload:t=>e.jsx(Dz,{children:e.jsx($z,{...t})}),get EFileStatus(){return exports.EFileStatus},HiddenField:n=>{const{id:r,name:i,onBlur:a,onChange:o,schema:{showIf:s,uiType:u,validation:l,valueType:c,value:d,...f},value:p}=n,{setFieldValidationConfig:h}=Hk(),{setValue:m}=we();return t.useEffect((()=>{let e;switch(c){case"null":e=aw();break;case"number":e=gw();break;case"boolean":e=sw();break;default:e=hw()}h(r,e,l)}),[l,c]),t.useEffect((()=>{"null"===c&&null!==p?m(r,null):oE(d)||p===d||m(r,d)}),[m,r,c,d,p]),e.jsx("input",{onBlur:a,onChange:o,...f,type:"hidden",id:r,"data-testid":r,name:i,value:d??p??""})},HistogramSlider:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,schema:{label:s,bins:u,interval:l,validation:c,disabled:d,readOnly:f,className:p,ariaLabels:h,customOptions:m},value:g,warning:y}=n,{resetField:_}=we(),[v,b]=t.useState(void 0),{setFieldValidationConfig:E}=Hk();t.useEffect((()=>{if(g)b([g.from,g.to]);else{const e=Math.min(...u.map((e=>e.minValue))),t=Math.max(...u.map((e=>e.minValue)))+l;_(a,{defaultValue:{from:e,to:t},keepDirty:!0}),b([e,t])}}),[g]),t.useEffect((()=>{const e=c?.find((e=>"required"in e)),t=c?.find((e=>"bin"in e&&e.bin)),n=c?.find((e=>"incremental"in e&&e.incremental)),r=c?.find((e=>"withinRange"in e&&e.withinRange));E(a,CT({from:gw(),to:gw()}).test("is-required",e?.errorMessage||nm.COMMON.REQUIRED_OPTIONS,(t=>!t||!e||!oE(t.from)&&!oE(t.to))).test("is-bin",t?.errorMessage||nm.SLIDER.MUST_BE_INCREMENTAL,(e=>{if(!e||"number"!=typeof e.from||"number"!=typeof e.to)return!0;const{from:t,to:n}=e,r=Math.min(...u.map((e=>e.minValue)));return Number.isInteger((t-r)/l)&&Number.isInteger((n-r)/l)})).test("is-incremental",n?.errorMessage||nm.SLIDER.MUST_BE_INCREMENTAL,(e=>!e||"number"!=typeof e.from||"number"!=typeof e.to||e.from<e.to)).test("is-within-range",r?.errorMessage||nm.SLIDER.MUST_BE_INCREMENTAL,(e=>{if(!e||"number"!=typeof e.from||"number"!=typeof e.to)return!0;const{from:t,to:n}=e,r=Math.min(...u.map((e=>e.minValue))),i=Math.max(...u.map((e=>e.minValue)))+l;return!(t<r||n>i)})),c)}),[c,u,l]);return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.HistogramSlider,{...m,id:a,"data-testid":exports.TestHelper.generateId(a,"histogram-slider"),label:i,errorMessage:r?.message,onChangeEnd:e=>{const[t,n]=e;o({target:{value:{from:t,to:n}}})},value:v,bins:u,interval:l,disabled:d,readOnly:f,className:p,ariaLabels:h}),e.jsx(xI,{id:a,message:y})]})},ImageUploadInner:MZ,ImageUpload:t=>e.jsx(Fz,{children:e.jsx(MZ,{...t})}),ACCEPTED_FILE_TYPES:Pz,get EImageStatus(){return exports.EImageStatus},LocationField:n=>{const{error:r,formattedLabel:i,id:a,schema:{className:s="location",convertLatLngToXYEndpoint:u,disabled:l,gettingCurrentLocationFetchMessage:c,interactiveMapPinIconUrl:d,label:f,locationInputPlaceholder:p,locationListTitle:h,locationModalStyles:m,mapBannerText:g,mapPanZoom:y,mustHavePostalCode:_,readOnly:v,reverseGeoCodeEndpoint:b,staticMapPinColor:E,validation:S,hasExplicitEdit:A,locationSelectionMode:x="default",disableSearch:w,addressFieldPlaceholder:T,searchBarIcon:M,bufferRadius:O,pinsOnlyIndicateCurrentLocation:C},value:N,warning:D}=n,[L,I]=t.useState(!1),{setValue:k}=we(),{setFieldValidationConfig:$}=Hk(),{dispatchFieldEvent:R,addFieldEventListener:F,removeFieldEventListener:z}=YI();t.useEffect((()=>(F("show-location-modal",a,Z),()=>{z("show-location-modal",a,Z)})),[]),t.useEffect((()=>{const e=S?.find((e=>"required"in e)),t=S?.find((e=>"postalCode"in e));$(a,CT({address:hw(),blockNo:hw(),building:hw(),lat:gw(),lng:gw(),postalCode:hw(),roadName:hw(),x:gw(),y:gw()}).test("is-required",e?.errorMessage||nm.COMMON.FIELD_REQUIRED,(t=>!e?.required||!!t&&!!t.lat&&!!t.lng)).test("must-have-postal-code",t?.errorMessage||nm.LOCATION.MUST_HAVE_POSTAL_CODE,(t=>!e||!_||exports.LocationHelper.hasGotAddressValue(t.postalCode))),S)}),[S]);const P=(e,t=!0)=>{k(a,e,{shouldDirty:t})},j=()=>{v||l||(I(!0),R("show-location-modal",a))},Z=()=>{I(!0)};return e.jsxs("div",{id:a,"data-testid":exports.TestHelper.generateId(a),className:s,children:[e.jsx($Z,{id:a,label:i,className:s,locationInputPlaceholder:p,onChange:e=>e.currentTarget.blur(),onFocus:j,value:N?.address||"",errorMessage:r?.message,disabled:"explicit"===A&&N?.address||l,readOnly:v}),A&&N?.address&&e.jsx(o.Button.Default,{id:exports.TestHelper.generateId(a,"edit-button"),"data-testid":exports.TestHelper.generateId(a,"edit-button"),styleType:"secondary",onClick:()=>{!R("click-edit-button",a)||I(!0)},type:"button",children:"Edit"}),!!N?.lat&&!!N?.lng&&e.jsx(AI,{id:a,className:`${s}-static-map`,lat:N.lat,lng:N.lng,staticMapPinColor:E,onClick:j,disabled:l}),e.jsx(t.Suspense,{fallback:null,children:RZ&&e.jsx(RZ,{id:a,className:s,showLocationModal:L,onClose:()=>{I(!1),R("hide-location-modal",a)},formValues:N,onConfirm:P,updateFormValues:P,mapPanZoom:y,reverseGeoCodeEndpoint:b,convertLatLngToXYEndpoint:u,interactiveMapPinIconUrl:d,gettingCurrentLocationFetchMessage:c,mustHavePostalCode:_,locationModalStyles:m,locationListTitle:h,mapBannerText:g,locationSelectionMode:x,disableSearch:w,addressFieldPlaceholder:T,searchBarIcon:M,bufferRadius:O,pinsOnlyIndicateCurrentLocation:C})}),e.jsx(xI,{id:a,message:D})]})},GeolocationPositionErrorWrapper:FZ,MaskedField:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,value:s,schema:{label:u,uiType:l,validation:c,maskRegex:d,iconMask:f,iconUnmask:p,...h},warning:m,...g}=n,[y,_]=t.useState(s||""),[v,b]=t.useState({}),{setFieldValidationConfig:E}=Hk();t.useEffect((()=>{E(a,hw(),c);const e=c?.find((e=>"max"in e)),t=c?.find((e=>"length"in e)),n={...v};e?.max>0?n.maxLength=e.max:t?.length>0&&(n.maxLength=t.length),b(n)}),[c]),t.useEffect((()=>{s!==y&&_(s||"")}),[s]);const S=t=>{if(!t)return;const n=G[t];return e.jsx(n,{"data-testid":t})};return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.MaskedInput,{...h,...g,...v,id:a,"data-testid":exports.TestHelper.generateId(a,l),label:i,onChange:e=>{o(e)},value:y,errorMessage:r?.message,maskRegex:(()=>{if(d)try{const e=d.match(/\/(.*)\/([a-z]+)?/);return new RegExp(e[1],e[2])}catch(e){console.warn(`invalid regex pattern: ${d}`)}})(),iconMask:S(f),iconUnmask:S(p)}),e.jsx(xI,{id:a,message:m})]})},MultiSelect:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,schema:{label:s,options:u=[],validation:l,...c},value:d,warning:f,...p}=n,{setValue:h}=we(),[m,g]=t.useState(d||[]),{setFieldValidationConfig:y}=Hk();t.useEffect((()=>{const e=l?.find((e=>"required"in e));y(a,DT().of(hw()).test("is-empty-array",e?.errorMessage||nm.COMMON.REQUIRED_OPTION,(t=>!t||!e?.required||t.length>0)),l)}),[l]),vs((()=>{const e=d?.filter((e=>u.find((t=>t.value===e))));h(a,e)}),[u]),t.useEffect((()=>{g(d||[])}),[d]);return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.MultiSelect,{...c,...p,id:a,"data-testid":exports.TestHelper.generateId(a),label:i,options:u,onSelectOptions:e=>{const t=e.map((e=>e.value));o({target:{value:t}})},selectedOptions:u.filter((e=>m.includes(e.value))),valueExtractor:e=>e.value,listExtractor:e=>e.label,errorMessage:r?.message}),e.jsx(xI,{id:a,message:f})]})},NestedMultiSelect:n=>{const{schema:{label:r,validation:i,options:a=[],...o},id:s,value:u,formattedLabel:l,onChange:c,onBlur:d,error:f,warning:p,...h}=n,{setValue:m}=we(),{setFieldValidationConfig:g}=Hk(),[y,_]=t.useState(u),[v,b]=t.useState([]),E=t.useCallback((e=>{const t=[],n=(e,r)=>{for(const i in e){const a=[...r,i],o=e[i];"string"==typeof o?t.push(a):n(o,a)}};return n(e,[]),t}),[]);t.useEffect((()=>{const e=i?.find((e=>"required"in e));g(s,CT().test("is-required",e?.errorMessage||nm.COMMON.REQUIRED_OPTION,(t=>!e?.required||!!t&&!!Object.keys(t).length)),i)}),[i]),vs((()=>{const e=(t,n)=>{const r={};for(const i of t){const{key:t,subItems:a}=i,o=n[t];if(o){const n="string"==typeof o?o:e(a||[],o);Object.keys(n).length?r[t]=n:delete r[t]}}return r},t=u?e(a,u):u;m(s,t)}),[a]),t.useEffect((()=>{_(u);const e=E(u);b(e)}),[E,y,u]);return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.NestedMultiSelect,{...o,...h,id:s,"data-testid":exports.TestHelper.generateId(s),label:l,options:a,onSelectOptions:(e,t)=>{const n=((e,t)=>{const n={};return e.forEach(((e,r)=>{e.reduce(((n,i,a)=>(a===e.length-1?n[i]=t[r]:n[i]||(n[i]={}),n[i])),n)})),n})(e,t);c({target:{value:n}})},selectedKeyPaths:v,errorMessage:f?.message,onBlur:d}),e.jsx(xI,{id:s,message:p})]})},RadioButtonGroup:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,schema:{className:s,customOptions:u,disabled:l,label:c,options:d,validation:f,...p},value:h,warning:m}=n,{setValue:g}=we(),[y,_]=t.useState(h||""),{setFieldValidationConfig:v}=Hk();t.useEffect((()=>{v(a,hw(),f)}),[f]),_s((()=>{d.find((e=>e.value===h))||g(a,"")}),[d]),t.useEffect((()=>{_(h||"")}),[h]);const b=e=>{o({target:{value:e}})},E=e=>y===e,S=()=>{const e=im();return`${a}-${e}`},A=t=>"string"==typeof t?e.jsx(pI,{inline:!0,children:t}):e.jsx(QZ,{children:t});return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.CustomField,{id:a,label:i,errorMessage:r?.message,children:(()=>{switch(u?.styleType){case"toggle":return d.length>0&&"toggle"===u.styleType&&e.jsx(BZ,{className:s?`${s} ${s}-radio-container`:void 0,$layoutType:u?.layoutType??"horizontal",children:d.map(((n,i)=>{const o=S();return t.createElement(VZ,{...p,key:i,type:"radio",id:o,className:s?`${s}-radio`:void 0,"data-testid":exports.TestHelper.generateId(a,"radio"),disabled:l??n.disabled,name:o,indicator:u?.indicator,styleType:!1===u?.border?"no-border":"default",checked:E(n.value),onChange:()=>b(n.value),error:!!r?.message,compositeSection:n.children?{children:e.jsx(QZ,{children:n.children}),collapsible:!1}:null,subLabel:!!n.subLabel&&A(n.subLabel)},A(n.label))}))});case"image-button":return d.length>0&&e.jsx(UZ,{className:s?`${s} ${s}-radio-container`:void 0,children:d.map(((e,n)=>{const i=S();return t.createElement(jZ,{...p,type:"button",key:n,id:i,className:s?`${s}-radio`:void 0,"data-testid":exports.TestHelper.generateId(a,"radio"),disabled:l??e.disabled,name:i,selected:E(e.value),onClick:()=>b(e.value),imgSrc:e.imgSrc,error:!!r?.message},e.label)}))});default:return d.length>0&&d.map(((t,n)=>{const r=S();return e.jsxs(ZZ,{className:s?`${s}-radio-container`:void 0,children:[e.jsx(PZ,{...p,className:s,id:r,"data-testid":exports.TestHelper.generateId(a,"radio"),disabled:l??t.disabled,name:r,value:t.value,checked:E(t.value),onChange:()=>b(t.value)}),e.jsx(zZ,{as:"label",htmlFor:r,disabled:l??t.disabled,children:A(t.label)})]},n)}))}})()}),e.jsx(xI,{id:a,message:m})]})},RangeSelect:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,schema:{label:s,options:u,validation:l,...c},value:d={from:void 0,to:void 0},warning:f,...p}=n,{setValue:h}=we(),[m,g]=t.useState(d.from||""),[y,_]=t.useState(d.to||""),{setFieldValidationConfig:v}=Hk();t.useEffect((()=>{const e=l?.find((e=>"required"in e));v(a,CT().shape({from:hw(),to:hw()}).test("is-empty-string",e?.errorMessage||nm.COMMON.REQUIRED_OPTIONS,(t=>!t||!e?.required||t.from?.length>0&&t.to?.length>0)),l)}),[l]),_s((()=>{const e={};u.from.find((e=>e.value===d.from))||(e.from=""),u.to.find((e=>e.value===d.to))||(e.to=""),h(a,{...d,...e})}),[u]),t.useEffect((()=>{_(d.from),g(d.to)}),[d]);return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.RangeSelect,{...c,...p,id:a,onHideOptions:()=>{d.from&&d.to||o({target:{value:{from:void 0,to:void 0}}})},"data-testid":exports.TestHelper.generateId(a),label:i,options:u,onSelectOption:e=>{void 0===e.from&&void 0===e.to&&o({target:{value:{from:void 0,to:void 0}}}),e.from&&o({target:{value:{from:e.from.value,to:void 0}}}),e.to&&o({target:{value:{to:e.to.value,from:y}}})},selectedOptions:{from:u.from.find((({value:e})=>e===y)),to:u.to.find((({value:e})=>e===m))},valueToStringFunction:e=>`${e.from} - ${e.to}`,valueExtractor:e=>({from:e.value,to:e.value}),displayValueExtractor:e=>e.label,listExtractor:e=>e.label,errorMessage:r?.message}),e.jsx(xI,{id:a,message:f})]})},ResetButton:t=>{const{id:n,schema:{disabled:r,ignoreDefaultValues:i,label:a,...s},...u}=t,{reset:l,getValues:c}=we(),{resetFields:d}=Vk(),{formSchema:{defaultValues:f}}=Bk();return e.jsx(o.Button.Default,{...s,...u,disabled:r,"data-testid":n,id:n,type:"reset",onClick:()=>{if(i){const e=c();Object.entries(e).forEach((([t,n])=>{Gr(n)?e[t]=[]:h$(n)||RI(n)?e[t]="":Fr(n)&&(e[t]={})})),l(e),d(e)}else l(),d(f)},children:a})},Select:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,schema:{label:s,options:u,validation:l,...c},value:d,warning:f,...p}=n,{setValue:h}=we(),[m,g]=t.useState(d||""),{setFieldValidationConfig:y}=Hk();t.useEffect((()=>{y(a,hw(),l)}),[l]),_s((()=>{u.find((e=>e.value===d))||h(a,"")}),[u]),t.useEffect((()=>{g(d||"")}),[d]);return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.Select,{...c,...p,id:a,"data-testid":exports.TestHelper.generateId(a,"select"),label:i,errorMessage:r?.message,options:u,onSelectOption:(e,t)=>{o({target:{value:t}})},selectedOption:u.find((({value:e})=>e===m)),displayValueExtractor:e=>e.label,valueExtractor:e=>e.value,listExtractor:e=>e.label}),e.jsx(xI,{id:a,message:f})]})},SelectHistogram:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,schema:{label:s,validation:u,disabled:l,readOnly:c,className:d,histogramSlider:f,customOptions:p},value:h,warning:m,...g}=n,{bins:y,interval:_,...v}=f,{resetField:b}=we(),[E,S]=t.useState([0,0]),{setFieldValidationConfig:A}=Hk();t.useEffect((()=>{if(h)S([h.from,h.to]);else{const e=Math.min(...y.map((e=>e.minValue))),t=Math.max(...y.map((e=>e.minValue)))+_;b(a,{defaultValue:{from:e,to:t},keepDirty:!0}),S([e,t])}}),[h]),t.useEffect((()=>{const e=u?.find((e=>"required"in e)),t=u?.find((e=>"bin"in e&&e.bin)),n=u?.find((e=>"incremental"in e&&e.incremental)),r=u?.find((e=>"withinRange"in e&&e.withinRange));A(a,CT({from:gw(),to:gw()}).test("is-required",e?.errorMessage||nm.COMMON.REQUIRED_OPTIONS,(t=>!t||!e||!oE(t.from)&&!oE(t.to))).test("is-bin",t?.errorMessage||nm.SLIDER.MUST_BE_INCREMENTAL,(e=>{if(!e||"number"!=typeof e.from||"number"!=typeof e.to)return!0;const{from:t,to:n}=e,r=Math.min(...y.map((e=>e.minValue)));return Number.isInteger((t-r)/_)&&Number.isInteger((n-r)/_)})).test("is-incremental",n?.errorMessage||nm.SLIDER.MUST_BE_INCREMENTAL,(e=>!e||"number"!=typeof e.from||"number"!=typeof e.to||e.from<e.to)).test("is-within-range",r?.errorMessage||nm.SLIDER.MUST_BE_INCREMENTAL,(e=>{if(!e||"number"!=typeof e.from||"number"!=typeof e.to)return!0;const{from:t,to:n}=e,r=Math.min(...y.map((e=>e.minValue))),i=Math.max(...y.map((e=>e.minValue)))+_;return!(t<r||n>i)})),u)}),[u,y,_]);return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.SelectHistogram,{...g,id:a,"data-testid":exports.TestHelper.generateId(a,"select-histogram"),label:i,errorMessage:r?.message,onChangeEnd:e=>{const[t,n]=e;o({target:{value:{from:t,to:n}}})},disabled:l,readOnly:c,className:d,rangeLabelPrefix:p?.rangeLabelPrefix,rangeLabelSuffix:p?.rangeLabelSuffix,value:E,histogramSlider:{bins:y,interval:_,...v}}),e.jsx(xI,{id:a,message:m})]})},Slider:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,schema:{label:s,customOptions:u,validation:l,disabled:c,readOnly:d,className:f,ariaLabel:p},value:h,warning:m}=n,[g,y]=t.useState(),{setFieldValidationConfig:_}=Hk();t.useEffect((()=>{const e=l?.find((e=>"min"in e)),t=l?.find((e=>"max"in e)),n=l?.find((e=>"increment"in e));_(a,gw().test("is-incremental",n?.errorMessage||nm.SLIDER.MUST_BE_INCREMENTAL,(t=>{if("number"!=typeof t||!n)return!0;const r=n.increment,i=(e?.min??0)-t;return Number.isInteger(i/r)})),l),(e||t||n)&&y({min:e?.min,max:t?.max,step:n?.increment})}),[l]);return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.Slider,{...u,...g,id:a,"data-testid":exports.TestHelper.generateId(a,"slider"),label:i,errorMessage:r?.message,onChangeEnd:e=>{o({target:{value:e}})},value:h,disabled:c,readOnly:d,className:f,ariaLabel:p}),e.jsx(xI,{id:a,message:m})]})},SubmitButton:n=>{const{id:r,schema:{disabled:i,label:a,...s},...u}=n,{submitHandler:l,wrapInForm:c}=Gk(),{setFieldValidationConfig:d}=Hk(),{hardValidationSchema:f}=qk(),p=Re({disabled:"invalid-form"!==i}),[h,m]=t.useState(!0===i);t.useEffect((()=>{d(r,aw())}),[]),t.useEffect((()=>{"invalid-form"!==i&&m(!!i)}),[i]),_s((()=>{(async()=>{if("invalid-form"===i)try{await f.validate(p),m(!1)}catch(e){m(!0)}})()}),[p,f]);return e.jsx(o.Button.Default,{...s,...u,disabled:h,"data-testid":r,id:r,onClick:e=>{c||(e.preventDefault(),l?.())},type:"submit",children:a})},Switch:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,schema:{className:s,customOptions:u,disabled:l,label:c,validation:d,...f},value:p,warning:h}=n,[m,g]=t.useState(p||void 0),{setFieldValidationConfig:y}=Hk();t.useEffect((()=>{y(a,sw().strict(),d)}),[d]),t.useEffect((()=>{g(p)}),[p]);const _=e=>{o({target:{value:e}})},v=e=>m===e,b=e=>`${a}-${e}`;return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.CustomField,{id:a,label:i,errorMessage:r?.message,children:e.jsxs(HZ,{className:s,role:"radiogroup","aria-label":"string"==typeof c?c:fI(c.mainLabel,{allowedTags:[]}),children:[e.jsx(w.Toggle,{...f,type:"yes",id:b("yes"),"data-testid":exports.TestHelper.generateId(a,"switch-yes"),disabled:l,styleType:!1===u?.border?"no-border":"default",checked:v(!0),onChange:()=>_(!0),indicator:!0,name:a,error:!!r?.message,children:"Yes"}),e.jsx(w.Toggle,{...f,type:"no",id:b("no"),"data-testid":exports.TestHelper.generateId(a,"switch-no"),disabled:l,styleType:!1===u?.border?"no-border":"default",checked:v(!1),onChange:()=>_(!1),indicator:!0,name:a,error:!!r?.message,children:"No"})]})}),e.jsx(xI,{id:a,message:h})]})},TextField:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,value:s,schema:u,warning:l,...c}=n,{customOptions:d,inputMode:f,label:p,uiType:h,validation:m,...g}=u,[y,_]=t.useState(s||""),[v,b]=t.useState({}),{setFieldValidationConfig:E}=Hk(),S=t.useRef(null),A=t.useRef(0);t.useEffect((()=>{switch(h){case"numeric-field":{E(a,gw(),m);const e=m?.find((e=>"min"in e)),t=m?.find((e=>"max"in e)),n={...v};e?.min>0&&(n.min=e.min),t?.max>0&&(n.max=t.max),b(n);break}case"email-field":{const e=m?.find((e=>e.email));E(a,hw().email(e?.errorMessage||nm.EMAIL.INVALID),m);const t=m?.find((e=>"max"in e)),n=m?.find((e=>"length"in e)),r={...v};t?.max>0?r.maxLength=t.max:n?.length>0&&(r.maxLength=n.length),b(r);break}case"text-field":{E(a,hw(),m);const e=m?.find((e=>"max"in e)),t=m?.find((e=>"length"in e)),n={...v};e?.max>0?n.maxLength=e.max:t?.length>0&&(n.maxLength=t.length),b(n);break}}}),[m]),t.useEffect((()=>{s!==y&&_(s||"")}),[s]),t.useEffect((()=>{"text-field"===h&&document?.activeElement===S.current&&S.current.selectionEnd!==A.current&&S.current.setSelectionRange(A.current,A.current)}),[y]),t.useEffect((()=>{"text-field"===u.uiType&&"uppercase"===u.customOptions?.textTransform&&y&&_((e=>e?.toString().toUpperCase()))}),["text-field"===u.uiType&&u.customOptions?.textTransform]);const w=()=>!!d?.addOn,T=w()?x.Form.InputGroup:x.Form.Input;return e.jsxs(e.Fragment,{children:[e.jsx(T,{...g,...c,...v,id:a,"data-testid":exports.TestHelper.generateId(a,h),ref:S,type:(()=>{switch(h){case"numeric-field":return"number";case"email-field":return"email";default:return"text"}})(),label:i,onPaste:e=>{const t=e.clipboardData.getData("text");(d?.preventCopyAndPaste||"numeric-field"===h&&/e/i.test(t))&&e.preventDefault()},onDrop:e=>d?.preventDragAndDrop?e.preventDefault():null,inputMode:(()=>{if(f)return f;switch(h){case"numeric-field":return"numeric";case"email-field":return"email";case"text-field":return"text";default:return"none"}})(),onChange:e=>{if("numeric-field"===h){const t=!isNaN(parseFloat(e.target.value))?+e.target.value:void 0;return o({target:{value:t}}),void _(t)}"text-field"===u.uiType?(A.current=e.target.selectionEnd,"uppercase"===u.customOptions?.textTransform&&(e.target.value=e.target.value.toUpperCase()),o(e)):o(e),_(e.target.value)},onKeyDown:e=>{"numeric-field"===h&&"e"===e.key.toLowerCase()&&e.preventDefault()},value:y,errorMessage:r?.message,addon:(()=>{if(w()){if("label"===d.addOn.type)return{type:"label",position:d.addOn.position,attributes:{value:d.addOn.value}};if("icon"===d.addOn.type){const{icon:t,position:n,color:r}=d.addOn,i=G[t];return{type:"custom",position:n,attributes:{children:e.jsx(GZ,{as:i,$color:r})}}}}})()}),e.jsx(xI,{id:a,message:l})]})},Textarea:H$,TimeField:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,schema:{is24HourFormat:s,label:u,placeholder:l,useCurrentTime:c,validation:d,...f},value:p,warning:h,...m}=n,[g,y]=t.useState(p||""),{setFieldValidationConfig:_}=Hk();t.useEffect((()=>{_(a,hw(),d)}),[d]),t.useEffect((()=>{if(c&&!p){const e=s?"H:mm":"h:mma";setTimeout((()=>v(e)))}else y(p)}),[p,c,s]);const v=e=>{const t=rm.formatDateTime(vf.now().toString().toUpperCase(),e,"time");y(t),o({target:{value:t}})};return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.Timepicker,{...f,...m,id:a,"data-testid":exports.TestHelper.generateId(a,"time"),label:i,errorMessage:r?.message,value:g,placeholder:l,format:s?"24hr":"12hr",onChange:e=>{o({target:{value:e}})}}),e.jsx(xI,{id:a,message:h})]})},get EFieldType(){return exports.EFieldType},UnitNumberField:n=>{const{formattedLabel:r,error:i,id:a,onChange:o,schema:{label:s,validation:u,...l},value:c,warning:d,...f}=n,[p,h]=t.useState(c||""),{setFieldValidationConfig:m}=Hk();t.useEffect((()=>{const e=u?.find((e=>"unitNumberFormat"in e));m(a,hw().matches(/^([a-zA-Z0-9]{1,3}-[a-zA-Z0-9]{1,5})$/,{excludeEmptyString:!0,message:e?.errorMessage||nm.UNIT_NUMBER.INVALID}),u)}),[u]),t.useEffect((()=>{h(c||"")}),[c]);return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.UnitNumberInput,{...l,...f,id:a,"data-testid":exports.TestHelper.generateId(a,"unit-number"),label:r,value:p,onChange:e=>{o({target:{value:e}})},errorMessage:i?.message}),e.jsx(xI,{id:a,message:d})]})}});const qZ=({id:t,children:n,childSchema:r})=>{if("columns"in r){const{desktop:i,tablet:a,mobile:o,...s}=r.columns||{};return e.jsx(d.Layout.ColDiv,{"data-testid":exports.TestHelper.generateId(t,"grid_item"),desktopCols:i??12,tabletCols:a,mobileCols:o,...s,children:n})}return e.jsx(e.Fragment,{children:n})},KZ=({id:n,renderRules:r,children:i,schema:a})=>{const{formValidationConfig:o,removeFieldValidationConfig:s}=Hk(),[u,l]=t.useState(void 0),{formValues:c}=Vk(),{unregister:d}=we();vs((()=>{if(rE(r))return;const e=f();if(e!==u){if(!e){[n,...p(a)].forEach((e=>{s(e),d(e)}))}l(e)}}),[o,c,r]);const f=()=>{if(rE(r))return!0;let e=!1;return r.forEach((t=>{if(!e){const n={};Object.entries(t).forEach((([e,t])=>{if(t.find((e=>e.shown))&&!o?.[e])return void(n[e]={schema:aw().test("shown",(()=>!1)),validationRules:[]});const r=o?.[e]?.schema.type;if(r){let i=MI.mapSchemaType(r);"number"===r&&(i=i.nullable().transform(((e,t)=>!isNaN(parseFloat(t?.toString()))?+t:void 0))),n[e]={schema:i,validationRules:t}}}));const r=MI.buildSchema(n);try{r.validateSync(c),e=!0}catch(e){}}})),e},p=e=>{const t=e.children,r=[];switch(e.uiType){case"chips":r.push(n+"-textarea");break;case"checkbox":case"radio":e.options.forEach((e=>{const t=e.children;!rE(t)&&ln(t)&&Object.entries(t).forEach((([e,t])=>{r.push(e),t.children&&r.push(...p(t.children))}))}))}return rE(t)||!ln(t)||Object.entries(t).forEach((([e,t])=>{r.push(e),t.children&&r.push(...p(t.children))})),r};return rE(r)||u?e.jsx(e.Fragment,{children:i}):null},JZ=Object.keys(exports.EFieldType),XZ=Object.keys(exports.EElementType),QZ=n=>{const{id:r,schema:i,children:a}=n,{showIf:o,uiType:s,children:u,...l}=i||{},{warnings:c}=qk(),[d,f]=t.useState(null),{control:p}=we(),{getCustomComponent:h}=HI(),{formSchema:{overrides:m},overrideSchema:g}=Bk();GI((()=>{const n=g(u||a,m);if("object"==typeof n){const r=[];Object.keys(n).forEach((i=>{const a=n[i];if(rE(a)||"object"!=typeof a)return;let o=e.jsx(t.Fragment,{children:nm.GENERIC.UNSUPPORTED},i);if("referenceKey"in a){const n=a.referenceKey.toUpperCase();o=h(a.referenceKey)||E$[b$[n]]?y(i,a)(_):E$[v$[n]]?y(i,a)(v):e.jsx(t.Fragment,{},i)}else"uiType"in a&&(JZ.includes(a.uiType.toUpperCase())?o=y(i,a)(_):XZ.includes(a.uiType.toUpperCase())&&(o=y(i,a)(v)));r.push(o)})),f(r)}else f("string"==typeof n?n:nm.GENERIC.UNSUPPORTED)}),[u||a,m,p,c,h]);const y=(t,n)=>r=>e.jsx(KZ,{id:t,...n&&"showIf"in n&&{renderRules:n.showIf},schema:n,children:r(t,n)},t),_=(t,n)=>{let r;return"uiType"in n?r=WZ[exports.EFieldType[n.uiType?.toUpperCase()]]:"referenceKey"in n&&(r=E$[b$[n.referenceKey?.toUpperCase()]]||h(n.referenceKey)),r?e.jsx(qZ,{id:t,childSchema:n,children:e.jsx(P$,{id:t,schema:n,Field:r,warning:c?.[t]})}):null},v=(t,n)=>{let r;return"uiType"in n?r=n$[exports.EElementType[n.uiType?.toUpperCase()]]||QZ:"referenceKey"in n&&(r=E$[v$[n.referenceKey?.toUpperCase()]]),e.jsx(qZ,{id:t,childSchema:n,children:e.jsx(r,{schema:n,id:t})})},b=s;return b?e.jsx(b,{...l,id:r,"data-testid":exports.TestHelper.generateId(r,s),children:d}):e.jsx(e.Fragment,{children:d})},eU=H.default(d.Layout.Container)`
1052
+ `;var YZ;exports.EFieldType=void 0,(YZ=exports.EFieldType||(exports.EFieldType={})).BUTTON="ButtonField",YZ.CHECKBOX="CheckboxGroup",YZ.CHIPS="Chips",YZ["CONTACT-FIELD"]="ContactField",YZ["DATE-FIELD"]="DateField",YZ["DATE-RANGE-FIELD"]="DateRangeField",YZ["EMAIL-FIELD"]="TextField",YZ["E-SIGNATURE-FIELD"]="ESignatureField",YZ["ERROR-FIELD"]="ErrorField",YZ["FILE-UPLOAD"]="FileUpload",YZ["HIDDEN-FIELD"]="HiddenField",YZ["HISTOGRAM-SLIDER"]="HistogramSlider",YZ["IMAGE-UPLOAD"]="ImageUpload",YZ["LOCATION-FIELD"]="LocationField",YZ["MASKED-FIELD"]="MaskedField",YZ["MULTI-SELECT"]="MultiSelect",YZ["NESTED-MULTI-SELECT"]="NestedMultiSelect",YZ["RANGE-SELECT"]="RangeSelect",YZ["NUMERIC-FIELD"]="TextField",YZ.RADIO="RadioButtonGroup",YZ.RESET="ResetButton",YZ.SELECT="Select",YZ["SELECT-HISTOGRAM"]="SelectHistogram",YZ.SLIDER="Slider",YZ.SUBMIT="SubmitButton",YZ.SWITCH="Switch",YZ.TEXTAREA="Textarea",YZ["TEXT-FIELD"]="TextField",YZ["TIME-FIELD"]="TimeField",YZ["UNIT-NUMBER-FIELD"]="UnitNumberField";var WZ=Object.freeze({__proto__:null,ButtonField:t=>{const{schema:{label:n,uiType:r,startIcon:i,endIcon:a,href:o,target:s,...u},id:l,...c}=t,{dispatchFieldEvent:d}=YI(),f=t=>{if(!t)return null;const n=G[t];return e.jsx(n,{})};return e.jsxs(S$,{type:"button",...u,...c,onClick:e=>{d("click",l,e),o&&(e=>{try{return!!new URL(e)}catch{return!1}})(o)&&(s?window.open(o,s,"noopener noreferrer"):window.location.href=o)},children:[f(i),n,f(a)]})},CheckboxGroup:n=>{const{formattedLabel:r,error:i,id:a,onChange:o,schema:{className:s,customOptions:u,disabled:l,label:c,options:d,validation:f,...p},value:h,warning:m}=n,{setValue:g}=we(),[y,_]=t.useState(h||[]),{setFieldValidationConfig:v}=Hk();t.useEffect((()=>{const e=f?.find((e=>"required"in e));v(a,DT().of(hw()).test("is-empty-array",e?.errorMessage||nm.COMMON.REQUIRED_OPTION,(t=>!t||!e?.required||t.length>0)),f)}),[f]),_s((()=>{const e=h?.filter((e=>d.find((t=>t.value===e))));g(a,e)}),[d]),t.useEffect((()=>{_(h||[])}),[h]);const b=(e,t)=>{const n=d.find((e=>!0===e.none));let r=[...y];t?r=r.includes(e)?[]:[e]:r.includes(e)?r=I$(r,e,n?.value):(r.push(e),r=I$(r,n?.value)),o({target:{value:r}})},E=e=>y.includes(e),S=()=>{const e=im();return`${a}-${e}`},A=t=>"string"==typeof t?e.jsx(pI,{inline:!0,children:t}):e.jsx(QZ,{children:t});return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.CustomField,{id:a,label:r,errorMessage:i?.message,children:"toggle"===u?.styleType?d.length>0&&"toggle"===u.styleType&&e.jsx(F$,{$layoutType:u?.layoutType??"horizontal",className:s?`${s}-checkbox-container`:void 0,children:d.map(((t,n)=>{const r=S();return e.jsx(z$,{type:"checkbox","data-testid":exports.TestHelper.generateId(a,"toggle"),id:r,className:s,disabled:l??t.disabled,name:r,indicator:u?.indicator,styleType:!1===u?.border?"no-border":"default",checked:E(t.value),onChange:()=>b(t.value,t.none),error:!!i?.message,compositeSection:t.children?{children:e.jsx(QZ,{children:t.children}),collapsible:!1}:null,subLabel:!!t.subLabel&&A(t.subLabel),children:A(t.label)},n)}))}):d.length>0&&d.map(((t,n)=>{const r=S();return e.jsxs(R$,{className:s?`${s}-checkbox-container`:void 0,children:[e.jsx($$,{...p,"data-testid":exports.TestHelper.generateId(a,"checkbox"),id:r,className:s,disabled:l??t.disabled,name:r,value:t.value,checked:E(t.value),onChange:()=>b(t.value)}),e.jsx(k$,{as:"label",htmlFor:r,disabled:l??t.disabled,children:A(t.label)})]},n)}))}),e.jsx(xI,{id:a,message:m})]})},Chips:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,schema:{disabled:s,label:u,options:l,textarea:c,validation:d,...f},value:p,warning:h,...m}=n,[g,y]=t.useState(p||[]),[_,v]=t.useState(!1),[b,E]=t.useState(!0),{setValue:S,unregister:A}=we(),{setFieldValidationConfig:w,removeFieldValidationConfig:T}=Hk();t.useEffect((()=>{_||A(O())}),[]),t.useEffect((()=>{const e=d?.find((e=>"required"in e)),t=d?.find((e=>"max"in e)),n=d?.find((e=>"length"in e));w(a,DT().of(hw()).test("is-empty-array",e?.errorMessage||nm.COMMON.REQUIRED_OPTION,(t=>!t||!e?.required||t.length>0)),d),1!==t?.max&&1!==n?.length||E(!1)}),[d]),_s((()=>{const e=[...l.map((e=>e.value)),c?.label],t=p?.filter((t=>e.includes(t)));S(a,t)}),[l]),t.useEffect((()=>{p?.includes(C())?N(!0):N(),y(p||[])}),[p]);const M=e=>g.includes(e),O=()=>`${a}-textarea`,C=()=>"string"==typeof c?.label?c?.label:c?.label?.mainLabel,N=(e=!1)=>{v(e),e||T(O())},D=e=>{let t=[...g];if(t.includes(e))return t=t.filter((t=>t!==e)),void o({target:{value:t}});b?t.push(e):t=[e],o({target:{value:t}})};return e.jsxs(e.Fragment,{children:[e.jsxs(x.Form.CustomField,{label:i,errorMessage:r?.message,...m,children:[e.jsxs(G$,{"data-testid":exports.TestHelper.generateId(a,"chips"),$showTextarea:_,children:[l.map(((e,n)=>t.createElement(zT,{...f,key:n,onClick:()=>D(e.value),isActive:M(e.value),disabled:s??e.disabled},e.label))),(()=>{if(!c?.label)return;const t=C();return e.jsx(zT,{...f,onClick:()=>{D(t)},isActive:M(t),children:t})})()]}),(()=>{if(!c?.label)return e.jsx(e.Fragment,{});const t=O(),n={uiType:"textarea",className:f.className?`${f.className}-textarea`:void 0,...c};return _?e.jsx(P$,{id:t,schema:n,Field:H$}):e.jsx(e.Fragment,{})})()]}),e.jsx(xI,{id:a,message:h})]})},ContactField:n=>{const{isDirty:r,formattedLabel:i,error:a,id:o,name:s,onChange:u,schema:{defaultCountry:l,disabled:c,enableSearch:d,label:f,placeholder:p,validation:h,...m},value:g,warning:y,..._}=n,{resetField:v}=we(),[b,E]=t.useState(g||""),S=Wk(l),[A,w]=t.useState(l),[T]=t.useState((()=>{const e=new Map;return Y$.forEach((t=>{const[n,...r]=t,i=r.find((e=>/^\d+$/.test(e)));e.set(n,i)})),e})()),[M,O]=t.useState(),[C,N]=t.useState(),[D,L]=t.useState(void 0),{setFieldValidationConfig:I}=Hk();t.useEffect((()=>{const e=h?.find((e=>"contactNumber"in e)),t=e?.contactNumber?.singaporeNumber,n=e?.contactNumber?.internationalNumber,r=e?.errorMessage;T.has(n)?(w(n),L(!0)):["default","house","mobile"].includes(t)?(w("Singapore"),L(!0)):L(!1),N(t),I(o,hw().test("singaporeNumber",r||nm.CONTACT.INVALID_SINGAPORE_NUMBER,(e=>!e||!t||KF.isSingaporeNumber(e,t))).test("internationalNumber",r||nm.CONTACT.INVALID_INTERNATIONAL_NUMBER,(e=>!(e&&!t&&n)||KF.isInternationalNumber(M?.name,e))),h)}),[h,M]),t.useEffect((()=>{const e=A||"Singapore";O({name:e,prefix:T.get(e)})}),[A,T]),t.useEffect((()=>{const e=h?.find((e=>"contactNumber"in e)),t=e?.contactNumber?.singaporeNumber,n=e?.contactNumber?.internationalNumber;!l||S===l||T.has(n)||["default","house","mobile"].includes(t)||w(l)}),[h,l]),t.useEffect((()=>{if(void 0!==D&&!r){const{prefix:e,number:t}=KF.getParsedPhoneNumber(g||""),n=e.replace(/\+/g,""),r=(e=>{for(const[t,,,n]of Y$)if(t===e)return n})(A||"Singapore");if(!D||D&&n===r){const n=k({countryCode:e||r,number:t});v(o,{defaultValue:n,keepDirty:!0})}else{const e=k({countryCode:"",number:""});v(o,{defaultValue:e,keepDirty:!0})}}}),[g,r,D,A]);const k=e=>{const{countryCode:t,number:n}=e,r=t.replace(/\+/g,"");if(!1===D&&r!==M?.prefix){const e=((e,t)=>{for(const[n,r]of t.entries())if(r===e)return n})(r,T);e&&O({name:e,prefix:t})}return E(n),KF.formatPhoneNumber(e.countryCode,e.number)||""};return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.PhoneNumberInput,{...m,..._,"data-testid":exports.TestHelper.generateId(o,"contact"),disabled:c,enableSearch:d,errorMessage:a?.message,fixedCountry:D,id:o,label:i,name:s,placeholder:(()=>{if(p)return p;if(C){return`Enter ${"mobile"===C?"mobile":"home"} number`}return"Enter contact number"})(),value:(()=>{if(!M)return;const{prefix:e}=M;return{number:b,countryCode:e}})(),onChange:e=>{const t=k(e);u({target:{value:t}})}}),e.jsx(xI,{id:o,message:y})]})},DateField:n=>{const{error:r,formattedLabel:i,id:a,isDirty:o,onChange:s,schema:{label:u,useCurrentDate:l,dateFormat:c=JF,validation:d,...f},value:p,warning:h,...m}=n,{setValue:g}=we(),[y,_]=t.useState(p||""),[v,b]=t.useState(),{setFieldValidationConfig:E}=Hk();t.useEffect((()=>{const e=d?.find((e=>"dateFormat"in e&&e.dateFormat)),t=d?.find((e=>"future"in e)),n=d?.find((e=>"past"in e)),r=d?.find((e=>"notFuture"in e)),i=d?.find((e=>"notPast"in e)),o=d?.find((e=>"minDate"in e)),s=d?.find((e=>"maxDate"in e)),u=d?.find((e=>"excludedDates"in e)),l=d?.find((e=>"withinDays"in e)),f=d?.find((e=>"beyondDays"in e)),p=rm.toLocalDateOrTime(o?.minDate,c,"date"),h=rm.toLocalDateOrTime(s?.maxDate,c,"date");E(a,hw().test("is-date",e?.errorMessage||nm.DATE.INVALID,(e=>!e||""===e||!!w(e)&&!!rm.toLocalDateOrTime(e,c,"date"))).test("future",t?.errorMessage||nm.DATE.MUST_BE_FUTURE,(e=>{if(!w(e)||!t?.future)return!0;const n=rm.toLocalDateOrTime(e,c,"date");return!!n?.isAfter(gf.now())})).test("past",n?.errorMessage||nm.DATE.MUST_BE_PAST,(e=>{if(!w(e)||!n?.past)return!0;const t=rm.toLocalDateOrTime(e,c,"date");return!!t?.isBefore(gf.now())})).test("not-future",r?.errorMessage||nm.DATE.CANNOT_BE_FUTURE,(e=>{if(!w(e)||!r?.notFuture)return!0;const t=rm.toLocalDateOrTime(e,c,"date");return!t?.isAfter(gf.now())})).test("not-past",i?.errorMessage||nm.DATE.CANNOT_BE_PAST,(e=>{if(!w(e)||!i?.notPast)return!0;const t=rm.toLocalDateOrTime(e,c,"date");return!t?.isBefore(gf.now())})).test("min-date",o?.errorMessage||nm.DATE.MIN_DATE(rm.formatDateTime(o?.minDate,"dd/MM/uuuu","date")),(e=>{if(!w(e)||!p)return!0;const t=rm.toLocalDateOrTime(e,c,"date");return!t?.isBefore(p)})).test("max-date",s?.errorMessage||nm.DATE.MAX_DATE(rm.formatDateTime(s?.maxDate,"dd/MM/uuuu","date")),(e=>{if(!w(e)||!h)return!0;const t=rm.toLocalDateOrTime(e,c,"date");return!t?.isAfter(h)})).test("excluded-dates",u?.errorMessage||nm.DATE.DISABLED_DATES,(e=>!w(e)||!u||!u.excludedDates.includes(e))).test("within-days",l?.errorMessage||l?.withinDays&&nm.DATE.WITHIN_DAYS(l?.withinDays),(e=>!w(e)||!l||rm.checkWithinDays(e,{...l.withinDays,dateFormat:c}))).test("beyond-days",f?.errorMessage||f?.beyondDays&&nm.DATE.BEYOND_DAYS(f?.beyondDays),(e=>!w(e)||!f||rm.checkBeyondDays(e,{...f.beyondDays,dateFormat:c}))),d);const m=l?.withinDays&&rm.calculateDisabledWithinDaysRange({...l.withinDays,dateFormat:c}),g=f?.beyondDays&&rm.calculateDisabledBeyondDaysRange({...f.beyondDays,dateFormat:c}),y=A([p,t?.future&&gf.now().plusDays(1),i?.notPast&&gf.now(),m?.startDate,g?.startDate]),_=S([h,n?.past&&gf.now().minusDays(1),r?.notFuture&&gf.now(),m?.endDate,g?.endDate]),v=[...u?.excludedDates||[]];(y||_||v)&&b((e=>({...e,minDate:y?.format(XF),maxDate:_?.format(XF),disabledDates:v})))}),[d]),t.useEffect((()=>{if(c)if(p)if(w(p)){const e=rm.toLocalDateOrTime(p,c,"date");_(rm.formatDateTime(e?.toString(),JF,"date",nm.DATE.INVALID))}else _(nm.DATE.INVALID);else if(!o)if(l){const e=rm.formatDateTime(gf.now().toString(),c,"date");g(a,e);const t=rm.formatDateTime(gf.now().toString(),JF,"date");_(t)}else _(void 0)}),[l,p,c,o]);const S=e=>e.filter((e=>e)).sort(((e,t)=>e.isAfter(t)?1:-1))?.[0],A=e=>e.filter((e=>e)).sort(((e,t)=>e.isBefore(t)?1:-1))?.[0],w=e=>e&&e!==nm.DATE.INVALID;return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.DateInput,{...f,...m,...v,id:a,"data-testid":exports.TestHelper.generateId(a,"date"),label:i,errorMessage:r?.message,onChange:e=>{s({target:{value:rm.formatDateTime(e,c,"date",nm.DATE.INVALID)}})},value:y}),e.jsx(xI,{id:a,message:h})]})},DateRangeField:n=>{const{error:r,formattedLabel:i,id:a,isDirty:o,onChange:s,schema:{dateFormat:u=ez,label:l,validation:c,variant:d,...f},value:p={from:void 0,to:void 0},warning:h,...m}=n,[g,y]=t.useState(p.from||""),[_,v]=t.useState(p.to||""),[b,E]=t.useState(),{setFieldValidationConfig:S}=Hk();t.useEffect((()=>{const e=c?.find((e=>"dateFormat"in e&&e.dateFormat)),t=c?.find((e=>"future"in e)),n=c?.find((e=>"past"in e)),r=c?.find((e=>"notFuture"in e)),i=c?.find((e=>"notPast"in e)),o=c?.find((e=>"minDate"in e)),s=c?.find((e=>"maxDate"in e)),l=c?.find((e=>"required"in e)),f=c?.find((e=>"excludedDates"in e)),p=c?.find((e=>"numberOfDays"in e)),h=rm.toLocalDateOrTime(o?.minDate,u,"date"),m=rm.toLocalDateOrTime(s?.maxDate,u,"date");S(a,CT().shape({from:hw(),to:hw()}).test("is-empty-string",l?.errorMessage||nm.DATE_RANGE.REQUIRED,(e=>!e||!l||e.from?.length>0&&e.to?.length>0)).test("is-date",e?.errorMessage||nm.DATE_RANGE.INVALID,(e=>!(!hI.exports.isEmpty(e?.from)&&!hI.exports.isEmpty(e?.to))||T(e.from)&&T(e.to)&&!!rm.toLocalDateOrTime(e.from,u,"date")&&!!rm.toLocalDateOrTime(e.to,u,"date"))).test("number-of-days",p?.errorMessage||nm.DATE_RANGE.MUST_HAVE_NUMBER_OF_DAYS(p?.numberOfDays),(e=>{if("week"===d)return!0;if(!T(e.from)||!T(e.to)||!p?.numberOfDays)return!0;const t=rm.toLocalDateOrTime(e.from,u,"date");return rm.toLocalDateOrTime(e.to,u,"date").equals(t.plusDays(p?.numberOfDays-1))})).test("future",t?.errorMessage||nm.DATE_RANGE.MUST_BE_FUTURE,(e=>{if("week"===d)return!0;if(!T(e.from)||!T(e.to)||!t?.future)return!0;const n=rm.toLocalDateOrTime(e.from,u,"date"),r=rm.toLocalDateOrTime(e.to,u,"date");return!!n?.isAfter(gf.now())&&!!r?.isAfter(gf.now())})).test("past",n?.errorMessage||nm.DATE_RANGE.MUST_BE_PAST,(e=>{if("week"===d)return!0;if(!T(e.from)||!T(e.to)||!n?.past)return!0;const t=rm.toLocalDateOrTime(e.from,u,"date"),r=rm.toLocalDateOrTime(e.to,u,"date");return!!t?.isBefore(gf.now())&&!!r?.isBefore(gf.now())})).test("not-future",r?.errorMessage||nm.DATE_RANGE.CANNOT_BE_FUTURE,(e=>{if("week"===d)return!0;if(!T(e.from)||!T(e.to)||!r?.notFuture)return!0;const t=rm.toLocalDateOrTime(e.from,u,"date"),n=rm.toLocalDateOrTime(e.to,u,"date");return!t?.isAfter(gf.now())&&!n?.isAfter(gf.now())})).test("not-past",i?.errorMessage||nm.DATE_RANGE.CANNOT_BE_PAST,(e=>{if("week"===d)return!0;if(!T(e.from)||!T(e.to)||!i?.notPast)return!0;const t=rm.toLocalDateOrTime(e.from,u,"date"),n=rm.toLocalDateOrTime(e.to,u,"date");return!t?.isBefore(gf.now())&&!n?.isBefore(gf.now())})).test("min-date",o?.errorMessage||nm.DATE_RANGE.MIN_DATE(rm.formatDateTime(o?.minDate,"dd/MM/uuuu","date")),(e=>{if("week"===d)return!0;if(!T(e.from)||!T(e.to)||!h)return!0;const t=rm.toLocalDateOrTime(e.from,u,"date"),n=rm.toLocalDateOrTime(e.to,u,"date");return!t?.isBefore(h)&&!n?.isBefore(h)})).test("max-date",s?.errorMessage||nm.DATE_RANGE.MAX_DATE(rm.formatDateTime(s?.maxDate,"dd/MM/uuuu","date")),(e=>{if("week"===d)return!0;if(!T(e.from)||!T(e.to)||!m)return!0;const t=rm.toLocalDateOrTime(e.from,u,"date"),n=rm.toLocalDateOrTime(e.to,u,"date");return!t?.isAfter(m)&&!n?.isAfter(m)})).test("excluded-dates",f?.errorMessage||nm.DATE_RANGE.DISABLED_DATES,(e=>{if("week"===d)return!0;if(!T(e.from)||!T(e.to)||!f)return!0;const t=rm.toLocalDateOrTime(e.from,u,"date"),n=rm.toLocalDateOrTime(e.to,u,"date");try{const e=f.excludedDates.map((e=>rm.toLocalDateOrTime(e,u,"date")));for(const r of e)if(t.isEqual(r)||n.isEqual(r))return!1;return!0}catch{return!1}})),c);const g=w([h,t?.future&&gf.now().plusDays(1),i?.notPast&&gf.now()]),y=A([m,n?.past&&gf.now().minusDays(1),r?.notFuture&&gf.now()]),_=f?.excludedDates,v=p?.numberOfDays;(g||y||_||v)&&E((e=>({...e,minDate:g?.format(tz),maxDate:y?.format(tz),disabledDates:_,numberOfDays:v})))}),[c]),t.useEffect((()=>{M(QF.START)}),[p.from,u,o]),t.useEffect((()=>{M(QF.END)}),[p.to,u,o]);const A=e=>e.filter((e=>e)).sort(((e,t)=>e.isAfter(t)?1:-1))?.[0],w=e=>e.filter((e=>e)).sort(((e,t)=>e.isBefore(t)?1:-1))?.[0],T=e=>e&&e!==nm.DATE_RANGE.INVALID,M=e=>{const t=e===QF.START?p.from:p.to,n=e===QF.START?y:v;if(u)if(t)if(T(t)){const e=rm.toLocalDateOrTime(t,u,"date");n(rm.formatDateTime(e?.toString(),ez,"date",nm.DATE_RANGE.INVALID))}else n(nm.DATE_RANGE.INVALID);else o||n(void 0)};return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.DateRangeInput,{...f,...m,...b,id:a,"data-testid":exports.TestHelper.generateId(a,"date"),label:i,errorMessage:r?.message,onChange:(e,t)=>{s({target:{value:{from:rm.formatDateTime(e,u,"date",nm.DATE_RANGE.INVALID),to:rm.formatDateTime(t,u,"date",nm.DATE_RANGE.INVALID)}}})},value:g,valueEnd:_,variant:d}),e.jsx(xI,{id:a,message:h})]})},get TDateRangeInputType(){return QF},ESignatureField:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,schema:{label:s,uiType:u,upload:l,validation:c,...d},value:f,warning:p}=n,[h,m]=t.useState(null),[g,y]=t.useState(0),[_,v]=t.useState(0),[b,E]=t.useState(null),{setFieldValidationConfig:S}=Hk(),A=t.useRef(null),{clearErrors:w}=we();t.useEffect((()=>{const e=c?.find((e=>"upload"in e&&e.upload));A.current=e,S(a,CT().shape({fileId:hw().required(),dataURL:hw(),fileUrl:hw(),uploadResponse:aw().nullable()}).default(void 0),c)}),[c]),t.useEffect((()=>{if(v(0),M(f)){if(f.dataURL)m(f.dataURL);else if(f.fileUrl){const e=C(f.fileId,f.fileUrl);return()=>e.abort()}}else m(null)}),[f]);const T=async e=>{if(!e)return m(null),v(0),y(0),E(null),void o({target:{value:null}});const t=im();if(m(e),v(0),rE(l))o({target:{value:{fileId:t,dataURL:e}}});else try{const n=await O(t,e);o({target:{value:{fileId:t,..."base64"===l.type&&{dataURL:e},fileUrl:n?.data?.fileUrl,uploadResponse:n}}}),w(a),y(0)}catch(e){y((e=>e+1)),E(null)}},M=e=>!!e,O=async(e,t)=>{E(0);const n=new FormData;if(n.append("fileId",e),l.sessionId&&n.append("sessionId",l.sessionId),"base64"===l.type)n.append("dataURL",t);else if("multipart"===l.type){const r=await exports.FileHelper.dataUrlToBlob(t),i=exports.FileHelper.blobToFile(r,{name:e,lastModified:Date.now()});n.append("file",i,e)}const r=await new uc("",void 0,void 0,!0).post(l.url,n,{headers:{"Content-Type":"base64"===l.type?"application/json":"multipart/form-data",...l.headers},onUploadProgress:e=>{const{loaded:t,total:n}=e;E(t/n)}});return E(null),r},C=(e,t)=>{const n=new AbortController;return(async()=>{try{const r=await new uc("",void 0,void 0,!1,{responseType:"blob"}).get(t,{signal:n.signal}),i=await exports.FileHelper.getType(new File([r],e)),a=new File([r],e,{type:i.mime}),o=await exports.FileHelper.fileToDataUrl(a);m(o),v(0)}catch(e){if(e instanceof Gl)return;v((e=>e+1))}})(),n};return e.jsxs(nz,{children:[e.jsx(x.Form.ESignature,{...d,id:a,label:i,onChange:T,value:h,...null!==b&&{loadingProgress:b}}),(r?.message||g||_)&&null===b?g>0?e.jsxs(rz,{children:[A.current?.errorMessage||nm.ESIGNATURE.UPLOAD,e.jsx(iz,{type:"button",onClick:()=>T(h),children:"Please try again."}),g>=3&&e.jsx(az,{type:"warning","data-testid":"upload-refresh-alert",children:"Refresh this page if you cannot upload your signature."})]}):_>0&&M(f)?e.jsxs(rz,{children:["Failed to load.",e.jsx(iz,{type:"button",onClick:()=>C(f.fileId,f.fileUrl),children:"Please try again."}),_>=3&&e.jsx(az,{type:"warning","data-testid":"load-refresh-alert",children:"Refresh this page if your signature failed to load."})]}):e.jsx(rz,{children:r?.message}):null,e.jsx(xI,{id:a,message:p})]})},ErrorField:n=>{const{id:r,schema:{children:i}}=n,{setFieldValidationConfig:a}=Hk();return t.useEffect((()=>{a(r,aw().test((()=>!1)),[])}),[]),i?e.jsx(QZ,{children:i}):null},FileUploadInner:$z,FileUpload:t=>e.jsx(Dz,{children:e.jsx($z,{...t})}),get EFileStatus(){return exports.EFileStatus},HiddenField:n=>{const{id:r,name:i,onBlur:a,onChange:o,schema:{showIf:s,uiType:u,validation:l,valueType:c,value:d,...f},value:p}=n,{setFieldValidationConfig:h}=Hk(),{setValue:m}=we();return t.useEffect((()=>{let e;switch(c){case"null":e=aw();break;case"number":e=gw();break;case"boolean":e=sw();break;default:e=hw()}h(r,e,l)}),[l,c]),t.useEffect((()=>{"null"===c&&null!==p?m(r,null):oE(d)||p===d||m(r,d)}),[m,r,c,d,p]),e.jsx("input",{onBlur:a,onChange:o,...f,type:"hidden",id:r,"data-testid":r,name:i,value:d??p??""})},HistogramSlider:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,schema:{label:s,bins:u,interval:l,validation:c,disabled:d,readOnly:f,className:p,ariaLabels:h,customOptions:m},value:g,warning:y}=n,{resetField:_}=we(),[v,b]=t.useState(void 0),{setFieldValidationConfig:E}=Hk();t.useEffect((()=>{if(g)b([g.from,g.to]);else{const e=Math.min(...u.map((e=>e.minValue))),t=Math.max(...u.map((e=>e.minValue)))+l;_(a,{defaultValue:{from:e,to:t},keepDirty:!0}),b([e,t])}}),[g]),t.useEffect((()=>{const e=c?.find((e=>"required"in e)),t=c?.find((e=>"bin"in e&&e.bin)),n=c?.find((e=>"incremental"in e&&e.incremental)),r=c?.find((e=>"withinRange"in e&&e.withinRange));E(a,CT({from:gw(),to:gw()}).test("is-required",e?.errorMessage||nm.COMMON.REQUIRED_OPTIONS,(t=>!t||!e||!oE(t.from)&&!oE(t.to))).test("is-bin",t?.errorMessage||nm.SLIDER.MUST_BE_INCREMENTAL,(e=>{if(!e||"number"!=typeof e.from||"number"!=typeof e.to)return!0;const{from:t,to:n}=e,r=Math.min(...u.map((e=>e.minValue)));return Number.isInteger((t-r)/l)&&Number.isInteger((n-r)/l)})).test("is-incremental",n?.errorMessage||nm.SLIDER.MUST_BE_INCREMENTAL,(e=>!e||"number"!=typeof e.from||"number"!=typeof e.to||e.from<e.to)).test("is-within-range",r?.errorMessage||nm.SLIDER.MUST_BE_INCREMENTAL,(e=>{if(!e||"number"!=typeof e.from||"number"!=typeof e.to)return!0;const{from:t,to:n}=e,r=Math.min(...u.map((e=>e.minValue))),i=Math.max(...u.map((e=>e.minValue)))+l;return!(t<r||n>i)})),c)}),[c,u,l]);return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.HistogramSlider,{...m,id:a,"data-testid":exports.TestHelper.generateId(a,"histogram-slider"),label:i,errorMessage:r?.message,onChangeEnd:e=>{const[t,n]=e;o({target:{value:{from:t,to:n}}})},value:v,bins:u,interval:l,disabled:d,readOnly:f,className:p,ariaLabels:h}),e.jsx(xI,{id:a,message:y})]})},ImageUploadInner:MZ,ImageUpload:t=>e.jsx(Fz,{children:e.jsx(MZ,{...t})}),ACCEPTED_FILE_TYPES:Pz,get EImageStatus(){return exports.EImageStatus},LocationField:n=>{const{error:r,formattedLabel:i,id:a,schema:{className:s="location",convertLatLngToXYEndpoint:u,disabled:l,gettingCurrentLocationFetchMessage:c,interactiveMapPinIconUrl:d,label:f,locationInputPlaceholder:p,locationListTitle:h,locationModalStyles:m,mapBannerText:g,mapPanZoom:y,mustHavePostalCode:_,readOnly:v,reverseGeoCodeEndpoint:b,staticMapPinColor:E,validation:S,hasExplicitEdit:A,locationSelectionMode:x="default",disableSearch:w,addressFieldPlaceholder:T,searchBarIcon:M,bufferRadius:O,pinsOnlyIndicateCurrentLocation:C},value:N,warning:D}=n,[L,I]=t.useState(!1),{setValue:k}=we(),{setFieldValidationConfig:$}=Hk(),{dispatchFieldEvent:R,addFieldEventListener:F,removeFieldEventListener:z}=YI();t.useEffect((()=>(F("show-location-modal",a,Z),()=>{z("show-location-modal",a,Z)})),[]),t.useEffect((()=>{const e=S?.find((e=>"required"in e)),t=S?.find((e=>"postalCode"in e));$(a,CT({address:hw(),blockNo:hw(),building:hw(),lat:gw(),lng:gw(),postalCode:hw(),roadName:hw(),x:gw(),y:gw()}).test("is-required",e?.errorMessage||nm.COMMON.FIELD_REQUIRED,(t=>!e?.required||!!t&&!!t.lat&&!!t.lng)).test("must-have-postal-code",t?.errorMessage||nm.LOCATION.MUST_HAVE_POSTAL_CODE,(t=>!e||!_||exports.LocationHelper.hasGotAddressValue(t.postalCode))),S)}),[S]);const P=(e,t=!0)=>{k(a,e,{shouldDirty:t})},j=()=>{v||l||(I(!0),R("show-location-modal",a))},Z=()=>{I(!0)};return e.jsxs("div",{id:a,"data-testid":exports.TestHelper.generateId(a),className:s,children:[e.jsx($Z,{id:a,label:i,className:s,locationInputPlaceholder:p,onChange:e=>e.currentTarget.blur(),onFocus:j,value:N?.address||"",errorMessage:r?.message,disabled:"explicit"===A&&N?.address||l,readOnly:v}),A&&N?.address&&e.jsx(o.Button.Default,{id:exports.TestHelper.generateId(a,"edit-button"),"data-testid":exports.TestHelper.generateId(a,"edit-button"),styleType:"secondary",onClick:()=>{!R("click-edit-button",a)||I(!0)},type:"button",children:"Edit"}),!!N?.lat&&!!N?.lng&&e.jsx(AI,{id:a,className:`${s}-static-map`,lat:N.lat,lng:N.lng,staticMapPinColor:E,onClick:j,disabled:l}),e.jsx(t.Suspense,{fallback:null,children:RZ&&e.jsx(RZ,{id:a,className:s,showLocationModal:L,onClose:()=>{I(!1),R("hide-location-modal",a)},formValues:N,onConfirm:P,updateFormValues:P,mapPanZoom:y,reverseGeoCodeEndpoint:b,convertLatLngToXYEndpoint:u,interactiveMapPinIconUrl:d,gettingCurrentLocationFetchMessage:c,mustHavePostalCode:_,locationModalStyles:m,locationListTitle:h,mapBannerText:g,locationSelectionMode:x,disableSearch:w,addressFieldPlaceholder:T,searchBarIcon:M,bufferRadius:O,pinsOnlyIndicateCurrentLocation:C})}),e.jsx(xI,{id:a,message:D})]})},GeolocationPositionErrorWrapper:FZ,MaskedField:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,value:s,schema:{label:u,uiType:l,validation:c,maskRegex:d,iconMask:f,iconUnmask:p,...h},warning:m,...g}=n,[y,_]=t.useState(s||""),[v,b]=t.useState({}),{setFieldValidationConfig:E}=Hk();t.useEffect((()=>{E(a,hw(),c);const e=c?.find((e=>"max"in e)),t=c?.find((e=>"length"in e)),n={...v};e?.max>0?n.maxLength=e.max:t?.length>0&&(n.maxLength=t.length),b(n)}),[c]),t.useEffect((()=>{s!==y&&_(s||"")}),[s]);const S=t=>{if(!t)return;const n=G[t];return e.jsx(n,{"data-testid":t})};return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.MaskedInput,{...h,...g,...v,id:a,"data-testid":exports.TestHelper.generateId(a,l),label:i,onChange:e=>{o(e)},value:y,errorMessage:r?.message,maskRegex:(()=>{if(d)try{const e=d.match(/\/(.*)\/([a-z]+)?/);return new RegExp(e[1],e[2])}catch(e){console.warn(`invalid regex pattern: ${d}`)}})(),iconMask:S(f),iconUnmask:S(p)}),e.jsx(xI,{id:a,message:m})]})},MultiSelect:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,schema:{label:s,options:u=[],validation:l,...c},value:d,warning:f,...p}=n,{setValue:h}=we(),[m,g]=t.useState(d||[]),{setFieldValidationConfig:y}=Hk();t.useEffect((()=>{const e=l?.find((e=>"required"in e));y(a,DT().of(hw()).test("is-empty-array",e?.errorMessage||nm.COMMON.REQUIRED_OPTION,(t=>!t||!e?.required||t.length>0)),l)}),[l]),vs((()=>{const e=d?.filter((e=>u.find((t=>t.value===e))));h(a,e)}),[u]),t.useEffect((()=>{g(d||[])}),[d]);return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.MultiSelect,{...c,...p,id:a,"data-testid":exports.TestHelper.generateId(a),label:i,options:u,onSelectOptions:e=>{const t=e.map((e=>e.value));o({target:{value:t}})},selectedOptions:u.filter((e=>m.includes(e.value))),valueExtractor:e=>e.value,listExtractor:e=>e.label,errorMessage:r?.message}),e.jsx(xI,{id:a,message:f})]})},NestedMultiSelect:n=>{const{schema:{label:r,validation:i,options:a=[],...o},id:s,value:u,formattedLabel:l,onChange:c,onBlur:d,error:f,warning:p,...h}=n,{setValue:m}=we(),{setFieldValidationConfig:g}=Hk(),[y,_]=t.useState(u),[v,b]=t.useState([]),E=t.useCallback((e=>{const t=[],n=(e,r)=>{for(const i in e){const a=[...r,i],o=e[i];"string"==typeof o?t.push(a):n(o,a)}};return n(e,[]),t}),[]);t.useEffect((()=>{const e=i?.find((e=>"required"in e));g(s,CT().test("is-required",e?.errorMessage||nm.COMMON.REQUIRED_OPTION,(t=>!e?.required||!!t&&!!Object.keys(t).length)),i)}),[i]),vs((()=>{const e=(t,n)=>{const r={};for(const i of t){const{key:t,subItems:a}=i,o=n[t];if(o){const n="string"==typeof o?o:e(a||[],o);Object.keys(n).length?r[t]=n:delete r[t]}}return r},t=u?e(a,u):u;m(s,t)}),[a]),t.useEffect((()=>{_(u);const e=E(u);b(e)}),[E,y,u]);return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.NestedMultiSelect,{...o,...h,id:s,"data-testid":exports.TestHelper.generateId(s),label:l,options:a,onSelectOptions:(e,t)=>{const n=((e,t)=>{const n={};return e.forEach(((e,r)=>{e.reduce(((n,i,a)=>(a===e.length-1?n[i]=t[r]:n[i]||(n[i]={}),n[i])),n)})),n})(e,t);c({target:{value:n}})},selectedKeyPaths:v,errorMessage:f?.message,onBlur:d}),e.jsx(xI,{id:s,message:p})]})},RadioButtonGroup:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,schema:{className:s,customOptions:u,disabled:l,label:c,options:d,validation:f,...p},value:h,warning:m}=n,{setValue:g}=we(),[y,_]=t.useState(h||""),{setFieldValidationConfig:v}=Hk();t.useEffect((()=>{v(a,hw(),f)}),[f]),_s((()=>{d.find((e=>e.value===h))||g(a,"")}),[d]),t.useEffect((()=>{_(h||"")}),[h]);const b=e=>{o({target:{value:e}})},E=e=>y===e,S=()=>{const e=im();return`${a}-${e}`},A=t=>"string"==typeof t?e.jsx(pI,{inline:!0,children:t}):e.jsx(QZ,{children:t});return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.CustomField,{id:a,label:i,errorMessage:r?.message,children:(()=>{switch(u?.styleType){case"toggle":return d.length>0&&"toggle"===u.styleType&&e.jsx(BZ,{className:s?`${s} ${s}-radio-container`:void 0,$layoutType:u?.layoutType??"horizontal",children:d.map(((n,i)=>{const o=S();return t.createElement(VZ,{...p,key:i,type:"radio",id:o,className:s?`${s}-radio`:void 0,"data-testid":exports.TestHelper.generateId(a,"radio"),disabled:l??n.disabled,name:o,indicator:u?.indicator,styleType:!1===u?.border?"no-border":"default",checked:E(n.value),onChange:()=>b(n.value),error:!!r?.message,compositeSection:n.children?{children:e.jsx(QZ,{children:n.children}),collapsible:!1}:null,subLabel:!!n.subLabel&&A(n.subLabel)},A(n.label))}))});case"image-button":return d.length>0&&e.jsx(UZ,{className:s?`${s} ${s}-radio-container`:void 0,children:d.map(((e,n)=>{const i=S();return t.createElement(jZ,{...p,type:"button",key:n,id:i,className:s?`${s}-radio`:void 0,"data-testid":exports.TestHelper.generateId(a,"radio"),disabled:l??e.disabled,name:i,selected:E(e.value),onClick:()=>b(e.value),imgSrc:e.imgSrc,error:!!r?.message},e.label)}))});default:return d.length>0&&d.map(((t,n)=>{const r=S();return e.jsxs(ZZ,{className:s?`${s}-radio-container`:void 0,children:[e.jsx(PZ,{...p,className:s,id:r,"data-testid":exports.TestHelper.generateId(a,"radio"),disabled:l??t.disabled,name:r,value:t.value,checked:E(t.value),onChange:()=>b(t.value)}),e.jsx(zZ,{as:"label",htmlFor:r,disabled:l??t.disabled,children:A(t.label)})]},n)}))}})()}),e.jsx(xI,{id:a,message:m})]})},RangeSelect:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,schema:{label:s,options:u,validation:l,...c},value:d={from:void 0,to:void 0},warning:f,...p}=n,{setValue:h}=we(),[m,g]=t.useState(d.from||""),[y,_]=t.useState(d.to||""),{setFieldValidationConfig:v}=Hk();t.useEffect((()=>{const e=l?.find((e=>"required"in e));v(a,CT().shape({from:hw(),to:hw()}).test("is-empty-string",e?.errorMessage||nm.COMMON.REQUIRED_OPTIONS,(t=>!t||!e?.required||t.from?.length>0&&t.to?.length>0)),l)}),[l]),_s((()=>{const e={};u.from.find((e=>e.value===d.from))||(e.from=""),u.to.find((e=>e.value===d.to))||(e.to=""),h(a,{...d,...e})}),[u]),t.useEffect((()=>{_(d.from),g(d.to)}),[d]);return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.RangeSelect,{...c,...p,id:a,onHideOptions:()=>{d.from&&d.to||o({target:{value:{from:void 0,to:void 0}}})},"data-testid":exports.TestHelper.generateId(a),label:i,options:u,onSelectOption:e=>{void 0===e.from&&void 0===e.to&&o({target:{value:{from:void 0,to:void 0}}}),e.from&&o({target:{value:{from:e.from.value,to:void 0}}}),e.to&&o({target:{value:{to:e.to.value,from:y}}})},selectedOptions:{from:u.from.find((({value:e})=>e===y)),to:u.to.find((({value:e})=>e===m))},valueToStringFunction:e=>`${e.from} - ${e.to}`,valueExtractor:e=>({from:e.value,to:e.value}),displayValueExtractor:e=>e.label,listExtractor:e=>e.label,errorMessage:r?.message}),e.jsx(xI,{id:a,message:f})]})},ResetButton:t=>{const{id:n,schema:{disabled:r,ignoreDefaultValues:i,label:a,...s},...u}=t,{reset:l,getValues:c}=we(),{resetFields:d}=Vk(),{formSchema:{defaultValues:f}}=Bk();return e.jsx(o.Button.Default,{...s,...u,disabled:r,"data-testid":n,id:n,type:"reset",onClick:()=>{if(i){const e=c();Object.entries(e).forEach((([t,n])=>{Gr(n)?e[t]=[]:h$(n)||RI(n)?e[t]="":Fr(n)&&(e[t]={})})),l(e),d(e)}else l(),d(f)},children:a})},Select:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,schema:{label:s,options:u,validation:l,...c},value:d,warning:f,...p}=n,{setValue:h}=we(),[m,g]=t.useState(d||""),{setFieldValidationConfig:y}=Hk();t.useEffect((()=>{y(a,hw(),l)}),[l]),_s((()=>{u.find((e=>e.value===d))||h(a,"")}),[u]),t.useEffect((()=>{g(d||"")}),[d]);return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.Select,{...c,...p,id:a,"data-testid":exports.TestHelper.generateId(a,"select"),label:i,errorMessage:r?.message,options:u,onSelectOption:(e,t)=>{o({target:{value:t}})},selectedOption:u.find((({value:e})=>e===m)),displayValueExtractor:e=>e.label,valueExtractor:e=>e.value,listExtractor:e=>e.label}),e.jsx(xI,{id:a,message:f})]})},SelectHistogram:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,schema:{label:s,validation:u,disabled:l,readOnly:c,className:d,histogramSlider:f,customOptions:p},value:h,warning:m,...g}=n,{bins:y,interval:_,...v}=f,{resetField:b}=we(),[E,S]=t.useState([0,0]),{setFieldValidationConfig:A}=Hk();t.useEffect((()=>{if(h)S([h.from,h.to]);else{const e=Math.min(...y.map((e=>e.minValue))),t=Math.max(...y.map((e=>e.minValue)))+_;b(a,{defaultValue:{from:e,to:t},keepDirty:!0}),S([e,t])}}),[h]),t.useEffect((()=>{const e=u?.find((e=>"required"in e)),t=u?.find((e=>"bin"in e&&e.bin)),n=u?.find((e=>"incremental"in e&&e.incremental)),r=u?.find((e=>"withinRange"in e&&e.withinRange));A(a,CT({from:gw(),to:gw()}).test("is-required",e?.errorMessage||nm.COMMON.REQUIRED_OPTIONS,(t=>!t||!e||!oE(t.from)&&!oE(t.to))).test("is-bin",t?.errorMessage||nm.SLIDER.MUST_BE_INCREMENTAL,(e=>{if(!e||"number"!=typeof e.from||"number"!=typeof e.to)return!0;const{from:t,to:n}=e,r=Math.min(...y.map((e=>e.minValue)));return Number.isInteger((t-r)/_)&&Number.isInteger((n-r)/_)})).test("is-incremental",n?.errorMessage||nm.SLIDER.MUST_BE_INCREMENTAL,(e=>!e||"number"!=typeof e.from||"number"!=typeof e.to||e.from<e.to)).test("is-within-range",r?.errorMessage||nm.SLIDER.MUST_BE_INCREMENTAL,(e=>{if(!e||"number"!=typeof e.from||"number"!=typeof e.to)return!0;const{from:t,to:n}=e,r=Math.min(...y.map((e=>e.minValue))),i=Math.max(...y.map((e=>e.minValue)))+_;return!(t<r||n>i)})),u)}),[u,y,_]);return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.SelectHistogram,{...g,id:a,"data-testid":exports.TestHelper.generateId(a,"select-histogram"),label:i,errorMessage:r?.message,onChangeEnd:e=>{const[t,n]=e;o({target:{value:{from:t,to:n}}})},disabled:l,readOnly:c,className:d,rangeLabelPrefix:p?.rangeLabelPrefix,rangeLabelSuffix:p?.rangeLabelSuffix,value:E,histogramSlider:{bins:y,interval:_,...v}}),e.jsx(xI,{id:a,message:m})]})},Slider:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,schema:{label:s,customOptions:u,validation:l,disabled:c,readOnly:d,className:f,ariaLabel:p},value:h,warning:m}=n,[g,y]=t.useState(),{setFieldValidationConfig:_}=Hk();t.useEffect((()=>{const e=l?.find((e=>"min"in e)),t=l?.find((e=>"max"in e)),n=l?.find((e=>"increment"in e));_(a,gw().test("is-incremental",n?.errorMessage||nm.SLIDER.MUST_BE_INCREMENTAL,(t=>{if("number"!=typeof t||!n)return!0;const r=n.increment,i=(e?.min??0)-t;return Number.isInteger(i/r)})),l),(e||t||n)&&y({min:e?.min,max:t?.max,step:n?.increment})}),[l]);return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.Slider,{...u,...g,id:a,"data-testid":exports.TestHelper.generateId(a,"slider"),label:i,errorMessage:r?.message,onChangeEnd:e=>{o({target:{value:e}})},value:h,disabled:c,readOnly:d,className:f,ariaLabel:p}),e.jsx(xI,{id:a,message:m})]})},SubmitButton:n=>{const{id:r,schema:{disabled:i,label:a,...s},...u}=n,{submitHandler:l,wrapInForm:c}=Gk(),{setFieldValidationConfig:d}=Hk(),{hardValidationSchema:f}=qk(),p=Re({disabled:"invalid-form"!==i}),[h,m]=t.useState(!0===i);t.useEffect((()=>{d(r,aw())}),[]),t.useEffect((()=>{"invalid-form"!==i&&m(!!i)}),[i]),_s((()=>{(async()=>{if("invalid-form"===i)try{await f.validate(p),m(!1)}catch(e){m(!0)}})()}),[p,f]);return e.jsx(o.Button.Default,{...s,...u,disabled:h,"data-testid":r,id:r,onClick:e=>{c||(e.preventDefault(),l?.())},type:"submit",children:a})},Switch:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,schema:{className:s,customOptions:u,disabled:l,label:c,validation:d,...f},value:p,warning:h}=n,[m,g]=t.useState(p||void 0),{setFieldValidationConfig:y}=Hk();t.useEffect((()=>{y(a,sw().strict(),d)}),[d]),t.useEffect((()=>{g(p)}),[p]);const _=e=>{o({target:{value:e}})},v=e=>m===e,b=e=>`${a}-${e}`;return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.CustomField,{id:a,label:i,errorMessage:r?.message,children:e.jsxs(HZ,{className:s,role:"radiogroup","aria-label":"string"==typeof c?c:fI(c.mainLabel,{allowedTags:[]}),children:[e.jsx(w.Toggle,{...f,type:"yes",id:b("yes"),"data-testid":exports.TestHelper.generateId(a,"switch-yes"),disabled:l,styleType:!1===u?.border?"no-border":"default",checked:v(!0),onChange:()=>_(!0),indicator:!0,name:a,error:!!r?.message,children:"Yes"}),e.jsx(w.Toggle,{...f,type:"no",id:b("no"),"data-testid":exports.TestHelper.generateId(a,"switch-no"),disabled:l,styleType:!1===u?.border?"no-border":"default",checked:v(!1),onChange:()=>_(!1),indicator:!0,name:a,error:!!r?.message,children:"No"})]})}),e.jsx(xI,{id:a,message:h})]})},TextField:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,value:s,schema:u,warning:l,...c}=n,{customOptions:d,inputMode:f,label:p,uiType:h,validation:m,...g}=u,[y,_]=t.useState(s||""),[v,b]=t.useState({}),{setFieldValidationConfig:E}=Hk(),S=t.useRef(null),A=t.useRef(0);t.useEffect((()=>{switch(h){case"numeric-field":{E(a,gw(),m);const e=m?.find((e=>"min"in e)),t=m?.find((e=>"max"in e)),n={...v};e?.min>0&&(n.min=e.min),t?.max>0&&(n.max=t.max),b(n);break}case"email-field":{const e=m?.find((e=>e.email));E(a,hw().email(e?.errorMessage||nm.EMAIL.INVALID),m);const t=m?.find((e=>"max"in e)),n=m?.find((e=>"length"in e)),r={...v};t?.max>0?r.maxLength=t.max:n?.length>0&&(r.maxLength=n.length),b(r);break}case"text-field":{E(a,hw(),m);const e=m?.find((e=>"max"in e)),t=m?.find((e=>"length"in e)),n={...v};e?.max>0?n.maxLength=e.max:t?.length>0&&(n.maxLength=t.length),b(n);break}}}),[m]),t.useEffect((()=>{s!==y&&_(s||"")}),[s]),t.useEffect((()=>{"text-field"===h&&document?.activeElement===S.current&&S.current.selectionEnd!==A.current&&S.current.setSelectionRange(A.current,A.current)}),[y]),t.useEffect((()=>{"text-field"===u.uiType&&"uppercase"===u.customOptions?.textTransform&&y&&_((e=>e?.toString().toUpperCase()))}),["text-field"===u.uiType&&u.customOptions?.textTransform]);const w=()=>!!d?.addOn,T=w()?x.Form.InputGroup:x.Form.Input;return e.jsxs(e.Fragment,{children:[e.jsx(T,{...g,...c,...v,id:a,"data-testid":exports.TestHelper.generateId(a,h),ref:S,type:(()=>{switch(h){case"numeric-field":return"number";case"email-field":return"email";default:return"text"}})(),label:i,onPaste:e=>{const t=e.clipboardData.getData("text");(d?.preventCopyAndPaste||"numeric-field"===h&&/e/i.test(t))&&e.preventDefault()},onDrop:e=>d?.preventDragAndDrop?e.preventDefault():null,inputMode:(()=>{if(f)return f;switch(h){case"numeric-field":return"numeric";case"email-field":return"email";case"text-field":return"text";default:return"none"}})(),onChange:e=>{if("numeric-field"===h){const t=!isNaN(parseFloat(e.target.value))?+e.target.value:void 0;return o({target:{value:t}}),void _(t)}"text-field"===u.uiType?(A.current=e.target.selectionEnd,"uppercase"===u.customOptions?.textTransform&&(e.target.value=e.target.value.toUpperCase()),o(e)):o(e),_(e.target.value)},onKeyDown:e=>{"numeric-field"===h&&"e"===e.key.toLowerCase()&&e.preventDefault()},value:y,errorMessage:r?.message,addon:(()=>{if(w()){if("label"===d.addOn.type)return{type:"label",position:d.addOn.position,attributes:{value:d.addOn.value}};if("icon"===d.addOn.type){const{icon:t,position:n,color:r}=d.addOn,i=G[t];return{type:"custom",position:n,attributes:{children:e.jsx(GZ,{as:i,$color:r})}}}}})()}),e.jsx(xI,{id:a,message:l})]})},Textarea:H$,TimeField:n=>{const{error:r,formattedLabel:i,id:a,onChange:o,schema:{is24HourFormat:s,label:u,placeholder:l,useCurrentTime:c,validation:d,...f},value:p,warning:h,...m}=n,[g,y]=t.useState(p||""),{setFieldValidationConfig:_}=Hk();t.useEffect((()=>{_(a,hw(),d)}),[d]),t.useEffect((()=>{if(c&&!p){const e=s?"H:mm":"h:mma";setTimeout((()=>v(e)))}else y(p)}),[p,c,s]);const v=e=>{const t=rm.formatDateTime(vf.now().toString().toUpperCase(),e,"time");y(t),o({target:{value:t}})};return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.Timepicker,{...f,...m,id:a,"data-testid":exports.TestHelper.generateId(a,"time"),label:i,errorMessage:r?.message,value:g,placeholder:l,format:s?"24hr":"12hr",onChange:e=>{o({target:{value:e}})}}),e.jsx(xI,{id:a,message:h})]})},get EFieldType(){return exports.EFieldType},UnitNumberField:n=>{const{formattedLabel:r,error:i,id:a,onChange:o,schema:{label:s,validation:u,...l},value:c,warning:d,...f}=n,[p,h]=t.useState(c||""),{setFieldValidationConfig:m}=Hk();t.useEffect((()=>{const e=u?.find((e=>"unitNumberFormat"in e));m(a,hw().matches(/^([a-zA-Z0-9]{1,3}-[a-zA-Z0-9]{1,5})$/,{excludeEmptyString:!0,message:e?.errorMessage||nm.UNIT_NUMBER.INVALID}),u)}),[u]),t.useEffect((()=>{h(c||"")}),[c]);return e.jsxs(e.Fragment,{children:[e.jsx(x.Form.UnitNumberInput,{...l,...f,id:a,"data-testid":exports.TestHelper.generateId(a,"unit-number"),label:r,value:p,onChange:e=>{o({target:{value:e}})},errorMessage:i?.message}),e.jsx(xI,{id:a,message:d})]})}});const qZ=({id:t,children:n,childSchema:r})=>{if("columns"in r){const{desktop:i,tablet:a,mobile:o,...s}=r.columns||{};return e.jsx(d.Layout.ColDiv,{"data-testid":exports.TestHelper.generateId(t,"grid_item"),desktopCols:i??12,tabletCols:a,mobileCols:o,...s,children:n})}return e.jsx(e.Fragment,{children:n})},KZ=({id:n,renderRules:r,children:i,schema:a})=>{const{formValidationConfig:o,removeFieldValidationConfig:s}=Hk(),[u,l]=t.useState(void 0),{formValues:c}=Vk(),{unregister:d}=we();vs((()=>{if(rE(r))return;const e=f();if(e!==u){if(!e){[n,...p(a)].forEach((e=>{s(e),d(e)}))}l(e)}}),[o,c,r]);const f=()=>{if(rE(r))return!0;let e=!1;return r.forEach((t=>{if(!e){const n={};Object.entries(t).forEach((([e,t])=>{if(t.find((e=>e.shown))&&!o?.[e])return void(n[e]={schema:aw().test("shown",(()=>!1)),validationRules:[]});const r=o?.[e]?.schema.type;if(r){let i=MI.mapSchemaType(r);"number"===r&&(i=i.nullable().transform(((e,t)=>!isNaN(parseFloat(t?.toString()))?+t:void 0))),n[e]={schema:i,validationRules:t}}}));const r=MI.buildSchema(n);try{r.validateSync(c),e=!0}catch(e){}}})),e},p=e=>{const t=e.children,r=[];switch(e.uiType){case"chips":r.push(n+"-textarea");break;case"checkbox":case"radio":e.options.forEach((e=>{const t=e.children;!rE(t)&&ln(t)&&Object.entries(t).forEach((([e,t])=>{r.push(e),t.children&&r.push(...p(t.children))}))}))}return rE(t)||!ln(t)||Object.entries(t).forEach((([e,t])=>{r.push(e),t.children&&r.push(...p(t.children))})),r};return rE(r)||u?e.jsx(e.Fragment,{children:i}):null},JZ=Object.keys(exports.EFieldType),XZ=Object.keys(exports.EElementType),QZ=n=>{const{id:r,schema:i,children:a}=n,{showIf:o,uiType:s,children:u,...l}=i||{},{warnings:c}=qk(),[d,f]=t.useState(null),{control:p}=we(),{getCustomComponent:h}=HI(),{formSchema:{overrides:m},overrideSchema:g}=Bk();GI((()=>{const n=g(u||a,m);if("object"==typeof n){const r=[];Object.keys(n).forEach((i=>{const a=n[i];if(rE(a)||"object"!=typeof a)return;let o=e.jsx(t.Fragment,{children:nm.GENERIC.UNSUPPORTED},i);if("referenceKey"in a){const n=a.referenceKey.toUpperCase();o=h(a.referenceKey)||E$[b$[n]]?y(i,a)(_):E$[v$[n]]?y(i,a)(v):e.jsx(t.Fragment,{},i)}else"uiType"in a&&(JZ.includes(a.uiType.toUpperCase())?o=y(i,a)(_):XZ.includes(a.uiType.toUpperCase())&&(o=y(i,a)(v)));r.push(o)})),f(r)}else f("string"==typeof n?n:nm.GENERIC.UNSUPPORTED)}),[u||a,m,p,c,h]);const y=(t,n)=>r=>e.jsx(KZ,{id:t,...n&&"showIf"in n&&{renderRules:n.showIf},schema:n,children:r(t,n)},t),_=(t,n)=>{let r;return"uiType"in n?r=WZ[exports.EFieldType[n.uiType?.toUpperCase()]]:"referenceKey"in n&&(r=E$[b$[n.referenceKey?.toUpperCase()]]||h(n.referenceKey)),r?e.jsx(qZ,{id:t,childSchema:n,children:e.jsx(P$,{id:t,schema:n,Field:r,warning:c?.[t]})}):null},v=(t,n)=>{let r;return"uiType"in n?r=n$[exports.EElementType[n.uiType?.toUpperCase()]]||QZ:"referenceKey"in n&&(r=E$[v$[n.referenceKey?.toUpperCase()]]),e.jsx(qZ,{id:t,childSchema:n,children:e.jsx(r,{schema:n,id:t})})},b=s;return b?e.jsx(b,{...l,id:r,"data-testid":exports.TestHelper.generateId(r,s),children:d}):e.jsx(e.Fragment,{children:d})},eU=H.default(d.Layout.Container)`
1053
1053
  gap: 2rem;
1054
1054
  `,tU=H.default.div`
1055
1055
  flex: 1;
1056
1056
  `,nU=t=>{const{sectionSchema:{children:n,layoutType:r},...i}=t;switch(r){case"grid":return e.jsx(d.Layout.Section,{children:e.jsx(eU,{type:"grid",children:e.jsx(QZ,{...i,children:n})})});case"contain":return e.jsx(d.Layout.Content,{children:e.jsx(tU,{children:e.jsx(QZ,{...i,children:n})})});default:return e.jsx(QZ,{...i,children:n})}},rU=()=>{const{formSchema:{sections:t,overrides:n},overrideSchema:r}=Bk();return e.jsx(e.Fragment,{children:(()=>{const i=r(t,n);return i?Object.entries(i).map((([t,n],r)=>e.jsx(nU,{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"}),"."]})})()})},iU=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:_}=YI(),{setCustomComponents:v}=HI(),{setSubmitHandler:b,setWrapInForm:E}=Gk(),{addWarnings:S,performSoftValidation:A,softValidationSchema:x,hardValidationSchema:w,rebuildValidationSchema:T,yupId:M}=qk(),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}=Bk(),{reset:N,handleSubmit:D,getValues:L,setValue:I,setError:k,trigger:$,formState:R,clearErrors:F}=O,{resetFields:z,setFields:P,getFormValues:j,registeredFields:Z}=Vk(O),U=t.useRef(Z),{checkIsFormValid:V}=((e,n)=>{const{data:r,onChange:i,onValueChange:a}=e,{stripUnknown:o}=r||{},{hardValidationSchema:s}=qk(),{formValidationConfig:u}=Hk(),{watch:l,getValues:c,formState:d,clearErrors:f}=n,{setFields:p,setField:h,getFormValues:m}=Vk(n),[g,y]=t.useState({}),[_,v]=t.useState(!1),b=Wk(u),E=Wk(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&&LI(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);LI(t,n)||v(!0)}}),[u]),t.useEffect((()=>{_&&E!==s&&w.current().then((()=>v(!1)))}),[_,s]),t.useEffect((()=>{const e=d.errors;if(e&&!rE(e)){const e=l((e=>{const t=Object.fromEntries(Object.entries(d.errors).filter((([e,t])=>"api"===t.type)));t&&!rE(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)=>{MI.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(rU,{})})}):e.jsxs(e.Fragment,{children:["Missing ",e.jsx("code",{children:"data"})," prop, unable to render Frontend Engine."]})})),aU=t.forwardRef(((t,n)=>e.jsx(VI,{children:e.jsx(iU,{...t,ref:n})})));exports.AxiosApiClient=uc,exports.Description=GT,exports.ERROR_MESSAGES=nm,exports.FileUploadContext=Nz,exports.FrontendEngine=aU,exports.GeolocationPositionErrorWrapper=FZ,exports.ImageContext=Rz,exports.OneMapError=vI,exports.OneMapService=yI,exports.Prompt=WT,exports.Sanitize=pI,exports.commonjsGlobal=At,exports.generateRandomId=im,exports.lodash=hI,exports.useFieldEvent=YI,exports.useFormContext=we,exports.useFrontendEngineComponent=()=>{const{addFieldEventListener:e,dispatchFieldEvent:t,removeFieldEventListener:n}=YI(),r=we(),{setFieldValidationConfig:i,removeFieldValidationConfig:a}=Hk();return{event:{addFieldEventListener:e,dispatchFieldEvent:t,removeFieldEventListener:n},formContext:r,validation:{setValidation:i,removeValidation:a}}},exports.usePrevious=Wk;
1057
- //# sourceMappingURL=index.bb56604f.js.map
1057
+ //# sourceMappingURL=index.56c92603.js.map