{"version":3,"file":"FilesUploaderItem.mjs","sources":[""],"sourcesContent":["import {\r\n  cloneElement,\r\n  useContext,\r\n  useState,\r\n  useEffect,\r\n  isValidElement,\r\n} from \"react\";\r\nimport type { HTMLAttributes, ReactElement, MouseEvent } from \"react\";\r\nimport { Btn } from \"../../btn\";\r\nimport { Locale } from \"../../locale\";\r\nimport type { IFilesUploaderItem } from \"../config/types\";\r\nimport { FilesUploaderCtx } from \"../context/index\";\r\nimport { getFileSizeInMb } from \"../lib/index\";\r\n\r\n/**\r\n * Компонент вывода элемента списка загруженных файлов\r\n * @param file - файл\r\n * @returns\r\n * */\r\nexport const FilesUploaderItem = ({ file }: { file: Required<IFilesUploaderItem> | File; }): ReactElement => {\r\n\r\n  const {\r\n    getCN,\r\n    slotFileItem,\r\n    isDisabled,\r\n    isLoading,\r\n    onDeleteClick,\r\n    onFileRender,\r\n    setFilesMap,\r\n  } = useContext(FilesUploaderCtx);\r\n\r\n  const name = file?.name ?? <Locale code={\"filesUploader.unknownFile\"} />;\r\n  const size = getFileSizeInMb(file?.size ?? 0).toFixed(2);\r\n  const link = (\"href\" in file && typeof file?.href === \"string\" && file.href.length) ? file.href : null;\r\n\r\n  const [ isFileLoading, setIsFileLoading ] = useState(isLoading);\r\n\r\n  const onDelete = (e: MouseEvent) => {\r\n    e.preventDefault();\r\n    setIsFileLoading(true);\r\n    onDeleteClick(file)\r\n      .finally(() => {\r\n        setIsFileLoading(false);\r\n      });\r\n  };\r\n\r\n  useEffect(() => {\r\n    if (typeof onFileRender === \"function\") {\r\n      onFileRender({\r\n        file,\r\n        stateActions: {\r\n          setFiles: setFilesMap,\r\n          setIsLoading: setIsFileLoading,\r\n        },\r\n      });\r\n    }\r\n  }, []);\r\n\r\n  return (\r\n    <li className={getCN(\"listItem\", { isDisabled })}>\r\n      {(!!slotFileItem && isValidElement(slotFileItem)) ? cloneElement(slotFileItem, {\r\n        ...(slotFileItem?.props ?? {}),\r\n        isDisabled,\r\n        file,\r\n        onDeleteClick,\r\n      } as HTMLAttributes<HTMLElement>) : (\r\n        <div className={getCN(\"file\", { isLink: !!link })}>\r\n          <div className={getCN(\"fileData\")}>\r\n            {!!link ? <a download={true} href={link} className={getCN(\"fileName\")} title={name}>{name}</a> : <div className={getCN(\"fileName\")} title={name}>{name}</div>}\r\n            <div className={getCN(\"fileSize\")}>\r\n              <span className={getCN(\"fileSizeValue\")}>{size}</span>&nbsp;\r\n              <span className={getCN(\"fileSizeMeasure\")}>\r\n                <Locale code={\"filesUploader.megaByte\"} />\r\n              </span>\r\n            </div>\r\n          </div>\r\n          <div className={getCN(\"fileActions\")}>\r\n            <Btn\n              size={\"small\"}\n              extraClasses={{ isOnlyIcon: true }}\n              label={null}\n              icon={\"remove\"}\n              iconSize={\"small\"}\n              isDisabled={isDisabled || isLoading || isFileLoading}\n              onClick={onDelete}\n            />\r\n          </div>\r\n        </div>\r\n      )}\r\n    </li>\r\n  );\r\n};\r\n"],"names":["FilesUploaderItem","file","getCN","slotFileItem","isDisabled","isLoading","onDeleteClick","onFileRender","setFilesMap","useContext","FilesUploaderCtx","name","_jsx","Locale","code","size","getFileSizeInMb","toFixed","link","href","length","isFileLoading","setIsFileLoading","useState","onDelete","e","preventDefault","finally","useEffect","stateActions","setFiles","setIsLoading","className","children","isValidElement","cloneElement","props","_jsxs","isLink","download","title","Btn","extraClasses","isOnlyIcon","label","icon","iconSize","onClick"],"mappings":"sSAmBO,MAAMA,kBAAoB,EAAGC,cAElC,MAAMC,MACJA,MAAKC,aACLA,aAAYC,WACZA,WAAUC,UACVA,UAASC,cACTA,cAAaC,aACbA,aAAYC,YACZA,aACEC,WAAWC,kBAEf,MAAMC,KAAOV,MAAMU,MAAQC,IAACC,OAAM,CAACC,KAAM,8BACzC,MAAMC,KAAOC,gBAAgBf,MAAMc,MAAQ,GAAGE,QAAQ,GACtD,MAAMC,KAAQ,SAAUjB,aAAeA,MAAMkB,OAAS,UAAYlB,KAAKkB,KAAKC,OAAUnB,KAAKkB,KAAO,KAElG,MAAQE,cAAeC,kBAAqBC,SAASlB,WAErD,MAAMmB,SAAYC,IAChBA,EAAEC,iBACFJ,iBAAiB,MACjBhB,cAAcL,MACX0B,QAAQ,KACPL,iBAAiB,UAIvBM,UAAU,KACR,UAAWrB,eAAiB,WAC1BA,aAAa,CACXN,UACA4B,aAAc,CACZC,SAAUtB,YACVuB,aAAcT,qBAInB;AAEH,OACEV,IAAA,KAAA,CAAIoB,UAAW9B,MAAM,WAAY,CAAEE,wBAAc6B,WAC3C9B,cAAgB+B,eAAe/B,cAAiBgC,aAAahC,aAAc,IACzEA,cAAciC,OAAS,GAC3BhC,sBACAH,UACAK,8BAEA+B,KAAA,MAAA,CAAKL,UAAW9B,MAAM,OAAQ,CAAEoC,SAAUpB,OAAQe,SAAA,CAChDI,KAAA,MAAA,CAAKL,UAAW9B,MAAM,YAAY+B,SAAA,GAC7Bf,KAAON,IAAA,IAAA,CAAG2B,SAAU,KAAMpB,KAAMD,KAAMc,UAAW9B,MAAM,YAAasC,MAAO7B,KAAKsB,SAAEtB,OAAYC,IAAA,MAAA,CAAKoB,UAAW9B,MAAM,YAAasC,MAAO7B,KAAKsB,SAAEtB,OAClJ0B,KAAA,MAAA,CAAKL,UAAW9B,MAAM,YAAY+B,SAAA,CAChCrB,IAAA,OAAA,CAAMoB,UAAW9B,MAAM,iBAAiB+B,SAAElB,OAAY,IACtDH,IAAA,OAAA,CAAMoB,UAAW9B,MAAM,mBAAmB+B,SACxCrB,IAACC,OAAM,CAACC,KAAM,mCAIpBF,IAAA,MAAA,CAAKoB,UAAW9B,MAAM,eAAe+B,SACnCrB,IAAC6B,IAAG,CACF1B,KAAM,QACN2B,aAAc,CAAEC,WAAY,MAC5BC,MAAO,KACPC,KAAM,SACNC,SAAU,QACV1C,WAAYA,YAAcC,WAAagB,cACvC0B,QAASvB"}