@@ -15,7 +15,7 @@ import type {TransformFn} from '../core/markdown/ProseMirrorTransformer';
1515import type { DynamicModifiers } from '../core/types/dynamicModifiers' ;
1616import type { ReactRenderStorage , RenderStorage } from '../extensions' ;
1717import { i18n } from '../i18n/bundle' ;
18- import { logger } from '../logger' ;
18+ import { type Logger2 , globalLogger } from '../logger' ;
1919import { createCodemirror } from '../markup' ;
2020import { getAutocompleteConfig } from '../markup/codemirror/autocomplete' ;
2121import { type CodeEditor , Editor as MarkupEditor } from '../markup/editor' ;
@@ -61,6 +61,7 @@ interface EventMapInt extends EventMap {
6161}
6262
6363export interface Editor extends Receiver < EventMap > , CommonEditor {
64+ readonly logger : Logger2 . LogReceiver ;
6465 readonly currentMode : EditorMode ;
6566 readonly toolbarVisible : boolean ;
6667
@@ -79,6 +80,7 @@ export interface EditorInt
7980 Receiver < EventMapInt > ,
8081 ActionStorage ,
8182 CodeEditor {
83+ readonly logger : Logger2 . ILogger ;
8284 readonly currentMode : EditorMode ;
8385 readonly toolbarVisible : boolean ;
8486 readonly splitModeEnabled : boolean ;
@@ -126,6 +128,7 @@ export type EditorOptions = Pick<
126128 MarkdownEditorOptions ,
127129 'md' | 'initial' | 'handlers' | 'experimental' | 'markupConfig' | 'wysiwygConfig'
128130> & {
131+ logger : Logger2 . ILogger ;
129132 renderStorage : ReactRenderStorage ;
130133 preset : EditorPreset ;
131134 directiveSyntax : DirectiveSyntaxContext ;
@@ -134,6 +137,7 @@ export type EditorOptions = Pick<
134137
135138/** @internal */
136139export class EditorImpl extends SafeEventEmitter < EventMapInt > implements EditorInt {
140+ #logger: Logger2 . ILogger ;
137141 #markup: MarkupString ;
138142 #editorMode: EditorMode ;
139143 #toolbarVisible: boolean ;
@@ -167,6 +171,10 @@ export class EditorImpl extends SafeEventEmitter<EventMapInt> implements EditorI
167171 return this . #wysiwygEditor?. view ;
168172 }
169173
174+ get logger ( ) : Logger2 . ILogger {
175+ return this . #logger;
176+ }
177+
170178 get currentMode ( ) : EditorMode {
171179 return this . #editorMode;
172180 }
@@ -255,6 +263,7 @@ export class EditorImpl extends SafeEventEmitter<EventMapInt> implements EditorI
255263 this . #preset === 'zero' || this . #preset === 'commonmark' ? this . #preset : 'default' ;
256264 this . #wysiwygEditor = new WysiwygEditor ( {
257265 mdPreset,
266+ logger : this . logger . nested ( { mode : 'wysiwyg' } ) ,
258267 initialContent : this . #markup,
259268 extensions : this . #extensions,
260269 pmTransformers : this . #pmTransformers,
@@ -275,6 +284,7 @@ export class EditorImpl extends SafeEventEmitter<EventMapInt> implements EditorI
275284 this . #markupEditor = new MarkupEditor (
276285 createCodemirror ( {
277286 doc : this . #markup,
287+ logger : this . logger . nested ( { mode : 'markup' } ) ,
278288 placeholder : this . #markupConfig. placeholder ?? i18n ( 'markup_placeholder' ) ,
279289 onCancel : ( ) => this . emit ( 'cancel' , null ) ,
280290 onSubmit : ( ) => this . emit ( 'submit' , null ) ,
@@ -326,7 +336,14 @@ export class EditorImpl extends SafeEventEmitter<EventMapInt> implements EditorI
326336 }
327337
328338 constructor ( opts : EditorOptions ) {
329- super ( { onError : logger . error . bind ( logger ) } ) ;
339+ const { logger} = opts ;
340+
341+ super ( {
342+ onError : ( error ) => {
343+ logger . error ( error ) ;
344+ globalLogger . error ( error ) ;
345+ } ,
346+ } ) ;
330347
331348 const {
332349 md = { } ,
@@ -337,8 +354,11 @@ export class EditorImpl extends SafeEventEmitter<EventMapInt> implements EditorI
337354 wysiwygConfig = { } ,
338355 } = opts ;
339356
357+ this . #logger = logger ;
340358 this . #modifiers = experimental . preserveMarkupFormatting
341- ? createDynamicModifiers ( new MarkupManager ( ) )
359+ ? createDynamicModifiers (
360+ new MarkupManager ( this . logger . nested ( { module : 'markup-manager' } ) ) ,
361+ )
342362 : undefined ;
343363
344364 this . #editorMode = initial . mode ?? 'wysiwyg' ;
@@ -408,6 +428,13 @@ export class EditorImpl extends SafeEventEmitter<EventMapInt> implements EditorI
408428 return ;
409429 }
410430
431+ this . logger . event ( {
432+ event : 'mode-change' ,
433+ prevMode : this . #editorMode,
434+ nextMode : opts . mode ,
435+ reason : opts . reason ,
436+ } ) ;
437+
411438 this . currentMode = opts . mode ;
412439 this . emit ( 'rerender' , null ) ;
413440
0 commit comments