File tree Expand file tree Collapse file tree 1 file changed +19
-7
lines changed Expand file tree Collapse file tree 1 file changed +19
-7
lines changed Original file line number Diff line number Diff line change 1
1
import { JSItem , CSSItem , IMarkmap , IMarkmapPlugin } from '../types' ;
2
2
import { arrayFrom , flatMap } from '../util' ;
3
+ import { Markmap } from '../view' ;
4
+
5
+ const errors = { } ;
3
6
4
7
const styles : CSSItem [ ] = [
5
8
{
@@ -41,20 +44,29 @@ function initialize(Markmap: IMarkmap, options): void {
41
44
const lang = code . className . match ( / (?: ^ | \s ) l a n g u a g e - ( \S + ) | $ / ) [ 1 ] ;
42
45
if ( Prism . languages [ lang ] ) {
43
46
Prism . highlightElement ( code ) ;
44
- } else {
47
+ } else if ( ! errors [ lang ] ) {
45
48
return lang ;
46
49
}
47
50
} )
48
51
. filter ( Boolean ) ;
49
- if ( langs . length ) {
50
- Prism . plugins . autoloader . loadLanguages ( langs , ( ) => {
51
- mm . setData ( ) ;
52
- mm . fit ( ) ;
53
- } ) ;
54
- }
52
+ loadLanguagesAndRender ( mm , langs ) ;
55
53
} ) ;
56
54
}
57
55
56
+ async function loadLanguagesAndRender ( mm : Markmap , langs : string [ ] ) : Promise < void > {
57
+ if ( ! langs . length ) return ;
58
+ const { Prism } = window as any ;
59
+ try {
60
+ await new Promise ( ( resolve , reject ) => {
61
+ Prism . plugins . autoloader . loadLanguages ( langs , resolve , reject ) ;
62
+ } ) ;
63
+ } catch ( err ) {
64
+ errors [ err ] = true ;
65
+ }
66
+ mm . setData ( ) ;
67
+ mm . fit ( ) ;
68
+ }
69
+
58
70
export const plugin : IMarkmapPlugin = {
59
71
styles,
60
72
scripts,
You can’t perform that action at this time.
0 commit comments