| 139 | }; |
| 140 | |
| 141 | const getHighlighter = ( |
| 142 | language: BundledLanguage |
| 143 | ): Promise<HighlighterGeneric<BundledLanguage, BundledTheme>> => { |
| 144 | const cached = highlighterCache.get(language); |
| 145 | if (cached) { |
| 146 | return cached; |
| 147 | } |
| 148 | |
| 149 | const highlighterPromise = createHighlighter({ |
| 150 | langs: [language], |
| 151 | themes: ["github-light", "github-dark"], |
| 152 | }); |
| 153 | |
| 154 | highlighterCache.set(language, highlighterPromise); |
| 155 | return highlighterPromise; |
| 156 | }; |
| 157 | |
| 158 | // Create raw tokens for immediate display while highlighting loads |
| 159 | const createRawTokens = (code: string): TokenizedCode => ({ |