From c75ac3c0f5564fdc239fe451fa1f8536023779ef Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Wed, 21 Oct 2020 20:39:43 -0400 Subject: [PATCH 1/3] Render brew in Iframe to not crash editor --- client/homebrew/brewRenderer/brewRenderer.jsx | 51 +++++++++++-------- package-lock.json | 5 ++ package.json | 1 + shared/naturalcrit/splitPane/splitPane.jsx | 15 +++--- 4 files changed, 43 insertions(+), 29 deletions(-) diff --git a/client/homebrew/brewRenderer/brewRenderer.jsx b/client/homebrew/brewRenderer/brewRenderer.jsx index 2bbc2f1fa..104ce8243 100644 --- a/client/homebrew/brewRenderer/brewRenderer.jsx +++ b/client/homebrew/brewRenderer/brewRenderer.jsx @@ -10,6 +10,7 @@ const ErrorBar = require('./errorBar/errorBar.jsx'); //TODO: move to the brew renderer const RenderWarnings = require('homebrewery/renderWarnings/renderWarnings.jsx'); const NotificationPopup = require('./notificationPopup/notificationPopup.jsx'); +const Frame = require('react-frame-component').default; const PAGE_HEIGHT = 1056; const PPR_THRESHOLD = 50; @@ -29,17 +30,15 @@ const BrewRenderer = createClass({ height : 0, isMounted : false, - pages : pages, - usePPR : pages.length >= PPR_THRESHOLD, + pages : pages, + usePPR : pages.length >= PPR_THRESHOLD, + visibility : 'hidden', + initialContent : `
` }; }, height : 0, lastRender :
, - componentDidMount : function() { - this.updateSize(); - window.addEventListener('resize', this.updateSize); - }, componentWillUnmount : function() { window.removeEventListener('resize', this.updateSize); }, @@ -54,8 +53,9 @@ const BrewRenderer = createClass({ updateSize : function() { this.setState({ - height : this.refs.main.parentNode.clientHeight, - isMounted : true + height : this.refs.main.parentNode.clientHeight, + isMounted : true, + visibility : 'visible' }); }, @@ -85,7 +85,7 @@ const BrewRenderer = createClass({ }, renderPageInfo : function(){ - return
+ return
{this.state.viewablePageNumber + 1} / {this.state.pages.length}
; }, @@ -125,24 +125,33 @@ const BrewRenderer = createClass({ return this.lastRender; }, + frameDidMount : function(){ //This triggers when iFrame finishes internal "componentDidMount" + setTimeout(()=>{ //We still see a flicker where the style isn't applied yet, so wait 100ms before showing iFrame + this.updateSize(); + window.addEventListener('resize', this.updateSize); + }, 100); + }, + render : function(){ + //render in iFrame so broken code doesn't crash the site. return ( -
+ +
- -
- - -
+ +
+ + +
-
- {this.renderPages()} +
+ {this.renderPages()} +
-
; + {this.renderPageInfo()} {this.renderPPRmsg()} diff --git a/package-lock.json b/package-lock.json index fbcbdc466..2b4daff59 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5829,6 +5829,11 @@ } } }, + "react-frame-component": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/react-frame-component/-/react-frame-component-4.1.3.tgz", + "integrity": "sha512-4PurhctiqnmC1F5prPZ+LdsalH7pZ3SFA5xoc0HBe8mSHctdLLt4Cr2WXfXOoajHBYq/yiipp9zOgx+vy8GiEA==" + }, "react-is": { "version": "16.12.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.12.0.tgz", diff --git a/package.json b/package.json index bed7f2c9e..21c3f4b8e 100644 --- a/package.json +++ b/package.json @@ -63,6 +63,7 @@ "query-string": "6.13.5", "react": "^16.13.1", "react-dom": "^16.13.1", + "react-frame-component": "4.1.3", "react-router-dom": "5.2.0", "superagent": "^6.1.0", "vitreum": "github:calculuschild/vitreum#21a8e1c9421f1d3a3b474c12f480feb2fbd28c5b" diff --git a/shared/naturalcrit/splitPane/splitPane.jsx b/shared/naturalcrit/splitPane/splitPane.jsx index a85674663..1da8ea7f4 100644 --- a/shared/naturalcrit/splitPane/splitPane.jsx +++ b/shared/naturalcrit/splitPane/splitPane.jsx @@ -54,7 +54,7 @@ const SplitPane = createClass({ }, */ renderDivider : function(){ - return
+ return
@@ -67,16 +67,11 @@ const SplitPane = createClass({ return
{this.props.children[0]} {this.renderDivider()} - {this.props.children[1]} + {this.props.children[1]}
; } }); - - - - - const Pane = createClass({ getDefaultProps : function() { return { @@ -90,12 +85,16 @@ const Pane = createClass({ flex : 'none', width : `${this.props.width}px` }; + } else { + styles = { + pointerEvents : this.props.isDragging ? 'none' : 'auto' //Disable mouse capture in the rightmost pane; dragging into the iframe drops the divider otherwise + }; } + return
{this.props.children}
; } }); - module.exports = SplitPane; From f6bd1ef51379974ebd65c9f79cb4b6d66dc5ede5 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Thu, 22 Oct 2020 10:36:55 -0400 Subject: [PATCH 2/3] Update Version number --- changelog.md | 3 +++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/changelog.md b/changelog.md index 4ecc8e099..81ce5fd68 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,8 @@ # changelog +### Thursday, 22/10/2020 - v2.10.3 +- Fixed brews with broken code crashing the edit page when loaded (the "blue screen of death" bug). + ### Monday, 19/10/2020 - v2.10.2 - Fixed issue with "recent" item links not updating when transferring between Google Drive. diff --git a/package-lock.json b/package-lock.json index 2b4daff59..def592ca9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "homebrewery", - "version": "2.10.2", + "version": "2.10.3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 21c3f4b8e..58307d362 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "homebrewery", "description": "Create authentic looking D&D homebrews using only markdown", - "version": "2.10.2", + "version": "2.10.3", "engines": { "node": "12.16.x" }, From aa2d1f3bc9c12d30501d5f5bf7193a290c6b6d05 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Thu, 22 Oct 2020 12:44:18 -0400 Subject: [PATCH 3/3] Fix missing FontAwesome fonts in iFrame --- client/homebrew/brewRenderer/brewRenderer.jsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/client/homebrew/brewRenderer/brewRenderer.jsx b/client/homebrew/brewRenderer/brewRenderer.jsx index 104ce8243..e01e5f88f 100644 --- a/client/homebrew/brewRenderer/brewRenderer.jsx +++ b/client/homebrew/brewRenderer/brewRenderer.jsx @@ -33,7 +33,11 @@ const BrewRenderer = createClass({ pages : pages, usePPR : pages.length >= PPR_THRESHOLD, visibility : 'hidden', - initialContent : `
` + initialContent : ` + + + +
` }; }, height : 0,