UNPKG

@mui/internal-docs-infra

Version:

MUI Infra - internal documentation creation tools.

60 lines (59 loc) 1.39 kB
import { getClassName } from "./hastUtils.mjs"; const BASE_CAPABILITIES = { supportsTypes: false, supportsJsx: false }; /** * Detects language capabilities from a `<code>` element's class list. * Looks for a `language-*` class following standard markdown fenced-code conventions. */ export function getLanguageCapabilities(node) { const classes = getClassName(node); if (!classes) { return BASE_CAPABILITIES; } const langClass = classes.find(c => c.startsWith('language-')); if (!langClass) { return BASE_CAPABILITIES; } const lang = langClass.slice('language-'.length).toLowerCase(); switch (lang) { case 'js': case 'javascript': return { supportsTypes: false, supportsJsx: false, semantics: 'js' }; case 'jsx': return { supportsTypes: false, supportsJsx: true, semantics: 'js' }; case 'ts': case 'typescript': return { supportsTypes: true, supportsJsx: false, semantics: 'js' }; case 'tsx': return { supportsTypes: true, supportsJsx: true, semantics: 'js' }; case 'css': case 'scss': case 'less': case 'sass': return { supportsTypes: false, supportsJsx: false, semantics: 'css' }; default: return BASE_CAPABILITIES; } }