{"version":3,"file":"Input.cjs","sources":["../../../../../src/components/file-input/internal/Input.tsx"],"sourcesContent":["import React, { forwardRef, useId } from \"react\";\nimport type { UploadedFile } from \"../types.js\";\nimport { useFileInputContext } from \"./fileInputContext.js\";\nimport { validateFileInputFiles } from \"./validateFileInputFiles.js\";\n\ninterface FileInputProps {\n    id?: string;\n    label: string;\n    multiple: boolean;\n}\n\nexport const Input = forwardRef<HTMLInputElement, FileInputProps>(\n    (props, ref) => {\n        const { multiple, id, label, ...rest } = props;\n\n        const defaultId = useId();\n\n        const maxSizeDescriptionId = `${id}-description`;\n        const descriptor = multiple ? \"filer\" : \"fil\";\n\n        const context = useFileInputContext();\n        if (!context) {\n            return (\n                <p>Input must be placed inside a FileInputContextProvider.</p>\n            );\n        }\n        const { accept, maxSizeBytes, onChange } = context;\n\n        const elementId = id || defaultId;\n\n        return (\n            <>\n                <label\n                    className=\"jkl-button jkl-button--secondary\"\n                    htmlFor={elementId}\n                    id={`${elementId}__add-btn`}\n                >\n                    {label}\n                </label>\n                <input\n                    {...rest}\n                    ref={ref}\n                    id={elementId}\n                    accept={accept}\n                    aria-describedby={\n                        maxSizeBytes ? maxSizeDescriptionId : undefined\n                    }\n                    className=\"jkl-sr-only\"\n                    type=\"file\"\n                    multiple={multiple}\n                    value=\"\"\n                    onChange={(e) => {\n                        if (e.target.files) {\n                            onChange(\n                                e,\n                                [...e.target.files].map<UploadedFile>(\n                                    (file) => ({\n                                        file,\n                                        state: undefined,\n                                        validation: validateFileInputFiles(\n                                            file,\n                                            accept,\n                                            maxSizeBytes,\n                                        ),\n                                        uploadProgress: 0,\n                                    }),\n                                ),\n                            );\n                        }\n                    }}\n                />\n                <p className=\"jkl-file-input__dropzone-hint\">\n                    eller slipp {descriptor} her\n                </p>{\" \"}\n            </>\n        );\n    },\n);\n\nInput.displayName = \"Input\";\n"],"names":["Input","forwardRef","props","ref","multiple","id","label","rest","defaultId","useId","maxSizeDescriptionId","descriptor","context","useFileInputContext","jsx","children","accept","maxSizeBytes","onChange","elementId","jsxs","Fragment","className","htmlFor","type","value","e","target","files","map","file","state","validation","validateFileInputFiles","uploadProgress","displayName"],"mappings":"sNAWaA,EAAQC,EAAAA,WACjB,CAACC,EAAOC,KACJ,MAAQC,SAAAA,EAAUC,GAAAA,EAAIC,MAAAA,KAAUC,GAASL,EAEnCM,EAAYC,EAAAA,QAEZC,EAAuB,GAAGL,gBAC1BM,EAAaP,EAAW,QAAU,MAElCQ,EAAUC,EAAAA,sBAChB,IAAKD,EACD,OACIE,EAAAA,IAAC,KAAEC,SAAA,4DAGX,MAAQC,OAAAA,EAAQC,aAAAA,EAAcC,SAAAA,GAAaN,EAErCO,EAAYd,GAAMG,EAExB,OACIY,EAAAA,KAAAC,WAAA,CACIN,SAAA,CAAAD,EAAAA,IAAC,QAAA,CACGQ,UAAU,mCACVC,QAASJ,EACTd,GAAI,GAAGc,aAENJ,SAAAT,IAELQ,EAAAA,IAAC,QAAA,IACOP,EACJJ,IAAAA,EACAE,GAAIc,EACJH,OAAAA,EACA,mBACIC,EAAeP,OAAuB,EAE1CY,UAAU,cACVE,KAAK,OACLpB,SAAAA,EACAqB,MAAM,GACNP,SAAWQ,IACHA,EAAEC,OAAOC,OACTV,EACIQ,EACA,IAAIA,EAAEC,OAAOC,OAAOC,IACfC,KACGA,KAAAA,EACAC,WAAO,EACPC,WAAYC,EAAAA,uBACRH,EACAd,EACAC,GAEJiB,eAAgB,SAOxCd,EAAAA,KAAC,IAAA,CAAEE,UAAU,gCAAgCP,SAAA,CAAA,eAC5BJ,EAAW,UACvB,SAMrBX,EAAMmC,YAAc"}