From e937eeac80e5a90d89fb94f367a4cf1797ac9525 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Tue, 17 Mar 2026 05:00:00 +0000 Subject: [PATCH] feat: smaller font size for inline scripts --- public/assets/css/editor.css | 5 ++ .../editor/plugins/ProgrammableNotePlugin.ts | 70 ++++++++++++++++++ tests/visual-regression/editor.spec.ts | 34 +++++++++ ...tor-inline-script-dark-chromium-darwin.png | Bin 0 -> 20475 bytes ...or-inline-script-light-chromium-darwin.png | Bin 0 -> 20744 bytes 5 files changed, 109 insertions(+) create mode 100644 tests/visual-regression/editor.spec.ts-snapshots/editor-inline-script-dark-chromium-darwin.png create mode 100644 tests/visual-regression/editor.spec.ts-snapshots/editor-inline-script-light-chromium-darwin.png diff --git a/public/assets/css/editor.css b/public/assets/css/editor.css index d3dbd80d..6a902efa 100644 --- a/public/assets/css/editor.css +++ b/public/assets/css/editor.css @@ -131,6 +131,10 @@ div[data-lexical-editor] { &::highlight(inline-code-sigil) { color: var(--alt-content-color); } + + &.script-block { + font-size: var(--small-font-size); + } } .quote-block { @@ -205,6 +209,7 @@ div[data-lexical-editor] { margin: 0; white-space: pre-wrap; overflow-wrap: break-word; + font-family: inherit; } .script-output-status { diff --git a/src/lib/editor/plugins/ProgrammableNotePlugin.ts b/src/lib/editor/plugins/ProgrammableNotePlugin.ts index b4d4cde6..1fa2c921 100644 --- a/src/lib/editor/plugins/ProgrammableNotePlugin.ts +++ b/src/lib/editor/plugins/ProgrammableNotePlugin.ts @@ -39,6 +39,42 @@ const DEBOUNCE_MS = 500; const PROGRAMMABLE_NOTE_TAG = "programmable-note"; +const SCRIPT_BLOCK_CLASS = "script-block"; + +const getScriptBlockNodeKeys = ( + children: LexicalNode[], +): Set => { + const keys = new Set(); + let i = 0; + + while (i < children.length) { + const child = children[i]; + if ( + $isCodeBlockNode(child) + && child.getTextContent().startsWith("```") + && child.getTextContent().substring(3).trim() === "run" + ) { + keys.add(child.getKey()); + i++; + + while (i < children.length) { + const inner = children[i]; + keys.add(inner.getKey()); + if ( + $isCodeBlockNode(inner) + && inner.getTextContent().trimEnd() === "```" + ) { + break; + } + i++; + } + } + i++; + } + + return keys; +}; + const extractScriptBlocks = ( children: LexicalNode[], ): ScriptBlock[] => { @@ -370,5 +406,39 @@ export default function ProgrammableNotePlugin({ }; }, [editor]); + useEffect(() => { + const applyScriptBlockClasses = () => { + const { scriptKeys, allCodeBlockKeys } + = editor.getEditorState().read(() => { + const root = $getRoot(); + const children = root.getChildren(); + return { + scriptKeys: getScriptBlockNodeKeys(children), + allCodeBlockKeys: children + .filter((c) => $isCodeBlockNode(c)) + .map((c) => c.getKey()), + }; + }); + + for (const key of allCodeBlockKeys) { + const el = editor.getElementByKey(key); + if (el) { + el.classList.toggle( + SCRIPT_BLOCK_CLASS, + scriptKeys.has(key), + ); + } + } + }; + + const unregister = editor.registerUpdateListener(() => { + applyScriptBlockClasses(); + }); + + applyScriptBlockClasses(); + + return unregister; + }, [editor]); + return null; } diff --git a/tests/visual-regression/editor.spec.ts b/tests/visual-regression/editor.spec.ts index f07b14ff..9a5b3578 100644 --- a/tests/visual-regression/editor.spec.ts +++ b/tests/visual-regression/editor.spec.ts @@ -311,6 +311,40 @@ test.describe("Editor", () => { .toMatchSnapshot("editor-note-stats-with-files-light.png"); }); + test("inline script - light", async ({ page }) => { + page.emulateMedia({ colorScheme: "light" }); + const editor = page.locator("div[data-lexical-editor]"); + await expect(editor).toBeFocused(); + await editor.fill( + "# Note with inline script\n" + + "Some paragraph text\n" + + "```run\n" + + "println(\"Hello from script\")\n" + + "```\n" + + "Another paragraph", + ); + await page.locator(".script-output-content").waitFor({ timeout: 10000 }); + expect(await page.locator(".note").screenshot()) + .toMatchSnapshot("editor-inline-script-light.png"); + }); + + test("inline script - dark", async ({ page }) => { + page.emulateMedia({ colorScheme: "dark" }); + const editor = page.locator("div[data-lexical-editor]"); + await expect(editor).toBeFocused(); + await editor.fill( + "# Note with inline script\n" + + "Some paragraph text\n" + + "```run\n" + + "println(\"Hello from script\")\n" + + "```\n" + + "Another paragraph", + ); + await page.locator(".script-output-content").waitFor({ timeout: 10000 }); + expect(await page.locator(".note").screenshot()) + .toMatchSnapshot("editor-inline-script-dark.png"); + }); + test("modal - light", async ({ page }) => { page.emulateMedia({ colorScheme: "light" }); diff --git a/tests/visual-regression/editor.spec.ts-snapshots/editor-inline-script-dark-chromium-darwin.png b/tests/visual-regression/editor.spec.ts-snapshots/editor-inline-script-dark-chromium-darwin.png new file mode 100644 index 0000000000000000000000000000000000000000..51818c950783bfa869b242bff90fe53de88ea680 GIT binary patch literal 20475 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

b?xnb-Mtc~&8| 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 U*%1hZPblPNlpp0jeERl(0n7V{6#xJL literal 0 HcmV?d00001