@@ -367,101 +367,100 @@ const SuperDocTemplateBuilder = forwardRef<
367367 const initSuperDoc = async ( ) => {
368368 const { SuperDoc } = await import ( 'superdoc' ) ;
369369
370- const config : Record < string , unknown > = {
371- selector : containerRef . current ! ,
372- document : document ?. source ,
373- documentMode : document ?. mode || 'editing' ,
374- onReady : ( ) => {
375- if ( instance . activeEditor ) {
376- const editor = instance . activeEditor ;
377-
378- editor . on ( 'update' , ( { editor : e } : any ) => {
379- const { state } = e ;
380- const { from } = state . selection ;
381-
382- if ( from >= trigger . length ) {
383- const triggerStart = from - trigger . length ;
384- const text = state . doc . textBetween ( triggerStart , from ) ;
385-
386- if ( text === trigger ) {
387- const coords = e . view . coordsAtPos ( from ) ;
388- const bounds = clampToViewport ( new DOMRect ( coords . left , coords . top , 0 , 0 ) ) ;
389-
390- const cleanup = ( ) => {
391- const editor = superdocRef . current ?. activeEditor ;
392- if ( ! editor ) return ;
393- const currentPos = editor . state . selection . from ;
394- const tr = editor . state . tr . delete ( triggerStart , currentPos ) ;
395- ( editor as any ) . view . dispatch ( tr ) ;
396- } ;
397-
398- triggerCleanupRef . current = cleanup ;
399- menuTriggerFromRef . current = from ;
400- setMenuPosition ( bounds ) ;
401- setMenuVisible ( true ) ;
402- resetMenuFilter ( ) ;
403-
404- onTrigger ?.( {
405- position : { from : triggerStart , to : from } ,
406- bounds,
407- cleanup,
408- } ) ;
409-
410- return ;
411- }
412- }
413-
414- if ( ! menuVisibleRef . current ) {
415- return ;
416- }
370+ const modules : Record < string , unknown > = {
371+ comments : false ,
372+ ...( toolbarSettings && {
373+ toolbar : {
374+ selector : toolbarSettings . selector ,
375+ toolbarGroups : toolbarSettings . config . toolbarGroups || [ 'center' ] ,
376+ excludeItems : toolbarSettings . config . excludeItems || [ ] ,
377+ ...toolbarSettings . config ,
378+ } ,
379+ } ) ,
380+ } ;
417381
418- if ( menuTriggerFromRef . current == null ) {
419- setMenuVisible ( false ) ;
382+ const handleReady = ( ) => {
383+ if ( instance . activeEditor ) {
384+ const editor = instance . activeEditor ;
385+
386+ editor . on ( 'update' , ( { editor : e } : any ) => {
387+ const { state } = e ;
388+ const { from } = state . selection ;
389+
390+ if ( from >= trigger . length ) {
391+ const triggerStart = from - trigger . length ;
392+ const text = state . doc . textBetween ( triggerStart , from ) ;
393+
394+ if ( text === trigger ) {
395+ const coords = e . view . coordsAtPos ( from ) ;
396+ const bounds = clampToViewport ( new DOMRect ( coords . left , coords . top , 0 , 0 ) ) ;
397+
398+ const cleanup = ( ) => {
399+ const editor = superdocRef . current ?. activeEditor ;
400+ if ( ! editor ) return ;
401+ const currentPos = editor . state . selection . from ;
402+ const tr = editor . state . tr . delete ( triggerStart , currentPos ) ;
403+ ( editor as any ) . view . dispatch ( tr ) ;
404+ } ;
405+
406+ triggerCleanupRef . current = cleanup ;
407+ menuTriggerFromRef . current = from ;
408+ setMenuPosition ( bounds ) ;
409+ setMenuVisible ( true ) ;
420410 resetMenuFilter ( ) ;
421- return ;
422- }
423411
424- if ( from < menuTriggerFromRef . current ) {
425- setMenuVisible ( false ) ;
426- menuTriggerFromRef . current = null ;
427- resetMenuFilter ( ) ;
412+ onTrigger ?.( {
413+ position : { from : triggerStart , to : from } ,
414+ bounds,
415+ cleanup,
416+ } ) ;
417+
428418 return ;
429419 }
420+ }
421+
422+ if ( ! menuVisibleRef . current ) {
423+ return ;
424+ }
425+
426+ if ( menuTriggerFromRef . current == null ) {
427+ setMenuVisible ( false ) ;
428+ resetMenuFilter ( ) ;
429+ return ;
430+ }
431+
432+ if ( from < menuTriggerFromRef . current ) {
433+ setMenuVisible ( false ) ;
434+ menuTriggerFromRef . current = null ;
435+ resetMenuFilter ( ) ;
436+ return ;
437+ }
438+
439+ const queryText = state . doc . textBetween ( menuTriggerFromRef . current , from ) ;
440+ updateMenuFilter ( queryText ) ;
441+
442+ const coords = e . view . coordsAtPos ( from ) ;
443+ const bounds = clampToViewport ( new DOMRect ( coords . left , coords . top , 0 , 0 ) ) ;
444+ setMenuPosition ( bounds ) ;
445+ } ) ;
430446
431- const queryText = state . doc . textBetween ( menuTriggerFromRef . current , from ) ;
432- updateMenuFilter ( queryText ) ;
433-
434- const coords = e . view . coordsAtPos ( from ) ;
435- const bounds = clampToViewport ( new DOMRect ( coords . left , coords . top , 0 , 0 ) ) ;
436- setMenuPosition ( bounds ) ;
437- } ) ;
438-
439- editor . on ( 'update' , ( ) => {
440- discoverFields ( editor ) ;
441- } ) ;
442-
447+ editor . on ( 'update' , ( ) => {
443448 discoverFields ( editor ) ;
444- }
449+ } ) ;
450+
451+ discoverFields ( editor ) ;
452+ }
445453
446- onReady ?.( ) ;
447- } ,
454+ onReady ?.( ) ;
448455 } ;
449456
450457 const instance = new SuperDoc ( {
451458 selector : containerRef . current ! ,
459+ document : document ?. source ,
452460 documentMode : document ?. mode || 'editing' ,
453- ...config ,
454- ...( toolbarSettings && {
455- toolbar : toolbarSettings . selector ,
456- modules : {
457- toolbar : {
458- selector : toolbarSettings . selector ,
459- toolbarGroups : toolbarSettings . config . toolbarGroups || [ 'center' ] ,
460- excludeItems : toolbarSettings . config . excludeItems || [ ] ,
461- ...toolbarSettings . config ,
462- } ,
463- } ,
464- } ) ,
461+ modules,
462+ toolbar : toolbarSettings ?. selector ,
463+ onReady : handleReady ,
465464 } ) ;
466465
467466 superdocRef . current = instance ;
0 commit comments