@@ -9,13 +9,42 @@ import {
99} from "../../schema/index.js" ;
1010import { DefaultGridSuggestionItem } from "./DefaultGridSuggestionItem.js" ;
1111
12- let data :
12+ // Temporary fix for https://github.com/missive/emoji-mart/pull/929
13+ let emojiLoadingPromise :
1314 | Promise < {
14- default : EmojiMartData ;
15+ emojiMart : typeof import ( "emoji-mart" ) ;
16+ emojiData : EmojiMartData ;
1517 } >
1618 | undefined ;
1719
18- let emojiMart : typeof import ( "emoji-mart" ) | undefined ;
20+ async function loadEmojiMart ( ) {
21+ if ( emojiLoadingPromise ) {
22+ return emojiLoadingPromise ;
23+ }
24+
25+ emojiLoadingPromise = ( async ( ) => {
26+ // load dynamically because emoji-mart doesn't specify type: module and breaks in nodejs
27+ const [ emojiMartModule , emojiDataModule ] = await Promise . all ( [
28+ import ( "emoji-mart" ) ,
29+ // use a dynamic import to encourage bundle-splitting
30+ // and a smaller initial client bundle size
31+ import ( "@emoji-mart/data" ) ,
32+ ] ) ;
33+
34+ const emojiMart =
35+ "default" in emojiMartModule ? emojiMartModule . default : emojiMartModule ;
36+ const emojiData =
37+ "default" in emojiDataModule
38+ ? ( emojiDataModule . default as EmojiMartData )
39+ : ( emojiDataModule as EmojiMartData ) ;
40+
41+ await emojiMart . init ( { data : emojiData } ) ;
42+
43+ return { emojiMart, emojiData } ;
44+ } ) ( ) ;
45+
46+ return emojiLoadingPromise ;
47+ }
1948
2049export async function getDefaultEmojiPickerItems <
2150 BSchema extends BlockSchema ,
@@ -29,23 +58,11 @@ export async function getDefaultEmojiPickerItems<
2958 return [ ] ;
3059 }
3160
32- if ( ! data ) {
33- // use a dynamic import to encourage bundle-splitting
34- // and a smaller initial client bundle size
35-
36- data = import ( "@emoji-mart/data" ) as any ;
37-
38- // load dynamically because emoji-mart doesn't specify type: module and breaks in nodejs
39- emojiMart = await import ( "emoji-mart" ) ;
40- const emojiMartData = ( await data ) ! . default ;
41- await emojiMart . init ( { data : emojiMartData } ) ;
42- }
43-
44- const emojiMartData = ( await data ) ! . default ;
61+ const { emojiData, emojiMart } = await loadEmojiMart ( ) ;
4562
4663 const emojisToShow =
4764 query . trim ( ) === ""
48- ? Object . values ( emojiMartData . emojis )
65+ ? Object . values ( emojiData . emojis )
4966 : ( ( await emojiMart ! . SearchIndex . search ( query ) ) as Emoji [ ] ) ;
5067
5168 return emojisToShow . map ( ( emoji ) => ( {
0 commit comments