/** * notion-enhancer: integrated titlebar * (c) 2021 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/) * (https://notion-enhancer.github.io/) under the MIT license */ 'use strict'; export const createWindowButtons = async ({ electron, web, components }, db) => { let minimizeIcon = (await db.get(['minimize_icon'])) || (await components.feather('minus')), maximizeIcon = (await db.get(['maximize_icon'])) || (await components.feather('maximize')), unmaximizeIcon = (await db.get(['unmaximize_icon'])) || (await components.feather('minimize')), closeIcon = (await db.get(['close_icon'])) || (await components.feather('x')); minimizeIcon = minimizeIcon.trim(); maximizeIcon = maximizeIcon.trim(); unmaximizeIcon = unmaximizeIcon.trim(); closeIcon = closeIcon.trim(); minimizeIcon = minimizeIcon.startsWith('<svg') && minimizeIcon.endsWith('</svg>') ? minimizeIcon : web.escape(minimizeIcon); maximizeIcon = maximizeIcon.startsWith('<svg') && maximizeIcon.endsWith('</svg>') ? maximizeIcon : web.escape(maximizeIcon); unmaximizeIcon = unmaximizeIcon.startsWith('<svg') && unmaximizeIcon.endsWith('</svg>') ? unmaximizeIcon : web.escape(unmaximizeIcon); closeIcon = closeIcon.startsWith('<svg') && closeIcon.endsWith('</svg>') ? closeIcon : web.escape(closeIcon); const $windowButtons = web.html`<div class="integrated_titlebar--buttons"></div>`, $minimize = web.html`<button id="integrated_titlebar--minimize"> ${minimizeIcon} </button>`, $maximize = web.html`<button id="integrated_titlebar--maximize"> ${maximizeIcon} </button>`, $unmaximize = web.html`<button id="integrated_titlebar--unmaximize"> ${unmaximizeIcon} </button>`, $close = web.html`<button id="integrated_titlebar--close"> ${closeIcon} </button>`; components.addTooltip($minimize, '**Minimize window**'); components.addTooltip($maximize, '**Maximize window**'); components.addTooltip($unmaximize, '**Unmaximize window**'); components.addTooltip($close, '**Close window**'); $minimize.addEventListener('click', () => electron.browser.minimize()); $maximize.addEventListener('click', () => electron.browser.maximize()); $unmaximize.addEventListener('click', () => electron.browser.unmaximize()); $close.addEventListener('click', () => electron.browser.close()); electron.browser.on('maximize', () => { $maximize.replaceWith($unmaximize); }); electron.browser.on('unmaximize', () => { $unmaximize.replaceWith($maximize); }); web.render( $windowButtons, $minimize, electron.browser.isMaximized() ? $unmaximize : $maximize, $close ); return $windowButtons; };