{"version":3,"file":"File.cjs","sources":["../../../../src/components/file/File.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { type ComponentProps, type FC, useId } from \"react\";\nimport { formatBytes } from \"../../utilities/index.js\";\nimport { Button } from \"../button/index.js\";\nimport { useFileInputContext } from \"../file-input/internal/fileInputContext.js\";\nimport { TrashCanIcon } from \"../icon/index.js\";\nimport { SupportLabel } from \"../input-group/index.js\";\nimport { Link } from \"../link/index.js\";\nimport type { FileProps } from \"./types.js\";\n\nexport const File: FC<FileProps & ComponentProps<\"div\">> = (props) => {\n    const {\n        children,\n        className,\n        fileName,\n        fileType,\n        fileSize,\n        path,\n        file,\n        state,\n        errorLabel = \"Feil\",\n        onRemove,\n        variant = \"list\",\n        ...rest\n    } = props;\n\n    const id = `jkl-file-preview-${useId()}`;\n    const supportId = `${id}-support`;\n\n    const context = useFileInputContext();\n\n    const imageSrc =\n        fileType.startsWith(\"image/\") &&\n        (file ? URL.createObjectURL(file) : path);\n\n    const fileComponent = (\n        <div\n            id={id}\n            className={clsx(className, \"jkl-file\", `jkl-file--${variant}`)}\n            data-state={state}\n            {...rest}\n        >\n            <div className={\"jkl-file__content\"}>\n                <div\n                    className=\"jkl-file__content__thumbnail\"\n                    data-filetype={fileType}\n                >\n                    <img src={imageSrc || undefined} alt=\"\" />\n                </div>\n                {path ? (\n                    <p className=\"jkl-file__content__name\">\n                        <Link href={path}>\n                            {fileName}{\" \"}\n                            <span className=\"jkl-file__content__name__size\">\n                                ({formatBytes(fileSize)})\n                            </span>\n                        </Link>\n                    </p>\n                ) : (\n                    <p className=\"jkl-file__content__name\">\n                        {fileName}{\" \"}\n                        <span className=\"jkl-file__content__name__size\">\n                            ({formatBytes(fileSize)})\n                        </span>\n                    </p>\n                )}\n                {onRemove && (\n                    <Button\n                        variant={\"ghost\"}\n                        className=\"jkl-file__content__button\"\n                        onClick={onRemove}\n                        title={`Fjern ${fileName}`}\n                        icon={<TrashCanIcon />}\n                    />\n                )}\n            </div>\n\n            {state === \"error\" && errorLabel && (\n                <SupportLabel\n                    className=\"jkl-file__support-label\"\n                    id={supportId}\n                    label={errorLabel}\n                    labelType={\"error\"}\n                />\n            )}\n        </div>\n    );\n\n    return context ? <li>{fileComponent}</li> : fileComponent;\n};\n"],"names":["props","children","className","fileName","fileType","fileSize","path","file","state","errorLabel","onRemove","variant","rest","id","useId","supportId","context","useFileInputContext","imageSrc","startsWith","URL","createObjectURL","fileComponent","jsxs","clsx","jsx","src","alt","Link","href","formatBytes","Button","onClick","title","icon","TrashCanIcon","SupportLabel","label","labelType"],"mappings":"+jEAU4DA,IACxD,MACIC,SAAAA,EACAC,UAAAA,EACAC,SAAAA,EACAC,SAAAA,EACAC,SAAAA,EACAC,KAAAA,EACAC,KAAAA,EACAC,MAAAA,EACAC,WAAAA,EAAa,OACbC,SAAAA,EACAC,QAAAA,EAAU,UACPC,GACHZ,EAEEa,EAAK,oBAAoBC,EAAAA,UACzBC,EAAY,GAAGF,YAEfG,EAAUC,EAAAA,sBAEVC,EACFd,EAASe,WAAW,YACnBZ,EAAOa,IAAIC,gBAAgBd,GAAQD,GAElCgB,EACFC,EAAAA,KAAC,MAAA,CACGV,GAAAA,EACAX,UAAWsB,EAAAA,KAAKtB,EAAW,WAAY,aAAaS,KACpD,aAAYH,KACRI,EAEJX,SAAA,CAAAsB,EAAAA,KAAC,MAAA,CAAIrB,UAAW,oBACZD,SAAA,CAAAwB,EAAAA,IAAC,MAAA,CACGvB,UAAU,+BACV,gBAAeE,EAEfH,eAAC,MAAA,CAAIyB,IAAKR,QAAY,EAAWS,IAAI,OAExCrB,QACI,IAAA,CAAEJ,UAAU,0BACTD,SAAAsB,EAAAA,KAACK,EAAAA,KAAA,CAAKC,KAAMvB,EACPL,SAAA,CAAAE,EAAU,IACXoB,EAAAA,KAAC,OAAA,CAAKrB,UAAU,gCAAgCD,SAAA,CAAA,IAC1C6B,EAAAA,YAAYzB,GAAU,YAKpCkB,EAAAA,KAAC,IAAA,CAAErB,UAAU,0BACRD,SAAA,CAAAE,EAAU,IACXoB,EAAAA,KAAC,OAAA,CAAKrB,UAAU,gCAAgCD,SAAA,CAAA,IAC1C6B,EAAAA,YAAYzB,GAAU,UAInCK,GACGe,EAAAA,IAACM,EAAAA,OAAA,CACGpB,QAAS,QACTT,UAAU,4BACV8B,QAAStB,EACTuB,MAAO,SAAS9B,IAChB+B,WAAOC,EAAAA,aAAA,CAAA,QAKR,UAAV3B,GAAqBC,GAClBgB,EAAAA,IAACW,EAAAA,aAAA,CACGlC,UAAU,0BACVW,GAAIE,EACJsB,MAAO5B,EACP6B,UAAW,aAM3B,OAAOtB,EAAUS,EAAAA,IAAC,KAAA,CAAIxB,SAAAqB,IAAsBA"}