1
1
import type { Emoji , EmojiMartData } from "@emoji-mart/data" ;
2
- import { SearchIndex , init } from "emoji-mart" ;
2
+
3
3
import { checkDefaultInlineContentTypeInSchema } from "../../blocks/defaultBlockTypeGuards" ;
4
4
import { BlockNoteEditor } from "../../editor/BlockNoteEditor" ;
5
5
import { BlockSchema , InlineContentSchema , StyleSchema } from "../../schema" ;
@@ -11,6 +11,8 @@ let data:
11
11
} >
12
12
| undefined ;
13
13
14
+ let emojiMart : typeof import ( "emoji-mart" ) | undefined ;
15
+
14
16
export async function getDefaultEmojiPickerItems <
15
17
BSchema extends BlockSchema ,
16
18
I extends InlineContentSchema ,
@@ -27,16 +29,19 @@ export async function getDefaultEmojiPickerItems<
27
29
// use a dynamic import to encourage bundle-splitting
28
30
// and a smaller initial client bundle size
29
31
data = import ( "@emoji-mart/data" , { assert : { type : "json" } } ) as any ;
32
+
33
+ // load dynamically because emoji-mart doesn't specify type: module and breaks in nodejs
34
+ emojiMart = await import ( "emoji-mart" ) ;
30
35
const emojiMartData = ( await data ) ! . default ;
31
- await init ( { data : emojiMartData } ) ;
36
+ await emojiMart . init ( { data : emojiMartData } ) ;
32
37
}
33
38
34
39
const emojiMartData = ( await data ) ! . default ;
35
40
36
41
const emojisToShow =
37
42
query . trim ( ) === ""
38
43
? Object . values ( emojiMartData . emojis )
39
- : ( ( await SearchIndex . search ( query ) ) as Emoji [ ] ) ;
44
+ : ( ( await emojiMart ! . SearchIndex . search ( query ) ) as Emoji [ ] ) ;
40
45
41
46
return emojisToShow . map ( ( emoji ) => ( {
42
47
id : emoji . skins [ 0 ] . native ,
0 commit comments