@@ -3131,45 +3131,40 @@ const registerMenuButton = (menu: HTMLElement, button: HTMLElement) => {
31313131} ;
31323132
31333133const handleAppMenuProject = ( ) => {
3134- const menuProjectContainer = UI . getAppMenuProjectScroller ( ) ;
3135- const menuProjectButton = UI . getAppMenuProjectButton ( ) ;
3136- if ( ! menuProjectContainer || ! menuProjectButton ) return ;
3137-
3138- const html = isMac ( )
3139- ? menuProjectHTML . replace ( / < k b d > C t r l < \/ k b d > / g, '<kbd>⌘</kbd>' )
3140- : menuProjectHTML ;
3141- menuProjectContainer . innerHTML = html ;
3142- translateElement ( menuProjectContainer ) ;
3143- // adjustFontSize(menuProjectContainer);
3144- registerMenuButton ( menuProjectContainer , menuProjectButton ) ;
3134+ setupAppMenu ( UI . getAppMenuProjectScroller ( ) , UI . getAppMenuProjectButton ( ) , menuProjectHTML ) ;
31453135} ;
31463136
31473137const handleAppMenuSettings = ( ) => {
3148- const menuSettingsContainer = UI . getAppMenuSettingsScroller ( ) ;
3149- const menuSettingsButton = UI . getAppMenuSettingsButton ( ) ;
3150- if ( ! menuSettingsContainer || ! menuSettingsButton ) return ;
3151-
3152- const html = isMac ( )
3153- ? menuSettingsHTML . replace ( / < k b d > C t r l < \/ k b d > / g, '<kbd>⌘</kbd>' )
3154- : menuSettingsHTML ;
3155- menuSettingsContainer . innerHTML = html ;
3156-
3157- translateElement ( menuSettingsContainer ) ;
3158- adjustFontSize ( menuSettingsContainer ) ;
3159- registerMenuButton ( menuSettingsContainer , menuSettingsButton ) ;
3138+ setupAppMenu (
3139+ UI . getAppMenuSettingsScroller ( ) ,
3140+ UI . getAppMenuSettingsButton ( ) ,
3141+ menuSettingsHTML ,
3142+ true ,
3143+ ) ;
31603144} ;
31613145
31623146const handleAppMenuHelp = ( ) => {
3163- const menuHelpContainer = UI . getAppMenuHelpScroller ( ) ;
3164- const menuHelpButton = UI . getAppMenuHelpButton ( ) ;
3165- if ( ! menuHelpContainer || ! menuHelpButton ) return ;
3147+ setupAppMenu ( UI . getAppMenuHelpScroller ( ) , UI . getAppMenuHelpButton ( ) , menuHelpHTML ) ;
3148+ } ;
3149+
3150+ const setupAppMenu = (
3151+ container : HTMLElement | null ,
3152+ button : HTMLElement | null ,
3153+ menuHTML : string ,
3154+ shouldAdjustFontSize = false ,
3155+ ) => {
3156+ if ( ! container || ! button ) return ;
3157+
3158+ const html = isMac ( ) ? menuHTML . replaceAll ( '<kbd>Ctrl</kbd>' , '<kbd>⌘</kbd>' ) : menuHTML ;
3159+
3160+ container . innerHTML = html ;
3161+ translateElement ( container ) ;
31663162
3167- const html = isMac ( ) ? menuHelpHTML . replace ( / < k b d > C t r l < \/ k b d > / g, '<kbd>⌘</kbd>' ) : menuHelpHTML ;
3168- menuHelpContainer . innerHTML = html ;
3169- menuHelpContainer . classList . add ( 'hidden' ) ;
3170- translateElement ( menuHelpContainer ) ;
3171- // adjustFontSize(menuHelpContainer);
3172- registerMenuButton ( menuHelpContainer , menuHelpButton ) ;
3163+ if ( shouldAdjustFontSize ) {
3164+ adjustFontSize ( container ) ;
3165+ }
3166+
3167+ registerMenuButton ( container , button ) ;
31733168} ;
31743169
31753170/**
@@ -4808,14 +4803,23 @@ const handleResultLoading = () => {
48084803 eventsManager . addEventListener ( window , 'message' , showResultModeDrawer ) ;
48094804} ;
48104805
4806+ const createToolButton = ( id : string , title : string , innerHTML : string ) => {
4807+ const btn = document . createElement ( 'div' ) ;
4808+ btn . id = id ;
4809+ btn . classList . add ( 'tool-buttons' ) ;
4810+ btn . title = title ;
4811+ btn . style . pointerEvents = 'all' ; // override setting to 'none' on toolspane bar
4812+ btn . innerHTML = innerHTML ;
4813+ UI . getToolspaneTitles ( ) ?. appendChild ( btn ) ;
4814+ return btn ;
4815+ } ;
4816+
48114817const handleResultPopup = ( ) => {
4812- const popupBtn = document . createElement ( 'div' ) ;
4813- popupBtn . id = 'result-popup-btn' ;
4814- popupBtn . classList . add ( 'tool-buttons' ) ;
4815- popupBtn . title = window . deps . translateString ( 'core.result.hint' , 'Show result in new window' ) ;
4816- popupBtn . style . pointerEvents = 'all' ; // override setting to 'none' on toolspane bar
4817- const iconCSS = '<i class="icon-window-new"></i>' ;
4818- popupBtn . innerHTML = `<button id="show-result">${ iconCSS } </button>` ;
4818+ const popupBtn = createToolButton (
4819+ 'result-popup-btn' ,
4820+ window . deps . translateString ( 'core.result.hint' , 'Show result in new window' ) ,
4821+ `<button id="show-result"><i class="icon-window-new"></i></button>` ,
4822+ ) ;
48194823 let url : string | undefined ;
48204824 const openWindow = async ( ) => {
48214825 if ( resultPopup && ! resultPopup . closed ) {
@@ -4848,17 +4852,14 @@ const handleResultPopup = () => {
48484852} ;
48494853
48504854const handleResultZoom = ( ) => {
4851- const zoomBtn = document . createElement ( 'div' ) ;
4852- zoomBtn . id = 'zoom-button' ;
4853- zoomBtn . classList . add ( 'tool-buttons' ) ;
4854- zoomBtn . title = window . deps . translateString ( 'core.zoom.hint' , 'Zoom' ) + ' (Ctrl/Cmd + Alt + Z)' ;
4855- zoomBtn . style . pointerEvents = 'all' ; // override setting to 'none' on toolspane bar
4856- zoomBtn . innerHTML = `
4857- <button class="text">
4858- <span id="zoom-value">${ String ( Number ( getConfig ( ) . zoom ) ) } </span>
4859- ×
4860- </button>` ;
4861-
4855+ const zoomBtn = createToolButton (
4856+ 'zoom-button' ,
4857+ window . deps . translateString ( 'core.zoom.hint' , 'Zoom' ) + ' (Ctrl/Cmd + Alt + Z)' ,
4858+ `<button class="text">
4859+ <span id="zoom-value">${ String ( Number ( getConfig ( ) . zoom ) ) } </span>
4860+ ×
4861+ </button>` ,
4862+ ) ;
48624863 const toggleZoom = ( ) => {
48634864 const config = getConfig ( ) ;
48644865 const currentZoom = config . zoom ;
@@ -4876,13 +4877,11 @@ const handleResultZoom = () => {
48764877} ;
48774878
48784879const handleBroadcastStatus = ( ) => {
4879- const broadcastStatusBtn = document . createElement ( 'div' ) ;
4880- broadcastStatusBtn . id = 'broadcast-status-btn' ;
4881- broadcastStatusBtn . classList . add ( 'tool-buttons' ) ;
4882- broadcastStatusBtn . title = window . deps . translateString ( 'core.broadcast.heading' , 'Broadcast' ) ;
4883- broadcastStatusBtn . style . pointerEvents = 'all' ; // override setting to 'none' on toolspane bar
4884- const iconCSS = '<i class="icon-broadcast"></i>' ;
4885- broadcastStatusBtn . innerHTML = `<button id="broadcast-status">${ iconCSS } <span class="mark"></span></button>` ;
4880+ const broadcastStatusBtn = createToolButton (
4881+ 'broadcast-status-btn' ,
4882+ window . deps . translateString ( 'core.broadcast.heading' , 'Broadcast' ) ,
4883+ `<button id="broadcast-status"><i class="icon-broadcast"></i><span class="mark"></span></button>` ,
4884+ ) ;
48864885
48874886 const showBroadcast = ( ) => {
48884887 showScreen ( 'broadcast' ) ;
0 commit comments