diff --git a/client/homebrew/brewRenderer/brewRenderer.jsx b/client/homebrew/brewRenderer/brewRenderer.jsx
index 5445292ec..571790391 100644
--- a/client/homebrew/brewRenderer/brewRenderer.jsx
+++ b/client/homebrew/brewRenderer/brewRenderer.jsx
@@ -13,6 +13,7 @@ const RenderWarnings = require('homebrewery/renderWarnings/renderWarnings.jsx');
const NotificationPopup = require('./notificationPopup/notificationPopup.jsx');
const Frame = require('react-frame-component').default;
const dedent = require('dedent-tabs').default;
+const { printPage } = require('../../../shared/helpers.js');
const DOMPurify = require('dompurify');
const purifyConfig = { FORCE_BODY: true, SANITIZE_DOM: false };
@@ -169,17 +170,6 @@ const BrewRenderer = (props)=>{
}
};
- const printPage = ()=>{
- if (window.typeof !== 'undefined') {
- window.frames['BrewRenderer'].contentWindow.print();
- //Force DOM reflow; Print dialog causes a repaint, and @media print CSS somehow makes out-of-view pages disappear
- let node = window.frames['BrewRenderer'].contentDocument.getElementsByClassName('brewRenderer').item(0);
- node.style.display='none';
- node.offsetHeight; // accessing this is enough to trigger a reflow
- node.style.display='';
- }
- };
-
const frameDidMount = ()=>{ //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
updateSize();
diff --git a/client/homebrew/navbar/print.navitem.jsx b/client/homebrew/navbar/print.navitem.jsx
index 42b47b88e..a573b1069 100644
--- a/client/homebrew/navbar/print.navitem.jsx
+++ b/client/homebrew/navbar/print.navitem.jsx
@@ -1,8 +1,9 @@
const React = require('react');
const Nav = require('naturalcrit/nav/nav.jsx');
+const { printPage } = require('../../../shared/helpers.js');
-module.exports = function({printFunction}){
- return
+module.exports = function(){
+ return
get PDF
;
};
diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx
index dfce74e48..0774efaa2 100644
--- a/client/homebrew/pages/editPage/editPage.jsx
+++ b/client/homebrew/pages/editPage/editPage.jsx
@@ -23,6 +23,7 @@ const BrewRenderer = require('../../brewRenderer/brewRenderer.jsx');
const Markdown = require('naturalcrit/markdown.js');
const { DEFAULT_BREW_LOAD } = require('../../../../server/brewDefaults.js');
+const { printPage } = require('../../../../shared/helpers.js');
const googleDriveIcon = require('../../googleDrive.svg');
@@ -95,24 +96,13 @@ const EditPage = createClass({
const S_KEY = 83;
const P_KEY = 80;
if(e.keyCode == S_KEY) this.trySave(true);
- if(e.keyCode == P_KEY) this.printPage();
+ if(e.keyCode == P_KEY) printPage();
if(e.keyCode == P_KEY || e.keyCode == S_KEY){
e.stopPropagation();
e.preventDefault();
}
},
- printPage : function(){
- if (window.typeof !== 'undefined') {
- window.frames['BrewRenderer'].contentWindow.print();
- //Force DOM reflow; Print dialog causes a repaint, and @media print CSS somehow makes out-of-view pages disappear
- let node = window.frames['BrewRenderer'].contentDocument.getElementsByClassName('brewRenderer').item(0);
- node.style.display='none';
- node.offsetHeight; // accessing this is enough to trigger a reflow
- node.style.display='';
- }
- },
-
handleSplitMove : function(){
this.editor.current.update();
},
@@ -389,7 +379,7 @@ const EditPage = createClass({
post to reddit
-
+
diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx
index d28ccc697..5c8f4ad73 100644
--- a/client/homebrew/pages/newPage/newPage.jsx
+++ b/client/homebrew/pages/newPage/newPage.jsx
@@ -19,6 +19,7 @@ const Editor = require('../../editor/editor.jsx');
const BrewRenderer = require('../../brewRenderer/brewRenderer.jsx');
const { DEFAULT_BREW } = require('../../../../server/brewDefaults.js');
+const { printPage } = require('../../../../shared/helpers.js');
const BREWKEY = 'homebrewery-new';
const STYLEKEY = 'homebrewery-new-style';
@@ -90,24 +91,13 @@ const NewPage = createClass({
const S_KEY = 83;
const P_KEY = 80;
if(e.keyCode == S_KEY) this.save();
- if(e.keyCode == P_KEY) this.printPage();
+ if(e.keyCode == P_KEY) printPage();
if(e.keyCode == P_KEY || e.keyCode == S_KEY){
e.stopPropagation();
e.preventDefault();
}
},
- printPage : function(){
- if (window.typeof !== 'undefined') {
- window.frames['BrewRenderer'].contentWindow.print();
- //Force DOM reflow; Print dialog causes a repaint, and @media print CSS somehow makes out-of-view pages disappear
- let node = window.frames['BrewRenderer'].contentDocument.getElementsByClassName('brewRenderer').item(0);
- node.style.display='none';
- node.offsetHeight; // accessing this is enough to trigger a reflow
- node.style.display='';
- }
- },
-
handleSplitMove : function(){
this.editor.current.update();
},
@@ -204,7 +194,7 @@ const NewPage = createClass({
:
this.renderSaveButton()
}
-
+
diff --git a/client/homebrew/pages/sharePage/sharePage.jsx b/client/homebrew/pages/sharePage/sharePage.jsx
index dccea796c..a8a52bf2a 100644
--- a/client/homebrew/pages/sharePage/sharePage.jsx
+++ b/client/homebrew/pages/sharePage/sharePage.jsx
@@ -9,11 +9,10 @@ const MetadataNav = require('../../navbar/metadata.navitem.jsx');
const PrintNavItem = require('../../navbar/print.navitem.jsx');
const RecentNavItem = require('../../navbar/recent.navitem.jsx').both;
const Account = require('../../navbar/account.navitem.jsx');
-
-
const BrewRenderer = require('../../brewRenderer/brewRenderer.jsx');
const { DEFAULT_BREW_LOAD } = require('../../../../server/brewDefaults.js');
+const { printPage } = require('../../../../shared/helpers.js');
const SharePage = createClass({
displayName : 'SharePage',
@@ -35,23 +34,12 @@ const SharePage = createClass({
if(!(e.ctrlKey || e.metaKey)) return;
const P_KEY = 80;
if(e.keyCode == P_KEY){
- if(e.keyCode == P_KEY) this.printPage();
+ if(e.keyCode == P_KEY) printPage();
e.stopPropagation();
e.preventDefault();
}
},
- printPage : function(){
- if (window.typeof !== 'undefined') {
- window.frames['BrewRenderer'].contentWindow.print();
- //Force DOM reflow; Print dialog causes a repaint, and @media print CSS somehow makes out-of-view pages disappear
- let node = window.frames['BrewRenderer'].contentDocument.getElementsByClassName('brewRenderer').item(0);
- node.style.display='none';
- node.offsetHeight; // accessing this is enough to trigger a reflow
- node.style.display='';
- }
- },
-
processShareId : function() {
return this.props.brew.googleId && !this.props.brew.stubbed ?
this.props.brew.googleId + this.props.brew.shareId :
@@ -83,7 +71,7 @@ const SharePage = createClass({
{this.props.brew.shareId && <>
-
+
source
diff --git a/shared/helpers.js b/shared/helpers.js
index 42dd09e3f..680df94fe 100644
--- a/shared/helpers.js
+++ b/shared/helpers.js
@@ -17,6 +17,18 @@ const splitTextStyleAndMetadata = (brew)=>{
}
};
-module.exports = {
- splitTextStyleAndMetadata
+const printPage = ()=>{
+ if (window.typeof !== 'undefined') {
+ window.frames['BrewRenderer'].contentWindow.print();
+ //Force DOM reflow; Print dialog causes a repaint, and @media print CSS somehow makes out-of-view pages disappear
+ let node = window.frames['BrewRenderer'].contentDocument.getElementsByClassName('brewRenderer').item(0);
+ node.style.display='none';
+ node.offsetHeight; // accessing this is enough to trigger a reflow
+ node.style.display='';
+ }
+};
+
+module.exports = {
+ splitTextStyleAndMetadata,
+ printPage
};