Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
113 changes: 56 additions & 57 deletions src/livecodes/core.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3131,45 +3131,40 @@
};

const handleAppMenuProject = () => {
const menuProjectContainer = UI.getAppMenuProjectScroller();
const menuProjectButton = UI.getAppMenuProjectButton();
if (!menuProjectContainer || !menuProjectButton) return;

const html = isMac()
? menuProjectHTML.replace(/<kbd>Ctrl<\/kbd>/g, '<kbd>⌘</kbd>')
: menuProjectHTML;
menuProjectContainer.innerHTML = html;
translateElement(menuProjectContainer);
// adjustFontSize(menuProjectContainer);
registerMenuButton(menuProjectContainer, menuProjectButton);
setupAppMenu(UI.getAppMenuProjectScroller(), UI.getAppMenuProjectButton(), menuProjectHTML);
};

const handleAppMenuSettings = () => {
const menuSettingsContainer = UI.getAppMenuSettingsScroller();
const menuSettingsButton = UI.getAppMenuSettingsButton();
if (!menuSettingsContainer || !menuSettingsButton) return;

const html = isMac()
? menuSettingsHTML.replace(/<kbd>Ctrl<\/kbd>/g, '<kbd>⌘</kbd>')
: menuSettingsHTML;
menuSettingsContainer.innerHTML = html;

translateElement(menuSettingsContainer);
adjustFontSize(menuSettingsContainer);
registerMenuButton(menuSettingsContainer, menuSettingsButton);
setupAppMenu(
UI.getAppMenuSettingsScroller(),
UI.getAppMenuSettingsButton(),
menuSettingsHTML,
true,
);
};

const handleAppMenuHelp = () => {
const menuHelpContainer = UI.getAppMenuHelpScroller();
const menuHelpButton = UI.getAppMenuHelpButton();
if (!menuHelpContainer || !menuHelpButton) return;
setupAppMenu(UI.getAppMenuHelpScroller(), UI.getAppMenuHelpButton(), menuHelpHTML);
};

const setupAppMenu = (
container: HTMLElement | null,
button: HTMLElement | null,
menuHTML: string,
shouldAdjustFontSize = false,
) => {
if (!container || !button) return;

const html = isMac() ? menuHTML.replaceAll('<kbd>Ctrl</kbd>', '<kbd>⌘</kbd>') : menuHTML;

container.innerHTML = html;
translateElement(container);

const html = isMac() ? menuHelpHTML.replace(/<kbd>Ctrl<\/kbd>/g, '<kbd>⌘</kbd>') : menuHelpHTML;
menuHelpContainer.innerHTML = html;
menuHelpContainer.classList.add('hidden');
translateElement(menuHelpContainer);
// adjustFontSize(menuHelpContainer);
registerMenuButton(menuHelpContainer, menuHelpButton);
if (shouldAdjustFontSize) {
adjustFontSize(container);
}

registerMenuButton(container, button);
};

/**
Expand Down Expand Up @@ -4808,14 +4803,23 @@
eventsManager.addEventListener(window, 'message', showResultModeDrawer);
};

const createToolButton = (id: string, title: string, innerHTML: string) => {
const btn = document.createElement('div');
btn.id = id;
btn.classList.add('tool-buttons');
btn.title = title;
btn.style.pointerEvents = 'all'; // override setting to 'none' on toolspane bar
btn.innerHTML = innerHTML;
UI.getToolspaneTitles()?.appendChild(btn);
return btn;
};

const handleResultPopup = () => {
const popupBtn = document.createElement('div');
popupBtn.id = 'result-popup-btn';
popupBtn.classList.add('tool-buttons');
popupBtn.title = window.deps.translateString('core.result.hint', 'Show result in new window');
popupBtn.style.pointerEvents = 'all'; // override setting to 'none' on toolspane bar
const iconCSS = '<i class="icon-window-new"></i>';
popupBtn.innerHTML = `<button id="show-result">${iconCSS}</button>`;
const popupBtn = createToolButton(
'result-popup-btn',
window.deps.translateString('core.result.hint', 'Show result in new window'),

Check warning on line 4820 in src/livecodes/core.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer `globalThis` over `window`.

See more on https://sonarcloud.io/project/issues?id=live-codes_livecodes&issues=AZr7lghCecK5yz9m4o4z&open=AZr7lghCecK5yz9m4o4z&pullRequest=928
`<button id="show-result"><i class="icon-window-new"></i></button>`,
);
let url: string | undefined;
const openWindow = async () => {
if (resultPopup && !resultPopup.closed) {
Expand Down Expand Up @@ -4848,17 +4852,14 @@
};

const handleResultZoom = () => {
const zoomBtn = document.createElement('div');
zoomBtn.id = 'zoom-button';
zoomBtn.classList.add('tool-buttons');
zoomBtn.title = window.deps.translateString('core.zoom.hint', 'Zoom') + ' (Ctrl/Cmd + Alt + Z)';
zoomBtn.style.pointerEvents = 'all'; // override setting to 'none' on toolspane bar
zoomBtn.innerHTML = `
<button class="text">
<span id="zoom-value">${String(Number(getConfig().zoom))}</span>
&times;
</button>`;

const zoomBtn = createToolButton(
'zoom-button',
window.deps.translateString('core.zoom.hint', 'Zoom') + ' (Ctrl/Cmd + Alt + Z)',

Check warning on line 4857 in src/livecodes/core.ts

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer `globalThis` over `window`.

See more on https://sonarcloud.io/project/issues?id=live-codes_livecodes&issues=AZr7lghCecK5yz9m4o40&open=AZr7lghCecK5yz9m4o40&pullRequest=928
`<button class="text">
<span id="zoom-value">${String(Number(getConfig().zoom))}</span>
&times;
</button>`,
);
const toggleZoom = () => {
const config = getConfig();
const currentZoom = config.zoom;
Expand All @@ -4876,13 +4877,11 @@
};

const handleBroadcastStatus = () => {
const broadcastStatusBtn = document.createElement('div');
broadcastStatusBtn.id = 'broadcast-status-btn';
broadcastStatusBtn.classList.add('tool-buttons');
broadcastStatusBtn.title = window.deps.translateString('core.broadcast.heading', 'Broadcast');
broadcastStatusBtn.style.pointerEvents = 'all'; // override setting to 'none' on toolspane bar
const iconCSS = '<i class="icon-broadcast"></i>';
broadcastStatusBtn.innerHTML = `<button id="broadcast-status">${iconCSS}<span class="mark"></span></button>`;
const broadcastStatusBtn = createToolButton(
'broadcast-status-btn',
window.deps.translateString('core.broadcast.heading', 'Broadcast'),
`<button id="broadcast-status"><i class="icon-broadcast"></i><span class="mark"></span></button>`,
);

const showBroadcast = () => {
showScreen('broadcast');
Expand Down