{"version":3,"file":"MaterialFileTypeIcon.mjs","names":[],"sources":["../../src/MaterialFileTypeIcon/MaterialFileTypeIcon.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, useMemo } from 'react';\n\nimport { useCdnFn } from '@/ConfigProvider';\nimport FileTypeIcon from '@/FileTypeIcon';\nimport { Center } from '@/Flex';\nimport Img from '@/Img';\n\nimport type { MaterialFileTypeIconProps } from './type';\nimport { getIconUrlForDirectoryPath, getIconUrlForFilePath } from './utils';\n\nconst MaterialFileTypeIcon: FC<MaterialFileTypeIconProps> = ({\n  fallbackUnknownType = true,\n  filename,\n  size = 48,\n  variant = 'raw',\n  type,\n  style,\n  open,\n  ...rest\n}) => {\n  const genCdnUrl = useCdnFn();\n  const ICONS_URL = genCdnUrl({\n    path: 'assets',\n    pkg: '@lobehub/assets-fileicon',\n    version: '1.0.0',\n  });\n\n  const iconUrl: string = useMemo(() => {\n    return type === 'file'\n      ? getIconUrlForFilePath({ fallbackUnknownType, iconsUrl: ICONS_URL, path: filename })\n      : getIconUrlForDirectoryPath({\n          fallbackUnknownType,\n          iconsUrl: ICONS_URL,\n          open,\n          path: filename,\n        });\n  }, [ICONS_URL, type, filename, open]);\n\n  if (!iconUrl)\n    return (\n      <FileTypeIcon\n        className={rest.className}\n        filetype={filename.split('.')[1]}\n        size={size}\n        type={type}\n        variant={'mono'}\n      />\n    );\n\n  if (variant === 'raw')\n    return <Img alt={filename} height={size} src={iconUrl} style={style} width={size} {...rest} />;\n\n  return (\n    <Center\n      flex={'none'}\n      height={size}\n      style={{ position: 'relative', ...style }}\n      width={size}\n      {...rest}\n    >\n      <FileTypeIcon size={size} type={variant} variant={'mono'} />\n      <Img\n        alt={filename}\n        height={size / 2}\n        src={iconUrl}\n        style={{ position: 'absolute', top: size / 3 }}\n        width={size / 2}\n        {...rest}\n      />\n    </Center>\n  );\n};\n\nMaterialFileTypeIcon.displayName = 'MaterialFileTypeIcon';\n\nexport default MaterialFileTypeIcon;\n"],"mappings":";;;;;;;;;AAYA,MAAM,wBAAuD,EAC3D,sBAAsB,MACtB,UACA,OAAO,IACP,UAAU,OACV,MACA,OACA,MACA,GAAG,WACC;CAEJ,MAAM,YADY,SACQ,CAAC,CAAC;EAC1B,MAAM;EACN,KAAK;EACL,SAAS;CACX,CAAC;CAED,MAAM,UAAkB,cAAc;EACpC,OAAO,SAAS,SACZ,sBAAsB;GAAE;GAAqB,UAAU;GAAW,MAAM;EAAS,CAAC,IAClF,2BAA2B;GACzB;GACA,UAAU;GACV;GACA,MAAM;EACR,CAAC;CACP,GAAG;EAAC;EAAW;EAAM;EAAU;CAAI,CAAC;CAEpC,IAAI,CAAC,SACH,OACE,oBAAC,cAAD;EACE,WAAW,KAAK;EAChB,UAAU,SAAS,MAAM,GAAG,CAAC,CAAC;EACxB;EACA;EACN,SAAS;CACV,CAAA;CAGL,IAAI,YAAY,OACd,OAAO,oBAAC,KAAD;EAAK,KAAK;EAAU,QAAQ;EAAM,KAAK;EAAgB;EAAO,OAAO;EAAM,GAAI;CAAO,CAAA;CAE/F,OACE,qBAAC,QAAD;EACE,MAAM;EACN,QAAQ;EACR,OAAO;GAAE,UAAU;GAAY,GAAG;EAAM;EACxC,OAAO;EACP,GAAI;YALN,CAOE,oBAAC,cAAD;GAAoB;GAAM,MAAM;GAAS,SAAS;EAAS,CAAA,GAC3D,oBAAC,KAAD;GACE,KAAK;GACL,QAAQ,OAAO;GACf,KAAK;GACL,OAAO;IAAE,UAAU;IAAY,KAAK,OAAO;GAAE;GAC7C,OAAO,OAAO;GACd,GAAI;EACL,CAAA,CACK;;AAEZ;AAEA,qBAAqB,cAAc"}