UNPKG

react-shiki

Version:

Syntax highlighter component for react using shiki

54 lines (53 loc) 2.17 kB
import { a as isLoadableLanguage, i as useHighlight, n as isInlineCode, r as rehypeInlineCodeProperty, t as createShikiHighlighterComponent } from "./component-CYq7SnJ0.mjs"; import { createOnigurumaEngine } from "shiki/engine/oniguruma"; import { createJavaScriptRawEngine, createJavaScriptRegexEngine } from "shiki/engine/javascript"; import { bundledLanguages, getSingletonHighlighter } from "shiki/bundle/web"; //#region src/bundles/web.ts /** * Creates a highlighter using the web Shiki bundle with web-focused languages. * Smaller than the full bundle while covering most web development needs. * Includes: HTML, CSS, JS, TS, JSON, Markdown, Vue, JSX, Svelte, etc. */ async function createWebHighlighter(langsToLoad, themesToLoad, engine) { return await getSingletonHighlighter({ langs: langsToLoad.filter((lang) => isLoadableLanguage(lang, bundledLanguages)), themes: themesToLoad, engine: engine ?? createOnigurumaEngine(import("shiki/wasm")) }); } //#endregion //#region src/web.ts /** * Highlight code with shiki (web bundle) * * @param code - Code to highlight * @param lang - Language (bundled or custom) * @param theme - Theme (bundled, multi-theme, or custom) * @param options - react-shiki options + shiki options * @returns Highlighted code as React elements or HTML string * * @example * ```tsx * const highlighted = useShikiHighlighter( * 'const x = 1;', * 'typescript', * { * light: 'github-light', * dark: 'github-dark' * } * ); * ``` * * Web bundle (~3.8MB minified, 695KB gzipped). For other bundles: `react-shiki` or `react-shiki/core` */ const useShikiHighlighter = (code, lang, themeInput, options = {}) => { return useHighlight(code, lang, themeInput, options, createWebHighlighter); }; /** * ShikiHighlighter component using the web bundle. * Includes web-focused languages for balanced size and functionality. */ const ShikiHighlighter = createShikiHighlighterComponent(useShikiHighlighter); //#endregion export { ShikiHighlighter, ShikiHighlighter as default, createJavaScriptRawEngine, createJavaScriptRegexEngine, isInlineCode, rehypeInlineCodeProperty, useShikiHighlighter }; //# sourceMappingURL=web.mjs.map