File tree Expand file tree Collapse file tree
packages/vscode-extension/src/webview Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -24,7 +24,7 @@ const IFRAME_READY_TYPES: ReadonlySet<string> = new Set([
2424export const setupThemeSync = (
2525 iframe : HTMLIFrameElement ,
2626 appOrigin : string
27- ) : ( ( ) => void ) => {
27+ ) : void => {
2828 const sendTheme = ( ) : void => {
2929 iframe . contentWindow ?. postMessage (
3030 { type : HOST_MESSAGE_TYPE . THEME , payload : extractTheme ( ) } ,
@@ -39,14 +39,15 @@ export const setupThemeSync = (
3939 } ;
4040 window . addEventListener ( 'message' , onIframeReady ) ;
4141
42- const observer = new MutationObserver ( sendTheme ) ;
42+ let rafId = 0 ;
43+ const sendThemeDebounced = ( ) : void => {
44+ cancelAnimationFrame ( rafId ) ;
45+ rafId = requestAnimationFrame ( sendTheme ) ;
46+ } ;
47+
48+ const observer = new MutationObserver ( sendThemeDebounced ) ;
4349 observer . observe ( document . body , {
4450 attributes : true ,
4551 attributeFilter : [ 'class' , 'style' ] ,
4652 } ) ;
47-
48- return ( ) => {
49- window . removeEventListener ( 'message' , onIframeReady ) ;
50- observer . disconnect ( ) ;
51- } ;
5253} ;
You can’t perform that action at this time.
0 commit comments