diff --git a/extension/helpers.js b/extension/helpers.js index 32aad9b..14e1006 100644 --- a/extension/helpers.js +++ b/extension/helpers.js @@ -6,15 +6,25 @@ 'use strict'; -import './dep/markdown-it.min.js'; - export const ERROR = Symbol(); export const env = {}; env.name = 'browser'; -env.openEnhancerMenu = ({ theme } = {}) => - chrome.runtime.sendMessage({ type: 'enhancerMenu.open', data: { theme } }); +env.openEnhancerMenu = () => chrome.runtime.sendMessage({ type: 'enhancerMenu.open' }); + +/** - */ + +export const storage = {}; + +storage.set = (id, key, value) => + new Promise((res, rej) => chrome.storage.sync.set({ [`[${id}]${key}`]: value }, res)); +storage.get = (id, key) => + new Promise((res, rej) => + chrome.storage.sync.get([`[${id}]${key}`], (values) => res(values[`[${id}]${key}`])) + ); + +/** - */ export const web = {}; @@ -66,17 +76,6 @@ web.escapeHtml = (str) => // https://marketplace.visualstudio.com/items?itemName=bierner.lit-html web.html = (html, ...templates) => html.map((str) => str + (templates.shift() || '')).join(''); -web.Prism = async () => { - try { - return Prism; - } catch { - await import('./dep/prism.js'); - Prism.manual = true; - web.loadStyleset('./dep/prism.css'); - } - return Prism; -}; - /** * @param {string} sheet */ @@ -116,6 +115,37 @@ web.hotkeyListener = (keys, callback) => { web._hotkeys.push({ keys, callback }); }; +/** - */ + +export const fmt = {}; + +import './dep/prism.js'; +fmt.Prism = Prism; +fmt.Prism.manual = true; +fmt.Prism.hooks.add('complete', (event) => { + if (!fmt.Prism._stylesheetLoaded) { + web.loadStyleset('./dep/prism.css'); + fmt.Prism._stylesheetLoaded = true; + } +}); +// delete globalThis['Prism']; + +import './dep/markdown-it.min.js'; +fmt.md = new markdownit({ + linkify: true, + highlight: (str, lang) => + web.html`
${web.escapeHtml(
+ str
+ )}
`,
+});
+fmt.md.renderer.rules.code_block = (tokens, idx, options, env, slf) =>
+ web.html`${web.escapeHtml(
+ tokens[idx].content
+ )}
\n`;
+// delete globalThis['markdownit'];
+
+/** - */
+
export const fs = {};
/**
@@ -133,6 +163,8 @@ fs.isFile = async (path) => {
}
};
+/** - */
+
export const regexers = {
uuid(str) {
const match = str.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i);
@@ -166,6 +198,8 @@ export const regexers = {
},
};
+/** - */
+
export const registry = {};
registry.validate = async (mod, err, check) => {
@@ -391,15 +425,3 @@ registry.errors = async (callback = () => {}) => {
callback(registry._errors);
return registry._errors;
};
-
-export const markdown = new markdownit({
- linkify: true,
- highlight: (str, lang) =>
- web.html`${web.escapeHtml(
- str
- )}
`,
-});
-markdown.renderer.rules.code_block = (tokens, idx, options, env, slf) =>
- web.html`${web.escapeHtml(
- tokens[idx].content
- )}
\n`;
diff --git a/extension/repo/menu@a6621988-551d-495a-97d8-3c568bca2e9e/client.js b/extension/repo/menu@a6621988-551d-495a-97d8-3c568bca2e9e/client.js
index 8e05302..6afed32 100644
--- a/extension/repo/menu@a6621988-551d-495a-97d8-3c568bca2e9e/client.js
+++ b/extension/repo/menu@a6621988-551d-495a-97d8-3c568bca2e9e/client.js
@@ -6,7 +6,8 @@
'use strict';
-import { web, fs, env } from '../../helpers.js';
+const _id = 'a6621988-551d-495a-97d8-3c568bca2e9e';
+import { env, storage, web, fs } from '../../helpers.js';
const sidebarSelector =
'#notion-app > div > div.notion-cursor-listener > div.notion-sidebar-container > div > div > div > div:nth-child(4)';
@@ -16,15 +17,10 @@ web.whenReady([sidebarSelector], async () => {
` `
);
const setTheme = () =>
- new Promise((res, rej) =>
- chrome.storage.local.set(
- { 'notion.theme': document.querySelector('.notion-dark-theme') ? 'dark' : 'light' },
- res
- )
- );
- enhancerSidebarElement.addEventListener('click', () =>
- setTheme().then(env.openEnhancerMenu)
- );
+ storage.set(_id, 'theme', document.querySelector('.notion-dark-theme') ? 'dark' : 'light');
+ enhancerSidebarElement.addEventListener('click', () => {
+ setTheme().then(env.openEnhancerMenu);
+ });
window.addEventListener('focus', setTheme);
window.addEventListener('blur', setTheme);
setTheme();
diff --git a/extension/repo/menu@a6621988-551d-495a-97d8-3c568bca2e9e/menu.js b/extension/repo/menu@a6621988-551d-495a-97d8-3c568bca2e9e/menu.js
index a795e44..d35973b 100644
--- a/extension/repo/menu@a6621988-551d-495a-97d8-3c568bca2e9e/menu.js
+++ b/extension/repo/menu@a6621988-551d-495a-97d8-3c568bca2e9e/menu.js
@@ -6,7 +6,8 @@
'use strict';
-import { web, fs, registry, markdown } from '../../helpers.js';
+const _id = 'a6621988-551d-495a-97d8-3c568bca2e9e';
+import { storage, web, fmt, fs, registry } from '../../helpers.js';
for (let mod of await registry.get()) {
for (let sheet of mod.css?.menu || []) {
@@ -42,7 +43,7 @@ components.card = {
`),
description: ({ description }) =>
web.createElement(
- web.html`${markdown.renderInline(description)}
` + web.html`${fmt.md.renderInline(description)}
` ), authors: ({ authors }) => web.createElement(web.html`