mirror of
https://github.com/notion-enhancer/notion-enhancer.git
synced 2025-04-11 07:49:02 +00:00
remove core mods
This commit is contained in:
parent
311e435e2e
commit
95bf160ba9
@ -1,9 +0,0 @@
|
||||
/*
|
||||
* notion-enhancer
|
||||
* (c) 2020 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
|
||||
* under the MIT license
|
||||
*/
|
||||
|
||||
@import './css/theme.css';
|
||||
@import './css/scrollbars.css';
|
||||
@import './css/titlebar.css';
|
@ -1,106 +0,0 @@
|
||||
/*
|
||||
* notion-enhancer
|
||||
* (c) 2020 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
|
||||
* under the MIT license
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
module.exports = (store) => {
|
||||
const helpers = require('../../pkg/helpers.js'),
|
||||
path = require('path'),
|
||||
fs = require('fs-extra'),
|
||||
browser = require('electron').remote.getCurrentWindow(),
|
||||
is_mac = process.platform === 'darwin',
|
||||
buttons = {
|
||||
element: helpers.createElement('<div class="window-buttons-area"></div>'),
|
||||
insert: [
|
||||
...((store('mods')['72886371-dada-49a7-9afc-9f275ecf29d3'] || {})
|
||||
.enabled
|
||||
? ['alwaysontop']
|
||||
: []),
|
||||
...(store().frameless && !store().tiling_mode && !is_mac
|
||||
? ['minimize', 'maximize', 'close']
|
||||
: []),
|
||||
],
|
||||
icons: {
|
||||
raw: {
|
||||
alwaysontop: {
|
||||
on: fs.readFile(
|
||||
path.resolve(`${__dirname}/icons/alwaysontop_on.svg`)
|
||||
),
|
||||
off: fs.readFile(
|
||||
path.resolve(`${__dirname}/icons/alwaysontop_off.svg`)
|
||||
),
|
||||
},
|
||||
minimize: fs.readFile(
|
||||
path.resolve(`${__dirname}/icons/minimize.svg`)
|
||||
),
|
||||
maximize: {
|
||||
on: fs.readFile(path.resolve(`${__dirname}/icons/maximize_on.svg`)),
|
||||
off: fs.readFile(
|
||||
path.resolve(`${__dirname}/icons/maximize_off.svg`)
|
||||
),
|
||||
},
|
||||
close: fs.readFile(path.resolve(`${__dirname}/icons/close.svg`)),
|
||||
},
|
||||
alwaysontop() {
|
||||
return browser.isAlwaysOnTop()
|
||||
? buttons.icons.raw.alwaysontop.on
|
||||
: buttons.icons.raw.alwaysontop.off; // '🠙' : '🠛'
|
||||
},
|
||||
minimize() {
|
||||
return buttons.icons.raw.minimize; // '⚊'
|
||||
},
|
||||
maximize() {
|
||||
return browser.isMaximized()
|
||||
? buttons.icons.raw.maximize.on
|
||||
: buttons.icons.raw.maximize.off; // '🗗' : '🗖'
|
||||
},
|
||||
close() {
|
||||
return buttons.icons.raw.close; // '⨉'
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
async alwaysontop() {
|
||||
browser.setAlwaysOnTop(!browser.isAlwaysOnTop());
|
||||
this.innerHTML = await buttons.icons.alwaysontop();
|
||||
},
|
||||
minimize() {
|
||||
browser.minimize();
|
||||
},
|
||||
async maximize() {
|
||||
browser.isMaximized() ? browser.unmaximize() : browser.maximize();
|
||||
this.innerHTML = await buttons.icons.maximize();
|
||||
},
|
||||
close() {
|
||||
browser.close();
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
if (!buttons.insert.includes('alwaysontop')) browser.setAlwaysOnTop(false);
|
||||
|
||||
(async () => {
|
||||
for (let btn of buttons.insert) {
|
||||
buttons.element.innerHTML += `<button class="window-button btn-${btn}">${await buttons.icons[
|
||||
btn
|
||||
]()}</button>`;
|
||||
}
|
||||
for (let btn of buttons.insert) {
|
||||
buttons.element.querySelector(`.window-button.btn-${btn}`).onclick =
|
||||
buttons.actions[btn];
|
||||
}
|
||||
if (store().frameless && !store().tiling_mode && !is_mac) {
|
||||
window.addEventListener('resize', (event) => {
|
||||
Promise.resolve(buttons.icons.maximize()).then((icon) => {
|
||||
icon = icon.toString();
|
||||
const el = buttons.element.querySelector('.btn-maximize');
|
||||
if (el.innerHTML != icon) el.innerHTML = icon;
|
||||
});
|
||||
});
|
||||
}
|
||||
})();
|
||||
|
||||
return buttons;
|
||||
};
|
@ -1,269 +0,0 @@
|
||||
/*
|
||||
* notion-enhancer
|
||||
* (c) 2020 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
|
||||
* (c) 2020 TarasokUA
|
||||
* under the MIT license
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
module.exports = (store, __exports) => {
|
||||
const electron = require('electron'),
|
||||
helpers = require('../../pkg/helpers.js'),
|
||||
notionIpc = require(`${helpers
|
||||
.getNotionResources()
|
||||
.replace(/\\/g, '/')}/app/helpers/notionIpc.js`),
|
||||
{ toKeyEvent } = require('keyboardevent-from-electron-accelerator'),
|
||||
tabsEnabled = (store('mods')['e1692c29-475e-437b-b7ff-3eee872e1a42'] || {})
|
||||
.enabled;
|
||||
|
||||
document.defaultView.addEventListener('keyup', (event) => {
|
||||
// additional hotkeys
|
||||
if (event.key === 'F5') location.reload();
|
||||
// open menu on hotkey toggle
|
||||
if (store().menu_toggle) {
|
||||
const hotkey = {
|
||||
ctrlKey: false,
|
||||
metaKey: false,
|
||||
altKey: false,
|
||||
shiftKey: false,
|
||||
...toKeyEvent(store().menu_toggle),
|
||||
};
|
||||
let triggered = true;
|
||||
for (let prop in hotkey)
|
||||
if (
|
||||
hotkey[prop] !== event[prop] &&
|
||||
!(prop === 'key' && event[prop] === 'Dead')
|
||||
)
|
||||
triggered = false;
|
||||
if (triggered) electron.ipcRenderer.send('enhancer:open-menu');
|
||||
}
|
||||
if (tabsEnabled) {
|
||||
const tabStore = () => store('e1692c29-475e-437b-b7ff-3eee872e1a42');
|
||||
if (tabStore().select_modifier) {
|
||||
// switch between tabs via key modifier
|
||||
const select_tab_modifier = {
|
||||
ctrlKey: false,
|
||||
metaKey: false,
|
||||
altKey: false,
|
||||
shiftKey: false,
|
||||
...toKeyEvent(tabStore().select_modifier),
|
||||
};
|
||||
let triggered = true;
|
||||
for (let prop in select_tab_modifier)
|
||||
if (select_tab_modifier[prop] !== event[prop]) triggered = false;
|
||||
if (
|
||||
triggered &&
|
||||
[
|
||||
'1',
|
||||
'2',
|
||||
'3',
|
||||
'4',
|
||||
'5',
|
||||
'6',
|
||||
'7',
|
||||
'8',
|
||||
'9',
|
||||
'ArrowRight',
|
||||
'ArrowLeft',
|
||||
].includes(event.key)
|
||||
)
|
||||
electron.ipcRenderer.sendToHost('enhancer:select-tab', event.key);
|
||||
}
|
||||
if (tabStore().new_tab) {
|
||||
// create/close tab keybindings
|
||||
const new_tab_keybinding = {
|
||||
ctrlKey: false,
|
||||
metaKey: false,
|
||||
altKey: false,
|
||||
shiftKey: false,
|
||||
...toKeyEvent(tabStore().new_tab),
|
||||
};
|
||||
let triggered = true;
|
||||
for (let prop in new_tab_keybinding)
|
||||
if (new_tab_keybinding[prop] !== event[prop]) triggered = false;
|
||||
if (triggered) electron.ipcRenderer.sendToHost('enhancer:new-tab');
|
||||
}
|
||||
if (tabStore().close_tab) {
|
||||
const close_tab_keybinding = {
|
||||
ctrlKey: false,
|
||||
metaKey: false,
|
||||
altKey: false,
|
||||
shiftKey: false,
|
||||
...toKeyEvent(tabStore().close_tab),
|
||||
};
|
||||
let triggered = true;
|
||||
for (let prop in close_tab_keybinding)
|
||||
if (close_tab_keybinding[prop] !== event[prop]) triggered = false;
|
||||
if (triggered) electron.ipcRenderer.sendToHost('enhancer:close-tab');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
const attempt_interval = setInterval(enhance, 500);
|
||||
async function enhance() {
|
||||
if (
|
||||
!document.querySelector('.notion-frame') ||
|
||||
!document.querySelector('.notion-sidebar') ||
|
||||
!document.querySelector('.notion-topbar')
|
||||
)
|
||||
return;
|
||||
clearInterval(attempt_interval);
|
||||
|
||||
// frameless
|
||||
if (store().frameless && !store().tiling_mode && !tabsEnabled) {
|
||||
document.body.classList.add('frameless');
|
||||
// draggable area
|
||||
document
|
||||
.querySelector('.notion-topbar')
|
||||
.prepend(helpers.createElement('<div class="window-dragarea"></div>'));
|
||||
}
|
||||
|
||||
// window buttons
|
||||
if (!tabsEnabled) {
|
||||
const buttons = require('./buttons.js')(store);
|
||||
document
|
||||
.querySelector('.notion-topbar > div[style*="display: flex"]')
|
||||
.appendChild(buttons.element);
|
||||
}
|
||||
document
|
||||
.querySelector('.notion-history-back-button')
|
||||
.parentElement.nextElementSibling.classList.add(
|
||||
'notion-topbar-breadcrumb'
|
||||
);
|
||||
document
|
||||
.querySelector('.notion-topbar-share-menu')
|
||||
.parentElement.classList.add('notion-topbar-actions');
|
||||
|
||||
const getStyle = (prop) =>
|
||||
getComputedStyle(
|
||||
document.querySelector('.notion-app-inner')
|
||||
).getPropertyValue(prop);
|
||||
|
||||
// external theming
|
||||
document.defaultView.addEventListener('keydown', (event) => {
|
||||
if ((event.ctrlKey || event.metaKey) && event.key === 'f') {
|
||||
notionIpc.sendNotionToIndex('search:set-theme', {
|
||||
'mode': document.querySelector('.notion-dark-theme')
|
||||
? 'dark'
|
||||
: 'light',
|
||||
'colors': {
|
||||
'white': getStyle('--theme--option_active-color'),
|
||||
'blue': getStyle('--theme--option_active-background'),
|
||||
},
|
||||
'borderRadius': 3,
|
||||
'textColor': getStyle('--theme--text'),
|
||||
'popoverBackgroundColor': getStyle('--theme--card'),
|
||||
'popoverBoxShadow': getStyle('--theme--box-shadow_strong'),
|
||||
'inputBoxShadow': `box-shadow: ${getStyle(
|
||||
`--theme--primary`
|
||||
)} 0px 0px 0px 1px inset, ${getStyle(
|
||||
`--theme--primary_hover`
|
||||
)} 0px 0px 0px 2px !important`,
|
||||
'inputBackgroundColor': getStyle('--theme--main'),
|
||||
'dividerColor': getStyle('--theme--table-border'),
|
||||
'shadowOpacity': 0.2,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
function setAppTheme() {
|
||||
const theme = document.querySelector('.notion-dark-theme')
|
||||
? 'dark'
|
||||
: 'light';
|
||||
electron.ipcRenderer.send('enhancer:set-app-theme', theme);
|
||||
}
|
||||
setAppTheme();
|
||||
new MutationObserver(setAppTheme).observe(
|
||||
document.querySelector('.notion-app-inner'),
|
||||
{ attributes: true }
|
||||
);
|
||||
electron.ipcRenderer.on('enhancer:get-app-theme', setAppTheme);
|
||||
|
||||
if (tabsEnabled) {
|
||||
let tab_title = { img: '', emoji: '', text: '' };
|
||||
if (process.platform === 'darwin')
|
||||
document
|
||||
.querySelector('.notion-sidebar [style*="37px"]:empty')
|
||||
.remove();
|
||||
const TITLE_OBSERVER = new MutationObserver(() =>
|
||||
__electronApi.setWindowTitle('notion.so')
|
||||
);
|
||||
__electronApi.setWindowTitle = (title) => {
|
||||
const $container =
|
||||
document.querySelector(
|
||||
'.notion-peek-renderer [style="padding-left: calc(126px + env(safe-area-inset-left)); padding-right: calc(126px + env(safe-area-inset-right)); max-width: 100%; width: 100%;"]'
|
||||
) ||
|
||||
document.querySelector(
|
||||
'.notion-frame [style="padding-left: calc(96px + env(safe-area-inset-left)); padding-right: calc(96px + env(safe-area-inset-right)); max-width: 100%; margin-bottom: 8px; width: 100%;"]'
|
||||
) ||
|
||||
document.querySelector('.notion-peek-renderer') ||
|
||||
document.querySelector('.notion-frame'),
|
||||
icon = $container.querySelector(
|
||||
'.notion-record-icon img:not([src^="data:"])'
|
||||
),
|
||||
img =
|
||||
icon && icon.getAttribute('src')
|
||||
? `<img src="${
|
||||
icon.getAttribute('src').startsWith('/')
|
||||
? 'notion://www.notion.so'
|
||||
: ''
|
||||
}${icon.getAttribute('src')}">`
|
||||
: '',
|
||||
emoji = icon ? icon.getAttribute('aria-label') : '';
|
||||
let text = $container.querySelector('[placeholder="Untitled"]');
|
||||
text = text
|
||||
? text.innerText || 'Untitled'
|
||||
: [
|
||||
setTimeout(() => __electronApi.setWindowTitle(title), 250),
|
||||
title,
|
||||
][1];
|
||||
TITLE_OBSERVER.disconnect();
|
||||
TITLE_OBSERVER.observe($container, {
|
||||
childList: true,
|
||||
subtree: true,
|
||||
characterData: true,
|
||||
attributes: true,
|
||||
});
|
||||
if (
|
||||
tab_title.img !== img ||
|
||||
tab_title.emoji !== emoji ||
|
||||
tab_title.text !== text
|
||||
) {
|
||||
tab_title = {
|
||||
img,
|
||||
emoji,
|
||||
text,
|
||||
};
|
||||
electron.ipcRenderer.sendToHost('enhancer:set-tab-title', tab_title);
|
||||
}
|
||||
};
|
||||
__electronApi.openInNewWindow = (urlPath) => {
|
||||
electron.ipcRenderer.sendToHost(
|
||||
'enhancer:new-tab',
|
||||
`notion://www.notion.so${urlPath}`
|
||||
);
|
||||
};
|
||||
} else if (store().frameless && !store().tiling_mode) {
|
||||
let sidebar_width;
|
||||
function setSidebarWidth(list) {
|
||||
const new_sidebar_width =
|
||||
list[0].target.style.height === 'auto'
|
||||
? '0px'
|
||||
: list[0].target.style.width;
|
||||
if (new_sidebar_width !== sidebar_width) {
|
||||
sidebar_width = new_sidebar_width;
|
||||
electron.ipcRenderer.sendToHost(
|
||||
'enhancer:sidebar-width',
|
||||
sidebar_width
|
||||
);
|
||||
}
|
||||
}
|
||||
new MutationObserver(setSidebarWidth).observe(
|
||||
document.querySelector('.notion-sidebar'),
|
||||
{ attributes: true }
|
||||
);
|
||||
setSidebarWidth([{ target: document.querySelector('.notion-sidebar') }]);
|
||||
}
|
||||
}
|
||||
};
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,89 +0,0 @@
|
||||
/*
|
||||
* notion-enhancer
|
||||
* (c) 2020 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
|
||||
* (c) 2020 TarasokUA
|
||||
* under the MIT license
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
module.exports = (store, __exports) => {
|
||||
const electron = require('electron'),
|
||||
allWindows = () =>
|
||||
electron.BrowserWindow.getAllWindows().filter(
|
||||
(win) => win.getTitle() !== 'notion-enhancer menu'
|
||||
),
|
||||
// createWindow = __exports.createWindow,
|
||||
path = require('path'),
|
||||
helpers = require('../../pkg/helpers.js');
|
||||
|
||||
__exports.createWindow = function (relativeUrl, focused_window) {
|
||||
if (!relativeUrl) relativeUrl = '';
|
||||
const window_state = require(`${helpers
|
||||
.getNotionResources()
|
||||
.replace(/\\/g, '/')}/app/node_modules/electron-window-state/index.js`)(
|
||||
{
|
||||
defaultWidth: 1320,
|
||||
defaultHeight: 860,
|
||||
}
|
||||
),
|
||||
rect = {
|
||||
x: window_state.x,
|
||||
y: window_state.y,
|
||||
width: window_state.width,
|
||||
height: window_state.height,
|
||||
};
|
||||
focused_window =
|
||||
focused_window || electron.BrowserWindow.getFocusedWindow();
|
||||
if (focused_window && !focused_window.isMaximized()) {
|
||||
rect.x = focused_window.getPosition()[0] + 20;
|
||||
rect.y = focused_window.getPosition()[1] + 20;
|
||||
rect.width = focused_window.getSize()[0];
|
||||
rect.height = focused_window.getSize()[1];
|
||||
}
|
||||
let window = new electron.BrowserWindow({
|
||||
show: false,
|
||||
backgroundColor: '#ffffff',
|
||||
titleBarStyle: 'hiddenInset',
|
||||
frame: !store().frameless,
|
||||
webPreferences: {
|
||||
preload: path.resolve(
|
||||
`${helpers.getNotionResources()}/app/renderer/index.js`
|
||||
),
|
||||
webviewTag: true,
|
||||
session: electron.session.fromPartition('persist:notion'),
|
||||
enableRemoteModule: true,
|
||||
},
|
||||
...rect,
|
||||
});
|
||||
window.once('ready-to-show', function () {
|
||||
if (
|
||||
!store().openhidden ||
|
||||
allWindows().some((win) => win.isVisible() && win.id != window.id)
|
||||
) {
|
||||
window.show();
|
||||
window.focus();
|
||||
if (store().maximized) window.maximize();
|
||||
if (
|
||||
(focused_window && focused_window.isFullScreen()) ||
|
||||
window_state.isFullScreen
|
||||
)
|
||||
window.setFullScreen(true);
|
||||
}
|
||||
});
|
||||
let intended_quit = false;
|
||||
window.on('close', (e) => {
|
||||
if (intended_quit || !store().close_to_tray || allWindows().length > 1) {
|
||||
window_state.saveState(window);
|
||||
window = null;
|
||||
} else {
|
||||
e.preventDefault();
|
||||
window.hide();
|
||||
}
|
||||
});
|
||||
electron.app.on('before-quit', () => (intended_quit = true));
|
||||
window.loadURL(__exports.getIndexUrl(relativeUrl));
|
||||
return window;
|
||||
};
|
||||
return __exports.createWindow;
|
||||
};
|
@ -1,43 +0,0 @@
|
||||
/*
|
||||
* notion-enhancer
|
||||
* (c) 2020 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
|
||||
* (c) 2020 TarasokUA
|
||||
* under the MIT license
|
||||
*/
|
||||
|
||||
.window-buttons-area {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 14px;
|
||||
}
|
||||
.window-button {
|
||||
background: transparent;
|
||||
border: 0;
|
||||
margin: 0px 0px 0px 9px;
|
||||
width: 32px;
|
||||
line-height: 26px;
|
||||
border-radius: 4px;
|
||||
font-size: 16px;
|
||||
transition: background 0.2s;
|
||||
cursor: default;
|
||||
}
|
||||
.window-button svg {
|
||||
margin-top: 8px;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
}
|
||||
.window-button svg path {
|
||||
fill: currentColor;
|
||||
}
|
||||
.window-button svg line {
|
||||
stroke: currentColor;
|
||||
}
|
||||
|
||||
.window-button:hover {
|
||||
background: var(--theme--interactive_hover);
|
||||
box-shadow: 0 0 0 0.5px var(--theme--interactive_hover-border);
|
||||
}
|
||||
.window-button.btn-close:hover {
|
||||
background: var(--theme--button_close);
|
||||
color: var(--theme--button_close-fill);
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
/*
|
||||
* notion-enhancer
|
||||
* (c) 2020 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
|
||||
* (c) 2020 TarasokUA
|
||||
* under the MIT license
|
||||
*/
|
||||
|
||||
[data-tweaks*='[smooth_scrollbars]'] .notion-scroller {
|
||||
cursor: auto;
|
||||
}
|
||||
[data-tweaks*='[smooth_scrollbars]'] ::-webkit-scrollbar {
|
||||
width: 8px; /* vertical */
|
||||
height: 8px; /* horizontal */
|
||||
-webkit-app-region: no-drag;
|
||||
}
|
||||
[data-tweaks*='[smooth_scrollbars]'] ::-webkit-scrollbar-corner {
|
||||
background-color: transparent; /* overlap */
|
||||
}
|
||||
[data-tweaks*='[smooth_scrollbars]'] ::-webkit-scrollbar-thumb {
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
[data-tweaks*='[smooth_scrollbars]'] ::-webkit-scrollbar-thumb {
|
||||
background-color: var(--theme--scrollbar);
|
||||
border: 1px solid var(--theme--scrollbar-border);
|
||||
}
|
||||
[data-tweaks*='[smooth_scrollbars]'] ::-webkit-scrollbar-thumb:hover {
|
||||
background: var(--theme--scrollbar_hover);
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -1,48 +0,0 @@
|
||||
/*
|
||||
* notion-enhancer
|
||||
* (c) 2020 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
|
||||
* (c) 2020 TarasokUA
|
||||
* under the MIT license
|
||||
*/
|
||||
|
||||
@import './buttons.css';
|
||||
|
||||
.frameless .notion-topbar {
|
||||
height: calc(var(--configured--dragarea_height, 15px) + 45px) !important;
|
||||
}
|
||||
.frameless .window-dragarea {
|
||||
height: var(--configured--dragarea_height, 15px);
|
||||
width: 100%;
|
||||
}
|
||||
.frameless .window-dragarea {
|
||||
background: var(--theme--dragarea);
|
||||
}
|
||||
|
||||
.frameless [style*='top: 10.4972px'] {
|
||||
top: calc(10.4972px + var(--configured--dragarea_height, 15px)) !important;
|
||||
}
|
||||
|
||||
@media (max-width: 760px) {
|
||||
.frameless .notion-topbar {
|
||||
height: calc(var(--configured--dragarea_height, 15px) + 80px) !important;
|
||||
}
|
||||
.frameless .notion-topbar > :nth-child(2) {
|
||||
height: 80px !important;
|
||||
display: grid !important;
|
||||
grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
|
||||
}
|
||||
.window-buttons-area {
|
||||
grid-row: 1;
|
||||
grid-column: 9 / span end;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
.notion-topbar-breadcrumb {
|
||||
grid-row: 2;
|
||||
grid-column: 1 / span 8;
|
||||
}
|
||||
.notion-topbar-actions {
|
||||
grid-row: 2;
|
||||
grid-column: 9 / span end;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
}
|
@ -1,762 +0,0 @@
|
||||
/*
|
||||
* notion-enhancer
|
||||
* (c) 2020 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
|
||||
* under the MIT license
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
const store = require('../../pkg/store.js'),
|
||||
{ createElement, getEnhancements } = require('../../pkg/helpers.js'),
|
||||
fs = require('fs-extra'),
|
||||
path = require('path'),
|
||||
electron = require('electron'),
|
||||
{ toKeyEvent } = require('keyboardevent-from-electron-accelerator');
|
||||
|
||||
window['__start'] = async () => {
|
||||
document.body.setAttribute('data-platform', process.platform);
|
||||
|
||||
// mod loader
|
||||
const modules = getEnhancements();
|
||||
if (modules.loaded.length) {
|
||||
console.info(
|
||||
`<notion-enhancer> enhancements loaded: ${modules.loaded
|
||||
.map((mod) => mod.name)
|
||||
.join(', ')}.`
|
||||
);
|
||||
}
|
||||
if (modules.invalid.length) {
|
||||
createAlert(
|
||||
'error',
|
||||
`invalid mods found: ${modules.invalid
|
||||
.map((mod) => `<b>${mod}</b>`)
|
||||
.join(', ')}.`
|
||||
).append();
|
||||
}
|
||||
const coreStore = (...args) => {
|
||||
const mod = modules.loaded.find(
|
||||
(m) => m.id === '0f0bf8b6-eae6-4273-b307-8fc43f2ee082'
|
||||
);
|
||||
return !args.length
|
||||
? store(mod.id, mod.defaults)
|
||||
: args.length === 1 && typeof args[0] === 'object'
|
||||
? store(mod.id, { ...mod.defaults, ...args[0] })
|
||||
: store(args[0], { ...mod.defaults, ...args[1] });
|
||||
};
|
||||
|
||||
electron.ipcRenderer.send('enhancer:get-app-theme');
|
||||
electron.ipcRenderer.on('enhancer:set-app-theme', (event, theme) => {
|
||||
document.body.className = `notion-${theme}-theme`;
|
||||
});
|
||||
|
||||
const buttons = require('./buttons.js')(() => ({
|
||||
'72886371-dada-49a7-9afc-9f275ecf29d3': {
|
||||
enabled: (store('mods')['72886371-dada-49a7-9afc-9f275ecf29d3'] || {})
|
||||
.enabled,
|
||||
},
|
||||
tiling_mode: coreStore().tiling_mode,
|
||||
frameless: coreStore().frameless,
|
||||
}));
|
||||
document.querySelector('#titlebar').appendChild(buttons.element);
|
||||
|
||||
function createAlert(type, message) {
|
||||
if (!type)
|
||||
throw Error('<notion-enhancer> @ createAlert: no alert type specified');
|
||||
const el = createElement(`
|
||||
<section class="${type}" role="alert">
|
||||
<p>${message}</p>
|
||||
</section>
|
||||
`);
|
||||
return {
|
||||
el,
|
||||
resolve() {
|
||||
el.remove();
|
||||
},
|
||||
prepend() {
|
||||
document.querySelector('#alerts').prepend(el);
|
||||
return this;
|
||||
},
|
||||
append() {
|
||||
document.querySelector('#alerts').appendChild(el);
|
||||
return this;
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
// update checker
|
||||
fetch(
|
||||
`https://api.github.com/repos/notion-enhancer/notion-enhancer/releases/latest`
|
||||
)
|
||||
.then((res) => res.json())
|
||||
.then((res) => {
|
||||
const raw_v = require('./mod.js').version,
|
||||
version = {
|
||||
local: raw_v.split(/[~-]/g)[0],
|
||||
repo: res.tag_name.slice(1),
|
||||
};
|
||||
if (version.local == version.repo) return;
|
||||
// compare func from https://github.com/substack/semver-compare
|
||||
version.sorted = [version.local, version.repo].sort((a, b) => {
|
||||
const pa = a.split('.'),
|
||||
pb = b.split('.');
|
||||
for (let i = 0; i < 3; i++) {
|
||||
let na = Number(pa[i]),
|
||||
nb = Number(pb[i]);
|
||||
if (na > nb) return 1;
|
||||
if (nb > na) return -1;
|
||||
if (!isNaN(na) && isNaN(nb)) return 1;
|
||||
if (isNaN(na) && !isNaN(nb)) return -1;
|
||||
}
|
||||
return 0;
|
||||
});
|
||||
createAlert(
|
||||
'warning',
|
||||
version.sorted[0] == version.local
|
||||
? `update <b>v${version.repo}</b> available!<br>
|
||||
run <code>npm i -g notion-enhancer</code>`
|
||||
: `local build <b>v${raw_v}</b> is unstable.`
|
||||
).prepend();
|
||||
});
|
||||
|
||||
const $popup = document.querySelector('#popup');
|
||||
document.addEventListener('keyup', (event) => {
|
||||
if (event.key === 'F5') location.reload();
|
||||
// further-configuration popup
|
||||
if (
|
||||
$popup.classList.contains('visible') &&
|
||||
['Enter', 'Escape'].includes(event.key)
|
||||
)
|
||||
$popup.classList.remove('visible');
|
||||
// close window on hotkey toggle
|
||||
if (coreStore().menu_toggle) {
|
||||
const hotkey = {
|
||||
ctrlKey: false,
|
||||
metaKey: false,
|
||||
altKey: false,
|
||||
shiftKey: false,
|
||||
...toKeyEvent(coreStore().menu_toggle),
|
||||
};
|
||||
let triggered = true;
|
||||
for (let prop in hotkey)
|
||||
if (
|
||||
hotkey[prop] !== event[prop] &&
|
||||
!(prop === 'key' && event[prop] === 'Dead')
|
||||
)
|
||||
triggered = false;
|
||||
if (triggered || ((event.ctrlKey || event.metaKey) && event.key === 'w'))
|
||||
electron.remote.getCurrentWindow().close();
|
||||
}
|
||||
// focus search
|
||||
const meta =
|
||||
!(event.ctrlKey || event.metaKey) && !event.altKey && !event.shiftKey;
|
||||
if (
|
||||
meta &&
|
||||
document.activeElement.getAttribute('tabindex') === '0' &&
|
||||
event.key === 'Enter'
|
||||
)
|
||||
document.activeElement.click();
|
||||
if (document.activeElement.tagName.toLowerCase() === 'input') {
|
||||
if (document.activeElement.type === 'checkbox' && event.key === 'Enter')
|
||||
document.activeElement.checked = !document.activeElement.checked;
|
||||
if (
|
||||
['Escape', 'Enter'].includes(event.key) &&
|
||||
document.activeElement.type !== 'checkbox' &&
|
||||
(document.activeElement.parentElement.id !== 'search' ||
|
||||
event.key === 'Escape')
|
||||
)
|
||||
document.activeElement.blur();
|
||||
} else if (meta && event.key === '/')
|
||||
document.querySelector('#search > input').focus();
|
||||
if (
|
||||
(event.ctrlKey || event.metaKey) &&
|
||||
event.key === 'f' &&
|
||||
!event.altKey &&
|
||||
!event.shiftKey
|
||||
)
|
||||
document.querySelector('#search > input').focus();
|
||||
});
|
||||
|
||||
let colorpicker_target = null;
|
||||
const $colorpicker = colorjoe
|
||||
.rgb('colorpicker')
|
||||
.on('change', function (color) {
|
||||
if (!colorpicker_target) return;
|
||||
colorpicker_target.elem.style.setProperty(
|
||||
'--configured--color-value',
|
||||
color.css()
|
||||
);
|
||||
store(colorpicker_target.id)[colorpicker_target.key] = color.css();
|
||||
})
|
||||
.update();
|
||||
document
|
||||
.querySelector('#colorpicker')
|
||||
.appendChild(createElement('<button class="close-modal"></button>'));
|
||||
document.querySelectorAll('#popup .close-modal').forEach((el) =>
|
||||
el.addEventListener('click', (event) => {
|
||||
$popup.classList.remove('visible');
|
||||
})
|
||||
);
|
||||
|
||||
const conflicts = {
|
||||
relaunch: null,
|
||||
detected: () =>
|
||||
store('mods', {
|
||||
conflicts: { dark: false, light: false },
|
||||
}).conflicts,
|
||||
alerts: [],
|
||||
check() {
|
||||
document.body.classList.remove('conflict');
|
||||
conflicts.alerts.forEach((alert) => alert.resolve());
|
||||
conflicts.alerts = [];
|
||||
const enabled = modules.loaded.filter(
|
||||
(mod) =>
|
||||
store('mods', { [mod.id]: { enabled: false } })[mod.id].enabled &&
|
||||
mod.tags.includes('theme')
|
||||
),
|
||||
dark = enabled.filter((mod) => mod.tags.includes('dark')),
|
||||
light = enabled.filter((mod) => mod.tags.includes('light'));
|
||||
for (let mode of [
|
||||
[dark, 'dark'],
|
||||
[light, 'light'],
|
||||
]) {
|
||||
const conflictID = mode[0]
|
||||
.map((mod) => mod.id)
|
||||
.sort()
|
||||
.join('||');
|
||||
if (
|
||||
conflicts.detected()[mode[1]] &&
|
||||
conflicts.detected()[mode[1]][0] === conflictID &&
|
||||
conflicts.detected()[mode[1]][1]
|
||||
)
|
||||
continue;
|
||||
if (mode[0].length > 1) {
|
||||
document.body.classList.add('conflict');
|
||||
conflicts.detected()[mode[1]] = [conflictID, false];
|
||||
const alert = createAlert(
|
||||
'error',
|
||||
`conflicting ${mode[1]} themes: ${mode[0]
|
||||
.map((mod) => `<b>${mod.name}</b>`)
|
||||
.join(
|
||||
', '
|
||||
)}. <br> resolve or <span data-action="dismiss" tabindex="0">dismiss</span> to continue.`
|
||||
);
|
||||
alert.el
|
||||
.querySelector('[data-action="dismiss"]')
|
||||
.addEventListener('click', (event) => {
|
||||
conflicts.detected()[mode[1]] = [conflictID, true];
|
||||
conflicts.check();
|
||||
});
|
||||
alert.append();
|
||||
conflicts.alerts.push(alert);
|
||||
} else conflicts.detected()[mode[1]] = false;
|
||||
}
|
||||
search();
|
||||
},
|
||||
};
|
||||
function modified() {
|
||||
conflicts.check();
|
||||
if (conflicts.relaunch) return;
|
||||
conflicts.relaunch = createAlert(
|
||||
'info',
|
||||
'changes may not fully apply until <span data-action="relaunch" tabindex="0">app relaunch</span>.'
|
||||
);
|
||||
conflicts.relaunch.el
|
||||
.querySelector('[data-action="relaunch"]')
|
||||
.addEventListener('click', (event) => {
|
||||
electron.remote.app.relaunch();
|
||||
electron.remote.app.quit();
|
||||
});
|
||||
conflicts.relaunch.append();
|
||||
}
|
||||
|
||||
const search_filters = {
|
||||
enabled: true,
|
||||
disabled: true,
|
||||
tags: new Set(
|
||||
modules.loaded
|
||||
.map((mod) => mod.tags)
|
||||
.flat()
|
||||
.sort()
|
||||
),
|
||||
};
|
||||
function innerText(elem) {
|
||||
let text = '';
|
||||
for (let $node of elem.childNodes) {
|
||||
if ($node.nodeType === 3) text += $node.textContent;
|
||||
if ($node.nodeType === 1) {
|
||||
if ($node.getAttribute('data-tooltip'))
|
||||
text += $node.getAttribute('data-tooltip');
|
||||
text += ['text', 'number'].includes($node.type)
|
||||
? $node.value
|
||||
: innerText($node);
|
||||
}
|
||||
}
|
||||
return text;
|
||||
}
|
||||
function search() {
|
||||
modules.loaded.forEach((mod) => {
|
||||
const $search_input = document.querySelector('#search > input'),
|
||||
conflictingIDs = [conflicts.detected().dark, conflicts.detected().light]
|
||||
.filter((conflict) => conflict && !conflict[1])
|
||||
.map(([mods, dismissed]) => mods.split('||'))
|
||||
.flat();
|
||||
if (
|
||||
conflictingIDs.length ||
|
||||
document.body.classList.contains('reorder')
|
||||
) {
|
||||
$search_input.disabled = true;
|
||||
} else $search_input.disabled = false;
|
||||
if (
|
||||
!document.body.classList.contains('reorder') &&
|
||||
(conflictingIDs.length
|
||||
? !conflictingIDs.some((id) => id.includes(mod.id))
|
||||
: (mod.elem.classList.contains('enabled') &&
|
||||
!search_filters.enabled) ||
|
||||
(mod.elem.classList.contains('disabled') &&
|
||||
!search_filters.disabled) ||
|
||||
!mod.tags.some((tag) => search_filters.tags.has(tag)) ||
|
||||
($search_input.value &&
|
||||
!innerText(mod.elem)
|
||||
.toLowerCase()
|
||||
.includes($search_input.value.toLowerCase().trim())))
|
||||
)
|
||||
return (mod.elem.style.display = 'none');
|
||||
mod.elem.style.display = 'block';
|
||||
});
|
||||
}
|
||||
document.querySelector('#search > input').addEventListener('input', search);
|
||||
|
||||
function createTag(tagname, onclick, color) {
|
||||
if (!tagname)
|
||||
throw Error('<notion-enhancer> @ createTag: no tagname specified');
|
||||
if (!onclick)
|
||||
throw Error('<notion-enhancer> @ createTag: no action specified');
|
||||
const el = createElement(
|
||||
`<span class="selected" ${
|
||||
color ? `style="--tag_color: ${color}" ` : ''
|
||||
}tabindex="0">${tagname}</span>`
|
||||
);
|
||||
document.querySelector('#tags').append(el);
|
||||
el.addEventListener('click', (event) => {
|
||||
if (
|
||||
!document.body.classList.contains('reorder') &&
|
||||
!document.body.classList.contains('conflict')
|
||||
) {
|
||||
el.className = el.className === 'selected' ? '' : 'selected';
|
||||
onclick(el.className === 'selected');
|
||||
}
|
||||
});
|
||||
return el;
|
||||
}
|
||||
createTag('enabled', (state) => [
|
||||
((search_filters.enabled = state), search()),
|
||||
]);
|
||||
createTag('disabled', (state) => [
|
||||
(search_filters.disabled = state),
|
||||
search(),
|
||||
]);
|
||||
for (let tag of search_filters.tags)
|
||||
createTag(`#${tag}`, (state) => [
|
||||
state ? search_filters.tags.add(tag) : search_filters.tags.delete(tag),
|
||||
search(),
|
||||
]);
|
||||
|
||||
// mod info + options
|
||||
function markdown(string) {
|
||||
const parsed = string
|
||||
.split('\n')
|
||||
.map((line) =>
|
||||
line
|
||||
.trim()
|
||||
.replace(/\s+/g, ' ')
|
||||
// > quote
|
||||
.replace(/^>\s+(.+)$/g, '<blockquote>$1</blockquote>')
|
||||
// ~~strikethrough~~
|
||||
.replace(/([^\\])?~~((?:(?!~~).)*[^\\])~~/g, '$1<s>$2</s>')
|
||||
// __underline__
|
||||
.replace(/([^\\])?__((?:(?!__).)*[^\\])__/g, '$1<u>$2</u>')
|
||||
// **bold**
|
||||
.replace(/([^\\])?\*\*((?:(?!\*\*).)*[^\\])\*\*/g, '$1<b>$2</b>')
|
||||
// *italic*
|
||||
.replace(/([^\\])?\*([^*]*[^\\*])\*/g, '$1<i>$2</i>')
|
||||
// _italic_
|
||||
.replace(/([^\\])?_([^_]*[^\\_])_/g, '$1<i>$2</i>')
|
||||
// `code`
|
||||
.replace(/([^\\])?`([^`]*[^\\`])`/g, '$1<code>$2</code>')
|
||||
// 
|
||||
.replace(
|
||||
/([^\\])?\!\[([^\]]*[^\\\]]?)\]\(([^)]*[^\\)])\)/g,
|
||||
`$1<img alt="$2" src="$3" onerror="this.remove()">`
|
||||
)
|
||||
// [link](destination)
|
||||
.replace(
|
||||
/([^\\])?\[([^\]]*[^\\\]]?)\]\(([^)]*[^\\)])\)/g,
|
||||
'$1<a href="$3">$2</a>'
|
||||
)
|
||||
)
|
||||
.map((line) =>
|
||||
line.startsWith('<blockquote>') ? line : `<p>${line}</p>`
|
||||
)
|
||||
.join('');
|
||||
return parsed;
|
||||
}
|
||||
|
||||
const file_icon = await fs.readFile(
|
||||
path.resolve(`${__dirname}/icons/file.svg`)
|
||||
),
|
||||
question_icon = (
|
||||
await fs.readFile(path.resolve(`${__dirname}/icons/question.svg`))
|
||||
).toString();
|
||||
function createOption(opt, id) {
|
||||
let $opt;
|
||||
const desc = opt.desc
|
||||
? question_icon.replace(
|
||||
'<svg',
|
||||
`<svg data-tooltip="${opt.desc.replace(/"/g, '"')}"`
|
||||
)
|
||||
: '';
|
||||
switch (opt.type) {
|
||||
case 'toggle':
|
||||
$opt = `
|
||||
<input type="checkbox" id="${opt.type}_${id}--${opt.key}"
|
||||
${store(id, { [opt.key]: opt.value })[opt.key] ? 'checked' : ''}/>
|
||||
<label for="${opt.type}_${id}--${opt.key}">
|
||||
<span class="name">${opt.label}${desc}</span>
|
||||
<span class="switch"></span>
|
||||
</label>
|
||||
`;
|
||||
break;
|
||||
case 'select':
|
||||
$opt = `
|
||||
<label for="${opt.type}_${id}--${opt.key}">${opt.label}${desc}</label>
|
||||
<select id="${opt.type}_${id}--${opt.key}">
|
||||
${opt.value
|
||||
.map((val) => `<option value="${val}">${val}</option>`)
|
||||
.join('')}
|
||||
</select>
|
||||
`;
|
||||
break;
|
||||
case 'input':
|
||||
$opt = `
|
||||
<label for="${opt.type}_${id}--${opt.key}">${opt.label}${desc}</label>
|
||||
<input type="${typeof value === 'number' ? 'number' : 'text'}" id="${
|
||||
opt.type
|
||||
}_${id}--${opt.key}">
|
||||
`;
|
||||
break;
|
||||
case 'color':
|
||||
$opt = `
|
||||
<label for="${opt.type}_${id}--${opt.key}">${opt.label}${desc}</label>
|
||||
<input type="button" id="${opt.type}_${id}--${opt.key}">
|
||||
`;
|
||||
break;
|
||||
case 'file':
|
||||
$opt = `
|
||||
<input type="file" id="${opt.type}_${id}--${opt.key}"
|
||||
${
|
||||
opt.extensions
|
||||
? ` accept="${opt.extensions
|
||||
.map((ext) => (ext.startsWith('.') ? ext : `.${ext}`))
|
||||
.join(',')}"`
|
||||
: ''
|
||||
}>
|
||||
<label for="${opt.type}_${id}--${opt.key}">
|
||||
<span class="label">
|
||||
<span class="name">${opt.label}${desc}</span>
|
||||
<button class="clear"></button>
|
||||
</span>
|
||||
<span class="choose">
|
||||
${file_icon}
|
||||
<span class="path">${
|
||||
store(id)[opt.key]
|
||||
? store(id)[opt.key].split(path.sep).reverse()[0]
|
||||
: 'choose a file...'
|
||||
}</span>
|
||||
</span>
|
||||
</label>
|
||||
`;
|
||||
}
|
||||
$opt = createElement(`<p class="${opt.type}">${$opt}</p>`);
|
||||
if (opt.type === 'color') {
|
||||
$opt
|
||||
.querySelector(`#${opt.type}_${id}--${opt.key}`)
|
||||
.style.setProperty(
|
||||
'--configured--color-value',
|
||||
store(id, { [opt.key]: opt.value })[opt.key]
|
||||
);
|
||||
} else if (opt.type === 'file') {
|
||||
$opt.querySelector('.clear').addEventListener('click', (event) => {
|
||||
store(id)[opt.key] = '';
|
||||
$opt.querySelector('.path').innerText = 'choose a file...';
|
||||
});
|
||||
} else {
|
||||
$opt.querySelector(`#${opt.type}_${id}--${opt.key}`).value = store(id, {
|
||||
[opt.key]: opt.type === 'select' ? opt.value[0] : opt.value,
|
||||
})[opt.key];
|
||||
}
|
||||
|
||||
return $opt;
|
||||
}
|
||||
|
||||
const $modules = document.querySelector('#modules'),
|
||||
fileExists = (file) => fs.pathExistsSync(path.resolve(file));
|
||||
|
||||
for (let mod of modules.loaded) {
|
||||
const enabled =
|
||||
mod.alwaysActive ||
|
||||
store('mods', {
|
||||
[mod.id]: { enabled: false },
|
||||
})[mod.id].enabled,
|
||||
author =
|
||||
typeof mod.author === 'object'
|
||||
? mod.author
|
||||
: {
|
||||
name: mod.author,
|
||||
link: `https://github.com/${mod.author}`,
|
||||
avatar: `https://github.com/${mod.author}.png`,
|
||||
};
|
||||
if (enabled) {
|
||||
for (let sheet of ['menu', 'variables']) {
|
||||
if (fileExists(`${__dirname}/../${mod.dir}/${sheet}.css`)) {
|
||||
document.head.appendChild(
|
||||
createElement(
|
||||
`<link rel="stylesheet" href="enhancement://${mod.dir}/${sheet}.css">`
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
mod.elem = createElement(`
|
||||
<section class="${enabled ? 'enabled' : 'disabled'}${
|
||||
mod.tags.includes('core') ? ' core' : ''
|
||||
}" id="${mod.id}">
|
||||
<div class="meta">
|
||||
<h3 ${
|
||||
mod.alwaysActive
|
||||
? `>${mod.name}`
|
||||
: `class="toggle">
|
||||
<input type="checkbox" id="enable_${mod.id}"
|
||||
${enabled ? 'checked' : ''} />
|
||||
<label for="enable_${mod.id}">
|
||||
<span class="name">${mod.name}</span>
|
||||
<span class="switch"></span>
|
||||
</label>`
|
||||
}</h3>
|
||||
<p class="tags">${mod.tags
|
||||
.map((tag) => (tag.startsWith('#') ? tag : `#${tag}`))
|
||||
.join(' ')}</p>
|
||||
<div class="desc">${markdown(mod.desc)}</div>
|
||||
<p>
|
||||
<a href="${author.link}" class="author">
|
||||
<img src="${author.avatar}" onerror="this.src='./icons/user.png'">
|
||||
${author.name}
|
||||
</a>
|
||||
<span class="version">v${mod.version}</span>
|
||||
</p>
|
||||
</div>
|
||||
${
|
||||
mod.options && mod.options.length
|
||||
? '<div class="options"></div>'
|
||||
: ''
|
||||
}
|
||||
</section>
|
||||
`);
|
||||
const $enable = mod.elem.querySelector(`#enable_${mod.id}`);
|
||||
if ($enable)
|
||||
$enable.addEventListener('click', (event) => {
|
||||
store('mods', { [mod.id]: { enabled: false } })[mod.id].enabled =
|
||||
$enable.checked;
|
||||
mod.elem.className = store('mods', { [mod.id]: { enabled: false } })[
|
||||
mod.id
|
||||
].enabled
|
||||
? 'enabled'
|
||||
: 'disabled';
|
||||
if (
|
||||
$enable.checked &&
|
||||
coreStore().autoresolve &&
|
||||
mod.tags.includes('theme')
|
||||
) {
|
||||
modules.loaded.forEach((other) => {
|
||||
const $other_enable = other.elem.querySelector(
|
||||
`#enable_${other.id}`
|
||||
);
|
||||
if (
|
||||
other !== mod &&
|
||||
$other_enable &&
|
||||
$other_enable.checked &&
|
||||
other.tags.includes('theme')
|
||||
) {
|
||||
for (let mode of ['dark', 'light'])
|
||||
if (other.tags.includes(mode) && mod.tags.includes(mode))
|
||||
$other_enable.click();
|
||||
}
|
||||
});
|
||||
}
|
||||
search();
|
||||
modified();
|
||||
});
|
||||
|
||||
const $options = mod.elem.querySelector('.options');
|
||||
if ($options)
|
||||
for (const opt of mod.options) {
|
||||
if (
|
||||
Object.keys(opt.platformOverwrite || {}).some(
|
||||
(platform) => process.platform === platform
|
||||
)
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
const $opt = createOption(opt, mod.id);
|
||||
if (opt.type === 'color') {
|
||||
const $preview = $opt.querySelector('input');
|
||||
$opt.addEventListener('click', (event) => {
|
||||
colorpicker_target = {
|
||||
id: mod.id,
|
||||
key: opt.key,
|
||||
elem: $preview,
|
||||
};
|
||||
$colorpicker.set(store(mod.id)[opt.key]);
|
||||
$popup.classList.add('visible');
|
||||
});
|
||||
} else {
|
||||
$opt
|
||||
.querySelector(`#${opt.type}_${mod.id}--${opt.key}`)
|
||||
.addEventListener('change', (event) => {
|
||||
modified();
|
||||
if (opt.type === 'toggle') {
|
||||
store(mod.id)[opt.key] = event.target.checked;
|
||||
} else if (opt.type === 'file') {
|
||||
if (event.target.files.length)
|
||||
store(mod.id)[opt.key] = event.target.files[0].path;
|
||||
$opt.querySelector('.path').innerText = store(mod.id)[opt.key]
|
||||
? store(mod.id)[opt.key].split(path.sep).reverse()[0]
|
||||
: 'choose a file...';
|
||||
} else
|
||||
store(mod.id)[opt.key] =
|
||||
typeof opt.value === 'number'
|
||||
? +event.target.value
|
||||
: event.target.value;
|
||||
});
|
||||
}
|
||||
$options.appendChild($opt);
|
||||
}
|
||||
if (mod.tags.includes('core')) $modules.append(mod.elem);
|
||||
}
|
||||
document
|
||||
.querySelectorAll('input[type="checkbox"]')
|
||||
.forEach((checkbox) =>
|
||||
checkbox.addEventListener('click', (event) => event.target.blur())
|
||||
);
|
||||
conflicts.check();
|
||||
|
||||
// draggable re-ordering
|
||||
const draggable = {
|
||||
state: 0,
|
||||
tags: ['b', 'span'],
|
||||
$toggle: document.querySelector('#draggable-toggle'),
|
||||
list: modules.loaded
|
||||
.filter((m) => !m.tags.includes('core'))
|
||||
.map((m) => m.elem),
|
||||
target: null,
|
||||
render() {
|
||||
draggable.target = null;
|
||||
for (let $node of draggable.list) {
|
||||
$node.draggable = false;
|
||||
$modules.append($node);
|
||||
}
|
||||
},
|
||||
mouseover(event) {
|
||||
if (!draggable.target && event.target.innerText) {
|
||||
for (let $node of draggable.list) $node.draggable = false;
|
||||
const $node = draggable.list.find(
|
||||
(node) => node.innerText === event.target.innerText
|
||||
);
|
||||
if ($node) $node.draggable = draggable.state;
|
||||
}
|
||||
},
|
||||
};
|
||||
document.addEventListener('dragstart', (event) => {
|
||||
draggable.target = event.target;
|
||||
event.target.style.opacity = 0.5;
|
||||
});
|
||||
document.addEventListener('dragend', (event) => {
|
||||
event.target.style.opacity = '';
|
||||
});
|
||||
document.addEventListener('dragover', (event) => {
|
||||
event.preventDefault();
|
||||
document
|
||||
.querySelectorAll('.dragged-over')
|
||||
.forEach((el) => el.classList.remove('dragged-over'));
|
||||
const $node = [
|
||||
draggable.list[0].previousElementSibling,
|
||||
...draggable.list,
|
||||
].find((node) => node.innerText === event.target.innerText);
|
||||
if ($node) $node.classList.add('dragged-over');
|
||||
});
|
||||
document.addEventListener('drop', (event) => {
|
||||
event.preventDefault();
|
||||
document
|
||||
.querySelectorAll('.dragged-over')
|
||||
.forEach((el) => el.classList.remove('dragged-over'));
|
||||
if (
|
||||
draggable.target &&
|
||||
draggable.target.innerText !== event.target.innerText
|
||||
) {
|
||||
const from = draggable.list.findIndex(
|
||||
(node) => node.innerText === draggable.target.innerText
|
||||
),
|
||||
to =
|
||||
event.target.innerText ===
|
||||
draggable.list[0].previousElementSibling.innerText
|
||||
? 0
|
||||
: draggable.list.findIndex(
|
||||
(node) => node.innerText === event.target.innerText
|
||||
) + 1;
|
||||
if (to >= 0) {
|
||||
draggable.list.splice(
|
||||
to > from ? to - 1 : to,
|
||||
0,
|
||||
draggable.list.splice(from, 1)[0]
|
||||
);
|
||||
store('mods').priority = draggable.list.map((m) => m.id);
|
||||
}
|
||||
}
|
||||
draggable.render();
|
||||
modified();
|
||||
});
|
||||
document.addEventListener('mouseover', draggable.mouseover);
|
||||
draggable.render();
|
||||
draggable.$toggle.addEventListener('click', (event) => {
|
||||
draggable.state = !draggable.state;
|
||||
draggable.tags = draggable.tags.reverse();
|
||||
draggable.$toggle.innerHTML = `
|
||||
<${draggable.tags[0]} data-bolded="configure">configure</${draggable.tags[0]}> |
|
||||
<${draggable.tags[1]} data-bolded="reorder">reorder</${draggable.tags[1]}>
|
||||
`;
|
||||
document.body.classList[draggable.state ? 'add' : 'remove']('reorder');
|
||||
$modules
|
||||
.querySelectorAll('input')
|
||||
.forEach((input) => (input.disabled = draggable.state));
|
||||
search();
|
||||
});
|
||||
|
||||
const $tooltip = document.querySelector('#tooltip');
|
||||
document.querySelectorAll('[data-tooltip]').forEach((el) => {
|
||||
el.addEventListener('mouseenter', (e) => {
|
||||
$tooltip.innerText = el.getAttribute('data-tooltip');
|
||||
$tooltip.classList.add('active');
|
||||
});
|
||||
el.addEventListener('mouseover', (e) => {
|
||||
$tooltip.style.top = e.clientY - $tooltip.clientHeight + 'px';
|
||||
$tooltip.style.left =
|
||||
e.clientX < window.innerWidth / 2 ? e.clientX + 'px' : '';
|
||||
$tooltip.style.right =
|
||||
e.clientX > window.innerWidth / 2
|
||||
? window.innerWidth - e.clientX + 'px'
|
||||
: '';
|
||||
});
|
||||
el.addEventListener('mouseleave', (e) =>
|
||||
$tooltip.classList.remove('active')
|
||||
);
|
||||
});
|
||||
};
|
@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="250" height="250" fill="currentColor" viewBox="0 0 250 250"><path d="M124.859 234.52L67.5474 135.736H102.683V12.184H147.323V135.736H182.459L124.859 234.52Z" fill="currentColor"/></svg>
|
Before (image error) Size: 231 B |
@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="250" height="250" fill="currentColor" viewBox="0 0 250 250"><path d="M102.683 234.52V110.968H67.5474L124.859 12.184L182.459 110.968H147.323V234.52H102.683Z" fill="currentColor"/></svg>
|
Before (image error) Size: 231 B |
@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="250" height="250" fill="none" viewBox="0 0 250 250"><line x1="21.393" x2="233.525" y1="229.525" y2="17.393" stroke="#000" stroke-miterlimit="4.139" stroke-width="30"/><line x1="17.607" x2="229.739" y1="17.393" y2="229.525" stroke="#000" stroke-linejoin="round" stroke-width="30"/></svg>
|
Before (image error) Size: 333 B |
@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"/></svg>
|
Before (image error) Size: 287 B |
Binary file not shown.
Before ![]() (image error) Size: 8.1 KiB |
@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="250" height="250" fill="currentColor" viewBox="0 0 250 250"><path d="M14.7346 227.26V7.03998H235.215V227.26H14.7346ZM46.4546 195.8H203.495V70.48H46.4546V195.8Z" fill="currentColor"/></svg>
|
Before (image error) Size: 235 B |
@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="250" height="250" fill="currentColor" viewBox="0 0 250 250"><path d="M16.1311 225.96V76.72H84.5111V8.07999H233.751V157.32H165.371V225.96H16.1311ZM110.771 53.58V76.72H165.371V131.32H207.491V53.58H110.771ZM42.3911 199.96H139.111V122.22H42.3911V199.96Z" fill="currentColor"/></svg>
|
Before (image error) Size: 325 B |
@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="250" height="250" fill="currentColor" viewBox="0 0 250 250"><path d="M17.8021 138.04V106.072H232.074V138.04H17.8021Z" fill="currentColor"/></svg>
|
Before (image error) Size: 192 B |
@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z"/></svg>
|
Before (image error) Size: 849 B |
Binary file not shown.
Before ![]() (image error) Size: 324 B |
Binary file not shown.
Before (image error) Size: 279 KiB |
@ -1,655 +0,0 @@
|
||||
/*
|
||||
* notion-enhancer
|
||||
* (c) 2020 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
|
||||
* (c) 2020 admiraldus (https://github.com/admiraldus)
|
||||
* under the MIT license
|
||||
*/
|
||||
|
||||
@import './css/buttons.css';
|
||||
@import './css/scrollbars.css';
|
||||
|
||||
@keyframes spin {
|
||||
from {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
to {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes fade {
|
||||
from {
|
||||
opacity: 0;
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
word-break: break-word;
|
||||
text-decoration: none;
|
||||
text-size-adjust: 100%;
|
||||
font-family: var(--theme--font_sans);
|
||||
outline-color: var(--theme--table-border);
|
||||
}
|
||||
html,
|
||||
body {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
background: var(--theme--main);
|
||||
color: var(--theme--text);
|
||||
}
|
||||
|
||||
main {
|
||||
padding: 1em 1em 2.9em 1em;
|
||||
height: 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
main section {
|
||||
border-radius: 2px;
|
||||
margin-bottom: 0.75em;
|
||||
}
|
||||
|
||||
/* inline formatting */
|
||||
|
||||
code {
|
||||
border-radius: 0.1em;
|
||||
padding: 0.2em 0.4em;
|
||||
font: 0.85em var(--theme--font_code);
|
||||
background: var(--theme--code_inline-background);
|
||||
}
|
||||
|
||||
button {
|
||||
color: var(--theme--text);
|
||||
}
|
||||
|
||||
u {
|
||||
text-decoration: underline;
|
||||
}
|
||||
s {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
/* titlebar */
|
||||
|
||||
#titlebar::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
-webkit-app-region: no-drag;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 2px;
|
||||
}
|
||||
|
||||
#titlebar {
|
||||
display: flex;
|
||||
-webkit-app-region: drag;
|
||||
background: var(--theme--dragarea);
|
||||
}
|
||||
#titlebar button {
|
||||
-webkit-app-region: no-drag;
|
||||
}
|
||||
#titlebar .window-buttons-area {
|
||||
margin: 0.4em 0.4em 0.4em auto;
|
||||
}
|
||||
#titlebar .window-buttons-area:empty {
|
||||
display: none;
|
||||
}
|
||||
[data-platform='darwin'] #titlebar {
|
||||
height: 2.65em;
|
||||
}
|
||||
|
||||
/* alerts */
|
||||
|
||||
#alerts [role='alert'] {
|
||||
display: flex;
|
||||
padding: 0.75em;
|
||||
background: var(--theme--interactive_hover);
|
||||
border: 1px solid var(--theme--interactive_hover-border);
|
||||
}
|
||||
#alerts [role='alert']::before {
|
||||
content: '!';
|
||||
display: block;
|
||||
/* margin: auto 0; */
|
||||
font-weight: bold;
|
||||
font-size: 1.2em;
|
||||
padding-right: 0.5rem;
|
||||
color: var(--theme--interactive_hover-border);
|
||||
}
|
||||
#alerts [role='alert'] p {
|
||||
font-size: 1rem;
|
||||
margin: auto 0;
|
||||
padding-left: 0.5em;
|
||||
color: var(--theme--line_text);
|
||||
}
|
||||
|
||||
#alerts .error::before {
|
||||
color: var(--theme--select_red);
|
||||
}
|
||||
#alerts .error {
|
||||
color: var(--theme--line_red-text);
|
||||
background: var(--theme--line_red);
|
||||
border-color: var(--theme--select_red);
|
||||
}
|
||||
#alerts .warning::before {
|
||||
color: var(--theme--select_yellow);
|
||||
}
|
||||
#alerts .warning {
|
||||
color: var(--theme--line_yellow-text);
|
||||
background: var(--theme--line_yellow);
|
||||
border-color: var(--theme--select_yellow);
|
||||
}
|
||||
#alerts .info::before {
|
||||
color: var(--theme--select_blue);
|
||||
}
|
||||
#alerts .info {
|
||||
color: var(--theme--line_blue-text);
|
||||
background: var(--theme--line_blue);
|
||||
border-color: var(--theme--select_blue);
|
||||
}
|
||||
#alerts .success::before {
|
||||
content: '✓';
|
||||
color: var(--theme--select_green);
|
||||
}
|
||||
#alerts .success {
|
||||
color: var(--theme--line_green-text);
|
||||
background: var(--theme--line_green);
|
||||
border-color: var(--theme--select_green);
|
||||
}
|
||||
|
||||
#alerts code {
|
||||
background: transparent;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
[data-action] {
|
||||
text-decoration: underline dotted;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* search */
|
||||
|
||||
#search {
|
||||
position: relative;
|
||||
margin-bottom: 0.75em;
|
||||
}
|
||||
|
||||
#search > svg {
|
||||
position: absolute;
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
top: 1.3em;
|
||||
left: 1em;
|
||||
}
|
||||
#search > svg path {
|
||||
fill: var(--theme--text_ui_info);
|
||||
}
|
||||
#search > input {
|
||||
width: 100%;
|
||||
padding: 1em 1.4em 1em 2.8em;
|
||||
font: 1em var(--theme--font_sans);
|
||||
background: var(--theme--card);
|
||||
border: 1px solid var(--theme--table-border);
|
||||
color: var(--theme--text);
|
||||
border-radius: 2px;
|
||||
}
|
||||
#search > input::placeholder {
|
||||
font-weight: bold;
|
||||
color: var(--theme--text_ui_info);
|
||||
}
|
||||
#search > input:focus {
|
||||
box-shadow: var(--theme--table-border) 0.04em 0.04em,
|
||||
var(--theme--table-border) -0.04em -0.04em,
|
||||
var(--theme--table-border) -0.04em 0.04em,
|
||||
var(--theme--table-border) 0.04em -0.04em;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
#search #tags > span {
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
font-size: 0.8em;
|
||||
padding: 0.2em 0.5em;
|
||||
margin-top: 0.5em;
|
||||
background: var(--theme--option-background);
|
||||
color: var(--theme--option-color);
|
||||
border-radius: 2px;
|
||||
transition: color 200ms, background 200ms, opacity 200ms;
|
||||
user-select: none;
|
||||
}
|
||||
#search #tags > span:not(:last-child) {
|
||||
margin-right: 0.5em;
|
||||
}
|
||||
#search #tags > span:hover {
|
||||
background: var(--theme--option_hover-background);
|
||||
color: var(--theme--option_hover-color);
|
||||
}
|
||||
#search #tags > span::before {
|
||||
content: '× ';
|
||||
}
|
||||
#search #tags > .selected {
|
||||
background: var(--tag_color, var(--theme--option_active-background));
|
||||
color: var(--theme--option_active-color);
|
||||
}
|
||||
#search #tags > .selected::before {
|
||||
content: '✓ ';
|
||||
}
|
||||
|
||||
/* module meta */
|
||||
|
||||
#modules {
|
||||
position: relative;
|
||||
}
|
||||
#modules section {
|
||||
background: var(--theme--sidebar);
|
||||
border: 1px solid var(--theme--table-border);
|
||||
}
|
||||
#modules section > div {
|
||||
padding: 0.75em;
|
||||
}
|
||||
.notion-light-theme #modules section {
|
||||
background: var(--theme--main);
|
||||
}
|
||||
|
||||
#modules section h3,
|
||||
#modules section p {
|
||||
margin: 0;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
#modules section .desc {
|
||||
margin: 0.3em 0 0.4em 0;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
#modules section .desc p {
|
||||
font-size: inherit;
|
||||
margin: 0;
|
||||
}
|
||||
#modules section .desc blockquote {
|
||||
margin: 0.3em 0;
|
||||
border-left: 0.3em solid var(--theme--table-border);
|
||||
padding-left: 0.7em;
|
||||
}
|
||||
|
||||
#modules section .desc a {
|
||||
color: currentColor;
|
||||
text-decoration: underline dotted;
|
||||
}
|
||||
|
||||
#modules section .desc img {
|
||||
width: 100%;
|
||||
max-width: 20em;
|
||||
margin: 0.5em 0;
|
||||
}
|
||||
#modules section .desc :first-child img:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
#modules section .desc :last-child img:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
#modules section .author {
|
||||
color: currentColor;
|
||||
}
|
||||
#modules section .author img {
|
||||
height: 1em;
|
||||
width: 1em;
|
||||
margin-bottom: 0.15625em;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
border-radius: 50%;
|
||||
object-fit: cover;
|
||||
}
|
||||
#modules section .tags,
|
||||
#modules section .version {
|
||||
font-size: 0.85em;
|
||||
color: var(--theme--text_ui);
|
||||
}
|
||||
|
||||
/* module options */
|
||||
|
||||
#modules .disabled .options {
|
||||
display: none;
|
||||
}
|
||||
#modules section .options {
|
||||
border-top: 1px solid var(--theme--table-border);
|
||||
background: var(--theme--card);
|
||||
}
|
||||
#modules section .options p {
|
||||
font-size: 0.9em;
|
||||
}
|
||||
#modules section .options p:not(:last-child) {
|
||||
padding-bottom: 0.5em;
|
||||
border-bottom: 0.5px solid var(--theme--table-border);
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
svg[data-tooltip] {
|
||||
height: 1em;
|
||||
width: 1em;
|
||||
margin: 0 0 -2px 1px;
|
||||
color: var(--theme--text_ui_info);
|
||||
}
|
||||
#tooltip {
|
||||
pointer-events: none;
|
||||
position: absolute;
|
||||
padding: 0.25em 0.5em 0.5em 0.5em;
|
||||
margin: 0 1em;
|
||||
border-radius: 3px;
|
||||
box-shadow: var(--theme--box-shadow_strong);
|
||||
border-right-width: 1px;
|
||||
font-size: calc(var(--theme--font_label-size) * 0.8);
|
||||
background: var(--theme--interactive_hover);
|
||||
opacity: 0;
|
||||
transition: opacity 120ms ease-in;
|
||||
}
|
||||
#tooltip.active {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.toggle *,
|
||||
.input *,
|
||||
.select *,
|
||||
.color *,
|
||||
.file * {
|
||||
cursor: pointer;
|
||||
}
|
||||
.select select,
|
||||
.input input[type='text'],
|
||||
.input input[type='number'],
|
||||
.file input[type='file'] + label .choose {
|
||||
width: 100%;
|
||||
margin: 0.25em 0;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.4rem 0.2rem;
|
||||
border: none;
|
||||
color: var(--theme--text);
|
||||
background: var(--theme--main);
|
||||
}
|
||||
.select select:focus,
|
||||
.input input[type='text']:focus,
|
||||
.input input[type='number']:focus,
|
||||
.file input[type='file']:focus + label .choose,
|
||||
.file input[type='file'] + label .choose:hover {
|
||||
outline: var(--theme--table-border) solid 2px;
|
||||
}
|
||||
.file input[type='file'],
|
||||
.toggle input[type='checkbox'] {
|
||||
opacity: 0;
|
||||
width: 0.1px;
|
||||
height: 0.1px;
|
||||
position: fixed;
|
||||
}
|
||||
|
||||
.input input[type='text'],
|
||||
.input input[type='number'] {
|
||||
padding: 0.4rem;
|
||||
cursor: text;
|
||||
}
|
||||
|
||||
.file input[type='file'] + label .label {
|
||||
position: relative;
|
||||
display: flex;
|
||||
}
|
||||
.file input[type='file'] + label .label .name {
|
||||
flex-basis: calc(100% - 1.5rem);
|
||||
}
|
||||
.file input[type='file'] + label .label .clear {
|
||||
font-size: 1rem;
|
||||
position: absolute;
|
||||
top: 0.4em;
|
||||
right: 0;
|
||||
width: 1em;
|
||||
height: 0.1em;
|
||||
border: 0.35em solid var(--theme--card);
|
||||
background: currentColor;
|
||||
}
|
||||
.file input[type='file'] + label .choose {
|
||||
display: block;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
}
|
||||
.file input[type='file'] + label .choose svg {
|
||||
padding-top: 0.5em;
|
||||
height: 1.25em;
|
||||
width: 1.25em;
|
||||
}
|
||||
|
||||
.toggle input[type='checkbox'] + label {
|
||||
display: flex;
|
||||
--menu--toggle_bg: rgba(135, 131, 120, 0.3);
|
||||
}
|
||||
.toggle input[type='checkbox'] + label .name {
|
||||
flex-basis: calc(100% - 2.25em);
|
||||
margin-right: 0.75em;
|
||||
}
|
||||
.toggle input[type='checkbox'] + label .switch {
|
||||
position: relative;
|
||||
top: 0.2em;
|
||||
float: right;
|
||||
height: 1em;
|
||||
width: 1.85em;
|
||||
padding: 0.1em;
|
||||
background: var(--menu--toggle_bg);
|
||||
border-radius: 3.14em;
|
||||
transition: background 300ms;
|
||||
}
|
||||
.toggle input[type='checkbox'] + label .switch::before {
|
||||
content: '';
|
||||
display: block;
|
||||
width: 0.8em;
|
||||
height: 0.8em;
|
||||
border-radius: 50%;
|
||||
transform: translateX(var(--menu--toggle_offset, 0));
|
||||
transition: transform 350ms, box-shadow 350ms;
|
||||
background: var(--theme--option_active-color);
|
||||
/* box-shadow: 2px 1px 4px var(--theme--table-border); */
|
||||
}
|
||||
|
||||
.toggle input[type='checkbox']:checked + label {
|
||||
--menu--toggle_offset: 0.8em;
|
||||
--menu--toggle_bg: var(--theme--primary);
|
||||
}
|
||||
|
||||
.color {
|
||||
display: flex;
|
||||
}
|
||||
.color label {
|
||||
flex-basis: 70%;
|
||||
}
|
||||
.color input[type='button'] {
|
||||
flex-basis: 30%;
|
||||
box-shadow: 2px 1px 4px var(--theme--table-border);
|
||||
border: 1px solid var(--theme--option_active-color);
|
||||
border-radius: 3px;
|
||||
background: var(--configured--color-value);
|
||||
margin: 0;
|
||||
}
|
||||
.color input[type='button']:focus {
|
||||
box-shadow: 3px 2px 5px var(--theme--table-border);
|
||||
}
|
||||
|
||||
/* further-configuration popup */
|
||||
|
||||
#popup,
|
||||
#popup-overlay {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
}
|
||||
#popup {
|
||||
display: none;
|
||||
}
|
||||
#popup.visible {
|
||||
display: flex;
|
||||
animation: fade 200ms ease;
|
||||
}
|
||||
#popup-overlay {
|
||||
background: var(--theme--overlay);
|
||||
}
|
||||
|
||||
.colorPicker {
|
||||
margin: auto;
|
||||
position: relative;
|
||||
border: 1px solid var(--theme--table-border);
|
||||
background: var(--theme--card);
|
||||
}
|
||||
|
||||
.colorPicker .twod {
|
||||
border-radius: 4px;
|
||||
}
|
||||
.colorPicker .twod .bg {
|
||||
border-radius: 2px;
|
||||
}
|
||||
.colorPicker .oned,
|
||||
.colorPicker .oned .bg {
|
||||
margin-left: 0;
|
||||
height: 212.5px;
|
||||
}
|
||||
.colorPicker .oned .bg {
|
||||
border-radius: 4px;
|
||||
border: 1px solid var(--theme--table-border);
|
||||
}
|
||||
.colorPicker > button {
|
||||
display: block;
|
||||
position: absolute;
|
||||
bottom: 8px;
|
||||
right: 8px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: none;
|
||||
width: 21px;
|
||||
height: 20px;
|
||||
cursor: pointer;
|
||||
background: transparent;
|
||||
transition: background 0.2s;
|
||||
}
|
||||
.colorPicker > button::after {
|
||||
content: '×';
|
||||
font-size: 1.5em;
|
||||
position: relative;
|
||||
bottom: 5px;
|
||||
}
|
||||
.colorPicker > button:hover {
|
||||
background: var(--theme--interactive_hover);
|
||||
border-radius: 4px;
|
||||
box-shadow: 0 0 0 0.5px var(--theme--interactive_hover-border);
|
||||
}
|
||||
.colorPicker > button:focus {
|
||||
outline: none;
|
||||
box-shadow: 0 0 0 1px var(--theme--table-border);
|
||||
}
|
||||
.colorPicker .twod .pointer .shape.shape1 {
|
||||
width: 11px;
|
||||
height: 11px;
|
||||
}
|
||||
.colorPicker .twod .pointer .shape.shape2 {
|
||||
width: 9px;
|
||||
height: 9px;
|
||||
}
|
||||
.colorPicker .oned .pointer .shape {
|
||||
height: 6.5px;
|
||||
margin-left: 0;
|
||||
border: 2px solid #fff;
|
||||
box-shadow: 0 0 0 1px #000;
|
||||
}
|
||||
.shape {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@media (max-width: 300px) {
|
||||
.colorPicker .twod,
|
||||
.colorPicker .twod .bg {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
}
|
||||
.colorPicker .oned,
|
||||
.colorPicker .oned .bg {
|
||||
height: 172.5px;
|
||||
}
|
||||
}
|
||||
@media (max-width: 250px) {
|
||||
.colorPicker .twod,
|
||||
.colorPicker .twod .bg {
|
||||
width: 150px;
|
||||
height: 150px;
|
||||
}
|
||||
.colorPicker .oned,
|
||||
.colorPicker .oned .bg {
|
||||
height: 132.5px;
|
||||
}
|
||||
}
|
||||
|
||||
/* draggable re-ordering of mods */
|
||||
|
||||
#draggable-toggle {
|
||||
background: none;
|
||||
border: none;
|
||||
margin-top: 0.8em;
|
||||
padding-left: 0;
|
||||
cursor: pointer;
|
||||
color: var(--theme--text_ui);
|
||||
}
|
||||
|
||||
[data-bolded] {
|
||||
display: inline-flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
[data-bolded]::after {
|
||||
content: attr(data-bolded);
|
||||
height: 0;
|
||||
visibility: hidden;
|
||||
overflow: hidden;
|
||||
user-select: none;
|
||||
pointer-events: none;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.reorder #search #tags > span,
|
||||
.reorder #search #tags > span:hover,
|
||||
.conflict #search #tags > span,
|
||||
.conflict #search #tags > span:hover {
|
||||
opacity: 0.7;
|
||||
background: var(--theme--option-background);
|
||||
}
|
||||
.reorder #search #tags > .selected,
|
||||
.reorder #search #tags > .selected:hover,
|
||||
.conflict #search #tags > .selected,
|
||||
.conflict #search #tags > .selected:hover {
|
||||
background: var(--tag_color, var(--theme--option_active-background));
|
||||
}
|
||||
|
||||
.reorder #modules .dragged-over::after {
|
||||
content: '';
|
||||
height: 0.25em;
|
||||
width: 99%;
|
||||
position: absolute;
|
||||
margin: 0.3em 0;
|
||||
opacity: 0.7;
|
||||
background: var(--theme--selected);
|
||||
}
|
||||
|
||||
.reorder #modules .switch,
|
||||
.reorder #modules .tags,
|
||||
.reorder #modules .desc,
|
||||
.reorder #modules .options,
|
||||
.reorder #modules .author,
|
||||
.reorder #modules .version {
|
||||
display: none;
|
||||
}
|
||||
.reorder #modules .core .toggle * {
|
||||
cursor: text;
|
||||
}
|
||||
.reorder #modules section:not(.core) label::before {
|
||||
content: '::';
|
||||
margin-right: 0.4em;
|
||||
color: var(--theme--text_ui);
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html data-tweaks="[smooth_scrollbars]" lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>notion-enhancer menu</title>
|
||||
<script src="./colorjoe/min.js"></script>
|
||||
<link rel="stylesheet" href="./colorjoe/picker.css" />
|
||||
<style>
|
||||
body {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="notion-dark-theme">
|
||||
<header id="titlebar"></header>
|
||||
<main>
|
||||
<div id="alerts"></div>
|
||||
<div id="search">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||
<path
|
||||
d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"
|
||||
></path>
|
||||
</svg>
|
||||
<input type="text" placeholder="search ('/' to focus)" />
|
||||
<div id="tags"></div>
|
||||
<button id="draggable-toggle">
|
||||
<b data-bolded="configure">configure</b> |
|
||||
<span data-bolded="reorder">reorder</span>
|
||||
</button>
|
||||
</div>
|
||||
<div id="modules"></div>
|
||||
</main>
|
||||
<section id="popup">
|
||||
<div id="popup-overlay" class="close-modal"></div>
|
||||
<div id="colorpicker"></div>
|
||||
</section>
|
||||
<span id="tooltip"></span>
|
||||
<script>
|
||||
window['__start']();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
103
repo/core/mod.js
103
repo/core/mod.js
@ -1,103 +0,0 @@
|
||||
/*
|
||||
* notion-enhancer
|
||||
* (c) 2020 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
|
||||
* under the MIT license
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
module.exports = {
|
||||
id: '0f0bf8b6-eae6-4273-b307-8fc43f2ee082',
|
||||
alwaysActive: true,
|
||||
tags: ['core'],
|
||||
name: 'notion-enhancer core',
|
||||
desc: 'the cli, modloader, menu, & tray.',
|
||||
version: require('../../package.json').version,
|
||||
author: 'dragonwocky',
|
||||
options: [
|
||||
{
|
||||
key: 'autoresolve',
|
||||
label: 'auto-resolve theme conflicts',
|
||||
desc:
|
||||
'when a theme is enabled any other themes of the same mode (light/dark) will be disabled.',
|
||||
type: 'toggle',
|
||||
value: false,
|
||||
},
|
||||
{
|
||||
key: 'openhidden',
|
||||
label: 'hide app on open',
|
||||
desc:
|
||||
'app can be made visible by clicking the tray icon or using the hotkey.',
|
||||
type: 'toggle',
|
||||
value: false,
|
||||
},
|
||||
{
|
||||
key: 'maximized',
|
||||
label: 'auto-maximise windows',
|
||||
desc:
|
||||
'whenever a window is un-hidden or is created it will be maximised.',
|
||||
type: 'toggle',
|
||||
value: false,
|
||||
},
|
||||
{
|
||||
key: 'close_to_tray',
|
||||
label: 'close window to the tray',
|
||||
desc: `pressing the × close button will hide the app instead of quitting it.\
|
||||
it can be re-shown by clicking the tray icon or using the hotkey.`,
|
||||
type: 'toggle',
|
||||
value: true,
|
||||
platformOverwrite: {
|
||||
darwin: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
key: 'frameless',
|
||||
label: 'integrated titlebar',
|
||||
desc: `replace the native titlebar with buttons inset into the app.`,
|
||||
type: 'toggle',
|
||||
value: true,
|
||||
platformOverwrite: {
|
||||
darwin: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
key: 'tiling_mode',
|
||||
label: 'tiling window manager mode',
|
||||
desc: `completely remove the close/minimise/maximise buttons -
|
||||
this is for a special type of window manager. if you don't understand it, don't use it.`,
|
||||
type: 'toggle',
|
||||
value: false,
|
||||
},
|
||||
{
|
||||
key: 'hotkey',
|
||||
label: 'window display hotkey:',
|
||||
desc: 'used to toggle hiding/showing all app windows.',
|
||||
type: 'input',
|
||||
value: 'CommandOrControl+Shift+A',
|
||||
},
|
||||
{
|
||||
key: 'menu_toggle',
|
||||
label: 'open enhancements menu hotkey:',
|
||||
desc: 'used to toggle opening/closing this menu while notion is focused.',
|
||||
type: 'input',
|
||||
value: 'Alt+E',
|
||||
},
|
||||
{
|
||||
key: 'default_page',
|
||||
label: 'default page id/url:',
|
||||
desc: `every new tab/window that isn't opening a url via the notion://\
|
||||
protocol will load this page. to get a page link from within the app,\
|
||||
go to the triple-dot menu and click "copy link".\
|
||||
leave blank to just load the last page you opened.`,
|
||||
type: 'input',
|
||||
value: '',
|
||||
},
|
||||
],
|
||||
hacks: {
|
||||
'main/main.js': require('./tray.js'),
|
||||
'main/systemMenu.js': require('./systemMenu.js'),
|
||||
'main/createWindow.js': require('./createWindow.js'),
|
||||
'renderer/index.js': require('./render.js'),
|
||||
'renderer/preload.js': require('./client.js'),
|
||||
},
|
||||
};
|
1066
repo/core/render.js
1066
repo/core/render.js
File diff suppressed because it is too large
Load Diff
@ -1,477 +0,0 @@
|
||||
/*
|
||||
* notion-enhancer
|
||||
* (c) 2020 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
|
||||
* under the MIT license
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
module.exports = (store, __exports) => {
|
||||
const electron = require('electron'),
|
||||
fs = require('fs-extra'),
|
||||
{ getNotionResources } = require('../../pkg/helpers.js'),
|
||||
__notion = getNotionResources(),
|
||||
createWindow = require(`${__notion}/app/main/createWindow.js`),
|
||||
config = require(`${__notion}/app/config.js`),
|
||||
notion_intl = require(`${__notion}/app/shared/notion-intl/index.js`),
|
||||
localizationHelper = require(`${__notion}/app/helpers/localizationHelper.js`),
|
||||
isMac = process.platform === 'darwin',
|
||||
// why is it inversed? i have no idea, but for some reason this is what works
|
||||
tabsEnabled = !(store('mods')['e1692c29-475e-437b-b7ff-3eee872e1a42'] || {})
|
||||
.enabled,
|
||||
menuMessages = notion_intl.defineMessages({
|
||||
fileMenuTitle: {
|
||||
id: 'desktopTopbar.fileMenu.title',
|
||||
defaultMessage: 'File',
|
||||
},
|
||||
editMenuTitle: {
|
||||
id: 'desktopTopbar.editMenu.title',
|
||||
defaultMessage: 'Edit',
|
||||
},
|
||||
viewMenuTitle: {
|
||||
id: 'desktopTopbar.viewMenu.title',
|
||||
defaultMessage: 'View',
|
||||
},
|
||||
windowMenuTitle: {
|
||||
id: 'desktopTopbar.windowMenu.title',
|
||||
defaultMessage: 'Window',
|
||||
},
|
||||
helpTitle: {
|
||||
id: 'desktopTopbar.helpMenu.title',
|
||||
defaultMessage: 'Help',
|
||||
},
|
||||
newWindow: {
|
||||
id: 'desktopTopbar.fileMenu.newWindow',
|
||||
defaultMessage: 'New Window',
|
||||
},
|
||||
closeWindow: {
|
||||
id: 'desktopTopbar.fileMenu.close',
|
||||
defaultMessage: 'Close Window',
|
||||
},
|
||||
quit: {
|
||||
id: 'desktopTopbar.fileMenu.quit',
|
||||
defaultMessage: 'Exit',
|
||||
},
|
||||
undo: {
|
||||
id: 'desktopTopbar.editMenu.undo',
|
||||
defaultMessage: 'Undo',
|
||||
},
|
||||
redo: {
|
||||
id: 'desktopTopbar.editMenu.redo',
|
||||
defaultMessage: 'Redo',
|
||||
},
|
||||
cut: {
|
||||
id: 'desktopTopbar.editMenu.cut',
|
||||
defaultMessage: 'Cut',
|
||||
},
|
||||
copy: {
|
||||
id: 'desktopTopbar.editMenu.copy',
|
||||
defaultMessage: 'Copy',
|
||||
},
|
||||
paste: {
|
||||
id: 'desktopTopbar.editMenu.paste',
|
||||
defaultMessage: 'Paste',
|
||||
},
|
||||
selectAll: {
|
||||
id: 'desktopTopbar.editMenu.selectAll',
|
||||
defaultMessage: 'Select All',
|
||||
},
|
||||
startSpeaking: {
|
||||
id: 'desktopTopbar.editMenu.speech.startSpeaking',
|
||||
defaultMessage: 'Start Speaking',
|
||||
},
|
||||
stopSpeaking: {
|
||||
id: 'desktopTopbar.editMenu.speech.stopSpeaking',
|
||||
defaultMessage: 'Stop Speaking',
|
||||
},
|
||||
speech: {
|
||||
id: 'desktopTopbar.editMenu.speech',
|
||||
defaultMessage: 'Speech',
|
||||
},
|
||||
reload: {
|
||||
id: 'desktopTopbar.viewMenu.reload',
|
||||
defaultMessage: 'Reload',
|
||||
},
|
||||
togglefullscreen: {
|
||||
id: 'desktopTopbar.viewMenu.togglefullscreen',
|
||||
defaultMessage: 'Toggle Full Screen',
|
||||
},
|
||||
toggleDevTools: {
|
||||
id: 'desktopTopbar.toggleDevTools',
|
||||
defaultMessage: 'Toggle Developer Tools',
|
||||
},
|
||||
toggleWindowDevTools: {
|
||||
id: 'desktopTopbar.toggleWindowDevTools',
|
||||
defaultMessage: 'Toggle Window Developer Tools',
|
||||
},
|
||||
maximize: {
|
||||
id: 'desktopTopbar.windowMenu.maximize',
|
||||
defaultMessage: 'Maximize',
|
||||
},
|
||||
minimize: {
|
||||
id: 'desktopTopbar.windowMenu.minimize',
|
||||
defaultMessage: 'Minimize',
|
||||
},
|
||||
zoom: {
|
||||
id: 'desktopTopbar.windowMenu.zoom',
|
||||
defaultMessage: 'Zoom',
|
||||
},
|
||||
front: {
|
||||
id: 'desktopTopbar.windowMenu.front',
|
||||
defaultMessage: 'Front',
|
||||
},
|
||||
close: {
|
||||
id: 'desktopTopbar.windowMenu.close',
|
||||
defaultMessage: 'Close',
|
||||
},
|
||||
help: {
|
||||
id: 'desktopTopbar.helpMenu.openHelpAndSupport',
|
||||
defaultMessage: 'Open Help & Support',
|
||||
},
|
||||
reset: {
|
||||
id: 'desktopTopbar.appMenu.resetAppAndClearData',
|
||||
defaultMessage: 'Reset App & Clear Local Data',
|
||||
},
|
||||
about: {
|
||||
id: 'desktopTopbar.appMenu.about',
|
||||
defaultMessage: 'About Notion',
|
||||
},
|
||||
services: {
|
||||
id: 'desktopTopbar.appMenu.services',
|
||||
defaultMessage: 'Services',
|
||||
},
|
||||
hide: { id: 'desktopTopbar.appMenu.hide', defaultMessage: 'Hide Notion' },
|
||||
hideOthers: {
|
||||
id: 'desktopTopbar.appMenu.hideOthers',
|
||||
defaultMessage: 'Hide Others',
|
||||
},
|
||||
unhide: {
|
||||
id: 'desktopTopbar.appMenu.unhide',
|
||||
defaultMessage: 'Show All',
|
||||
},
|
||||
quitMac: { id: 'desktopTopbar.appMenu.quit', defaultMessage: 'Quit' },
|
||||
}),
|
||||
escapeAmpersand = (message) => message.replace(/&/g, '&&');
|
||||
__exports.setupSystemMenu = (locale) => {
|
||||
const intl = localizationHelper.createIntlShape(locale),
|
||||
fileMenu = {
|
||||
role: 'fileMenu',
|
||||
label: escapeAmpersand(intl.formatMessage(menuMessages.fileMenuTitle)),
|
||||
submenu: isMac
|
||||
? [
|
||||
{
|
||||
label: escapeAmpersand(
|
||||
intl.formatMessage(menuMessages.newWindow)
|
||||
),
|
||||
accelerator: 'CmdOrCtrl+Shift+N',
|
||||
click: () => createWindow.createWindow(),
|
||||
},
|
||||
...(tabsEnabled
|
||||
? [
|
||||
{
|
||||
role: 'close',
|
||||
label: escapeAmpersand(
|
||||
intl.formatMessage(menuMessages.closeWindow)
|
||||
),
|
||||
},
|
||||
]
|
||||
: []),
|
||||
]
|
||||
: [
|
||||
{
|
||||
label: escapeAmpersand(
|
||||
intl.formatMessage(menuMessages.newWindow)
|
||||
),
|
||||
accelerator: 'CmdOrCtrl+Shift+N',
|
||||
click: () => createWindow.createWindow(),
|
||||
},
|
||||
...(tabsEnabled
|
||||
? [
|
||||
{
|
||||
role: 'quit',
|
||||
label: escapeAmpersand(
|
||||
intl.formatMessage(menuMessages.quit)
|
||||
),
|
||||
},
|
||||
]
|
||||
: []),
|
||||
],
|
||||
},
|
||||
editMenu = {
|
||||
role: 'editMenu',
|
||||
label: escapeAmpersand(intl.formatMessage(menuMessages.editMenuTitle)),
|
||||
submenu: isMac
|
||||
? [
|
||||
{
|
||||
role: 'undo',
|
||||
label: escapeAmpersand(intl.formatMessage(menuMessages.undo)),
|
||||
},
|
||||
{
|
||||
role: 'redo',
|
||||
label: escapeAmpersand(intl.formatMessage(menuMessages.redo)),
|
||||
},
|
||||
{ type: 'separator' },
|
||||
{
|
||||
role: 'cut',
|
||||
label: escapeAmpersand(intl.formatMessage(menuMessages.cut)),
|
||||
},
|
||||
{
|
||||
role: 'copy',
|
||||
label: escapeAmpersand(intl.formatMessage(menuMessages.copy)),
|
||||
},
|
||||
{
|
||||
role: 'paste',
|
||||
label: escapeAmpersand(intl.formatMessage(menuMessages.paste)),
|
||||
},
|
||||
{
|
||||
role: 'selectAll',
|
||||
label: escapeAmpersand(
|
||||
intl.formatMessage(menuMessages.selectAll)
|
||||
),
|
||||
},
|
||||
{ type: 'separator' },
|
||||
{
|
||||
label: escapeAmpersand(intl.formatMessage(menuMessages.speech)),
|
||||
submenu: [
|
||||
{
|
||||
role: 'startSpeaking',
|
||||
label: escapeAmpersand(
|
||||
intl.formatMessage(menuMessages.startSpeaking)
|
||||
),
|
||||
},
|
||||
{
|
||||
role: 'stopSpeaking',
|
||||
label: escapeAmpersand(
|
||||
intl.formatMessage(menuMessages.stopSpeaking)
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
]
|
||||
: [
|
||||
{
|
||||
role: 'undo',
|
||||
label: escapeAmpersand(intl.formatMessage(menuMessages.undo)),
|
||||
},
|
||||
{
|
||||
role: 'redo',
|
||||
label: escapeAmpersand(intl.formatMessage(menuMessages.redo)),
|
||||
},
|
||||
{ type: 'separator' },
|
||||
{
|
||||
role: 'cut',
|
||||
label: escapeAmpersand(intl.formatMessage(menuMessages.cut)),
|
||||
},
|
||||
{
|
||||
role: 'copy',
|
||||
label: escapeAmpersand(intl.formatMessage(menuMessages.copy)),
|
||||
},
|
||||
{
|
||||
role: 'paste',
|
||||
label: escapeAmpersand(intl.formatMessage(menuMessages.paste)),
|
||||
},
|
||||
{ type: 'separator' },
|
||||
{
|
||||
role: 'selectAll',
|
||||
label: escapeAmpersand(
|
||||
intl.formatMessage(menuMessages.selectAll)
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
viewMenu = {
|
||||
role: 'viewMenu',
|
||||
label: escapeAmpersand(intl.formatMessage(menuMessages.viewMenuTitle)),
|
||||
submenu: [
|
||||
{
|
||||
label: escapeAmpersand(intl.formatMessage(menuMessages.reload)),
|
||||
accelerator: 'CmdOrCtrl+R',
|
||||
click() {
|
||||
const focusedWebContents = electron.webContents.getFocusedWebContents();
|
||||
if (focusedWebContents) {
|
||||
if (focusedWebContents.hostWebContents) {
|
||||
for (const webContentsInstance of electron.webContents.getAllWebContents()) {
|
||||
if (
|
||||
webContentsInstance.hostWebContents ===
|
||||
focusedWebContents.hostWebContents
|
||||
) {
|
||||
webContentsInstance.reload();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
focusedWebContents.reload();
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
label: escapeAmpersand(
|
||||
intl.formatMessage(menuMessages.toggleDevTools)
|
||||
),
|
||||
accelerator: isMac ? 'Alt+Command+I' : 'Ctrl+Shift+I',
|
||||
click() {
|
||||
let focusedWebContents = electron.webContents.getFocusedWebContents();
|
||||
if (focusedWebContents) {
|
||||
const focusedWebContentsUrl = focusedWebContents.getURL();
|
||||
if (
|
||||
focusedWebContentsUrl.startsWith('file://') &&
|
||||
focusedWebContentsUrl.endsWith('/search.html')
|
||||
) {
|
||||
const notionWebviewWebContents = electron.webContents
|
||||
.getAllWebContents()
|
||||
.find(
|
||||
(webContentsInstance) =>
|
||||
webContentsInstance.hostWebContents ===
|
||||
focusedWebContents.hostWebContents &&
|
||||
webContentsInstance !== focusedWebContents
|
||||
);
|
||||
if (notionWebviewWebContents) {
|
||||
focusedWebContents = notionWebviewWebContents;
|
||||
}
|
||||
}
|
||||
focusedWebContents.toggleDevTools();
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
label: escapeAmpersand(
|
||||
intl.formatMessage(menuMessages.toggleWindowDevTools)
|
||||
),
|
||||
accelerator: isMac ? 'Shift+Alt+Command+I' : 'Alt+Ctrl+Shift+I',
|
||||
visible: false,
|
||||
click(menuItem, focusedWindow) {
|
||||
if (focusedWindow) {
|
||||
focusedWindow.webContents.toggleDevTools();
|
||||
}
|
||||
},
|
||||
},
|
||||
{ type: 'separator' },
|
||||
{
|
||||
role: 'togglefullscreen',
|
||||
label: escapeAmpersand(
|
||||
intl.formatMessage(menuMessages.togglefullscreen)
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
windowMenu = {
|
||||
role: 'windowMenu',
|
||||
label: escapeAmpersand(
|
||||
intl.formatMessage(menuMessages.windowMenuTitle)
|
||||
),
|
||||
submenu: isMac
|
||||
? [
|
||||
{
|
||||
role: 'minimize',
|
||||
label: escapeAmpersand(
|
||||
intl.formatMessage(menuMessages.minimize)
|
||||
),
|
||||
},
|
||||
{
|
||||
role: 'zoom',
|
||||
label: escapeAmpersand(intl.formatMessage(menuMessages.zoom)),
|
||||
},
|
||||
{ type: 'separator' },
|
||||
{
|
||||
role: 'front',
|
||||
label: escapeAmpersand(intl.formatMessage(menuMessages.front)),
|
||||
},
|
||||
]
|
||||
: [
|
||||
{
|
||||
role: 'minimize',
|
||||
label: escapeAmpersand(
|
||||
intl.formatMessage(menuMessages.minimize)
|
||||
),
|
||||
},
|
||||
{
|
||||
label: escapeAmpersand(
|
||||
intl.formatMessage(menuMessages.maximize)
|
||||
),
|
||||
click(item, focusedWindow) {
|
||||
if (focusedWindow) {
|
||||
if (focusedWindow.isMaximized()) {
|
||||
focusedWindow.unmaximize();
|
||||
} else {
|
||||
focusedWindow.maximize();
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
...(tabsEnabled
|
||||
? [
|
||||
{
|
||||
role: 'close',
|
||||
label: escapeAmpersand(
|
||||
intl.formatMessage(menuMessages.close)
|
||||
),
|
||||
},
|
||||
]
|
||||
: []),
|
||||
],
|
||||
},
|
||||
helpMenu = {
|
||||
role: 'help',
|
||||
label: escapeAmpersand(intl.formatMessage(menuMessages.helpTitle)),
|
||||
submenu: [
|
||||
{
|
||||
label: escapeAmpersand(intl.formatMessage(menuMessages.help)),
|
||||
click() {
|
||||
electron.shell.openExternal(config.default.baseURL + '/help');
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
appMenu = {
|
||||
role: 'appMenu',
|
||||
submenu: [
|
||||
{
|
||||
role: 'about',
|
||||
label: escapeAmpersand(intl.formatMessage(menuMessages.about)),
|
||||
},
|
||||
{ type: 'separator' },
|
||||
{
|
||||
label: escapeAmpersand(intl.formatMessage(menuMessages.reset)),
|
||||
async click(item, focusedWindow) {
|
||||
await fs.remove(electron.app.getPath('userData'));
|
||||
electron.app.relaunch();
|
||||
electron.app.exit();
|
||||
},
|
||||
},
|
||||
{ type: 'separator' },
|
||||
{
|
||||
role: 'services',
|
||||
label: escapeAmpersand(intl.formatMessage(menuMessages.services)),
|
||||
},
|
||||
{ type: 'separator' },
|
||||
{
|
||||
role: 'hide',
|
||||
label: escapeAmpersand(intl.formatMessage(menuMessages.hide)),
|
||||
},
|
||||
{
|
||||
role: 'hideOthers',
|
||||
label: escapeAmpersand(intl.formatMessage(menuMessages.hideOthers)),
|
||||
},
|
||||
{
|
||||
role: 'unhide',
|
||||
label: escapeAmpersand(intl.formatMessage(menuMessages.unhide)),
|
||||
},
|
||||
...(tabsEnabled
|
||||
? [
|
||||
{ type: 'separator' },
|
||||
{
|
||||
role: 'quit',
|
||||
label: escapeAmpersand(
|
||||
intl.formatMessage(menuMessages.quitMac)
|
||||
),
|
||||
},
|
||||
]
|
||||
: []),
|
||||
],
|
||||
},
|
||||
template = [fileMenu, editMenu, viewMenu, windowMenu, helpMenu];
|
||||
if (isMac) template.unshift(appMenu);
|
||||
const menu = electron.Menu.buildFromTemplate(template);
|
||||
electron.Menu.setApplicationMenu(menu);
|
||||
};
|
||||
};
|
@ -1,196 +0,0 @@
|
||||
/*
|
||||
* notion-enhancer
|
||||
* (c) 2020 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
|
||||
* under the MIT license
|
||||
*/
|
||||
|
||||
@import './css/buttons.css';
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
word-break: break-word;
|
||||
text-decoration: none;
|
||||
text-size-adjust: 100%;
|
||||
font-family: var(--theme--font_sans) !important;
|
||||
outline-color: var(--theme--table-border);
|
||||
}
|
||||
|
||||
@keyframes spin {
|
||||
from {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
to {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
@keyframes tabSlide {
|
||||
from {
|
||||
width: 0;
|
||||
}
|
||||
to {
|
||||
width: 8.5em;
|
||||
}
|
||||
}
|
||||
|
||||
body:not(.error)::after {
|
||||
z-index: 1;
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: calc(50% - 15px);
|
||||
top: calc(50% + 10px);
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
opacity: 0.5;
|
||||
border: 4px solid var(--theme--text);
|
||||
border-top-color: transparent;
|
||||
border-radius: 50%;
|
||||
animation: spin 0.8s linear infinite;
|
||||
}
|
||||
|
||||
html,
|
||||
body,
|
||||
#root {
|
||||
background: var(--theme--main) !important;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
#root {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
[data-platform='darwin'] #titlebar {
|
||||
padding-left: 4em;
|
||||
}
|
||||
#titlebar::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
-webkit-app-region: no-drag;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 2px;
|
||||
}
|
||||
#titlebar {
|
||||
display: flex;
|
||||
flex-shrink: 1;
|
||||
user-select: none;
|
||||
-webkit-app-region: drag;
|
||||
background: var(--theme--dragarea);
|
||||
}
|
||||
#titlebar button {
|
||||
color: var(--theme--text);
|
||||
-webkit-app-region: no-drag;
|
||||
border: none;
|
||||
background: transparent;
|
||||
}
|
||||
#titlebar .window-buttons-area {
|
||||
margin: 0.5em 0.55em 0.5em auto;
|
||||
}
|
||||
#titlebar .window-buttons-area:empty {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#open-enhancer-menu::before {
|
||||
content: '';
|
||||
height: 1.25em;
|
||||
width: 1.25em;
|
||||
display: inline-block;
|
||||
margin: auto 1em -0.25em 1em;
|
||||
background-size: contain;
|
||||
background-image: url('enhancement://core/icons/mac+linux.png');
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
#tabs {
|
||||
margin-top: auto;
|
||||
flex-wrap: wrap;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
#tabs .tab:not(.new):not(.current) {
|
||||
flex: 1 1 30px;
|
||||
min-width: 30px;
|
||||
}
|
||||
#tabs button:nth-child(16) {
|
||||
display: none;
|
||||
opacity: 0;
|
||||
}
|
||||
#tabs .tab {
|
||||
display: inline-flex;
|
||||
background: var(--theme--main);
|
||||
border: none;
|
||||
font-size: 1.15em;
|
||||
padding: 0.2em 0.4em;
|
||||
text-align: left;
|
||||
border-bottom: 0.22em solid var(--theme--table-border);
|
||||
opacity: 0.8;
|
||||
}
|
||||
#tabs .tab img {
|
||||
object-fit: cover;
|
||||
height: 1em;
|
||||
width: 1em;
|
||||
border-radius: 3px;
|
||||
margin: 0 0.5em -0.16em 0.1em;
|
||||
}
|
||||
#tabs .tab:not(.new) {
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
#tabs .tab:not(.new) span:not(.close) {
|
||||
width: 8.5em;
|
||||
margin-right: 0.22em;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
#tabs .tab.slideIn span:not(.close) {
|
||||
animation: tabSlide 100ms ease-in-out;
|
||||
}
|
||||
#tabs .tab.slideOut {
|
||||
width: 0;
|
||||
animation: tabSlide 100ms ease-in-out reverse;
|
||||
}
|
||||
#tabs .tab .close {
|
||||
padding: 0 0.35em 0.1em 0.3em;
|
||||
margin-left: auto;
|
||||
font-weight: bold;
|
||||
}
|
||||
#tabs .tab.current {
|
||||
opacity: 1;
|
||||
background: var(--theme--selected);
|
||||
border-bottom: 0.22em solid var(--theme--option_active-background);
|
||||
}
|
||||
#tabs .tab.new {
|
||||
background: none;
|
||||
border: none;
|
||||
margin-left: -0.1em;
|
||||
margin-top: 0.3em;
|
||||
}
|
||||
#tabs .tab.new span {
|
||||
padding: 0 0.35em 0.1em 0.3em;
|
||||
font-weight: bold;
|
||||
}
|
||||
#tabs .tab:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
#tabs .tab .close:hover,
|
||||
#tabs .tab.new span:hover,
|
||||
#titlebar .window-button:hover {
|
||||
border-radius: 0.22em;
|
||||
background: var(--theme--table-border);
|
||||
box-shadow: 0 0 0 0.5px var(--theme--interactive_hover-border);
|
||||
}
|
||||
#titlebar .window-button.btn-close:hover {
|
||||
background: var(--theme--button_close);
|
||||
color: var(--theme--button_close-fill);
|
||||
}
|
||||
#tabs .tab.dragged-over {
|
||||
box-shadow: inset 0.22em 0 0 0 var(--theme--selected);
|
||||
}
|
||||
|
||||
.notion {
|
||||
z-index: 2;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: none;
|
||||
}
|
@ -1,261 +0,0 @@
|
||||
/*
|
||||
* notion-enhancer
|
||||
* (c) 2020 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
|
||||
* (c) 2020 TarasokUA
|
||||
* under the MIT license
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
let tray, enhancer_menu;
|
||||
|
||||
module.exports = (store, __exports) => {
|
||||
const electron = require('electron'),
|
||||
path = require('path'),
|
||||
is_mac = process.platform === 'darwin',
|
||||
is_win = process.platform === 'win32',
|
||||
helpers = require('../../pkg/helpers.js'),
|
||||
getAllWindows = electron.BrowserWindow.getAllWindows;
|
||||
|
||||
function newWindow() {
|
||||
require('./createWindow.js')(
|
||||
store,
|
||||
require(path.resolve(
|
||||
`${helpers.getNotionResources()}/app/main/createWindow.js`
|
||||
))
|
||||
)(
|
||||
'',
|
||||
getAllWindows().find((win) => win !== enhancer_menu)
|
||||
);
|
||||
}
|
||||
|
||||
electron.app.on('second-instance', (event, args, workingDirectory) => {
|
||||
const windows = getAllWindows();
|
||||
if (windows.some((win) => win.isVisible())) {
|
||||
newWindow();
|
||||
} else {
|
||||
windows.forEach((window) => {
|
||||
window.show();
|
||||
window.focus();
|
||||
if (store().maximized) window.maximize();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
electron.app.once('ready', () => {
|
||||
// tray
|
||||
|
||||
tray = new electron.Tray(
|
||||
is_win
|
||||
? path.resolve(`${__dirname}/icons/windows.ico`)
|
||||
: new electron.nativeImage.createFromPath(
|
||||
path.resolve(`${__dirname}/icons/mac+linux.png`)
|
||||
).resize({
|
||||
width: 16,
|
||||
height: 16,
|
||||
})
|
||||
);
|
||||
|
||||
// menu
|
||||
|
||||
electron.ipcMain.on('enhancer:open-menu', openEnhancerMenu);
|
||||
electron.ipcMain.on('enhancer:set-app-theme', (event, arg) => {
|
||||
electron.webContents
|
||||
.getAllWebContents()
|
||||
.forEach((webContents) =>
|
||||
webContents.send('enhancer:set-app-theme', arg)
|
||||
);
|
||||
});
|
||||
electron.ipcMain.on('enhancer:get-app-theme', (event, arg) => {
|
||||
electron.webContents
|
||||
.getAllWebContents()
|
||||
.forEach((webContents) =>
|
||||
webContents.send('enhancer:get-app-theme', arg)
|
||||
);
|
||||
});
|
||||
electron.ipcMain.on('enhancer:close-tab', (event, target, tab) => {
|
||||
electron.webContents
|
||||
.fromId(target)
|
||||
.webContents.send('enhancer:close-tab', tab);
|
||||
});
|
||||
|
||||
function calculateWindowPos(width, height) {
|
||||
const screen = electron.screen.getDisplayNearestPoint({
|
||||
x: tray.getBounds().x,
|
||||
y: tray.getBounds().y,
|
||||
});
|
||||
// left
|
||||
if (screen.workArea.x > 0)
|
||||
return {
|
||||
x: screen.workArea.x,
|
||||
y: screen.workArea.height - height,
|
||||
};
|
||||
// top
|
||||
if (screen.workArea.y > 0)
|
||||
return {
|
||||
x: Math.round(
|
||||
tray.getBounds().x + tray.getBounds().width / 2 - width / 2
|
||||
),
|
||||
y: screen.workArea.y,
|
||||
};
|
||||
// right
|
||||
if (screen.workArea.width < screen.bounds.width)
|
||||
return {
|
||||
x: screen.workArea.width - width,
|
||||
y: screen.bounds.height - height,
|
||||
};
|
||||
// bottom
|
||||
return {
|
||||
x: Math.round(
|
||||
tray.getBounds().x + tray.getBounds().width / 2 - width / 2
|
||||
),
|
||||
y: screen.workArea.height - height,
|
||||
};
|
||||
}
|
||||
|
||||
function openEnhancerMenu() {
|
||||
if (enhancer_menu) return enhancer_menu.show();
|
||||
const window_state = require(`${helpers
|
||||
.getNotionResources()
|
||||
.replace(/\\/g, '/')}/app/node_modules/electron-window-state/index.js`)(
|
||||
{
|
||||
file: 'menu.windowstate.json',
|
||||
path: helpers.__data,
|
||||
defaultWidth: 275,
|
||||
defaultHeight: 600,
|
||||
}
|
||||
);
|
||||
enhancer_menu = new electron.BrowserWindow({
|
||||
show: true,
|
||||
frame: !store().frameless,
|
||||
titleBarStyle: 'hiddenInset',
|
||||
x:
|
||||
window_state.x ||
|
||||
calculateWindowPos(window_state.width, window_state.height).x,
|
||||
y:
|
||||
window_state.y ||
|
||||
calculateWindowPos(window_state.width, window_state.height).y,
|
||||
width: window_state.width,
|
||||
height: window_state.height,
|
||||
webPreferences: {
|
||||
preload: path.resolve(`${__dirname}/enhancerMenu.js`),
|
||||
nodeIntegration: true,
|
||||
session: electron.session.fromPartition('persist:notion'),
|
||||
enableRemoteModule: true,
|
||||
},
|
||||
});
|
||||
enhancer_menu.loadURL('enhancement://core/menu.html');
|
||||
enhancer_menu.on('close', (e) => {
|
||||
window_state.saveState(enhancer_menu);
|
||||
enhancer_menu = null;
|
||||
});
|
||||
// enhancer_menu.webContents.openDevTools();
|
||||
}
|
||||
|
||||
// tray
|
||||
|
||||
const contextMenu = electron.Menu.buildFromTemplate([
|
||||
{
|
||||
type: 'normal',
|
||||
label: 'GitHub',
|
||||
click: () => {
|
||||
electron.shell.openExternal(
|
||||
'https://github.com/notion-enhancer/notion-enhancer/blob/master/DOCUMENTATION.md'
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'normal',
|
||||
label: 'Discord',
|
||||
click: () => {
|
||||
electron.shell.openExternal('https://discord.gg/sFWPXtA');
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'separator',
|
||||
},
|
||||
{
|
||||
type: 'normal',
|
||||
label: 'Bug Report',
|
||||
click: () => {
|
||||
electron.shell.openExternal(
|
||||
'https://github.com/notion-enhancer/notion-enhancer/issues/new?labels=bug&template=bug-report.md'
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'normal',
|
||||
label: 'Feature Proposal',
|
||||
click: () => {
|
||||
electron.shell.openExternal(
|
||||
'https://github.com/notion-enhancer/notion-enhancer/issues/new?labels=enhancement&template=feature-proposal.md'
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'separator',
|
||||
},
|
||||
{
|
||||
type: 'normal',
|
||||
label: 'Enhancements',
|
||||
accelerator: store().menu_toggle,
|
||||
click: openEnhancerMenu,
|
||||
},
|
||||
{
|
||||
type: 'normal',
|
||||
label: 'New Window',
|
||||
click: newWindow(),
|
||||
accelerator: 'CommandOrControl+Shift+N',
|
||||
},
|
||||
{
|
||||
type: 'normal',
|
||||
label: 'Toggle Visibility',
|
||||
accelerator: store().hotkey,
|
||||
click: toggleWindows,
|
||||
},
|
||||
{
|
||||
type: 'separator',
|
||||
},
|
||||
{
|
||||
label: 'Relaunch',
|
||||
click: () => {
|
||||
electron.app.relaunch();
|
||||
electron.app.quit();
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Quit',
|
||||
role: 'quit',
|
||||
},
|
||||
]);
|
||||
tray.setContextMenu(contextMenu);
|
||||
tray.setToolTip('Notion');
|
||||
|
||||
// hotkey
|
||||
|
||||
function showWindows(windows) {
|
||||
if (is_mac) electron.app.show();
|
||||
if (store().maximized) windows.forEach((win) => [win.maximize()]);
|
||||
else windows.forEach((win) => win.show());
|
||||
electron.app.focus({ steal: true });
|
||||
}
|
||||
function hideWindows(windows) {
|
||||
windows.forEach((win) => [win.isFocused() && win.blur(), win.hide()]);
|
||||
if (is_mac) electron.app.hide();
|
||||
}
|
||||
function toggleWindows() {
|
||||
const windows = getAllWindows();
|
||||
if (windows.some((win) => win.isVisible())) hideWindows(windows);
|
||||
else showWindows(windows);
|
||||
}
|
||||
tray.on('click', toggleWindows);
|
||||
if (store().hotkey) {
|
||||
electron.globalShortcut.register(store().hotkey, () => {
|
||||
const windows = getAllWindows();
|
||||
if (windows.some((win) => win.isFocused() && win.isVisible()))
|
||||
hideWindows(windows);
|
||||
else showWindows(windows);
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
@ -1,810 +0,0 @@
|
||||
/*
|
||||
* notion-enhancer
|
||||
* (c) 2020 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
|
||||
* (c) 2020 TarasokUA
|
||||
* (c) 2020 Arecsu
|
||||
* (c) 2020 u/zenith_illinois
|
||||
* (c) 2020 admiraldus (https://github.com/admiraldus)
|
||||
* under the MIT license
|
||||
*/
|
||||
|
||||
:root {
|
||||
/** dark **/
|
||||
|
||||
--theme_dark--main: rgb(47, 52, 55);
|
||||
--theme_dark--sidebar: rgb(55, 60, 63);
|
||||
--theme_dark--overlay: rgba(15, 15, 15, 0.6);
|
||||
--theme_dark--dragarea: #272d2f;
|
||||
--theme_dark--box-shadow: rgba(15, 15, 15, 0.2) 0px 0px 0px 1px,
|
||||
rgba(15, 15, 15, 0.2) 0px 2px 4px;
|
||||
--theme_dark--box-shadow_strong: rgba(15, 15, 15, 0.1) 0px 0px 0px 1px,
|
||||
rgba(15, 15, 15, 0.2) 0px 3px 6px, rgba(15, 15, 15, 0.4) 0px 9px 24px;
|
||||
--theme_dark--page_normal-width: 900px;
|
||||
--theme_dark--page_full-width: 100%;
|
||||
--theme_dark--page-padding: calc(96px + env(safe-area-inset-left));
|
||||
--theme_dark--page_banner-height: 30vh;
|
||||
--theme_dark--preview-width: 977px;
|
||||
--theme_dark--preview-padding: 8rem;
|
||||
--theme_dark--preview_banner-height: 20vh;
|
||||
|
||||
--theme_dark--font_sans: -apple-system, BlinkMacSystemFont, 'Segoe UI',
|
||||
Helvetica, 'Apple Color Emoji', Arial, sans-serif, 'Segoe UI Emoji',
|
||||
'Segoe UI Symbol';
|
||||
--theme_dark--font_serif: Lyon-Text, Georgia, YuMincho, 'Yu Mincho',
|
||||
'Hiragino Mincho ProN', 'Hiragino Mincho Pro', 'Songti TC', 'Songti SC',
|
||||
SimSun, 'Nanum Myeongjo', NanumMyeongjo, Batang, serif;
|
||||
--theme_dark--font_mono: iawriter-mono, Nitti, Menlo, Courier, monospace;
|
||||
--theme_dark--font_code: SFMono-Regular, Consolas, 'Liberation Mono', Menlo,
|
||||
Courier, monospace;
|
||||
--theme_dark--font_quote: var(--theme_dark--font_sans);
|
||||
--theme_dark--font_headings: var(--theme_dark--font_sans);
|
||||
|
||||
--theme_dark--font_title-size: 40px;
|
||||
--theme_dark--font_heading1-size: 1.875em;
|
||||
--theme_dark--font_heading2-size: 1.5em;
|
||||
--theme_dark--font_heading3-size: 1.25em;
|
||||
--theme_dark--font_label-size: 14px;
|
||||
--theme_dark--font_body-size: 16px;
|
||||
--theme_dark--font_body-size_small: 14px;
|
||||
--theme_dark--font_code-size: 0.796875em;
|
||||
--theme_dark--font_sidebar-size: 14px;
|
||||
|
||||
--theme_dark--text-block_line-height: 1.5;
|
||||
--theme_dark--text-block_margin-top: 1px;
|
||||
|
||||
--theme_dark--scrollbar: #505457;
|
||||
--theme_dark--scrollbar-border: transparent;
|
||||
--theme_dark--scrollbar_hover: #696d6f;
|
||||
|
||||
--theme_dark--card: rgb(63, 68, 71);
|
||||
--theme_dark--gallery: rgba(255, 255, 255, 0.05);
|
||||
--theme_dark--select_input: rgb(55, 60, 63);
|
||||
--theme_dark--table-border: rgba(255, 255, 255, 0.1);
|
||||
--theme_dark--table-border_row: rgb(77, 81, 83);
|
||||
--theme_dark--table-border_column: rgb(63, 66, 69);
|
||||
--theme_dark--table-border_selected: rgba(46, 170, 220, 0.6);
|
||||
--theme_dark--ui-border: rgba(255, 255, 255, 0.07);
|
||||
--theme_dark--interactive_hover: rgb(71, 76, 80);
|
||||
--theme_dark--interactive_hover-border: transparent;
|
||||
--theme_dark--button_close: #e81123;
|
||||
--theme_dark--button_close-fill: white;
|
||||
|
||||
--theme_dark--selected: rgba(46, 170, 220, 0.2);
|
||||
--theme_dark--primary: rgb(46, 170, 220);
|
||||
--theme_dark--primary_text: white;
|
||||
--theme_dark--primary_hover: rgb(6, 156, 205);
|
||||
--theme_dark--primary_click: rgb(0, 141, 190);
|
||||
--theme_dark--primary_indicator: rgb(235, 87, 87);
|
||||
--theme_dark--primary_indicator_text: var(--theme_dark--primary_text);
|
||||
--theme_dark--primary_indicator_hover: rgba(45, 156, 219, 0.2);
|
||||
|
||||
--theme_dark--option-color: white;
|
||||
--theme_dark--option-background: transparent;
|
||||
--theme_dark--option_active-color: white;
|
||||
--theme_dark--option_active-background: var(--theme_dark--primary);
|
||||
--theme_dark--option_hover-color: white;
|
||||
--theme_dark--option_hover-background: rgb(71, 76, 80);
|
||||
|
||||
--theme_dark--danger_text: rgb(235, 87, 87);
|
||||
--theme_dark--danger_border: rgba(235, 87, 87, 0.5);
|
||||
|
||||
--theme_dark--divider: var(--theme_dark--table-border);
|
||||
|
||||
--theme_dark--text: rgba(255, 255, 255, 0.9);
|
||||
--theme_dark--text_ui: rgba(255, 255, 255, 0.6);
|
||||
--theme_dark--text_ui_info: rgba(255, 255, 255, 0.4);
|
||||
|
||||
--theme_dark--text_gray: rgba(151, 154, 155, 0.95);
|
||||
--theme_dark--text_brown: rgb(147, 114, 100);
|
||||
--theme_dark--text_orange: rgb(255, 163, 68);
|
||||
--theme_dark--text_yellow: rgb(255, 220, 73);
|
||||
--theme_dark--text_green: rgb(77, 171, 154);
|
||||
--theme_dark--text_blue: rgb(82, 156, 202);
|
||||
--theme_dark--text_purple: rgb(154, 109, 215);
|
||||
--theme_dark--text_pink: rgb(226, 85, 161);
|
||||
--theme_dark--text_red: rgb(255, 115, 105);
|
||||
|
||||
--theme_dark--bg-text: var(--theme_dark--text);
|
||||
--theme_dark--bg_gray: rgb(69, 75, 78);
|
||||
--theme_dark--bg_gray-text: var(--theme_dark--bg-text);
|
||||
--theme_dark--bg_brown: rgb(67, 64, 64);
|
||||
--theme_dark--bg_brown-text: var(--theme_dark--bg-text);
|
||||
--theme_dark--bg_orange: rgb(89, 74, 58);
|
||||
--theme_dark--bg_orange-text: var(--theme_dark--bg-text);
|
||||
--theme_dark--bg_yellow: rgb(89, 86, 59);
|
||||
--theme_dark--bg_yellow-text: var(--theme_dark--bg-text);
|
||||
--theme_dark--bg_green: rgb(53, 76, 75);
|
||||
--theme_dark--bg_green-text: var(--theme_dark--bg-text);
|
||||
--theme_dark--bg_blue: rgb(54, 73, 84);
|
||||
--theme_dark--bg_blue-text: var(--theme_dark--bg-text);
|
||||
--theme_dark--bg_purple: rgb(68, 63, 87);
|
||||
--theme_dark--bg_purple-text: var(--theme_dark--bg-text);
|
||||
--theme_dark--bg_pink: rgb(83, 59, 76);
|
||||
--theme_dark--bg_pink-text: var(--theme_dark--bg-text);
|
||||
--theme_dark--bg_red: rgb(89, 65, 65);
|
||||
--theme_dark--bg_red-text: var(--theme_dark--bg-text);
|
||||
|
||||
--theme_dark--line-text: var(--theme_dark--text);
|
||||
--theme_dark--line_gray: rgb(69, 75, 78);
|
||||
--theme_dark--line_gray-text: var(--theme_dark--line-text);
|
||||
--theme_dark--line_brown: rgb(67, 64, 64);
|
||||
--theme_dark--line_brown-text: var(--theme_dark--line-text);
|
||||
--theme_dark--line_orange: rgb(89, 74, 58);
|
||||
--theme_dark--line_orange-text: var(--theme_dark--line-text);
|
||||
--theme_dark--line_yellow: rgb(89, 86, 59);
|
||||
--theme_dark--line_yellow-text: var(--theme_dark--line-text);
|
||||
--theme_dark--line_green: rgb(53, 76, 75);
|
||||
--theme_dark--line_green-text: var(--theme_dark--line-text);
|
||||
--theme_dark--line_blue: rgb(54, 73, 84);
|
||||
--theme_dark--line_blue-text: var(--theme_dark--line-text);
|
||||
--theme_dark--line_purple: rgb(68, 63, 87);
|
||||
--theme_dark--line_purple-text: var(--theme_dark--line-text);
|
||||
--theme_dark--line_pink: rgb(83, 59, 76);
|
||||
--theme_dark--line_pink-text: var(--theme_dark--line-text);
|
||||
--theme_dark--line_red: rgb(89, 65, 65);
|
||||
--theme_dark--line_red-text: var(--theme_dark--line-text);
|
||||
|
||||
--theme_dark--select-text: var(--theme_dark--text);
|
||||
--theme_dark--select_gray: rgba(151, 154, 155, 0.5);
|
||||
--theme_dark--select_gray-text: var(--theme_dark--select-text);
|
||||
--theme_dark--select_brown: rgba(147, 114, 100, 0.5);
|
||||
--theme_dark--select_brown-text: var(--theme_dark--select-text);
|
||||
--theme_dark--select_orange: rgba(255, 163, 68, 0.5);
|
||||
--theme_dark--select_orange-text: var(--theme_dark--select-text);
|
||||
--theme_dark--select_yellow: rgba(255, 220, 73, 0.5);
|
||||
--theme_dark--select_yellow-text: var(--theme_dark--select-text);
|
||||
--theme_dark--select_green: rgba(77, 171, 154, 0.5);
|
||||
--theme_dark--select_green-text: var(--theme_dark--select-text);
|
||||
--theme_dark--select_blue: rgba(82, 156, 202, 0.5);
|
||||
--theme_dark--select_blue-text: var(--theme_dark--select-text);
|
||||
--theme_dark--select_purple: rgba(154, 109, 215, 0.5);
|
||||
--theme_dark--select_purple-text: var(--theme_dark--select-text);
|
||||
--theme_dark--select_pink: rgba(226, 85, 161, 0.5);
|
||||
--theme_dark--select_pink-text: var(--theme_dark--select-text);
|
||||
--theme_dark--select_red: rgba(255, 115, 105, 0.5);
|
||||
--theme_dark--select_red-text: var(--theme_dark--select-text);
|
||||
|
||||
--theme_dark--callout-text: var(--theme_dark--text);
|
||||
--theme_dark--callout_gray: rgba(69, 75, 78, 0.3);
|
||||
--theme_dark--callout_gray-text: var(--theme_dark--callout-text);
|
||||
--theme_dark--callout_brown: rgba(67, 64, 64, 0.3);
|
||||
--theme_dark--callout_brown-text: var(--theme_dark--callout-text);
|
||||
--theme_dark--callout_orange: rgba(89, 74, 58, 0.3);
|
||||
--theme_dark--callout_orange-text: var(--theme_dark--callout-text);
|
||||
--theme_dark--callout_yellow: rgba(89, 86, 59, 0.3);
|
||||
--theme_dark--callout_yellow-text: var(--theme_dark--callout-text);
|
||||
--theme_dark--callout_green: rgba(53, 76, 75, 0.3);
|
||||
--theme_dark--callout_green-text: var(--theme_dark--callout-text);
|
||||
--theme_dark--callout_blue: rgba(54, 73, 84, 0.3);
|
||||
--theme_dark--callout_blue-text: var(--theme_dark--callout-text);
|
||||
--theme_dark--callout_purple: rgba(68, 63, 87, 0.3);
|
||||
--theme_dark--callout_purple-text: var(--theme_dark--callout-text);
|
||||
--theme_dark--callout_pink: rgba(83, 59, 76, 0.3);
|
||||
--theme_dark--callout_pink-text: var(--theme_dark--callout-text);
|
||||
--theme_dark--callout_red: rgba(89, 65, 65, 0.3);
|
||||
--theme_dark--callout_red-text: var(--theme_dark--callout-text);
|
||||
|
||||
--theme_dark--code_inline-text: #eb5757;
|
||||
--theme_dark--code_inline-background: rgba(135, 131, 120, 0.15);
|
||||
--theme_dark--code-text: var(--theme_dark--text);
|
||||
--theme_dark--code-background: var(--theme_dark--card);
|
||||
--theme_dark--code_function: var(--theme_dark--code-text);
|
||||
--theme_dark--code_parameter: var(--theme_dark--code-text);
|
||||
--theme_dark--code_keyword: hsl(350, 40%, 70%);
|
||||
--theme_dark--code_constant: hsl(350, 40%, 70%);
|
||||
--theme_dark--code_tag: hsl(350, 40%, 70%);
|
||||
--theme_dark--code_operator: hsl(40, 90%, 60%);
|
||||
--theme_dark--code_important: #e90;
|
||||
--theme_dark--code_regex: #e90;
|
||||
--theme_dark--code_property: hsl(350, 40%, 70%);
|
||||
--theme_dark--code_builtin: hsl(75, 70%, 60%);
|
||||
--theme_dark--code_class-name: var(--theme_dark--code-text);
|
||||
--theme_dark--code_attr-name: hsl(75, 70%, 60%);
|
||||
--theme_dark--code_attr-value: hsl(350, 40%, 70%);
|
||||
--theme_dark--code_selector: hsl(75, 70%, 60%);
|
||||
--theme_dark--code_id: var(--theme_dark--code-text);
|
||||
--theme_dark--code_class: var(--theme_dark--code-text);
|
||||
--theme_dark--code_pseudo-element: var(--theme_dark--code-text);
|
||||
--theme_dark--code_pseudo-class: var(--theme_dark--code-text);
|
||||
--theme_dark--code_attribute: var(--theme_dark--code-text);
|
||||
--theme_dark--code_value: var(--theme_dark--code-text);
|
||||
--theme_dark--code_unit: var(--theme_dark--code-text);
|
||||
--theme_dark--code_comment: hsl(30, 20%, 50%);
|
||||
--theme_dark--code_punctuation: var(--theme_dark--code-text);
|
||||
--theme_dark--code_annotation: var(--theme_dark--code_punctuation);
|
||||
--theme_dark--code_decorator: var(--theme_dark--code_punctuation);
|
||||
--theme_dark--code_doctype: hsl(30, 20%, 50%);
|
||||
--theme_dark--code_number: hsl(350, 40%, 70%);
|
||||
--theme_dark--code_string: hsl(75, 70%, 60%);
|
||||
--theme_dark--code_boolean: hsl(350, 40%, 70%);
|
||||
|
||||
/** light **/
|
||||
|
||||
--theme_light--main: white;
|
||||
--theme_light--sidebar: rgb(247, 246, 243);
|
||||
--theme_light--overlay: rgba(15, 15, 15, 0.6);
|
||||
--theme_light--dragarea: rgba(55, 53, 47, 0.04);
|
||||
--theme_light--box-shadow: rgba(15, 15, 15, 0.1) 0px 0px 0px 1px,
|
||||
rgba(15, 15, 15, 0.1) 0px 2px 4px;
|
||||
--theme_light--box-shadow_strong: rgba(15, 15, 15, 0.05) 0px 0px 0px 1px,
|
||||
rgba(15, 15, 15, 0.1) 0px 3px 6px, rgba(15, 15, 15, 0.2) 0px 9px 24px;
|
||||
--theme_light--page_normal-width: 900px;
|
||||
--theme_light--page_full-width: 100%;
|
||||
--theme_light--page-padding: calc(96px + env(safe-area-inset-left));
|
||||
--theme_light--page_banner-height: 30vh;
|
||||
--theme_light--preview-width: 977px;
|
||||
--theme_light--preview-padding: 8rem;
|
||||
--theme_light--preview_banner-height: 20vh;
|
||||
|
||||
--theme_light--font_sans: -apple-system, BlinkMacSystemFont, 'Segoe UI',
|
||||
Helvetica, 'Apple Color Emoji', Arial, sans-serif, 'Segoe UI Emoji',
|
||||
'Segoe UI Symbol';
|
||||
--theme_light--font_serif: Lyon-Text, Georgia, YuMincho, 'Yu Mincho',
|
||||
'Hiragino Mincho ProN', 'Hiragino Mincho Pro', 'Songti TC', 'Songti SC',
|
||||
SimSun, 'Nanum Myeongjo', NanumMyeongjo, Batang, serif;
|
||||
--theme_light--font_mono: iawriter-mono, Nitti, Menlo, Courier, monospace;
|
||||
--theme_light--font_code: SFMono-Regular, Consolas, 'Liberation Mono', Menlo,
|
||||
Courier, monospace;
|
||||
--theme_light--font_quote: var(--theme_light--font_sans);
|
||||
--theme_light--font_headings: var(--theme_light--font_sans);
|
||||
|
||||
--theme_light--font_title-size: 40px;
|
||||
--theme_light--font_heading1-size: 1.875em;
|
||||
--theme_light--font_heading2-size: 1.5em;
|
||||
--theme_light--font_heading3-size: 1.25em;
|
||||
--theme_light--font_label-size: 14px;
|
||||
--theme_light--font_body-size: 16px;
|
||||
--theme_light--font_body-size_small: 14px;
|
||||
--theme_light--font_code-size: 0.796875em;
|
||||
--theme_light--font_sidebar-size: 14px;
|
||||
|
||||
--theme_light--text-block_line-height: 1.5;
|
||||
--theme_light--text-block_margin-top: 1px;
|
||||
|
||||
--theme_light--scrollbar: #d9d8d6;
|
||||
--theme_light--scrollbar-border: #cacac8;
|
||||
--theme_light--scrollbar_hover: #cacac8;
|
||||
|
||||
--theme_light--card: rgb(247, 247, 247);
|
||||
--theme_light--gallery: rgba(55, 53, 47, 0.024);
|
||||
--theme_light--select_input: rgba(242, 241, 238, 0.6);
|
||||
--theme_light--table-border: rgba(55, 53, 47, 0.16);
|
||||
--theme_light--table-border_row: rgb(223, 223, 222);
|
||||
--theme_light--table-border_column: rgb(237, 237, 236);
|
||||
--theme_light--table-border_selected: rgba(46, 170, 220, 0.6);
|
||||
--theme_light--ui-border: rgba(55, 53, 47, 0.09);
|
||||
--theme_light--interactive_hover: rgb(239, 239, 239);
|
||||
--theme_light--interactive_hover-border: transparent;
|
||||
--theme_light--button_close: #e81123;
|
||||
--theme_light--button_close-fill: white;
|
||||
|
||||
--theme_light--selected: rgba(46, 170, 220, 0.2);
|
||||
--theme_light--primary: rgb(46, 170, 220);
|
||||
--theme_light--primary_text: white;
|
||||
--theme_light--primary_hover: rgb(6, 156, 205);
|
||||
--theme_light--primary_click: rgb(0, 141, 190);
|
||||
--theme_light--primary_indicator: rgb(235, 87, 87);
|
||||
--theme_light--primary_indicator_text: var(--theme_light--primary_text);
|
||||
--theme_light--primary_indicator_hover: rgba(45, 156, 219, 0.2);
|
||||
|
||||
--theme_light--option-color: black;
|
||||
--theme_light--option-background: transparent;
|
||||
--theme_light--option_hover-color: black;
|
||||
--theme_light--option_hover-background: rgba(55, 53, 47, 0.08);
|
||||
--theme_light--option_active-color: white;
|
||||
--theme_light--option_active-background: var(--theme_light--primary);
|
||||
|
||||
--theme_light--danger_text: rgb(235, 87, 87);
|
||||
--theme_light--danger_border: rgba(235, 87, 87, 0.5);
|
||||
|
||||
--theme_light--divider: var(--theme_light--table-border);
|
||||
|
||||
--theme_light--text: rgb(55, 53, 47);
|
||||
--theme_light--text_ui: rgba(55, 53, 47, 0.6);
|
||||
--theme_light--text_ui: rgba(55, 53, 47, 0.6);
|
||||
--theme_light--text_ui_info: rgba(55, 53, 47, 0.4);
|
||||
|
||||
--theme_light--text_gray: rgb(155, 154, 151);
|
||||
--theme_light--text_brown: rgb(100, 71, 58);
|
||||
--theme_light--text_orange: rgb(217, 115, 13);
|
||||
--theme_light--text_yellow: rgb(223, 171, 1);
|
||||
--theme_light--text_green: rgb(15, 123, 108);
|
||||
--theme_light--text_blue: rgb(11, 110, 153);
|
||||
--theme_light--text_purple: rgb(105, 64, 165);
|
||||
--theme_light--text_pink: rgb(173, 26, 114);
|
||||
--theme_light--text_red: rgb(224, 62, 62);
|
||||
|
||||
--theme_light--bg-text: var(--theme_light--text);
|
||||
--theme_light--bg_gray: rgb(235, 236, 237);
|
||||
--theme_light--bg_gray-text: var(--theme_light--bg-text);
|
||||
--theme_light--bg_brown: rgb(233, 229, 227);
|
||||
--theme_light--bg_brown-text: var(--theme_light--bg-text);
|
||||
--theme_light--bg_orange: rgb(250, 235, 221);
|
||||
--theme_light--bg_orange-text: var(--theme_light--bg-text);
|
||||
--theme_light--bg_yellow: rgb(251, 243, 219);
|
||||
--theme_light--bg_yellow-text: var(--theme_light--bg-text);
|
||||
--theme_light--bg_green: rgb(221, 237, 234);
|
||||
--theme_light--bg_green-text: var(--theme_light--bg-text);
|
||||
--theme_light--bg_blue: rgb(221, 235, 241);
|
||||
--theme_light--bg_blue-text: var(--theme_light--bg-text);
|
||||
--theme_light--bg_purple: rgb(234, 228, 242);
|
||||
--theme_light--bg_purple-text: var(--theme_light--bg-text);
|
||||
--theme_light--bg_pink: rgb(244, 223, 235);
|
||||
--theme_light--bg_pink-text: var(--theme_light--bg-text);
|
||||
--theme_light--bg_red: rgb(251, 228, 228);
|
||||
--theme_light--bg_red-text: var(--theme_light--bg-text);
|
||||
|
||||
--theme_light--line-text: var(--theme_light--text);
|
||||
--theme_light--line_gray: rgb(235, 236, 237);
|
||||
--theme_light--line_gray-text: var(--theme_light--line-text);
|
||||
--theme_light--line_brown: rgb(233, 229, 227);
|
||||
--theme_light--line_brown-text: var(--theme_light--line-text);
|
||||
--theme_light--line_orange: rgb(250, 235, 221);
|
||||
--theme_light--line_orange-text: var(--theme_light--line-text);
|
||||
--theme_light--line_yellow: rgb(251, 243, 219);
|
||||
--theme_light--line_yellow-text: var(--theme_light--line-text);
|
||||
--theme_light--line_green: rgb(221, 237, 234);
|
||||
--theme_light--line_green-text: var(--theme_light--line-text);
|
||||
--theme_light--line_blue: rgb(221, 235, 241);
|
||||
--theme_light--line_blue-text: var(--theme_light--line-text);
|
||||
--theme_light--line_purple: rgb(234, 228, 242);
|
||||
--theme_light--line_purple-text: var(--theme_light--line-text);
|
||||
--theme_light--line_pink: rgb(244, 223, 235);
|
||||
--theme_light--line_pink-text: var(--theme_light--line-text);
|
||||
--theme_light--line_red: rgb(251, 228, 228);
|
||||
--theme_light--line_red-text: var(--theme_light--line-text);
|
||||
|
||||
--theme_light--select-text: var(--theme_light--text);
|
||||
--theme_light--select_gray: rgba(140, 46, 0, 0.2);
|
||||
--theme_light--select_gray-text: var(--theme_light--select-text);
|
||||
--theme_light--select_brown: rgba(140, 46, 0, 0.2);
|
||||
--theme_light--select_brown-text: var(--theme_light--select-text);
|
||||
--theme_light--select_orange: rgba(245, 93, 0, 0.2);
|
||||
--theme_light--select_orange-text: var(--theme_light--select-text);
|
||||
--theme_light--select_yellow: rgba(233, 168, 0, 0.2);
|
||||
--theme_light--select_yellow-text: var(--theme_light--select-text);
|
||||
--theme_light--select_green: rgba(0, 135, 107, 0.2);
|
||||
--theme_light--select_green-text: var(--theme_light--select-text);
|
||||
--theme_light--select_blue: rgba(0, 120, 223, 0.2);
|
||||
--theme_light--select_blue-text: var(--theme_light--select-text);
|
||||
--theme_light--select_purple: rgba(103, 36, 222, 0.2);
|
||||
--theme_light--select_purple-text: var(--theme_light--select-text);
|
||||
--theme_light--select_pink: rgba(221, 0, 129, 0.2);
|
||||
--theme_light--select_pink-text: var(--theme_light--select-text);
|
||||
--theme_light--select_red: rgba(255, 0, 26, 0.2);
|
||||
--theme_light--select_red-text: var(--theme_light--select-text);
|
||||
|
||||
--theme_light--callout-text: var(--theme_light--text);
|
||||
--theme_light--callout_gray: rgba(235, 236, 237, 0.3);
|
||||
--theme_light--callout_gray-text: var(--theme_light--callout-text);
|
||||
--theme_light--callout_brown: rgba(233, 229, 227, 0.3);
|
||||
--theme_light--callout_brown-text: var(--theme_light--callout-text);
|
||||
--theme_light--callout_orange: rgba(250, 235, 221, 0.3);
|
||||
--theme_light--callout_orange-text: var(--theme_light--callout-text);
|
||||
--theme_light--callout_yellow: rgba(251, 243, 219, 0.3);
|
||||
--theme_light--callout_yellow-text: var(--theme_light--callout-text);
|
||||
--theme_light--callout_green: rgba(221, 237, 234, 0.3);
|
||||
--theme_light--callout_green-text: var(--theme_light--callout-text);
|
||||
--theme_light--callout_blue: rgba(221, 235, 241, 0.3);
|
||||
--theme_light--callout_blue-text: var(--theme_light--callout-text);
|
||||
--theme_light--callout_purple: rgba(234, 228, 242, 0.3);
|
||||
--theme_light--callout_purple-text: var(--theme_light--callout-text);
|
||||
--theme_light--callout_pink: rgba(244, 223, 235, 0.3);
|
||||
--theme_light--callout_pink-text: var(--theme_light--callout-text);
|
||||
--theme_light--callout_red: rgba(251, 228, 228, 0.3);
|
||||
--theme_light--callout_red-text: var(--theme_light--callout-text);
|
||||
|
||||
--theme_light--code_inline-text: #eb5757;
|
||||
--theme_light--code_inline-background: rgba(135, 131, 120, 0.15);
|
||||
--theme_light--code-text: var(--theme_light--text);
|
||||
--theme_light--code-background: var(--theme_light--card);
|
||||
--theme_light--code_function: #dd4a68;
|
||||
--theme_light--code_parameter: var(--theme_light--code-text);
|
||||
--theme_light--code_keyword: #07a;
|
||||
--theme_light--code_constant: #905;
|
||||
--theme_light--code_tag: #905;
|
||||
--theme_light--code_operator: #9a6e3a;
|
||||
--theme_light--code_important: #e90;
|
||||
--theme_light--code_regex: #e90;
|
||||
--theme_light--code_property: #905;
|
||||
--theme_light--code_builtin: #690;
|
||||
--theme_light--code_class-name: #dd4a68;
|
||||
--theme_light--code_attr-name: #690;
|
||||
--theme_light--code_attr-value: #07a;
|
||||
--theme_light--code_selector: #690;
|
||||
--theme_light--code_id: var(--theme_light--code-text);
|
||||
--theme_light--code_class: var(--theme_light--code-text);
|
||||
--theme_light--code_pseudo-element: var(--theme_light--code-text);
|
||||
--theme_light--code_pseudo-class: var(--theme_light--code-text);
|
||||
--theme_light--code_attribute: var(--theme_light--code-text);
|
||||
--theme_light--code_value: var(--theme_light--code-text);
|
||||
--theme_light--code_unit: var(--theme_light--code-text);
|
||||
--theme_light--code_comment: slategray;
|
||||
--theme_light--code_punctuation: #999;
|
||||
--theme_light--code_annotation: var(--theme_light--code_punctuation);
|
||||
--theme_light--code_decorator: var(--theme_light--code_punctuation);
|
||||
--theme_light--code_doctype: slategray;
|
||||
--theme_light--code_number: #905;
|
||||
--theme_light--code_string: #690;
|
||||
--theme_light--code_boolean: #905;
|
||||
}
|
||||
|
||||
.notion-dark-theme {
|
||||
--theme--main: var(--theme_dark--main);
|
||||
--theme--sidebar: var(--theme_dark--sidebar);
|
||||
--theme--overlay: var(--theme_dark--overlay);
|
||||
--theme--dragarea: var(--theme_dark--dragarea);
|
||||
--theme--box-shadow: var(--theme_dark--box-shadow);
|
||||
--theme--box-shadow_strong: var(--theme_dark--box-shadow_strong);
|
||||
--theme--page_normal-width: var(--theme_dark--page_normal-width);
|
||||
--theme--page_full-width: var(--theme_dark--page_full-width);
|
||||
--theme--page-padding: var(--theme_dark--page-padding);
|
||||
--theme--page_banner-height: var(--theme_dark--page_banner-height);
|
||||
--theme--preview-width: var(--theme_dark--preview-width);
|
||||
--theme--preview-padding: var(--theme_dark--preview-padding);
|
||||
--theme--preview_banner-height: var(--theme_dark--preview_banner-height);
|
||||
--theme--font_sans: var(--theme_dark--font_sans);
|
||||
--theme--font_serif: var(--theme_dark--font_serif);
|
||||
--theme--font_mono: var(--theme_dark--font_mono);
|
||||
--theme--font_code: var(--theme_dark--font_code);
|
||||
--theme--font_quote: var(--theme_dark--font_quote);
|
||||
--theme--font_headings: var(--theme_dark--font_headings);
|
||||
--theme--font_title-size: var(--theme_dark--font_title-size);
|
||||
--theme--font_heading1-size: var(--theme_dark--font_heading1-size);
|
||||
--theme--font_heading2-size: var(--theme_dark--font_heading2-size);
|
||||
--theme--font_heading3-size: var(--theme_dark--font_heading3-size);
|
||||
--theme--font_label-size: var(--theme_dark--font_label-size);
|
||||
--theme--font_body-size: var(--theme_dark--font_body-size);
|
||||
--theme--font_body-size_small: var(--theme_dark--font_body-size_small);
|
||||
--theme--font_code-size: var(--theme_dark--font_code-size);
|
||||
--theme--font_sidebar-size: var(--theme_dark--font_sidebar-size);
|
||||
--theme--text-block_line-height: var(--theme_dark--text-block_line-height);
|
||||
--theme--text-block_margin-top: var(--theme_dark--text-block_margin-top);
|
||||
--theme--scrollbar: var(--theme_dark--scrollbar);
|
||||
--theme--scrollbar-border: var(--theme_dark--scrollbar-border);
|
||||
--theme--scrollbar_hover: var(--theme_dark--scrollbar_hover);
|
||||
--theme--card: var(--theme_dark--card);
|
||||
--theme--gallery: var(--theme_dark--gallery);
|
||||
--theme--select_input: var(--theme_dark--select_input);
|
||||
--theme--table-border: var(--theme_dark--table-border);
|
||||
--theme--table-border_row: var(--theme_dark--table-border_row);
|
||||
--theme--table-border_column: var(--theme_dark--table-border_column);
|
||||
--theme--table-border_selected: var(--theme_dark--table-border_selected);
|
||||
--theme--ui-border: var(--theme_dark--ui-border);
|
||||
--theme--interactive_hover: var(--theme_dark--interactive_hover);
|
||||
--theme--interactive_hover-border: var(
|
||||
--theme_dark--interactive_hover-border
|
||||
);
|
||||
--theme--button_close: var(--theme_dark--button_close);
|
||||
--theme--button_close-fill: var(--theme_dark--button_close-fill);
|
||||
--theme--selected: var(--theme_dark--selected);
|
||||
--theme--primary: var(--theme_dark--primary);
|
||||
--theme--primary_text: var(--theme_dark--primary_text);
|
||||
--theme--primary_hover: var(--theme_dark--primary_hover);
|
||||
--theme--primary_click: var(--theme_dark--primary_click);
|
||||
--theme--primary_indicator: var(--theme_dark--primary_indicator);
|
||||
--theme--primary_indicator_text: var(--theme_dark--primary_indicator_text);
|
||||
--theme--primary_indicator_hover: var(--theme_dark--primary_indicator_hover);
|
||||
--theme--option-color: var(--theme_dark--option-color);
|
||||
--theme--option-background: var(--theme_dark--option-background);
|
||||
--theme--option_active-color: var(--theme_dark--option_active-color);
|
||||
--theme--option_active-background: var(
|
||||
--theme_dark--option_active-background
|
||||
);
|
||||
--theme--option_hover-color: var(--theme_dark--option_hover-color);
|
||||
--theme--option_hover-background: var(--theme_dark--option_hover-background);
|
||||
--theme--danger_text: var(--theme_dark--danger_text);
|
||||
--theme--danger_border: var(--theme_dark--danger_border);
|
||||
--theme--divider: var(--theme_dark--divider);
|
||||
--theme--text: var(--theme_dark--text);
|
||||
--theme--text_ui: var(--theme_dark--text_ui);
|
||||
--theme--text_ui_info: var(--theme_dark--text_ui_info);
|
||||
--theme--text_gray: var(--theme_dark--text_gray);
|
||||
--theme--text_brown: var(--theme_dark--text_brown);
|
||||
--theme--text_orange: var(--theme_dark--text_orange);
|
||||
--theme--text_yellow: var(--theme_dark--text_yellow);
|
||||
--theme--text_green: var(--theme_dark--text_green);
|
||||
--theme--text_blue: var(--theme_dark--text_blue);
|
||||
--theme--text_purple: var(--theme_dark--text_purple);
|
||||
--theme--text_pink: var(--theme_dark--text_pink);
|
||||
--theme--text_red: var(--theme_dark--text_red);
|
||||
--theme--select-text: var(--theme_dark--select-text);
|
||||
--theme--bg-text: var(--theme_dark--bg-text);
|
||||
--theme--bg_gray: var(--theme_dark--bg_gray);
|
||||
--theme--bg_gray-text: var(--theme_dark--bg_gray-text);
|
||||
--theme--bg_brown: var(--theme_dark--bg_brown);
|
||||
--theme--bg_brown-text: var(--theme_dark--bg_brown-text);
|
||||
--theme--bg_orange: var(--theme_dark--bg_orange);
|
||||
--theme--bg_orange-text: var(--theme_dark--bg_orange-text);
|
||||
--theme--bg_yellow: var(--theme_dark--bg_yellow);
|
||||
--theme--bg_yellow-text: var(--theme_dark--bg_yellow-text);
|
||||
--theme--bg_green: var(--theme_dark--bg_green);
|
||||
--theme--bg_green-text: var(--theme_dark--bg_green-text);
|
||||
--theme--bg_blue: var(--theme_dark--bg_blue);
|
||||
--theme--bg_blue-text: var(--theme_dark--bg_blue-text);
|
||||
--theme--bg_purple: var(--theme_dark--bg_purple);
|
||||
--theme--bg_purple-text: var(--theme_dark--bg_purple-text);
|
||||
--theme--bg_pink: var(--theme_dark--bg_pink);
|
||||
--theme--bg_pink-text: var(--theme_dark--bg_pink-text);
|
||||
--theme--bg_red: var(--theme_dark--bg_red);
|
||||
--theme--bg_red-text: var(--theme_dark--bg_red-text);
|
||||
--theme--line-text: var(--theme_dark--line-text);
|
||||
--theme--line_gray: var(--theme_dark--line_gray);
|
||||
--theme--line_gray-text: var(--theme_dark--line_gray-text);
|
||||
--theme--line_brown: var(--theme_dark--line_brown);
|
||||
--theme--line_brown-text: var(--theme_dark--line_brown-text);
|
||||
--theme--line_orange: var(--theme_dark--line_orange);
|
||||
--theme--line_orange-text: var(--theme_dark--line_orange-text);
|
||||
--theme--line_yellow: var(--theme_dark--line_yellow);
|
||||
--theme--line_yellow-text: var(--theme_dark--line_yellow-text);
|
||||
--theme--line_green: var(--theme_dark--line_green);
|
||||
--theme--line_green-text: var(--theme_dark--line_green-text);
|
||||
--theme--line_blue: var(--theme_dark--line_blue);
|
||||
--theme--line_blue-text: var(--theme_dark--line_blue-text);
|
||||
--theme--line_purple: var(--theme_dark--line_purple);
|
||||
--theme--line_purple-text: var(--theme_dark--line_purple-text);
|
||||
--theme--line_pink: var(--theme_dark--line_pink);
|
||||
--theme--line_pink-text: var(--theme_dark--line_pink-text);
|
||||
--theme--line_red: var(--theme_dark--line_red);
|
||||
--theme--line_red-text: var(--theme_dark--line_red-text);
|
||||
--theme--select_gray: var(--theme_dark--select_gray);
|
||||
--theme--select_gray-text: var(--theme_dark--select_gray-text);
|
||||
--theme--select_brown: var(--theme_dark--select_brown);
|
||||
--theme--select_brown-text: var(--theme_dark--select_brown-text);
|
||||
--theme--select_orange: var(--theme_dark--select_orange);
|
||||
--theme--select_orange-text: var(--theme_dark--select_orange-text);
|
||||
--theme--select_yellow: var(--theme_dark--select_yellow);
|
||||
--theme--select_yellow-text: var(--theme_dark--select_yellow-text);
|
||||
--theme--select_green: var(--theme_dark--select_green);
|
||||
--theme--select_green-text: var(--theme_dark--select_green-text);
|
||||
--theme--select_blue: var(--theme_dark--select_blue);
|
||||
--theme--select_blue-text: var(--theme_dark--select_blue-text);
|
||||
--theme--select_purple: var(--theme_dark--select_purple);
|
||||
--theme--select_purple-text: var(--theme_dark--select_purple-text);
|
||||
--theme--select_pink: var(--theme_dark--select_pink);
|
||||
--theme--select_pink-text: var(--theme_dark--select_pink-text);
|
||||
--theme--select_red: var(--theme_dark--select_red);
|
||||
--theme--select_red-text: var(--theme_dark--select_red-text);
|
||||
--theme--callout-text: var(--theme_dark--callout-text);
|
||||
--theme--callout_gray: var(--theme_dark--callout_gray);
|
||||
--theme--callout_gray-text: var(--theme_dark--callout_gray-text);
|
||||
--theme--callout_brown: var(--theme_dark--callout_brown);
|
||||
--theme--callout_brown-text: var(--theme_dark--callout_brown-text);
|
||||
--theme--callout_orange: var(--theme_dark--callout_orange);
|
||||
--theme--callout_orange-text: var(--theme_dark--callout_orange-text);
|
||||
--theme--callout_yellow: var(--theme_dark--callout_yellow);
|
||||
--theme--callout_yellow-text: var(--theme_dark--callout_yellow-text);
|
||||
--theme--callout_green: var(--theme_dark--callout_green);
|
||||
--theme--callout_green-text: var(--theme_dark--callout_green-text);
|
||||
--theme--callout_blue: var(--theme_dark--callout_blue);
|
||||
--theme--callout_blue-text: var(--theme_dark--callout_blue-text);
|
||||
--theme--callout_purple: var(--theme_dark--callout_purple);
|
||||
--theme--callout_purple-text: var(--theme_dark--callout_purple-text);
|
||||
--theme--callout_pink: var(--theme_dark--callout_pink);
|
||||
--theme--callout_pink-text: var(--theme_dark--callout_pink-text);
|
||||
--theme--callout_red: var(--theme_dark--callout_red);
|
||||
--theme--callout_red-text: var(--theme_dark--callout_red-text);
|
||||
--theme--code_inline-text: var(--theme_dark--code_inline-text);
|
||||
--theme--code_inline-background: var(--theme_dark--code_inline-background);
|
||||
--theme--code-text: var(--theme_dark--code-text);
|
||||
--theme--code-background: var(--theme_dark--code-background);
|
||||
--theme--code_function: var(--theme_dark--code_function);
|
||||
--theme--code_parameter: var(--theme_dark--code_parameter);
|
||||
--theme--code_keyword: var(--theme_dark--code_keyword);
|
||||
--theme--code_constant: var(--theme_dark--code_constant);
|
||||
--theme--code_tag: var(--theme_dark--code_tag);
|
||||
--theme--code_operator: var(--theme_dark--code_operator);
|
||||
--theme--code_important: var(--theme_dark--code_important);
|
||||
--theme--code_regex: var(--theme_dark--code_regex);
|
||||
--theme--code_property: var(--theme_dark--code_property);
|
||||
--theme--code_builtin: var(--theme_dark--code_builtin);
|
||||
--theme--code_class-name: var(--theme_dark--code_class-name);
|
||||
--theme--code_attr-name: var(--theme_dark--code_attr-name);
|
||||
--theme--code_attr-value: var(--theme_dark--code_attr-value);
|
||||
--theme--code_selector: var(--theme_dark--code_selector);
|
||||
--theme--code_id: var(--theme_dark--code_id);
|
||||
--theme--code_class: var(--theme_dark--code_class);
|
||||
--theme--code_pseudo-element: var(--theme_dark--code_pseudo-element);
|
||||
--theme--code_pseudo-class: var(--theme_dark--code_pseudo-class);
|
||||
--theme--code_attribute: var(--theme_dark--code_attribute);
|
||||
--theme--code_value: var(--theme_dark--code_value);
|
||||
--theme--code_unit: var(--theme_dark--code_unit);
|
||||
--theme--code_comment: var(--theme_dark--code_comment);
|
||||
--theme--code_punctuation: var(--theme_dark--code_punctuation);
|
||||
--theme--code_annotation: var(--theme_dark--code_annotation);
|
||||
--theme--code_decorator: var(--theme_dark--code_decorator);
|
||||
--theme--code_doctype: var(--theme_dark--code_doctype);
|
||||
--theme--code_number: var(--theme_dark--code_number);
|
||||
--theme--code_string: var(--theme_dark--code_string);
|
||||
--theme--code_boolean: var(--theme_dark--code_boolean);
|
||||
}
|
||||
|
||||
.notion-light-theme {
|
||||
--theme--main: var(--theme_light--main);
|
||||
--theme--sidebar: var(--theme_light--sidebar);
|
||||
--theme--overlay: var(--theme_light--overlay);
|
||||
--theme--dragarea: var(--theme_light--dragarea);
|
||||
--theme--box-shadow: var(--theme_light--box-shadow);
|
||||
--theme--box-shadow_strong: var(--theme_light--box-shadow_strong);
|
||||
--theme--page_normal-width: var(--theme_light--page_normal-width);
|
||||
--theme--page_full-width: var(--theme_light--page_full-width);
|
||||
--theme--page-padding: var(--theme_light--page-padding);
|
||||
--theme--page_banner-height: var(--theme_light--page_banner-height);
|
||||
--theme--preview-width: var(--theme_light--preview-width);
|
||||
--theme--preview-padding: var(--theme_light--preview-padding);
|
||||
--theme--preview_banner-height: var(--theme_light--preview_banner-height);
|
||||
--theme--font_sans: var(--theme_light--font_sans);
|
||||
--theme--font_serif: var(--theme_light--font_serif);
|
||||
--theme--font_mono: var(--theme_light--font_mono);
|
||||
--theme--font_code: var(--theme_light--font_code);
|
||||
--theme--font_quote: var(--theme_light--font_quote);
|
||||
--theme--font_headings: var(--theme_light--font_headings);
|
||||
--theme--font_title-size: var(--theme_light--font_title-size);
|
||||
--theme--font_heading1-size: var(--theme_light--font_heading1-size);
|
||||
--theme--font_heading2-size: var(--theme_light--font_heading2-size);
|
||||
--theme--font_heading3-size: var(--theme_light--font_heading3-size);
|
||||
--theme--font_label-size: var(--theme_light--font_label-size);
|
||||
--theme--font_body-size: var(--theme_light--font_body-size);
|
||||
--theme--font_body-size_small: var(--theme_light--font_body-size_small);
|
||||
--theme--font_code-size: var(--theme_light--font_code-size);
|
||||
--theme--font_sidebar-size: var(--theme_light--font_sidebar-size);
|
||||
--theme--text-block_line-height: var(--theme_light--text-block_line-height);
|
||||
--theme--text-block_margin-top: var(--theme_light--text-block_margin-top);
|
||||
--theme--scrollbar: var(--theme_light--scrollbar);
|
||||
--theme--scrollbar-border: var(--theme_light--scrollbar-border);
|
||||
--theme--scrollbar_hover: var(--theme_light--scrollbar_hover);
|
||||
--theme--card: var(--theme_light--card);
|
||||
--theme--gallery: var(--theme_light--gallery);
|
||||
--theme--select_input: var(--theme_light--select_input);
|
||||
--theme--table-border: var(--theme_light--table-border);
|
||||
--theme--table-border_row: var(--theme_light--table-border_row);
|
||||
--theme--table-border_column: var(--theme_light--table-border_column);
|
||||
--theme--table-border_selected: var(--theme_light--table-border_selected);
|
||||
--theme--ui-border: var(--theme_light--ui-border);
|
||||
--theme--interactive_hover: var(--theme_light--interactive_hover);
|
||||
--theme--interactive_hover-border: var(
|
||||
--theme_light--interactive_hover-border
|
||||
);
|
||||
--theme--button_close: var(--theme_light--button_close);
|
||||
--theme--button_close-fill: var(--theme_light--button_close-fill);
|
||||
--theme--selected: var(--theme_light--selected);
|
||||
--theme--primary: var(--theme_light--primary);
|
||||
--theme--primary_text: var(--theme_light--primary_text);
|
||||
--theme--primary_hover: var(--theme_light--primary_hover);
|
||||
--theme--primary_click: var(--theme_light--primary_click);
|
||||
--theme--primary_indicator: var(--theme_light--primary_indicator);
|
||||
--theme--primary_indicator_text: var(--theme_light--primary_indicator_text);
|
||||
--theme--primary_indicator_hover: var(--theme_light--primary_indicator_hover);
|
||||
--theme--option-color: var(--theme_light--option-color);
|
||||
--theme--option-background: var(--theme_light--option-background);
|
||||
--theme--option_hover-color: var(--theme_light--option_hover-color);
|
||||
--theme--option_hover-background: var(--theme_light--option_hover-background);
|
||||
--theme--option_active-color: var(--theme_light--option_active-color);
|
||||
--theme--option_active-background: var(
|
||||
--theme_light--option_active-background
|
||||
);
|
||||
--theme--danger_text: var(--theme_light--danger_text);
|
||||
--theme--danger_border: var(--theme_light--danger_border);
|
||||
--theme--divider: var(--theme_light--divider);
|
||||
--theme--text: var(--theme_light--text);
|
||||
--theme--text_ui: var(--theme_light--text_ui);
|
||||
--theme--text_ui_info: var(--theme_light--text_ui_info);
|
||||
--theme--text_gray: var(--theme_light--text_gray);
|
||||
--theme--text_brown: var(--theme_light--text_brown);
|
||||
--theme--text_orange: var(--theme_light--text_orange);
|
||||
--theme--text_yellow: var(--theme_light--text_yellow);
|
||||
--theme--text_green: var(--theme_light--text_green);
|
||||
--theme--text_blue: var(--theme_light--text_blue);
|
||||
--theme--text_purple: var(--theme_light--text_purple);
|
||||
--theme--text_pink: var(--theme_light--text_pink);
|
||||
--theme--text_red: var(--theme_light--text_red);
|
||||
--theme--select-text: var(--theme_light--select-text);
|
||||
--theme--bg-text: var(--theme_light--bg-text);
|
||||
--theme--bg_gray: var(--theme_light--bg_gray);
|
||||
--theme--bg_gray-text: var(--theme_light--bg_gray-text);
|
||||
--theme--bg_brown: var(--theme_light--bg_brown);
|
||||
--theme--bg_brown-text: var(--theme_light--bg_brown-text);
|
||||
--theme--bg_orange: var(--theme_light--bg_orange);
|
||||
--theme--bg_orange-text: var(--theme_light--bg_orange-text);
|
||||
--theme--bg_yellow: var(--theme_light--bg_yellow);
|
||||
--theme--bg_yellow-text: var(--theme_light--bg_yellow-text);
|
||||
--theme--bg_green: var(--theme_light--bg_green);
|
||||
--theme--bg_green-text: var(--theme_light--bg_green-text);
|
||||
--theme--bg_blue: var(--theme_light--bg_blue);
|
||||
--theme--bg_blue-text: var(--theme_light--bg_blue-text);
|
||||
--theme--bg_purple: var(--theme_light--bg_purple);
|
||||
--theme--bg_purple-text: var(--theme_light--bg_purple-text);
|
||||
--theme--bg_pink: var(--theme_light--bg_pink);
|
||||
--theme--bg_pink-text: var(--theme_light--bg_pink-text);
|
||||
--theme--bg_red: var(--theme_light--bg_red);
|
||||
--theme--bg_red-text: var(--theme_light--bg_red-text);
|
||||
--theme--line-text: var(--theme_light--line-text);
|
||||
--theme--line_gray: var(--theme_light--line_gray);
|
||||
--theme--line_gray-text: var(--theme_light--line_gray-text);
|
||||
--theme--line_brown: var(--theme_light--line_brown);
|
||||
--theme--line_brown-text: var(--theme_light--line_brown-text);
|
||||
--theme--line_orange: var(--theme_light--line_orange);
|
||||
--theme--line_orange-text: var(--theme_light--line_orange-text);
|
||||
--theme--line_yellow: var(--theme_light--line_yellow);
|
||||
--theme--line_yellow-text: var(--theme_light--line_yellow-text);
|
||||
--theme--line_green: var(--theme_light--line_green);
|
||||
--theme--line_green-text: var(--theme_light--line_green-text);
|
||||
--theme--line_blue: var(--theme_light--line_blue);
|
||||
--theme--line_blue-text: var(--theme_light--line_blue-text);
|
||||
--theme--line_purple: var(--theme_light--line_purple);
|
||||
--theme--line_purple-text: var(--theme_light--line_purple-text);
|
||||
--theme--line_pink: var(--theme_light--line_pink);
|
||||
--theme--line_pink-text: var(--theme_light--line_pink-text);
|
||||
--theme--line_red: var(--theme_light--line_red);
|
||||
--theme--line_red-text: var(--theme_light--line_red-text);
|
||||
--theme--select_gray: var(--theme_light--select_gray);
|
||||
--theme--select_gray-text: var(--theme_light--select_gray-text);
|
||||
--theme--select_brown: var(--theme_light--select_brown);
|
||||
--theme--select_brown-text: var(--theme_light--select_brown-text);
|
||||
--theme--select_orange: var(--theme_light--select_orange);
|
||||
--theme--select_orange-text: var(--theme_light--select_orange-text);
|
||||
--theme--select_yellow: var(--theme_light--select_yellow);
|
||||
--theme--select_yellow-text: var(--theme_light--select_yellow-text);
|
||||
--theme--select_green: var(--theme_light--select_green);
|
||||
--theme--select_green-text: var(--theme_light--select_green-text);
|
||||
--theme--select_blue: var(--theme_light--select_blue);
|
||||
--theme--select_blue-text: var(--theme_light--select_blue-text);
|
||||
--theme--select_purple: var(--theme_light--select_purple);
|
||||
--theme--select_purple-text: var(--theme_light--select_purple-text);
|
||||
--theme--select_pink: var(--theme_light--select_pink);
|
||||
--theme--select_pink-text: var(--theme_light--select_pink-text);
|
||||
--theme--select_red: var(--theme_light--select_red);
|
||||
--theme--select_red-text: var(--theme_light--select_red-text);
|
||||
--theme--callout-text: var(--theme_light--callout-text);
|
||||
--theme--callout_gray: var(--theme_light--callout_gray);
|
||||
--theme--callout_gray-text: var(--theme_light--callout_gray-text);
|
||||
--theme--callout_brown: var(--theme_light--callout_brown);
|
||||
--theme--callout_brown-text: var(--theme_light--callout_brown-text);
|
||||
--theme--callout_orange: var(--theme_light--callout_orange);
|
||||
--theme--callout_orange-text: var(--theme_light--callout_orange-text);
|
||||
--theme--callout_yellow: var(--theme_light--callout_yellow);
|
||||
--theme--callout_yellow-text: var(--theme_light--callout_yellow-text);
|
||||
--theme--callout_green: var(--theme_light--callout_green);
|
||||
--theme--callout_green-text: var(--theme_light--callout_green-text);
|
||||
--theme--callout_blue: var(--theme_light--callout_blue);
|
||||
--theme--callout_blue-text: var(--theme_light--callout_blue-text);
|
||||
--theme--callout_purple: var(--theme_light--callout_purple);
|
||||
--theme--callout_purple-text: var(--theme_light--callout_purple-text);
|
||||
--theme--callout_pink: var(--theme_light--callout_pink);
|
||||
--theme--callout_pink-text: var(--theme_light--callout_pink-text);
|
||||
--theme--callout_red: var(--theme_light--callout_red);
|
||||
--theme--callout_red-text: var(--theme_light--callout_red-text);
|
||||
--theme--code_inline-text: var(--theme_light--code_inline-text);
|
||||
--theme--code_inline-background: var(--theme_light--code_inline-background);
|
||||
--theme--code-text: var(--theme_light--code-text);
|
||||
--theme--code-background: var(--theme_light--code-background);
|
||||
--theme--code_function: var(--theme_light--code_function);
|
||||
--theme--code_parameter: var(--theme_light--code_parameter);
|
||||
--theme--code_keyword: var(--theme_light--code_keyword);
|
||||
--theme--code_constant: var(--theme_light--code_constant);
|
||||
--theme--code_tag: var(--theme_light--code_tag);
|
||||
--theme--code_operator: var(--theme_light--code_operator);
|
||||
--theme--code_important: var(--theme_light--code_important);
|
||||
--theme--code_regex: var(--theme_light--code_regex);
|
||||
--theme--code_property: var(--theme_light--code_property);
|
||||
--theme--code_builtin: var(--theme_light--code_builtin);
|
||||
--theme--code_class-name: var(--theme_light--code_class-name);
|
||||
--theme--code_attr-name: var(--theme_light--code_attr-name);
|
||||
--theme--code_attr-value: var(--theme_light--code_attr-value);
|
||||
--theme--code_selector: var(--theme_light--code_selector);
|
||||
--theme--code_id: var(--theme_light--code_id);
|
||||
--theme--code_class: var(--theme_light--code_class);
|
||||
--theme--code_pseudo-element: var(--theme_light--code_pseudo-element);
|
||||
--theme--code_pseudo-class: var(--theme_light--code_pseudo-class);
|
||||
--theme--code_attribute: var(--theme_light--code_attribute);
|
||||
--theme--code_value: var(--theme_light--code_value);
|
||||
--theme--code_unit: var(--theme_light--code_unit);
|
||||
--theme--code_comment: var(--theme_light--code_comment);
|
||||
--theme--code_punctuation: var(--theme_light--code_punctuation);
|
||||
--theme--code_annotation: var(--theme_light--code_annotation);
|
||||
--theme--code_decorator: var(--theme_light--code_decorator);
|
||||
--theme--code_doctype: var(--theme_light--code_doctype);
|
||||
--theme--code_number: var(--theme_light--code_number);
|
||||
--theme--code_string: var(--theme_light--code_string);
|
||||
--theme--code_boolean: var(--theme_light--code_boolean);
|
||||
}
|
@ -1,49 +0,0 @@
|
||||
/*
|
||||
* tabs
|
||||
* (c) 2020 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
|
||||
* under the MIT license
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
// this is just a pseudo mod to "separate" the options
|
||||
// from the core module - the core still handles actually
|
||||
// making it work.
|
||||
module.exports = {
|
||||
id: 'e1692c29-475e-437b-b7ff-3eee872e1a42',
|
||||
tags: ['core', 'extension'],
|
||||
name: 'tabs',
|
||||
desc: 'have multiple notion pages open in a single window.',
|
||||
version: '0.1.0',
|
||||
author: 'dragonwocky',
|
||||
options: [
|
||||
{
|
||||
key: 'select_modifier',
|
||||
label:
|
||||
'tab select modifier (key+1, +2, +3, ... +9 and key+left/right arrows):',
|
||||
type: 'select',
|
||||
value: [
|
||||
'Alt',
|
||||
'Command',
|
||||
'Control',
|
||||
'Super',
|
||||
'Alt+Shift',
|
||||
'Command+Shift',
|
||||
'Control+Shift',
|
||||
'Super+Shift',
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'new_tab',
|
||||
label: 'new tab keybinding:',
|
||||
type: 'input',
|
||||
value: 'CommandOrControl+T',
|
||||
},
|
||||
{
|
||||
key: 'close_tab',
|
||||
label: 'close tab keybinding:',
|
||||
type: 'input',
|
||||
value: 'CommandOrControl+W',
|
||||
},
|
||||
],
|
||||
};
|
Loading…
Reference in New Issue
Block a user