@@ -33,8 +33,19 @@ export interface UserFeedbackPayload {
3333 error ?: unknown ;
3434}
3535
36+ /**
37+ * Payload for the 'fallback-mode-changed' event.
38+ */
39+ export interface FallbackModeChangedPayload {
40+ /**
41+ * Whether fallback mode is now active.
42+ */
43+ isInFallbackMode : boolean ;
44+ }
45+
3646export enum CoreEvent {
3747 UserFeedback = 'user-feedback' ,
48+ FallbackModeChanged = 'fallback-mode-changed' ,
3849}
3950
4051export class CoreEventEmitter extends EventEmitter {
@@ -66,6 +77,15 @@ export class CoreEventEmitter extends EventEmitter {
6677 }
6778 }
6879
80+ /**
81+ * Notifies subscribers that fallback mode has changed.
82+ * This is synchronous and doesn't use backlog (UI should already be initialized).
83+ */
84+ emitFallbackModeChanged ( isInFallbackMode : boolean ) : void {
85+ const payload : FallbackModeChangedPayload = { isInFallbackMode } ;
86+ this . emit ( CoreEvent . FallbackModeChanged , payload ) ;
87+ }
88+
6989 /**
7090 * Flushes buffered messages. Call this immediately after primary UI listener
7191 * subscribes.
@@ -82,6 +102,10 @@ export class CoreEventEmitter extends EventEmitter {
82102 event : CoreEvent . UserFeedback ,
83103 listener : ( payload : UserFeedbackPayload ) => void ,
84104 ) : this;
105+ override on (
106+ event : CoreEvent . FallbackModeChanged ,
107+ listener : ( payload : FallbackModeChangedPayload ) => void ,
108+ ) : this;
85109 override on (
86110 event : string | symbol ,
87111 // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -94,6 +118,10 @@ export class CoreEventEmitter extends EventEmitter {
94118 event : CoreEvent . UserFeedback ,
95119 listener : ( payload : UserFeedbackPayload ) => void ,
96120 ) : this;
121+ override off (
122+ event : CoreEvent . FallbackModeChanged ,
123+ listener : ( payload : FallbackModeChangedPayload ) => void ,
124+ ) : this;
97125 override off (
98126 event : string | symbol ,
99127 // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -106,6 +134,10 @@ export class CoreEventEmitter extends EventEmitter {
106134 event : CoreEvent . UserFeedback ,
107135 payload : UserFeedbackPayload ,
108136 ) : boolean ;
137+ override emit (
138+ event : CoreEvent . FallbackModeChanged ,
139+ payload : FallbackModeChangedPayload ,
140+ ) : boolean ;
109141 // eslint-disable-next-line @typescript-eslint/no-explicit-any
110142 override emit ( event : string | symbol , ...args : any [ ] ) : boolean {
111143 return super . emit ( event , ...args ) ;
0 commit comments