mirror of
https://github.com/notion-enhancer/notion-enhancer.git
synced 2025-04-06 05:29:02 +00:00
70 lines
2.5 KiB
JavaScript
70 lines
2.5 KiB
JavaScript
/*
|
|
* 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>`;
|
|
|
|
$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;
|
|
};
|