{"version":3,"file":"FileInput.cjs","sources":["../../../../src/components/file-input/FileInput.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { forwardRef, useId } from \"react\";\nimport { FieldGroup } from \"../../components/input-group/FieldGroup.js\";\nimport { Dropzone } from \"./internal/Dropzone.js\";\nimport { Input } from \"./internal/Input.js\";\nimport { MaxSize } from \"./internal/MaxSize.js\";\nimport { FileInputContextProvider } from \"./internal/fileInputContext.js\";\nimport type { FileInputProps } from \"./types.js\";\n\nexport const FileInput = forwardRef<HTMLInputElement, FileInputProps>(\n    (props, ref) => {\n        const {\n            accept,\n            className,\n            children,\n            id,\n            value,\n            multiple = true,\n            maxSizeBytes,\n            onChange,\n            variant,\n            ...rest\n        } = props;\n\n        const hasFiles = value.length > 0;\n\n        const maxSizeDescriptionId = useId();\n\n        if (variant === \"small\") {\n            return (\n                <FileInputContextProvider\n                    context={{ accept, onChange, maxSizeBytes, files: value }}\n                >\n                    <FieldGroup\n                        className={clsx(\n                            \"jkl-file-input\",\n                            \"jkl-file-input--small\",\n                            className,\n                            {\n                                \"jkl-file-input--has-files\": hasFiles,\n                            },\n                        )}\n                        {...rest}\n                    >\n                        <Dropzone>\n                            <div className=\"jkl-file-input__call-to-action\">\n                                <Input\n                                    id={id}\n                                    label=\"Legg til fil\"\n                                    multiple={multiple}\n                                    ref={ref}\n                                    aria-describedby={maxSizeDescriptionId}\n                                />\n                            </div>\n                        </Dropzone>\n                        <MaxSize id={maxSizeDescriptionId} />\n                        {value.length > 0 && (\n                            <ul className=\"jkl-file-input__files\">\n                                {children}\n                            </ul>\n                        )}\n                    </FieldGroup>\n                </FileInputContextProvider>\n            );\n        }\n\n        return (\n            <FileInputContextProvider\n                context={{ accept, onChange, maxSizeBytes, files: value }}\n            >\n                <FieldGroup\n                    className={clsx(\"jkl-file-input\", className, {\n                        \"jkl-file-input--has-files\": hasFiles,\n                    })}\n                    {...rest}\n                >\n                    <Dropzone>\n                        {value.length > 0 && (\n                            <ul className=\"jkl-file-input__files\">\n                                {children}\n                            </ul>\n                        )}\n                        <div className=\"jkl-file-input__call-to-action\">\n                            <Input\n                                id={id}\n                                label={\n                                    multiple && hasFiles\n                                        ? \"Legg til flere filer\"\n                                        : \"Legg til fil\"\n                                }\n                                multiple={multiple}\n                                ref={ref}\n                                aria-describedby={maxSizeDescriptionId}\n                            />\n                            <MaxSize id={maxSizeDescriptionId} />\n                        </div>\n                    </Dropzone>\n                </FieldGroup>\n            </FileInputContextProvider>\n        );\n    },\n);\n\nFileInput.displayName = \"FileInput\";\n"],"names":["FileInput","forwardRef","props","ref","accept","className","children","id","value","multiple","maxSizeBytes","onChange","variant","rest","hasFiles","length","maxSizeDescriptionId","useId","jsx","FileInputContextProvider","context","files","jsxs","FieldGroup","clsx","Dropzone","Input","label","MaxSize","displayName"],"mappings":"mXASaA,EAAYC,EAAAA,WACrB,CAACC,EAAOC,KACJ,MACIC,OAAAA,EACAC,UAAAA,EACAC,SAAAA,EACAC,GAAAA,EACAC,MAAAA,EACAC,SAAAA,GAAW,EACXC,aAAAA,EACAC,SAAAA,EACAC,QAAAA,KACGC,GACHX,EAEEY,EAAWN,EAAMO,OAAS,EAE1BC,EAAuBC,EAAAA,QAE7B,MAAgB,UAAZL,EAEIM,EAAAA,IAACC,EAAAA,yBAAA,CACGC,QAAS,CAAEhB,OAAAA,EAAQO,SAAAA,EAAUD,aAAAA,EAAcW,MAAOb,GAElDF,SAAAgB,EAAAA,KAACC,EAAAA,WAAA,CACGlB,UAAWmB,EAAAA,KACP,iBACA,wBACAnB,EACA,CACI,4BAA6BS,OAGjCD,EAEJP,SAAA,CAAAY,MAACO,EAAAA,SAAA,CACGnB,SAAAY,EAAAA,IAAC,MAAA,CAAIb,UAAU,iCACXC,SAAAY,EAAAA,IAACQ,EAAAA,MAAA,CACGnB,GAAAA,EACAoB,MAAM,eACNlB,SAAAA,EACAN,IAAAA,EACA,mBAAkBa,QAI9BE,EAAAA,IAACU,EAAAA,QAAA,CAAQrB,GAAIS,IACZR,EAAMO,OAAS,SACX,KAAA,CAAGV,UAAU,wBACTC,SAAAA,SASrBY,EAAAA,IAACC,EAAAA,yBAAA,CACGC,QAAS,CAAEhB,OAAAA,EAAQO,SAAAA,EAAUD,aAAAA,EAAcW,MAAOb,GAElDF,SAAAY,EAAAA,IAACK,EAAAA,WAAA,CACGlB,UAAWmB,EAAAA,KAAK,iBAAkBnB,EAAW,CACzC,4BAA6BS,OAE7BD,EAEJP,gBAACmB,WAAA,CACInB,SAAA,CAAAE,EAAMO,OAAS,GACZG,EAAAA,IAAC,KAAA,CAAGb,UAAU,wBACTC,SAAAA,IAGTgB,EAAAA,KAAC,MAAA,CAAIjB,UAAU,iCACXC,SAAA,CAAAY,EAAAA,IAACQ,EAAAA,MAAA,CACGnB,GAAAA,EACAoB,MACIlB,GAAYK,EACN,uBACA,eAEVL,SAAAA,EACAN,IAAAA,EACA,mBAAkBa,IAEtBE,EAAAA,IAACU,EAAAA,QAAA,CAAQrB,GAAIS,gBASzChB,EAAU6B,YAAc"}