@untitledui/file-icons
Version:
Official React library for Untitled UI File Icons
2 lines (1 loc) • 2.51 kB
JavaScript
Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } 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);const r={},T=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"],v=["pdf","msword","vnd.openxmlformats-officedocument.wordprocessingml.document","vnd.ms-excel","vnd.openxmlformats-officedocument.spreadsheetml.sheet","vnd.ms-powerpoint","vnd.openxmlformats-officedocument.presentationml.presentation"];function S(t){const[e,o]=t.split("/");if(!e||!o)return"unknown";switch(e){case"image":return"image";case"audio":return"audio";case"video":return"video";case"application":case"text":if(h.includes(o))return"code";if(v.includes(o))return"document";break}return"unknown"}const m=["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"],P= exports.FileIcon =({type:t,variant:e="default",theme:o="light",...l})=>{const s=t.includes("/"),a=s?S(t):void 0,d=_nullishCoalesce((s?t.split("/")[1]:void 0), () => (t)),u=m.includes(d),y=s?m.includes(a):!1,p=u?d:y?a:"empty",n=`${e}_${p}`,f=_react.useMemo.call(void 0, ()=>(r[n]||(r[n]=_react2.default.lazy(()=>Promise.resolve().then(() => _interopRequireWildcard(require(`./${e==="default"?"":`${e}/`}${p}.js`))).then(i=>({default:i[T(p)]})).catch(i=>{throw i}))),r[n]),[n]);return _react2.default.createElement(_react.Suspense,{fallback:null},_react2.default.createElement(f,{...l,theme:o}))};exports.FileIcon = P; exports.SUPPORTED_FILE_TYPES = m; exports.categorizeMimeType = S;
;