@@ -338,13 +338,26 @@ export default function App({
338338
339339 // UI Initialization Effect
340340 useEffect ( ( ) => {
341+
341342 updateLang ( )
342- renderSmartPicker ( )
343- renderTable ( )
344- renderAssistant ( )
345- renderComment ( )
346- renderEmojiPicker ( )
347- } , [ updateLang , renderSmartPicker , renderAssistant , renderEmojiPicker , renderTable , renderComment ] )
343+ const renderCustomElements = ( ) => {
344+ renderSmartPicker ( )
345+ renderTable ( )
346+ renderAssistant ( )
347+ renderComment ( )
348+ renderEmojiPicker ( )
349+ }
350+
351+ renderCustomElements ( )
352+
353+ const excalidrawElement = document . querySelector ( '.excalidraw' )
354+ if ( ! excalidrawElement ) return
355+
356+ const observer = new MutationObserver ( renderCustomElements )
357+ observer . observe ( excalidrawElement , { attributes : true , attributeFilter : [ 'class' ] } )
358+
359+ return ( ) => observer . disconnect ( )
360+ } , [ updateLang , renderSmartPicker , renderAssistant , renderComment , renderEmojiPicker , renderTable ] )
348361
349362 const onLibraryChange = useCallback ( async ( items : LibraryItems ) => {
350363 if ( ! isLibraryLoaded ) {
@@ -358,26 +371,6 @@ export default function App({
358371 }
359372 } , [ isLibraryLoaded ] )
360373
361- useEffect ( ( ) => {
362- const excalidrawElement = document . querySelector ( '.excalidraw' )
363- if ( ! excalidrawElement ) return
364-
365- const observer = new MutationObserver ( ( ) => {
366- renderSmartPicker ( )
367- renderTable ( )
368- renderAssistant ( )
369- renderComment ( )
370- renderEmojiPicker ( )
371- } )
372-
373- observer . observe ( excalidrawElement , {
374- attributes : true ,
375- attributeFilter : [ 'class' ] ,
376- } )
377-
378- return ( ) => observer . disconnect ( )
379- } , [ renderEmojiPicker , renderSmartPicker , renderTable , renderAssistant , renderComment ] )
380-
381374 const libraryReturnUrl = encodeURIComponent ( window . location . href )
382375
383376 // Data loading is now handled by useBoardDataManager
0 commit comments