From 590688f1235796b2d740549d11697eda46bcbf9d Mon Sep 17 00:00:00 2001 From: MiniX16 Date: Wed, 12 Nov 2025 17:59:28 +0100 Subject: [PATCH 01/19] Add unsaved-change warning to Home page editor --- client/homebrew/pages/homePage/homePage.jsx | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/client/homebrew/pages/homePage/homePage.jsx b/client/homebrew/pages/homePage/homePage.jsx index 82c5b7084..5f2a3d14b 100644 --- a/client/homebrew/pages/homePage/homePage.jsx +++ b/client/homebrew/pages/homePage/homePage.jsx @@ -53,8 +53,9 @@ const HomePage =(props)=>{ const [isSaving , setIsSaving] = useState(false); const [autoSaveEnabled , setAutoSaveEnable] = useState(false); - const editorRef = useRef(null); - const lastSavedBrew = useRef(_.cloneDeep(props.brew)); + const editorRef = useRef(null); + const lastSavedBrew = useRef(_.cloneDeep(props.brew)); + const unsavedChangesRef = useRef(unsavedChanges); useEffect(()=>{ fetchThemeBundle(setError, setThemeBundle, currentBrew.renderer, currentBrew.theme); @@ -69,13 +70,28 @@ const HomePage =(props)=>{ } }; + const handleBeforeUnload = (e)=>{ + if(unsavedChangesRef.current) { + e.preventDefault(); + e.returnValue = ''; + return ''; + } + }; + + window.addEventListener('beforeunload', handleBeforeUnload); + document.addEventListener('keydown', handleControlKeys); return ()=>{ document.removeEventListener('keydown', handleControlKeys); + window.removeEventListener('beforeunload', handleBeforeUnload); }; }, []); + useEffect(()=>{ + unsavedChangesRef.current = unsavedChanges; + }, [unsavedChanges]); + const save = ()=>{ request.post('/api') .send(currentBrew) From b66625e59d41886c297b0b77469ced9bde419196 Mon Sep 17 00:00:00 2001 From: MiniX16 Date: Thu, 13 Nov 2025 12:16:37 +0100 Subject: [PATCH 02/19] Handle unsaved warning with onbeforeunload --- client/homebrew/pages/homePage/homePage.jsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/client/homebrew/pages/homePage/homePage.jsx b/client/homebrew/pages/homePage/homePage.jsx index 5f2a3d14b..8405f34d3 100644 --- a/client/homebrew/pages/homePage/homePage.jsx +++ b/client/homebrew/pages/homePage/homePage.jsx @@ -78,13 +78,15 @@ const HomePage =(props)=>{ } }; - window.addEventListener('beforeunload', handleBeforeUnload); + const previousBeforeUnload = window.onbeforeunload; + + window.onbeforeunload = handleBeforeUnload; document.addEventListener('keydown', handleControlKeys); return ()=>{ document.removeEventListener('keydown', handleControlKeys); - window.removeEventListener('beforeunload', handleBeforeUnload); + window.onbeforeunload = previousBeforeUnload; }; }, []); From fa9f18075921452a26c0b2e61cc4448e3f5c235f Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Fri, 14 Nov 2025 22:59:34 -0500 Subject: [PATCH 03/19] Modify slightly to follow the existing structure in editPage.jsx for easier merging of these pages later --- client/homebrew/pages/homePage/homePage.jsx | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/client/homebrew/pages/homePage/homePage.jsx b/client/homebrew/pages/homePage/homePage.jsx index 9a779a070..463df333b 100644 --- a/client/homebrew/pages/homePage/homePage.jsx +++ b/client/homebrew/pages/homePage/homePage.jsx @@ -70,23 +70,14 @@ const HomePage =(props)=>{ } }; - const handleBeforeUnload = (e)=>{ - if(unsavedChangesRef.current) { - e.preventDefault(); - e.returnValue = ''; - return ''; - } - }; - - const previousBeforeUnload = window.onbeforeunload; - - window.onbeforeunload = handleBeforeUnload; - document.addEventListener('keydown', handleControlKeys); - + window.onbeforeunload = ()=>{ + if(unsavedChangesRef.current) + return 'You have unsaved changes!'; + }; return ()=>{ document.removeEventListener('keydown', handleControlKeys); - window.onbeforeunload = previousBeforeUnload; + window.onbeforeunload = null; }; }, []); From 93ef9bfd510a1a6ccf1d0f547fd5a86456a4ab4c Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Sat, 15 Nov 2025 18:33:22 +1300 Subject: [PATCH 04/19] Set UnearthedArcana baseTheme to Blank --- themes/V3/UnearthedArcana/settings.json | 2 +- themes/themes.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/themes/V3/UnearthedArcana/settings.json b/themes/V3/UnearthedArcana/settings.json index 273f0bb2f..21b1342a3 100644 --- a/themes/V3/UnearthedArcana/settings.json +++ b/themes/V3/UnearthedArcana/settings.json @@ -1,6 +1,6 @@ { "name" : "UnearthedArcana", "renderer" : "V3", - "baseTheme" : false, + "baseTheme" : "Blank", "baseSnippets" : false } diff --git a/themes/themes.json b/themes/themes.json index 7e01b180c..7cabe8486 100644 --- a/themes/themes.json +++ b/themes/themes.json @@ -39,7 +39,7 @@ "UnearthedArcana": { "name": "UnearthedArcana", "renderer": "V3", - "baseTheme": false, + "baseTheme": "Blank", "baseSnippets": false, "path": "UnearthedArcana" } From a217779e764a2d4b57c24885e25d854d4ad9fab4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Losada=20Hern=C3=A1ndez?= Date: Sat, 15 Nov 2025 16:05:21 +0100 Subject: [PATCH 05/19] fix snippetbar wrap --- client/homebrew/editor/snippetbar/snippetbar.less | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/homebrew/editor/snippetbar/snippetbar.less b/client/homebrew/editor/snippetbar/snippetbar.less index c53d4be8e..8e50aa764 100644 --- a/client/homebrew/editor/snippetbar/snippetbar.less +++ b/client/homebrew/editor/snippetbar/snippetbar.less @@ -14,7 +14,7 @@ .snippets { display : flex; justify-content : flex-start; - min-width : 432.18px; //must be controlled every time an item is added, must be hardcoded for the wrapping as it is applied + min-width : 499.35px; //must be controlled every time an item is added, must be hardcoded for the wrapping as it is applied } .editors { @@ -237,7 +237,7 @@ } } -@container editor (width < 683px) { +@container editor (width < 750px) { .snippetBar { .editors { flex : 1; From 7bc41f9b0d5231897c46239c46cc81c54b33ce4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Losada=20Hern=C3=A1ndez?= Date: Sat, 15 Nov 2025 16:49:48 +0100 Subject: [PATCH 06/19] fix snippetbar hidden --- client/homebrew/editor/editor.jsx | 32 ++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/client/homebrew/editor/editor.jsx b/client/homebrew/editor/editor.jsx index a00c47403..968850272 100644 --- a/client/homebrew/editor/editor.jsx +++ b/client/homebrew/editor/editor.jsx @@ -58,7 +58,6 @@ const Editor = createClass({ return { editorTheme : this.props.editorTheme, view : 'text', //'text', 'style', 'meta', 'snippet' - snippetbarHeight : 25 }; }, @@ -85,7 +84,18 @@ const Editor = createClass({ editorTheme : editorTheme }); } - this.setState({ snippetbarHeight: document.querySelector('.editor > .snippetBar').offsetHeight }); + const snippetBar = document.querySelector('.editor > .snippetBar'); + if (!snippetBar) return; + + this.resizeObserver = new ResizeObserver(entries => { + // throttle/debounce inside if you like + const h = snippetBar.offsetHeight; + const editor = document.querySelector('.editor .codeEditor'); + if (!editor) return; + editor.style.height = `calc(100% - ${h}px)`; + }); + + this.resizeObserver.observe(snippetBar); }, componentDidUpdate : function(prevProps, prevState, snapshot) { @@ -108,6 +118,10 @@ const Editor = createClass({ } }, + componentWillUnmount() { + if (this.resizeObserver) this.resizeObserver.disconnect(); + }, + handleControlKeys : function(e){ if(!(e.ctrlKey && e.metaKey && e.shiftKey)) return; const LEFTARROW_KEY = 37; @@ -407,13 +421,6 @@ const Editor = createClass({ } }, - //Called when there are changes to the editor's dimensions - update : function(){ - const snipHeight = document.querySelector('.editor > .snippetBar').offsetHeight; - if(snipHeight !== this.state.snippetbarHeight) - this.setState({ snippetbarHeight: snipHeight }); - }, - updateEditorTheme : function(newTheme){ window.localStorage.setItem(EDITOR_THEME_KEY, newTheme); this.setState({ @@ -437,7 +444,7 @@ const Editor = createClass({ onChange={this.props.onBrewChange('text')} editorTheme={this.state.editorTheme} rerenderParent={this.rerenderParent} - style={{ height: `calc(100% - ${this.state.snippetbarHeight}px)` }} /> + style={{ height: `calc(100% - 26px)` }} /> ; } if(this.isStyle()){ @@ -451,7 +458,7 @@ const Editor = createClass({ enableFolding={true} editorTheme={this.state.editorTheme} rerenderParent={this.rerenderParent} - style={{ height: `calc(100% - ${this.state.snippetbarHeight}px)` }} /> + style={{ height: `calc(100% - 26px)` }} /> ; } if(this.isMeta()){ @@ -468,7 +475,6 @@ const Editor = createClass({ userThemes={this.props.userThemes}/> ; } - if(this.isSnip()){ if(!this.props.brew.snippets) { this.props.brew.snippets = DEFAULT_SNIPPET_TEXT; } return <> @@ -481,7 +487,7 @@ const Editor = createClass({ enableFolding={true} editorTheme={this.state.editorTheme} rerenderParent={this.rerenderParent} - style={{ height: `calc(100% - ${this.state.snippetbarHeight}px)` }} /> + style={{ height: `calc(100% - 26px)` }} /> ; } }, From b78f5079dfc0f5053b2b9e6cc0255ff92febcd81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Losada=20Hern=C3=A1ndez?= Date: Sat, 15 Nov 2025 16:59:32 +0100 Subject: [PATCH 07/19] bring back update native func --- client/homebrew/editor/editor.jsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/homebrew/editor/editor.jsx b/client/homebrew/editor/editor.jsx index 968850272..7148a7c22 100644 --- a/client/homebrew/editor/editor.jsx +++ b/client/homebrew/editor/editor.jsx @@ -421,6 +421,9 @@ const Editor = createClass({ } }, + //Called when there are changes to the editor's dimensions + update : function(){}, + updateEditorTheme : function(newTheme){ window.localStorage.setItem(EDITOR_THEME_KEY, newTheme); this.setState({ From f18a73e1fff1304d1fe42dfd0f9e833cdbfb4150 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Losada=20Hern=C3=A1ndez?= Date: Sat, 15 Nov 2025 17:25:05 +0100 Subject: [PATCH 08/19] fix glitch in newPage --- client/homebrew/pages/newPage/newPage.less | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/client/homebrew/pages/newPage/newPage.less b/client/homebrew/pages/newPage/newPage.less index 083e1ee09..d2f07ac40 100644 --- a/client/homebrew/pages/newPage/newPage.less +++ b/client/homebrew/pages/newPage/newPage.less @@ -1,12 +1,15 @@ .newPage { .navItem.save { - .fadeInRight(); - .transition(opacity); background-color : @orange; + transition:all 0.2s; &:hover { background-color : @green; } + &.neverSaved { - .fadeOutRight(); + translate:-100%; opacity: 0; + background-color :#333; + cursor:auto; } } } + From b6478f3964000ef291dabed79812a0edb34aecfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Losada=20Hern=C3=A1ndez?= Date: Sat, 15 Nov 2025 17:25:25 +0100 Subject: [PATCH 09/19] remove new brew nav item from new page --- client/homebrew/pages/newPage/newPage.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx index 83eaeda45..41d2077d6 100644 --- a/client/homebrew/pages/newPage/newPage.jsx +++ b/client/homebrew/pages/newPage/newPage.jsx @@ -228,7 +228,6 @@ const NewPage = (props)=>{ {error ? : renderSaveButton()} - From 5e7fdb34a93d01e5448c209aa7ffeeff13133e8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Losada=20Hern=C3=A1ndez?= Date: Sat, 15 Nov 2025 23:40:01 +0100 Subject: [PATCH 10/19] Revert "remove new brew nav item from new page" This reverts commit b6478f3964000ef291dabed79812a0edb34aecfb. --- client/homebrew/pages/newPage/newPage.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx index 41d2077d6..83eaeda45 100644 --- a/client/homebrew/pages/newPage/newPage.jsx +++ b/client/homebrew/pages/newPage/newPage.jsx @@ -228,6 +228,7 @@ const NewPage = (props)=>{ {error ? : renderSaveButton()} + From c784e2e63bf287ec5c659f42a44e123a88226498 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Sun, 16 Nov 2025 13:12:40 +1300 Subject: [PATCH 11/19] Fix New item on Nav Bar --- client/homebrew/navbar/newbrew.navitem.jsx | 51 ++++++++++++++++++---- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/client/homebrew/navbar/newbrew.navitem.jsx b/client/homebrew/navbar/newbrew.navitem.jsx index d19b7595f..6197d6fc5 100644 --- a/client/homebrew/navbar/newbrew.navitem.jsx +++ b/client/homebrew/navbar/newbrew.navitem.jsx @@ -3,19 +3,16 @@ const _ = require('lodash'); const Nav = require('naturalcrit/nav/nav.jsx'); const { splitTextStyleAndMetadata } = require('../../../shared/helpers.js'); // Importing the function from helpers.js -const BREWKEY = 'homebrewery-new'; -const STYLEKEY = 'homebrewery-new-style'; -const METAKEY = 'homebrewery-new-meta'; +const BREWKEY = 'HB_newPage_content'; +const STYLEKEY = 'HB_newPage_style'; +const METAKEY = 'HB_newPage_meta'; const NewBrew = ()=>{ const handleFileChange = (e)=>{ const file = e.target.files[0]; if(!file) return; - const currentNew = localStorage.getItem(BREWKEY); - if(currentNew && !confirm( - `You have some text in the new brew space, if you load a file that text will be lost, are you sure you want to load the file?` - )) return; + if(!confirmLocalStorageChange()) return; const reader = new FileReader(); reader.onload = (e)=>{ @@ -43,6 +40,34 @@ const NewBrew = ()=>{ reader.readAsText(file); }; + const checkLocalStorage = ()=>{ + // Check if changes exist for New editor + const currentText = localStorage.getItem(BREWKEY); + const currentStyle = localStorage.getItem(STYLEKEY); + const currentMeta = localStorage.getItem(METAKEY); + return (currentText || currentStyle || currentMeta); + }; + + const confirmLocalStorageChange = ()=>{ + // TRUE if no data in any local storage key + // TRUE if data in any local storage key AND approval given + // FALSE if data in any local storage key AND approval declined + return (!checkLocalStorage() || confirm( + `You have made changes in the new brew space. If you continue, that information will be PERMANENTLY LOST.\nAre you sure you wish to continue?` + )); + }; + + const clearLocalStorage = ()=>{ + if(!confirmLocalStorageChange()) return; + + localStorage.removeItem(BREWKEY); + localStorage.removeItem(STYLEKEY); + localStorage.removeItem(METAKEY); + + window.location.href = '/new'; + return; + }; + return ( @@ -53,17 +78,25 @@ const NewBrew = ()=>{ new + resume editing + + { clearLocalStorage(); }}> from blank { document.getElementById('uploadTxt').click(); }}> From f1891d925014d8197f3b739c1e50bd7475adfe2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Losada=20Hern=C3=A1ndez?= Date: Sun, 16 Nov 2025 19:02:37 +0100 Subject: [PATCH 12/19] use state instead --- client/homebrew/editor/editor.jsx | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/client/homebrew/editor/editor.jsx b/client/homebrew/editor/editor.jsx index 7148a7c22..4c753dbc3 100644 --- a/client/homebrew/editor/editor.jsx +++ b/client/homebrew/editor/editor.jsx @@ -58,6 +58,7 @@ const Editor = createClass({ return { editorTheme : this.props.editorTheme, view : 'text', //'text', 'style', 'meta', 'snippet' + snippetBarHeight : 26, }; }, @@ -88,11 +89,9 @@ const Editor = createClass({ if (!snippetBar) return; this.resizeObserver = new ResizeObserver(entries => { - // throttle/debounce inside if you like - const h = snippetBar.offsetHeight; - const editor = document.querySelector('.editor .codeEditor'); - if (!editor) return; - editor.style.height = `calc(100% - ${h}px)`; + const height = document.querySelector('.editor > .snippetBar').offsetHeight; + this.setState({ snippetbarHeight: height }); + console.log('setting state to ', height ); }); this.resizeObserver.observe(snippetBar); @@ -437,6 +436,7 @@ const Editor = createClass({ }, renderEditor : function(){ + console.log('state at rendering is: ',this.state.snippetBarHeight); if(this.isText()){ return <> + style={{ height: `calc(100% - ${this.state.snippetBarHeight}px)` }} /> ; } if(this.isStyle()){ @@ -461,7 +461,7 @@ const Editor = createClass({ enableFolding={true} editorTheme={this.state.editorTheme} rerenderParent={this.rerenderParent} - style={{ height: `calc(100% - 26px)` }} /> + style={{ height: `calc(100% - ${this.state.snippetBarHeight}px)` }} /> ; } if(this.isMeta()){ @@ -490,7 +490,7 @@ const Editor = createClass({ enableFolding={true} editorTheme={this.state.editorTheme} rerenderParent={this.rerenderParent} - style={{ height: `calc(100% - 26px)` }} /> + style={{ height: `calc(100% -${this.state.snippetBarHeight}px)` }} /> ; } }, From 73b7d6887bd0bb17c39c9851e604800e6bcc8d81 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Mon, 17 Nov 2025 17:09:23 +1300 Subject: [PATCH 13/19] Fix typo in state property name for snippet bar height --- client/homebrew/editor/editor.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/homebrew/editor/editor.jsx b/client/homebrew/editor/editor.jsx index 4c753dbc3..ff32ef4a5 100644 --- a/client/homebrew/editor/editor.jsx +++ b/client/homebrew/editor/editor.jsx @@ -90,7 +90,7 @@ const Editor = createClass({ this.resizeObserver = new ResizeObserver(entries => { const height = document.querySelector('.editor > .snippetBar').offsetHeight; - this.setState({ snippetbarHeight: height }); + this.setState({ snippetBarHeight: height }); console.log('setting state to ', height ); }); From 059d6d7939675583aadccf66cf160f09777617a3 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Mon, 17 Nov 2025 23:09:47 -0500 Subject: [PATCH 14/19] Lint --- client/homebrew/editor/editor.jsx | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/client/homebrew/editor/editor.jsx b/client/homebrew/editor/editor.jsx index ff32ef4a5..0ffd2e8a0 100644 --- a/client/homebrew/editor/editor.jsx +++ b/client/homebrew/editor/editor.jsx @@ -85,16 +85,15 @@ const Editor = createClass({ editorTheme : editorTheme }); } - const snippetBar = document.querySelector('.editor > .snippetBar'); - if (!snippetBar) return; + const snippetBar = document.querySelector('.editor > .snippetBar'); + if (!snippetBar) return; - this.resizeObserver = new ResizeObserver(entries => { + this.resizeObserver = new ResizeObserver(entries => { const height = document.querySelector('.editor > .snippetBar').offsetHeight; this.setState({ snippetBarHeight: height }); - console.log('setting state to ', height ); - }); + }); - this.resizeObserver.observe(snippetBar); + this.resizeObserver.observe(snippetBar); }, componentDidUpdate : function(prevProps, prevState, snapshot) { @@ -118,7 +117,7 @@ const Editor = createClass({ }, componentWillUnmount() { - if (this.resizeObserver) this.resizeObserver.disconnect(); + if (this.resizeObserver) this.resizeObserver.disconnect(); }, handleControlKeys : function(e){ @@ -436,7 +435,6 @@ const Editor = createClass({ }, renderEditor : function(){ - console.log('state at rendering is: ',this.state.snippetBarHeight); if(this.isText()){ return <> Date: Mon, 17 Nov 2025 23:48:56 -0500 Subject: [PATCH 15/19] Linting and move checkLocalStorage inside confirmLocalStorageChange --- client/homebrew/navbar/newbrew.navitem.jsx | 24 ++++++++-------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/client/homebrew/navbar/newbrew.navitem.jsx b/client/homebrew/navbar/newbrew.navitem.jsx index 4914782a5..b8cf82ab7 100644 --- a/client/homebrew/navbar/newbrew.navitem.jsx +++ b/client/homebrew/navbar/newbrew.navitem.jsx @@ -34,25 +34,20 @@ const NewBrew = ()=>{ alert(`This file is invalid: ${!type ? 'Missing file extension' :`.${type} files are not supported`}. Only .txt files exported from the Homebrewery are allowed.`); - console.log(file); }; reader.readAsText(file); }; - const checkLocalStorage = ()=>{ - // Check if changes exist for New editor - const currentText = localStorage.getItem(BREWKEY); - const currentStyle = localStorage.getItem(STYLEKEY); - const currentMeta = localStorage.getItem(METAKEY); - return (currentText || currentStyle || currentMeta); - }; - const confirmLocalStorageChange = ()=>{ + const currentText = localStorage.getItem(BREWKEY); + const currentStyle = localStorage.getItem(STYLEKEY); + const currentMeta = localStorage.getItem(METAKEY); + // TRUE if no data in any local storage key // TRUE if data in any local storage key AND approval given // FALSE if data in any local storage key AND approval declined - return (!checkLocalStorage() || confirm( + return (!(currentText || currentStyle || currentMeta) || confirm( `You have made changes in the new brew space. If you continue, that information will be PERMANENTLY LOST.\nAre you sure you wish to continue?` )); }; @@ -75,7 +70,7 @@ const NewBrew = ()=>{ className='new' color='purple' icon='fa-solid fa-plus-square'> - new + new { newTab={true} color='purple' icon='fa-solid fa-file'> - resume editing + resume draft { color='yellow' icon='fa-solid fa-file-circle-plus' onClick={()=>{ clearLocalStorage(); }}> - from blank + from blank - { document.getElementById('uploadTxt').click(); }}> - from file + from file ); From 9f721ff2fc3cc092bd3de8f3d4dce3d6139244b3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Nov 2025 03:01:21 +0000 Subject: [PATCH 16/19] Bump the dev-dependencies group across 1 directory with 2 updates Bumps the dev-dependencies group with 2 updates in the / directory: [eslint](https://github.com/eslint/eslint) and [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest). Updates `eslint` from 9.39.0 to 9.39.1 - [Release notes](https://github.com/eslint/eslint/releases) - [Commits](https://github.com/eslint/eslint/compare/v9.39.0...v9.39.1) Updates `eslint-plugin-jest` from 29.0.1 to 29.1.0 - [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases) - [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v29.0.1...v29.1.0) --- updated-dependencies: - dependency-name: eslint dependency-version: 9.39.1 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-dependencies - dependency-name: eslint-plugin-jest dependency-version: 29.1.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: dev-dependencies ... Signed-off-by: dependabot[bot] --- package-lock.json | 24 ++++++++++++------------ package.json | 4 ++-- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index c0d6845c3..37cb63667 100644 --- a/package-lock.json +++ b/package-lock.json @@ -66,8 +66,8 @@ "devDependencies": { "@stylistic/stylelint-plugin": "^4.0.0", "babel-plugin-transform-import-meta": "^2.3.3", - "eslint": "^9.37.0", - "eslint-plugin-jest": "^29.0.1", + "eslint": "^9.39.1", + "eslint-plugin-jest": "^29.1.0", "eslint-plugin-react": "^7.37.5", "globals": "^16.4.0", "jest": "^30.2.0", @@ -2258,9 +2258,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.39.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.0.tgz", - "integrity": "sha512-BIhe0sW91JGPiaF1mOuPy5v8NflqfjIcDNpC+LbW9f609WVRX1rArrhi6Z2ymvrAry9jw+5POTj4t2t62o8Bmw==", + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", + "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", "dev": true, "license": "MIT", "engines": { @@ -6259,9 +6259,9 @@ } }, "node_modules/eslint": { - "version": "9.39.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.0.tgz", - "integrity": "sha512-iy2GE3MHrYTL5lrCtMZ0X1KLEKKUjmK0kzwcnefhR66txcEmXZD2YWgR5GNdcEwkNx3a0siYkSvl0vIC+Svjmg==", + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", + "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", "dev": true, "license": "MIT", "dependencies": { @@ -6271,7 +6271,7 @@ "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.0", + "@eslint/js": "9.39.1", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -6319,9 +6319,9 @@ } }, "node_modules/eslint-plugin-jest": { - "version": "29.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-29.0.1.tgz", - "integrity": "sha512-EE44T0OSMCeXhDrrdsbKAhprobKkPtJTbQz5yEktysNpHeDZTAL1SfDTNKmcFfJkY6yrQLtTKZALrD3j/Gpmiw==", + "version": "29.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-29.1.0.tgz", + "integrity": "sha512-LabxXbASXVjguqL+kBHTPMf3gUeSqwH4fsrEyHTY/MCs42I/p9+ctg09SJpYiD8eGaIsP6GwYr5xW6xWS9XgZg==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index b4b86693d..2659b5476 100644 --- a/package.json +++ b/package.json @@ -141,8 +141,8 @@ "devDependencies": { "@stylistic/stylelint-plugin": "^4.0.0", "babel-plugin-transform-import-meta": "^2.3.3", - "eslint": "^9.37.0", - "eslint-plugin-jest": "^29.0.1", + "eslint": "^9.39.1", + "eslint-plugin-jest": "^29.1.0", "eslint-plugin-react": "^7.37.5", "globals": "^16.4.0", "jest": "^30.2.0", From 9970dd06997ccfc9d1995525ed19d7e81f008e67 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Nov 2025 03:02:34 +0000 Subject: [PATCH 17/19] Bump the prod-dependencies group across 1 directory with 7 updates Bumps the prod-dependencies group with 7 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@babel/preset-react](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-react) | `7.27.1` | `7.28.5` | | [core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js) | `3.46.0` | `3.47.0` | | [js-yaml](https://github.com/nodeca/js-yaml) | `4.1.0` | `4.1.1` | | [marked-emoji](https://github.com/UziTech/marked-emoji) | `2.0.1` | `2.0.2` | | [marked-gfm-heading-id](https://github.com/markedjs/marked-gfm-heading-id) | `4.1.2` | `4.1.3` | | [mongoose](https://github.com/Automattic/mongoose) | `8.19.2` | `8.20.0` | | [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) | `7.9.5` | `7.9.6` | Updates `@babel/preset-react` from 7.27.1 to 7.28.5 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.28.5/packages/babel-preset-react) Updates `core-js` from 3.46.0 to 3.47.0 - [Release notes](https://github.com/zloirock/core-js/releases) - [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md) - [Commits](https://github.com/zloirock/core-js/commits/v3.47.0/packages/core-js) Updates `js-yaml` from 4.1.0 to 4.1.1 - [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md) - [Commits](https://github.com/nodeca/js-yaml/compare/4.1.0...4.1.1) Updates `marked-emoji` from 2.0.1 to 2.0.2 - [Release notes](https://github.com/UziTech/marked-emoji/releases) - [Changelog](https://github.com/UziTech/marked-emoji/blob/main/release.config.cjs) - [Commits](https://github.com/UziTech/marked-emoji/compare/v2.0.1...v2.0.2) Updates `marked-gfm-heading-id` from 4.1.2 to 4.1.3 - [Release notes](https://github.com/markedjs/marked-gfm-heading-id/releases) - [Changelog](https://github.com/markedjs/marked-gfm-heading-id/blob/main/release.config.cjs) - [Commits](https://github.com/markedjs/marked-gfm-heading-id/compare/v4.1.2...v4.1.3) Updates `mongoose` from 8.19.2 to 8.20.0 - [Release notes](https://github.com/Automattic/mongoose/releases) - [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md) - [Commits](https://github.com/Automattic/mongoose/compare/8.19.2...8.20.0) Updates `react-router` from 7.9.5 to 7.9.6 - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router@7.9.6/packages/react-router) --- updated-dependencies: - dependency-name: "@babel/preset-react" dependency-version: 7.28.5 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod-dependencies - dependency-name: core-js dependency-version: 3.47.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod-dependencies - dependency-name: js-yaml dependency-version: 4.1.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: prod-dependencies - dependency-name: marked-emoji dependency-version: 2.0.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: prod-dependencies - dependency-name: marked-gfm-heading-id dependency-version: 4.1.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: prod-dependencies - dependency-name: mongoose dependency-version: 8.20.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod-dependencies - dependency-name: react-router dependency-version: 7.9.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: prod-dependencies ... Signed-off-by: dependabot[bot] --- package-lock.json | 68 +++++++++++++++++++++++------------------------ package.json | 14 +++++----- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/package-lock.json b/package-lock.json index c0d6845c3..530a8ceb9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@babel/core": "^7.28.4", "@babel/plugin-transform-runtime": "^7.28.3", "@babel/preset-env": "^7.28.3", - "@babel/preset-react": "^7.27.1", + "@babel/preset-react": "^7.28.5", "@babel/runtime": "^7.28.4", "@dmsnell/diff-match-patch": "^1.1.0", "@googleapis/drive": "^18.0.0", @@ -22,7 +22,7 @@ "classnames": "^2.5.1", "codemirror": "^5.65.6", "cookie-parser": "^1.4.7", - "core-js": "^3.46.0", + "core-js": "^3.47.0", "cors": "^2.8.5", "create-react-class": "^15.7.0", "dedent-tabs": "^0.10.3", @@ -34,29 +34,29 @@ "fs-extra": "11.3.2", "hash-wasm": "^4.12.0", "idb-keyval": "^6.2.2", - "js-yaml": "^4.1.0", + "js-yaml": "^4.1.1", "jwt-simple": "^0.5.6", "less": "^3.13.1", "lodash": "^4.17.21", "marked": "15.0.12", "marked-alignment-paragraphs": "^1.0.0", "marked-definition-lists": "^1.0.1", - "marked-emoji": "^2.0.1", + "marked-emoji": "^2.0.2", "marked-extended-tables": "^2.0.1", - "marked-gfm-heading-id": "^4.1.2", + "marked-gfm-heading-id": "^4.1.3", "marked-nonbreaking-spaces": "^1.0.1", "marked-smartypants-lite": "^1.0.3", "marked-subsuper-text": "^1.0.4", "marked-variables": "^1.0.4", "markedLegacy": "npm:marked@^0.3.19", "moment": "^2.30.1", - "mongoose": "^8.19.1", + "mongoose": "^8.20.0", "nanoid": "5.1.6", "nconf": "^0.13.0", "react": "^18.3.1", "react-dom": "^18.3.1", "react-frame-component": "^4.1.3", - "react-router": "^7.9.4", + "react-router": "^7.9.6", "romans": "^3.1.0", "sanitize-filename": "1.6.3", "superagent": "^10.2.1", @@ -1427,9 +1427,9 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.27.1.tgz", - "integrity": "sha512-p9+Vl3yuHPmkirRrg021XiP+EETmPMQTLr6Ayjj85RLNEbb3Eya/4VI0vAdzQG9SEAl2Lnt7fy5lZyMzjYoZQQ==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz", + "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1795,14 +1795,14 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.27.1.tgz", - "integrity": "sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.28.5.tgz", + "integrity": "sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-transform-react-display-name": "^7.27.1", + "@babel/plugin-transform-react-display-name": "^7.28.0", "@babel/plugin-transform-react-jsx": "^7.27.1", "@babel/plugin-transform-react-jsx-development": "^7.27.1", "@babel/plugin-transform-react-pure-annotations": "^7.27.1" @@ -5343,9 +5343,9 @@ } }, "node_modules/core-js": { - "version": "3.46.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.46.0.tgz", - "integrity": "sha512-vDMm9B0xnqqZ8uSBpZ8sNtRtOdmfShrvT6h2TuQGLs0Is+cR0DYbj/KWP6ALVNbWPpqA/qPLoOuppJN07humpA==", + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.47.0.tgz", + "integrity": "sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==", "hasInstallScript": true, "license": "MIT", "funding": { @@ -9466,9 +9466,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -10026,12 +10026,12 @@ } }, "node_modules/marked-emoji": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/marked-emoji/-/marked-emoji-2.0.1.tgz", - "integrity": "sha512-P+nRr02dD+yPOFhtGdaVBzp0qzwlksI2f5GumIdHW/3UadzJ5sVi78CZikiSLr9PmdtUOZodZUBNIO6k38pDMQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/marked-emoji/-/marked-emoji-2.0.2.tgz", + "integrity": "sha512-EFnLQn4wTyf+6pXfptkm83Z2mt3VbdEYedHBAsDpwUas5n5satsj42RGqAijBpmetgGerI1EzUuzf7NIccINUQ==", "license": "MIT", "peerDependencies": { - "marked": ">=4 <17" + "marked": ">=4 <18" } }, "node_modules/marked-extended-tables": { @@ -10044,15 +10044,15 @@ } }, "node_modules/marked-gfm-heading-id": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/marked-gfm-heading-id/-/marked-gfm-heading-id-4.1.2.tgz", - "integrity": "sha512-EQ1WiEGHJh0C8viU+hbXbhHyWTDgEia2i96fiSemm2wdYER6YBw/9QI5TB6YFTqFfmMOxBFXPcPJtlgD0fVV2w==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/marked-gfm-heading-id/-/marked-gfm-heading-id-4.1.3.tgz", + "integrity": "sha512-aR0i63LmFbuxU/gAgrgz1Ir+8HK6zAIFXMlckeKHpV+qKbYaOP95L4Ux5Gi+sKmCZU5qnN2rdKpvpb7PnUBIWg==", "license": "MIT", "dependencies": { "github-slugger": "^2.0.0" }, "peerDependencies": { - "marked": ">=13 <17" + "marked": ">=13 <18" } }, "node_modules/marked-nonbreaking-spaces": { @@ -10436,9 +10436,9 @@ } }, "node_modules/mongoose": { - "version": "8.19.2", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.19.2.tgz", - "integrity": "sha512-ww2T4dBV+suCbOfG5YPwj9pLCfUVyj8FEA1D3Ux1HHqutpLxGyOYEPU06iPRBW4cKr3PJfOSYsIpHWPTkz5zig==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.20.0.tgz", + "integrity": "sha512-SxqNb8yx+VOjIOx2l7HqkGvYuLC/T85d+jPvqGDdUbKJFz/5PVSsVxQzypQsX7chenYvq5bd8jIr4LtunedE7g==", "license": "MIT", "dependencies": { "bson": "^6.10.4", @@ -12065,9 +12065,9 @@ "license": "MIT" }, "node_modules/react-router": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.9.5.tgz", - "integrity": "sha512-JmxqrnBZ6E9hWmf02jzNn9Jm3UqyeimyiwzD69NjxGySG6lIz/1LVPsoTCwN7NBX2XjCEa1LIX5EMz1j2b6u6A==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.9.6.tgz", + "integrity": "sha512-Y1tUp8clYRXpfPITyuifmSoE2vncSME18uVLgaqyxh9H35JWpIfzHo+9y3Fzh5odk/jxPW29IgLgzcdwxGqyNA==", "license": "MIT", "dependencies": { "cookie": "^1.0.1", diff --git a/package.json b/package.json index b4b86693d..048a4dbfa 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,7 @@ "@babel/core": "^7.28.4", "@babel/plugin-transform-runtime": "^7.28.3", "@babel/preset-env": "^7.28.3", - "@babel/preset-react": "^7.27.1", + "@babel/preset-react": "^7.28.5", "@babel/runtime": "^7.28.4", "@dmsnell/diff-match-patch": "^1.1.0", "@googleapis/drive": "^18.0.0", @@ -97,7 +97,7 @@ "classnames": "^2.5.1", "codemirror": "^5.65.6", "cookie-parser": "^1.4.7", - "core-js": "^3.46.0", + "core-js": "^3.47.0", "cors": "^2.8.5", "create-react-class": "^15.7.0", "dedent-tabs": "^0.10.3", @@ -109,29 +109,29 @@ "fs-extra": "11.3.2", "hash-wasm": "^4.12.0", "idb-keyval": "^6.2.2", - "js-yaml": "^4.1.0", + "js-yaml": "^4.1.1", "jwt-simple": "^0.5.6", "less": "^3.13.1", "lodash": "^4.17.21", "marked": "15.0.12", "marked-alignment-paragraphs": "^1.0.0", "marked-definition-lists": "^1.0.1", - "marked-emoji": "^2.0.1", + "marked-emoji": "^2.0.2", "marked-extended-tables": "^2.0.1", - "marked-gfm-heading-id": "^4.1.2", + "marked-gfm-heading-id": "^4.1.3", "marked-nonbreaking-spaces": "^1.0.1", "marked-smartypants-lite": "^1.0.3", "marked-subsuper-text": "^1.0.4", "marked-variables": "^1.0.4", "markedLegacy": "npm:marked@^0.3.19", "moment": "^2.30.1", - "mongoose": "^8.19.1", + "mongoose": "^8.20.0", "nanoid": "5.1.6", "nconf": "^0.13.0", "react": "^18.3.1", "react-dom": "^18.3.1", "react-frame-component": "^4.1.3", - "react-router": "^7.9.4", + "react-router": "^7.9.6", "romans": "^3.1.0", "sanitize-filename": "1.6.3", "superagent": "^10.2.1", From f991235694b89968ec169e3977a8d6f3a22eb368 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Losada=20Hern=C3=A1ndez?= Date: Wed, 19 Nov 2025 23:36:43 +0100 Subject: [PATCH 18/19] fix .resetCounter --- themes/V3/Blank/style.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/V3/Blank/style.less b/themes/V3/Blank/style.less index 858ecebfb..4c65304b3 100644 --- a/themes/V3/Blank/style.less +++ b/themes/V3/Blank/style.less @@ -492,7 +492,7 @@ body { counter-reset : page-numbers 0; } .pageNumber { left : 30px; } } - .resetCounting { counter-set : page-numbers 1; } + &:has(.resetCounting) { counter-set : page-numbers 1; } &:not(:has(.skipCounting)) { counter-increment : page-numbers; } From 31c034c02918aafb36608296708343dc0bcb4d92 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Wed, 19 Nov 2025 23:53:39 -0500 Subject: [PATCH 19/19] Rework Marked custom HTML renderer to skip preprocess step Marked Variables are getting cleared when the custom HTML renderer runs, because Marked.parse re-runs the whole pipeline, including the preprocessor. Preprocess should only be run once globally during the pipeline, or the original results get overwritten (Marked Variables clears its global array of variables each time it is run) --- shared/markdown.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/shared/markdown.js b/shared/markdown.js index 412be27a7..eecc945f9 100644 --- a/shared/markdown.js +++ b/shared/markdown.js @@ -31,7 +31,12 @@ renderer.html = function (token) { const openTag = html.substring(0, html.indexOf('>')+1); html = html.substring(html.indexOf('>')+1); html = html.substring(0, html.lastIndexOf('')); - return `${openTag} ${Marked.parse(html)} `; + + // Repeat the markdown processing for content inside the div, minus the preprocessing and postprocessing hooks which should only run once globally + const opts = Marked.defaults; + const tokens = Marked.lexer(html, opts); + Marked.walkTokens(tokens, opts.walkTokens); + return `${openTag} ${Marked.parser(tokens, opts)} `; } return html; };