@@ -385,9 +385,12 @@ function buildRow(options: {
385385 return rowHtml ;
386386}
387387
388- export async function refresh (
389- layoutName : string = Config . layout
390- ) : Promise < void > {
388+ export async function refresh ( ) : Promise < void > {
389+ const layoutName =
390+ Config . keymapLayout === "overrideSync"
391+ ? Config . keymapLayout
392+ : Config . layout ;
393+
391394 if ( Config . keymapMode === "off" ) return ;
392395 if ( ActivePage . get ( ) !== "test" ) return ;
393396 if ( ! layoutName ) return ;
@@ -581,29 +584,19 @@ async function updateLegends(): Promise<void> {
581584 key . textContent = character ?? "" ;
582585 }
583586}
587+ let ignoreConfigEvent = false ;
584588
585- ConfigEvent . subscribe ( ( eventKey , newValue ) => {
586- if ( eventKey === "layout" && Config . keymapLayout === "overrideSync" ) {
587- void refresh ( Config . keymapLayout ) ;
588- }
589- if (
590- eventKey === "keymapLayout" ||
591- eventKey === "keymapStyle" ||
592- eventKey === "keymapShowTopRow" ||
593- eventKey === "keymapMode"
594- ) {
595- void refresh ( ) ;
596- }
597- if ( eventKey === "keymapMode" ) {
589+ ConfigEvent . subscribe ( ( eventKey ) => {
590+ const handleMode = ( ) : void => {
598591 $ ( ".activeKey" ) . removeClass ( "activeKey" ) ;
599592 $ ( ".keymapKey" ) . attr ( "style" , "" ) ;
600- newValue === "off" ? hide ( ) : show ( ) ;
601- }
602- if ( eventKey === "keymapSize" ) {
603- $ ( "#keymap" ) . css ( "zoom" , newValue as string ) ;
604- }
605- if ( eventKey === "keymapLegendStyle" ) {
606- let style = newValue as string ;
593+ Config . keymapMode === "off" ? hide ( ) : show ( ) ;
594+ } ;
595+ const handleSize = ( ) : void => {
596+ $ ( "#keymap" ) . css ( "zoom" , Config . keymapSize ) ;
597+ } ;
598+ const handleLegendStyle = ( ) : void => {
599+ let style = Config . keymapLegendStyle ;
607600
608601 // Remove existing styles
609602 const keymapLegendStyles = [ "lowercase" , "uppercase" , "blank" , "dynamic" ] ;
@@ -628,6 +621,37 @@ ConfigEvent.subscribe((eventKey, newValue) => {
628621
629622 // Update and save to cookie for persistence
630623 $ ( ".keymapLegendStyle" ) . addClass ( style ) ;
624+ } ;
625+
626+ if ( eventKey === "fullConfigChange" ) {
627+ ignoreConfigEvent = true ;
628+ }
629+ if ( eventKey === "fullConfigChangeFinished" ) {
630+ ignoreConfigEvent = false ;
631+ void refresh ( ) ;
632+ handleMode ( ) ;
633+ handleSize ( ) ;
634+ handleLegendStyle ( ) ;
635+ }
636+ if ( ignoreConfigEvent ) return ;
637+
638+ if (
639+ ( eventKey === "layout" && Config . keymapLayout === "overrideSync" ) ||
640+ eventKey === "keymapLayout" ||
641+ eventKey === "keymapStyle" ||
642+ eventKey === "keymapShowTopRow" ||
643+ eventKey === "keymapMode"
644+ ) {
645+ void refresh ( ) ;
646+ }
647+ if ( eventKey === "keymapMode" ) {
648+ handleMode ( ) ;
649+ }
650+ if ( eventKey === "keymapSize" ) {
651+ handleSize ( ) ;
652+ }
653+ if ( eventKey === "keymapLegendStyle" ) {
654+ handleLegendStyle ( ) ;
631655 }
632656} ) ;
633657
0 commit comments