File tree Expand file tree Collapse file tree
src/lib/components/chat/Messages/Markdown Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ <script context =" module" lang =" ts" >
2+ import { marked , type Token } from ' marked' ;
3+ import { decode } from ' html-entities' ;
4+
5+ const _detailTokensCache = new Map <string , Token []>();
6+ const DETAIL_CACHE_MAX = 500 ;
7+
8+ function getCachedDetailTokens(text : string ): Token [] {
9+ if (_detailTokensCache .has (text )) return _detailTokensCache .get (text )! ;
10+ const tokens = marked .lexer (decode (text ));
11+ if (_detailTokensCache .size >= DETAIL_CACHE_MAX ) {
12+ _detailTokensCache .delete (_detailTokensCache .keys ().next ().value ! );
13+ }
14+ _detailTokensCache .set (text , tokens );
15+ return tokens ;
16+ }
17+ </script >
18+
119<script lang =" ts" >
220 import { decode } from ' html-entities' ;
321 import { onMount , getContext } from ' svelte' ;
398416 <div class =" mb-1.5" slot =" content" >
399417 <svelte:self
400418 id ={` ${id }-${tokenIdx }-${detailIdx }-d ` }
401- tokens ={marked . lexer ( decode ( detailToken .text ) )}
419+ tokens ={getCachedDetailTokens ( detailToken .text )}
402420 attributes ={detailToken ?.attributes }
403421 {done }
404422 {editCodeBlock }
445463 <div class =" mb-1.5" slot =" content" >
446464 <svelte:self
447465 id ={` ${id }-${tokenIdx }-d ` }
448- tokens ={marked . lexer ( decode ( token .text ) )}
466+ tokens ={getCachedDetailTokens ( token .text )}
449467 attributes ={token ?.attributes }
450468 {done }
451469 {editCodeBlock }
You can’t perform that action at this time.
0 commit comments