From 13ba5ebcc8766c33d7bf2aed01fb2f2fd0585927 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Tue, 31 Aug 2021 11:56:48 -0400 Subject: [PATCH 1/3] Fix snippets crashing in empty brew If this.props.brew.text is an empty string, it will evaluate to `false` and, but since `isStyle()` is also false, `text` is just undefined. --- client/homebrew/editor/editor.jsx | 4 ++-- client/homebrew/editor/snippetbar/snippets/snippets.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/client/homebrew/editor/editor.jsx b/client/homebrew/editor/editor.jsx index 5f6a70493..f65c47a23 100644 --- a/client/homebrew/editor/editor.jsx +++ b/client/homebrew/editor/editor.jsx @@ -69,8 +69,8 @@ const Editor = createClass({ handleInject : function(injectText){ const text = ( - this.isText() && this.props.brew.text || - this.isStyle() && (this.props.brew.style ?? DEFAULT_STYLE_TEXT) + this.isText() ? this.props.brew.text : + this.isStyle() ? this.props.brew.style ?? DEFAULT_STYLE_TEXT : '' ); const lines = text.split('\n'); diff --git a/client/homebrew/editor/snippetbar/snippets/snippets.js b/client/homebrew/editor/snippetbar/snippets/snippets.js index a872fc00f..aab8112ec 100644 --- a/client/homebrew/editor/snippetbar/snippets/snippets.js +++ b/client/homebrew/editor/snippetbar/snippets/snippets.js @@ -43,8 +43,8 @@ module.exports = [ {{wide Everything in here will be extra wide. Tables, text, everything! Beware though, CSS columns can behave a bit weird sometimes. You may - have to rely on the automatic column-break rather than \`\column\` if - you mix columns and wide blocks on the same page. + have to manually place column breaks with \`\column\` to make the + surrounding text flow with this wide block the way you want. }} \n` }, From e14c8c5e915dc050285418a4493de746ff5f8a8a Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Tue, 31 Aug 2021 12:03:59 -0400 Subject: [PATCH 2/3] Lint --- client/homebrew/editor/editor.jsx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/client/homebrew/editor/editor.jsx b/client/homebrew/editor/editor.jsx index f65c47a23..9f6ca5e27 100644 --- a/client/homebrew/editor/editor.jsx +++ b/client/homebrew/editor/editor.jsx @@ -68,10 +68,9 @@ const Editor = createClass({ }, handleInject : function(injectText){ - const text = ( - this.isText() ? this.props.brew.text : - this.isStyle() ? this.props.brew.style ?? DEFAULT_STYLE_TEXT : '' - ); + let text; + if(this.isText()) text = this.props.brew.text; + if(this.isStyle()) text = this.props.brew.style ?? DEFAULT_STYLE_TEXT; const lines = text.split('\n'); const cursorPos = this.refs.codeEditor.getCursorPosition(); @@ -79,7 +78,7 @@ const Editor = createClass({ this.refs.codeEditor.setCursorPosition(cursorPos.line + injectText.split('\n').length, cursorPos.ch + injectText.length); - if(this.isText()) this.props.onTextChange(lines.join('\n')); + if(this.isText()) this.props.onTextChange(lines.join('\n')); if(this.isStyle()) this.props.onStyleChange(lines.join('\n')); }, From 1a71ba0eb2934a57b0f4ba7f955afbd5d05d1f5f Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Tue, 31 Aug 2021 12:08:31 -0400 Subject: [PATCH 3/3] Force \page on V3 to be alone on line. --- client/homebrew/brewRenderer/brewRenderer.jsx | 4 ++-- client/homebrew/editor/editor.jsx | 2 +- client/homebrew/pages/editPage/editPage.jsx | 2 +- client/homebrew/pages/newPage/newPage.jsx | 2 +- client/homebrew/pages/printPage/printPage.jsx | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/client/homebrew/brewRenderer/brewRenderer.jsx b/client/homebrew/brewRenderer/brewRenderer.jsx index 03f0292c9..2b8019f73 100644 --- a/client/homebrew/brewRenderer/brewRenderer.jsx +++ b/client/homebrew/brewRenderer/brewRenderer.jsx @@ -30,7 +30,7 @@ const BrewRenderer = createClass({ if(this.props.renderer == 'legacy') { pages = this.props.text.split('\\page'); } else { - pages = this.props.text.split(/^\\page/gm); + pages = this.props.text.split(/^\\page$/gm); } return { @@ -62,7 +62,7 @@ const BrewRenderer = createClass({ if(this.props.renderer == 'legacy') { pages = this.props.text.split('\\page'); } else { - pages = this.props.text.split(/^\\page/gm); + pages = this.props.text.split(/^\\page$/gm); } this.setState({ pages : pages, diff --git a/client/homebrew/editor/editor.jsx b/client/homebrew/editor/editor.jsx index 9f6ca5e27..213e35f71 100644 --- a/client/homebrew/editor/editor.jsx +++ b/client/homebrew/editor/editor.jsx @@ -121,7 +121,7 @@ const Editor = createClass({ // New Codemirror styling for V3 renderer if(this.props.renderer == 'V3') { - if(line.startsWith('\\page')){ + if(line.match(/^\\page$/)){ codeMirror.addLineClass(lineNumber, 'background', 'pageLine'); r.push(lineNumber); } diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx index 1f77d785c..d55c2ef4f 100644 --- a/client/homebrew/pages/editPage/editPage.jsx +++ b/client/homebrew/pages/editPage/editPage.jsx @@ -197,7 +197,7 @@ const EditPage = createClass({ const transfer = this.state.saveGoogle == _.isNil(this.state.brew.googleId); const brew = this.state.brew; - brew.pageCount = ((brew.renderer=='legacy' ? brew.text.match(/\\page/g) : brew.text.match(/^\\page/gm)) || []).length + 1; + brew.pageCount = ((brew.renderer=='legacy' ? brew.text.match(/\\page/g) : brew.text.match(/^\\page$/gm)) || []).length + 1; if(this.state.saveGoogle) { if(transfer) { diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx index cebfed133..04004034e 100644 --- a/client/homebrew/pages/newPage/newPage.jsx +++ b/client/homebrew/pages/newPage/newPage.jsx @@ -161,7 +161,7 @@ const NewPage = createClass({ brew.text = brew.text.slice(index + 5); }; - brew.pageCount=((brew.renderer=='legacy' ? brew.text.match(/\\page/g) : brew.text.match(/^\\page/gm)) || []).length + 1; + brew.pageCount=((brew.renderer=='legacy' ? brew.text.match(/\\page/g) : brew.text.match(/^\\page$/gm)) || []).length + 1; if(this.state.saveGoogle) { const res = await request diff --git a/client/homebrew/pages/printPage/printPage.jsx b/client/homebrew/pages/printPage/printPage.jsx index b337a32f2..b77fbb8f7 100644 --- a/client/homebrew/pages/printPage/printPage.jsx +++ b/client/homebrew/pages/printPage/printPage.jsx @@ -45,7 +45,7 @@ const PrintPage = createClass({ key={index} />; }); } else { - return _.map(this.state.brewText.split(/^\\page/gm), (pageText, index)=>{ + return _.map(this.state.brewText.split(/^\\page$/gm), (pageText, index)=>{ pageText += `\n\\column\n `; //Artificial column break at page end to emulate column-fill:auto (until `wide` is used, when column-fill:balance will reappear) return (