{"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,UAAU,CACA;EAC1B,MAAM;EACN,KAAK;EACL,SAAS;EACV,CAAC;CAEF,MAAM,UAAkB,cAAc;AACpC,SAAO,SAAS,SACZ,sBAAsB;GAAE;GAAqB,UAAU;GAAW,MAAM;GAAU,CAAC,GACnF,2BAA2B;GACzB;GACA,UAAU;GACV;GACA,MAAM;GACP,CAAC;IACL;EAAC;EAAW;EAAM;EAAU;EAAK,CAAC;AAErC,KAAI,CAAC,QACH,QACE,oBAAC,cAAD;EACE,WAAW,KAAK;EAChB,UAAU,SAAS,MAAM,IAAI,CAAC;EACxB;EACA;EACN,SAAS;EACT,CAAA;AAGN,KAAI,YAAY,MACd,QAAO,oBAAC,KAAD;EAAK,KAAK;EAAU,QAAQ;EAAM,KAAK;EAAgB;EAAO,OAAO;EAAM,GAAI;EAAQ,CAAA;AAEhG,QACE,qBAAC,QAAD;EACE,MAAM;EACN,QAAQ;EACR,OAAO;GAAE,UAAU;GAAY,GAAG;GAAO;EACzC,OAAO;EACP,GAAI;YALN,CAOE,oBAAC,cAAD;GAAoB;GAAM,MAAM;GAAS,SAAS;GAAU,CAAA,EAC5D,oBAAC,KAAD;GACE,KAAK;GACL,QAAQ,OAAO;GACf,KAAK;GACL,OAAO;IAAE,UAAU;IAAY,KAAK,OAAO;IAAG;GAC9C,OAAO,OAAO;GACd,GAAI;GACJ,CAAA,CACK;;;AAIb,qBAAqB,cAAc"}