mirror of
				https://github.com/notion-enhancer/notion-enhancer.git
				synced 2025-11-05 00:28:07 +11:00 
			
		
		
		
	feat: update focus (focus-mode) extension
This commit is contained in:
		
							parent
							
								
									26cbdf7e2e
								
							
						
					
					
						commit
						47cfece013
					
				@ -9,7 +9,7 @@
 | 
				
			|||||||
const injectTriggerOnce = (file, content) =>
 | 
					const injectTriggerOnce = (file, content) =>
 | 
				
			||||||
    content +
 | 
					    content +
 | 
				
			||||||
    (!/require\(['|"]notion-enhancer['|"]\)/.test(content)
 | 
					    (!/require\(['|"]notion-enhancer['|"]\)/.test(content)
 | 
				
			||||||
      ? `\n\nrequire("notion-enhancer")('${file}',exports,(js)=>eval(js));`
 | 
					      ? `\n\nrequire("notion-enhancer")("${file}",exports,(js)=>eval(js));`
 | 
				
			||||||
      : ""),
 | 
					      : ""),
 | 
				
			||||||
  replaceIfNotFound = ({ string, mode = "replace" }, search, replacement) =>
 | 
					  replaceIfNotFound = ({ string, mode = "replace" }, search, replacement) =>
 | 
				
			||||||
    string.includes(replacement)
 | 
					    string.includes(replacement)
 | 
				
			||||||
@ -59,18 +59,11 @@ const patches = {
 | 
				
			|||||||
      protocolInterceptor = `{const n="notion://www.notion.so/__notion-enhancer/";if(e.url.startsWith(n))return require("electron").net.fetch(\`file://\${require("path").join(__dirname,"..","..","node_modules","notion-enhancer",e.url.slice(n.length))}\`)}`;
 | 
					      protocolInterceptor = `{const n="notion://www.notion.so/__notion-enhancer/";if(e.url.startsWith(n))return require("electron").net.fetch(\`file://\${require("path").join(__dirname,"..","..","node_modules","notion-enhancer",e.url.slice(n.length))}\`)}`;
 | 
				
			||||||
    prepend(protocolHandler, protocolInterceptor);
 | 
					    prepend(protocolHandler, protocolInterceptor);
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    // expose the app config to the global namespace for manipulation
 | 
					    // expose the app's config + cache + preferences to the global namespace
 | 
				
			||||||
    // e.g. to enable development mode
 | 
					    // e.g. to enable development mode or check if keep in background is enabled
 | 
				
			||||||
    prepend(/\w\.exports=JSON\.parse\('\{"env":"production"/, "globalThis.__notionConfig=");
 | 
					    prepend(/\w\.exports=JSON\.parse\('\{"env":"production"/, "globalThis.__notionConfig=");
 | 
				
			||||||
 | 
					 | 
				
			||||||
    // expose the app store to the global namespace for reading
 | 
					 | 
				
			||||||
    // e.g. to check if keep in background is enabled
 | 
					 | 
				
			||||||
    prepend(/\w\.Store=\(0,\w\.configureStore\)/, "globalThis.__notionStore=");
 | 
					 | 
				
			||||||
    prepend(/\w\.updatePreferences=\w\.updatePreferences/, "globalThis.__updatePreferences=");
 | 
					    prepend(/\w\.updatePreferences=\w\.updatePreferences/, "globalThis.__updatePreferences=");
 | 
				
			||||||
 | 
					    prepend(/\w\.Store=\(0,\w\.configureStore\)/, "globalThis.__notionStore=");
 | 
				
			||||||
    // conditionally create frameless windows
 | 
					 | 
				
			||||||
    const titlebarStyle = `titleBarStyle:globalThis.__notionConfig?.titlebarStyle??"hiddenInset"`;
 | 
					 | 
				
			||||||
    replace(`titleBarStyle:"hiddenInset"`, titlebarStyle);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return content;
 | 
					    return content;
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
				
			|||||||
@ -100,7 +100,7 @@ let documentObserver,
 | 
				
			|||||||
    characterData: true,
 | 
					    characterData: true,
 | 
				
			||||||
    // whether to observe added/removed nodes
 | 
					    // whether to observe added/removed nodes
 | 
				
			||||||
    childList: true,
 | 
					    childList: true,
 | 
				
			||||||
    // whether to observe parent/descendant nodes
 | 
					    // whether to observe nested nodes
 | 
				
			||||||
    subtree: true,
 | 
					    subtree: true,
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  mutationListeners = [];
 | 
					  mutationListeners = [];
 | 
				
			||||||
 | 
				
			|||||||
@ -1,21 +0,0 @@
 | 
				
			|||||||
/**
 | 
					 | 
				
			||||||
 * notion-enhancer: focus mode
 | 
					 | 
				
			||||||
 * (c) 2020 Arecsu
 | 
					 | 
				
			||||||
 * (c) 2021 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
 | 
					 | 
				
			||||||
 * (https://notion-enhancer.github.io/) under the MIT license
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.notion-sidebar-container[style*='width: 0px;'] ~ div .notion-topbar > :first-child {
 | 
					 | 
				
			||||||
  opacity: 0 !important;
 | 
					 | 
				
			||||||
  transition: opacity 200ms ease-in-out !important;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
.notion-sidebar-container[style*='width: 0px;'] ~ div .notion-topbar > :first-child:hover {
 | 
					 | 
				
			||||||
  opacity: 1 !important;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[data-focus-mode='padded']
 | 
					 | 
				
			||||||
  .notion-sidebar-container[style*='width: 0px;']
 | 
					 | 
				
			||||||
  ~ div
 | 
					 | 
				
			||||||
  .notion-frame {
 | 
					 | 
				
			||||||
  height: calc(100vh - 90px) !important;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,12 +0,0 @@
 | 
				
			|||||||
/**
 | 
					 | 
				
			||||||
 * notion-enhancer: focus mode
 | 
					 | 
				
			||||||
 * (c) 2020 Arecsu
 | 
					 | 
				
			||||||
 * (c) 2021 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
 | 
					 | 
				
			||||||
 * (https://notion-enhancer.github.io/) under the MIT license
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
'use strict';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default async function (api, db) {
 | 
					 | 
				
			||||||
  if (await db.get(['padded'])) document.body.dataset.focusMode = 'padded';
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,39 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "name": "focus mode",
 | 
					 | 
				
			||||||
  "id": "5a08598d-bfac-4167-9ae8-2bd0e2ef141e",
 | 
					 | 
				
			||||||
  "version": "0.3.0",
 | 
					 | 
				
			||||||
  "description": "hide the titlebar/menubar when the sidebar is closed (returns on hover).",
 | 
					 | 
				
			||||||
  "tags": ["extension", "layout"],
 | 
					 | 
				
			||||||
  "authors": [
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      "name": "arecsu",
 | 
					 | 
				
			||||||
      "email": "alejandro9r@gmail.com",
 | 
					 | 
				
			||||||
      "homepage": "https://github.com/Arecsu",
 | 
					 | 
				
			||||||
      "avatar": "https://avatars.githubusercontent.com/u/12679098"
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  ],
 | 
					 | 
				
			||||||
  "css": {
 | 
					 | 
				
			||||||
    "frame": ["tabs.css"],
 | 
					 | 
				
			||||||
    "client": ["client.css"]
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "js": {
 | 
					 | 
				
			||||||
    "frame": ["tabs.mjs"],
 | 
					 | 
				
			||||||
    "client": ["client.mjs"]
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "options": [
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      "type": "toggle",
 | 
					 | 
				
			||||||
      "key": "padded",
 | 
					 | 
				
			||||||
      "label": "even padding",
 | 
					 | 
				
			||||||
      "tooltip": "matches the empty space at the top and sides of the frame with **extra padding at the bottom when the sidebar is hidden**",
 | 
					 | 
				
			||||||
      "value": true
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      "type": "toggle",
 | 
					 | 
				
			||||||
      "key": "tabs",
 | 
					 | 
				
			||||||
      "label": "hide tabs",
 | 
					 | 
				
			||||||
      "tooltip": "makes the tab bar transparent unless hovered over",
 | 
					 | 
				
			||||||
      "value": false
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  ]
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,14 +0,0 @@
 | 
				
			|||||||
/**
 | 
					 | 
				
			||||||
 * notion-enhancer: focus mode
 | 
					 | 
				
			||||||
 * (c) 2021 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
 | 
					 | 
				
			||||||
 * (https://notion-enhancer.github.io/) under the MIT license
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[data-focus-mode='hide-tabs'] header:not(:hover) {
 | 
					 | 
				
			||||||
  background: var(--theme--bg);
 | 
					 | 
				
			||||||
  border-bottom-color: transparent;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
[data-focus-mode='hide-tabs'] header:not(:hover) > * {
 | 
					 | 
				
			||||||
  opacity: 0;
 | 
					 | 
				
			||||||
  transition: opacity 200ms ease-in-out;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,12 +0,0 @@
 | 
				
			|||||||
/**
 | 
					 | 
				
			||||||
 * notion-enhancer: focus mode
 | 
					 | 
				
			||||||
 * (c) 2020 Arecsu
 | 
					 | 
				
			||||||
 * (c) 2021 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
 | 
					 | 
				
			||||||
 * (https://notion-enhancer.github.io/) under the MIT license
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
'use strict';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default async function (api, db) {
 | 
					 | 
				
			||||||
  if (await db.get(['tabs'])) document.body.dataset.focusMode = 'hide-tabs';
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										23
									
								
								src/extensions/focus/client.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								src/extensions/focus/client.css
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * notion-enhancer: focus
 | 
				
			||||||
 | 
					 * (c) 2020 Arecsu
 | 
				
			||||||
 | 
					 * (c) 2024 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
 | 
				
			||||||
 | 
					 * (https://notion-enhancer.github.io/) under the MIT license
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* hide topbar */
 | 
				
			||||||
 | 
					.notion-sidebar-container[aria-hidden] ~ div .notion-topbar {
 | 
				
			||||||
 | 
					  opacity: 0 !important;
 | 
				
			||||||
 | 
					  transition: opacity 200ms ease-in-out !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.notion-sidebar-container[aria-hidden] ~ div .notion-topbar:hover {
 | 
				
			||||||
 | 
					  opacity: 1 !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* hide tabs */
 | 
				
			||||||
 | 
					body > #root.sidebar-collapsed {
 | 
				
			||||||
 | 
					  transition: opacity 200ms ease-in-out;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					body > #root.sidebar-collapsed:not(:hover) {
 | 
				
			||||||
 | 
					  opacity: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										23
									
								
								src/extensions/focus/client.mjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								src/extensions/focus/client.mjs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * notion-enhancer: focus
 | 
				
			||||||
 | 
					 * (c) 2020 Arecsu
 | 
				
			||||||
 | 
					 * (c) 2024 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
 | 
				
			||||||
 | 
					 * (https://notion-enhancer.github.io/) under the MIT license
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default async (api, db) => {
 | 
				
			||||||
 | 
					  // tabs can only be hidden in the desktop app
 | 
				
			||||||
 | 
					  const { platform, sendMessage, addMutationListener } = api;
 | 
				
			||||||
 | 
					  if (!["linux", "win32", "darwin"].includes(platform)) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  let _state;
 | 
				
			||||||
 | 
					  const sidebar = ".notion-sidebar-container",
 | 
				
			||||||
 | 
					    onUpdate = () => {
 | 
				
			||||||
 | 
					      const $sidebar = document.querySelector(sidebar),
 | 
				
			||||||
 | 
					        state = $sidebar.hasAttribute("aria-hidden") ? "collapsed" : "pinned";
 | 
				
			||||||
 | 
					      if (state === _state) return;
 | 
				
			||||||
 | 
					      sendMessage("notion-enhancer:focus", "sidebar-" + (_state = state));
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					  addMutationListener(sidebar, onUpdate, { childList: false, subtree: false });
 | 
				
			||||||
 | 
					  onUpdate();
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
							
								
								
									
										17
									
								
								src/extensions/focus/electron.cjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								src/extensions/focus/electron.cjs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * notion-enhancer: focus
 | 
				
			||||||
 | 
					 * (c) 2020 Arecsu
 | 
				
			||||||
 | 
					 * (c) 2024 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
 | 
				
			||||||
 | 
					 * (https://notion-enhancer.github.io/) under the MIT license
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"use strict";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module.exports = async (api, db) => {
 | 
				
			||||||
 | 
					  const { ipcMain, BrowserWindow } = require("electron"),
 | 
				
			||||||
 | 
					    channel = "notion-enhancer:focus";
 | 
				
			||||||
 | 
					  ipcMain.on(channel, ({ sender }, message) => {
 | 
				
			||||||
 | 
					    const views = BrowserWindow.fromWebContents(sender).getBrowserViews();
 | 
				
			||||||
 | 
					    for (const view of views) view.webContents.send(channel, message);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
							
								
								
									
										25
									
								
								src/extensions/focus/mod.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								src/extensions/focus/mod.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "Focus",
 | 
				
			||||||
 | 
					  "version": "0.4.0",
 | 
				
			||||||
 | 
					  "id": "5a08598d-bfac-4167-9ae8-2bd0e2ef141e",
 | 
				
			||||||
 | 
					  "description": "Enter focus mode when the left sidebar is closed, hiding Notion's extraneous interface elements (e.g. the topbar) until they are hovered over.",
 | 
				
			||||||
 | 
					  "tags": ["productivity", "focus-mode"],
 | 
				
			||||||
 | 
					  "authors": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "name": "dragonwocky",
 | 
				
			||||||
 | 
					      "homepage": "https://dragonwocky.me/",
 | 
				
			||||||
 | 
					      "avatar": "https://dragonwocky.me/avatar.jpg"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "name": "Arecsu",
 | 
				
			||||||
 | 
					      "homepage": "https://github.com/Arecsu",
 | 
				
			||||||
 | 
					      "avatar": "https://avatars.githubusercontent.com/u/12679098"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "clientStyles": ["client.css"],
 | 
				
			||||||
 | 
					  "clientScripts": ["client.mjs"],
 | 
				
			||||||
 | 
					  "electronScripts": [
 | 
				
			||||||
 | 
					    [".webpack/main/index.js", "electron.cjs"],
 | 
				
			||||||
 | 
					    [".webpack/renderer/tabs/preload.js", "tabs.cjs"]
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										18
									
								
								src/extensions/focus/tabs.cjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/extensions/focus/tabs.cjs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * notion-enhancer: focus
 | 
				
			||||||
 | 
					 * (c) 2020 Arecsu
 | 
				
			||||||
 | 
					 * (c) 2021 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
 | 
				
			||||||
 | 
					 * (https://notion-enhancer.github.io/) under the MIT license
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"use strict";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module.exports = async (api, db) => {
 | 
				
			||||||
 | 
					  const { onMessage } = api,
 | 
				
			||||||
 | 
					    focusClass = "sidebar-collapsed";
 | 
				
			||||||
 | 
					  onMessage("notion-enhancer:focus", (message) => {
 | 
				
			||||||
 | 
					    const $root = document.querySelector("#root");
 | 
				
			||||||
 | 
					    if (message === "sidebar-pinned") $root?.classList.remove(focusClass);
 | 
				
			||||||
 | 
					    if (message === "sidebar-collapsed") $root?.classList.add(focusClass);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@ -6,9 +6,8 @@
 | 
				
			|||||||
 * (https://notion-enhancer.github.io/) under the MIT license
 | 
					 * (https://notion-enhancer.github.io/) under the MIT license
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"use strict";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default async (api, db) => {
 | 
					export default async (api, db) => {
 | 
				
			||||||
 | 
					  const $root = document.documentElement;
 | 
				
			||||||
  for (const style of [
 | 
					  for (const style of [
 | 
				
			||||||
    "sans",
 | 
					    "sans",
 | 
				
			||||||
    "serif",
 | 
					    "serif",
 | 
				
			||||||
@ -19,7 +18,6 @@ export default async (api, db) => {
 | 
				
			|||||||
    "headings",
 | 
					    "headings",
 | 
				
			||||||
  ]) {
 | 
					  ]) {
 | 
				
			||||||
    const font = await db.get(style);
 | 
					    const font = await db.get(style);
 | 
				
			||||||
    if (!font) continue;
 | 
					    if (font) $root.style.setProperty(`--font--${style}`, font);
 | 
				
			||||||
    document.documentElement.style.setProperty(`--font--${style}`, font);
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
@ -5,15 +5,15 @@
 | 
				
			|||||||
  "description": "Replace Notion's default fonts with any font installed on your system.",
 | 
					  "description": "Replace Notion's default fonts with any font installed on your system.",
 | 
				
			||||||
  "tags": ["customisation", "font-chooser"],
 | 
					  "tags": ["customisation", "font-chooser"],
 | 
				
			||||||
  "authors": [
 | 
					  "authors": [
 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      "name": "TorchAtlas",
 | 
					 | 
				
			||||||
      "homepage": "https://github.com/torchatlas/",
 | 
					 | 
				
			||||||
      "avatar": "https://avatars.githubusercontent.com/u/12666855"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "name": "dragonwocky",
 | 
					      "name": "dragonwocky",
 | 
				
			||||||
      "homepage": "https://dragonwocky.me/",
 | 
					      "homepage": "https://dragonwocky.me/",
 | 
				
			||||||
      "avatar": "https://dragonwocky.me/avatar.jpg"
 | 
					      "avatar": "https://dragonwocky.me/avatar.jpg"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "name": "TorchAtlas",
 | 
				
			||||||
 | 
					      "homepage": "https://github.com/torchatlas/",
 | 
				
			||||||
 | 
					      "avatar": "https://avatars.githubusercontent.com/u/12666855"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "options": [
 | 
					  "options": [
 | 
				
			||||||
 | 
				
			|||||||
@ -6,7 +6,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
"use strict";
 | 
					"use strict";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports = async ({}, db) => {
 | 
					module.exports = async (api, db) => {
 | 
				
			||||||
  const { ipcMain, BrowserWindow } = require("electron");
 | 
					  const { ipcMain, BrowserWindow } = require("electron");
 | 
				
			||||||
  ipcMain.on("notion-enhancer:topbar", ({ sender }, message) => {
 | 
					  ipcMain.on("notion-enhancer:topbar", ({ sender }, message) => {
 | 
				
			||||||
    const window = BrowserWindow.fromWebContents(sender);
 | 
					    const window = BrowserWindow.fromWebContents(sender);
 | 
				
			||||||
 | 
				
			|||||||
@ -1,8 +1,8 @@
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
 * notion-enhancer: tweaks
 | 
					 * notion-enhancer: tweaks
 | 
				
			||||||
 * (c) 2024 1280px
 | 
					 * (c) 2024 1280px
 | 
				
			||||||
 * (c) 2021 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
 | 
					 * (c) 2020 Arecsu
 | 
				
			||||||
 * (c) 2020 arecsu
 | 
					 * (c) 2024 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
 | 
				
			||||||
 * (https://notion-enhancer.github.io/) under the MIT license
 | 
					 * (https://notion-enhancer.github.io/) under the MIT license
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										18
									
								
								src/init.js
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								src/init.js
									
									
									
									
									
								
							@ -18,11 +18,7 @@ if (isElectron()) {
 | 
				
			|||||||
  require("./api/registry.js");
 | 
					  require("./api/registry.js");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const { enhancerUrl } = globalThis.__enhancerApi,
 | 
					  const { enhancerUrl } = globalThis.__enhancerApi,
 | 
				
			||||||
    { getMods, isEnabled, modDatabase } = globalThis.__enhancerApi,
 | 
					    { getMods, isEnabled, modDatabase } = globalThis.__enhancerApi;
 | 
				
			||||||
    API_LOADED = new Promise((res) => {
 | 
					 | 
				
			||||||
      const onReady = globalThis.__enhancerReady;
 | 
					 | 
				
			||||||
      globalThis.__enhancerReady = () => (onReady?.(), res());
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  module.exports = async (target, __exports, __eval) => {
 | 
					  module.exports = async (target, __exports, __eval) => {
 | 
				
			||||||
    const __getApi = () => globalThis.__enhancerApi;
 | 
					    const __getApi = () => globalThis.__enhancerApi;
 | 
				
			||||||
@ -41,10 +37,12 @@ if (isElectron()) {
 | 
				
			|||||||
        document.head.append($script);
 | 
					        document.head.append($script);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // register user-provided javascript for execution in-app
 | 
					        // register user-provided javascript for execution in-app
 | 
				
			||||||
        const { webFrame } = require("electron"),
 | 
					        if (target === ".webpack/renderer/tab_browser_view/preload.js") {
 | 
				
			||||||
          db = await modDatabase("0f0bf8b6-eae6-4273-b307-8fc43f2ee082"),
 | 
					          const { webFrame } = require("electron"),
 | 
				
			||||||
          customScript = (await db.get("customScript"))?.content;
 | 
					            db = await modDatabase("0f0bf8b6-eae6-4273-b307-8fc43f2ee082"),
 | 
				
			||||||
        if (customScript) webFrame.executeJavaScript(customScript);
 | 
					            customScript = (await db.get("customScript"))?.content;
 | 
				
			||||||
 | 
					          if (customScript) webFrame.executeJavaScript(customScript);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
      });
 | 
					      });
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -55,7 +53,7 @@ if (isElectron()) {
 | 
				
			|||||||
      for (let [scriptTarget, script] of mod.electronScripts ?? []) {
 | 
					      for (let [scriptTarget, script] of mod.electronScripts ?? []) {
 | 
				
			||||||
        if (target !== scriptTarget) continue;
 | 
					        if (target !== scriptTarget) continue;
 | 
				
			||||||
        script = require(`./${mod._src}/${script}`);
 | 
					        script = require(`./${mod._src}/${script}`);
 | 
				
			||||||
        API_LOADED.then(() => script(__getApi(), db, __exports, __eval));
 | 
					        script(__getApi(), db, __exports, __eval);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										10
									
								
								src/load.mjs
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								src/load.mjs
									
									
									
									
									
								
							@ -14,11 +14,11 @@ export default (async () => {
 | 
				
			|||||||
    signedIn = localStorage["LRU:KeyValueStore2:current-user-id"],
 | 
					    signedIn = localStorage["LRU:KeyValueStore2:current-user-id"],
 | 
				
			||||||
    pageLoaded = /(^\/$)|((-|\/)[0-9a-f]{32}((\?.+)|$))/.test(location.pathname),
 | 
					    pageLoaded = /(^\/$)|((-|\/)[0-9a-f]{32}((\?.+)|$))/.test(location.pathname),
 | 
				
			||||||
    IS_MENU = location.href.startsWith(enhancerUrl("core/menu/index.html")),
 | 
					    IS_MENU = location.href.startsWith(enhancerUrl("core/menu/index.html")),
 | 
				
			||||||
    IS_TABS = /\/app\/\.webpack\/renderer\/(draggable_)?tabs\/index.html$/.test(location.href),
 | 
					    IS_TABS = /\.webpack\/renderer\/tabs\/index.html$/.test(location.href),
 | 
				
			||||||
    IS_ELECTRON = ['linux', 'win32', 'darwin'].includes(platform),
 | 
					    IS_ELECTRON = ['linux', 'win32', 'darwin'].includes(platform),
 | 
				
			||||||
    API_LOADED = new Promise((res, rej) => {
 | 
					    API_LOADED = new Promise((res, rej) => {
 | 
				
			||||||
      const onReady = globalThis.__enhancerReady;
 | 
					      const onReady = globalThis.__enhancerApi.onReady;
 | 
				
			||||||
      globalThis.__enhancerReady = () => (onReady?.(), res());
 | 
					      globalThis.__enhancerApi.onReady = () => (onReady?.(), res());
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
  globalThis.IS_TABS = IS_TABS;
 | 
					  globalThis.IS_TABS = IS_TABS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -72,11 +72,11 @@ export default (async () => {
 | 
				
			|||||||
      Promise.resolve(isCore || API_LOADED)
 | 
					      Promise.resolve(isCore || API_LOADED)
 | 
				
			||||||
        .then(() => import(enhancerUrl(`${mod._src}/${script}`)))
 | 
					        .then(() => import(enhancerUrl(`${mod._src}/${script}`)))
 | 
				
			||||||
        .then((script) => script.default(globalThis.__enhancerApi, db))
 | 
					        .then((script) => script.default(globalThis.__enhancerApi, db))
 | 
				
			||||||
        .then(() => !isCore || globalThis.__enhancerReady?.());
 | 
					        .then(() => !isCore || globalThis.__enhancerApi.onReady?.());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (IS_MENU || IS_TABS) globalThis.__enhancerReady?.();
 | 
					  if (IS_MENU || IS_TABS) globalThis.__enhancerApi.onReady?.();
 | 
				
			||||||
  return API_LOADED.then(() => {
 | 
					  return API_LOADED.then(() => {
 | 
				
			||||||
    if (IS_MENU) console.log("notion-enhancer: ready");
 | 
					    if (IS_MENU) console.log("notion-enhancer: ready");
 | 
				
			||||||
    return globalThis.__enhancerApi;
 | 
					    return globalThis.__enhancerApi;
 | 
				
			||||||
 | 
				
			|||||||
@ -7,5 +7,6 @@
 | 
				
			|||||||
  "extensions/outliner",
 | 
					  "extensions/outliner",
 | 
				
			||||||
  "extensions/word-counter",
 | 
					  "extensions/word-counter",
 | 
				
			||||||
  "extensions/no-peeking",
 | 
					  "extensions/no-peeking",
 | 
				
			||||||
 | 
					  "extensions/focus",
 | 
				
			||||||
  "themes/classic-dark"
 | 
					  "themes/classic-dark"
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
				
			|||||||
@ -7,7 +7,7 @@
 | 
				
			|||||||
  "tags": ["theme", "dark"],
 | 
					  "tags": ["theme", "dark"],
 | 
				
			||||||
  "authors": [
 | 
					  "authors": [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "name": "arecsu",
 | 
					      "name": "Arecsu",
 | 
				
			||||||
      "email": "alejandro9r@gmail.com",
 | 
					      "email": "alejandro9r@gmail.com",
 | 
				
			||||||
      "homepage": "https://github.com/Arecsu",
 | 
					      "homepage": "https://github.com/Arecsu",
 | 
				
			||||||
      "avatar": "https://avatars.githubusercontent.com/u/12679098"
 | 
					      "avatar": "https://avatars.githubusercontent.com/u/12679098"
 | 
				
			||||||
 | 
				
			|||||||
@ -215,4 +215,3 @@ if (IS_ELECTRON) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Object.assign((globalThis.__enhancerApi ??= {}), { queryDatabase });
 | 
					Object.assign((globalThis.__enhancerApi ??= {}), { queryDatabase });
 | 
				
			||||||
globalThis.__enhancerReady?.();
 | 
					 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user