UNPKG

@untitledui/file-icons

Version:

Official React library for Untitled UI File Icons

2 lines (1 loc) 2.35 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _react = require('react'); var _react2 = _interopRequireDefault(_react);var _iconImports = require('./iconImports');const p={},w=t=>t.split("-").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(""),h=["json","javascript","x-javascript","typescript","typescriptreact","xml","html","css","yaml","x-yaml","toml","x-toml","markdown","php","x-php","java","python","ruby","x-ruby","swift","go","x-go","c","x-c","cpp","x-cpp","csharp","x-csharp"],S=["pdf","msword","vnd.openxmlformats-officedocument.wordprocessingml.document","vnd.ms-excel","vnd.openxmlformats-officedocument.spreadsheetml.sheet","vnd.ms-powerpoint","vnd.openxmlformats-officedocument.presentationml.presentation"];function b(t){const[e,s]=t.split("/");if(!e||!s)return"unknown";switch(e){case"image":return"image";case"audio":return"audio";case"video":return"video";case"application":case"text":if(h.includes(s))return"code";if(S.includes(s))return"document";break}return"unknown"}const d=["audio","code","document","empty","folder","image","img","spreadsheets","video","video-01","video-02","aep","ai","avi","css","csv","dmg","doc","docx","eps","exe","fig","gif","html","indd","java","jpeg","jpg","js","json","mkv","mp3","mp4","mpeg","pdf","pdf-simple","png","ppt","pptx","psd","rar","rss","sql","svg","tiff","txt","wav","webp","xls","xlsx","xml","zip"],C= exports.FileIcon =({type:t,variant:e="default",theme:s="light",...u})=>{const i=t.includes("/"),c=i?b(t):void 0,r=_nullishCoalesce((i?t.split("/")[1]:void 0), () => (t)),y=d.includes(r),f=i?d.includes(c):!1,o=`${e}_${y?r:f?c:"empty"}`,x=_react.useMemo.call(void 0, ()=>{if(!p[o]){const a=_iconImports.iconImports[o];if(a)p[o]=_react2.default.lazy(a);else{const g=e==="default"?"default_empty":`${e}_empty`,m=_iconImports.iconImports[g];m?p[o]=_react2.default.lazy(m):p[o]=_react2.default.lazy(()=>Promise.resolve({default:()=>null}))}}return p[o]},[o]);return _react2.default.createElement(_react.Suspense,{fallback:null},_react2.default.createElement(x,{...u,theme:s}))};exports.FileIcon = C; exports.SUPPORTED_FILE_TYPES = d; exports.categorizeMimeType = b;