From 5c4da77357e9c6533fea7506abbf906d422adab3 Mon Sep 17 00:00:00 2001 From: James Socol Date: Sat, 20 Feb 2021 14:04:54 -0500 Subject: [PATCH 01/92] Parametrize fillMode for .useColumns A @fillMode parameter for .useColumns9) allows setting `column-fill` property to `balance` for wide statblocks (or other wide column types) instead of relying on Chrome's fallback behavior that ignores `auto` when there's no set container height. Set the default for the for `@fillMode` to `auto` to maintain the current behavior. --- client/homebrew/phbStyle/phb.style.less | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/homebrew/phbStyle/phb.style.less b/client/homebrew/phbStyle/phb.style.less index 792755ade..b480a234b 100644 --- a/client/homebrew/phbStyle/phb.style.less +++ b/client/homebrew/phbStyle/phb.style.less @@ -26,9 +26,9 @@ body { letter-spacing : -0.02em; } } -.useColumns(@multiplier : 1){ +.useColumns(@multiplier : 1, @fillMode: auto){ column-count : 2; - column-fill : auto; + column-fill : @fillMode; column-gap : 1cm; column-width : 8cm * @multiplier; -webkit-column-count : 2; @@ -272,7 +272,7 @@ body { } //Full Width hr+hr+blockquote{ - .useColumns(0.96); + .useColumns(0.96, @fillMode: balance); } //***************************** // * FOOTER From 00f90d108473e8f146c2d8f6fc6262617c6df8ab Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Sat, 31 Jul 2021 17:21:25 +1200 Subject: [PATCH 02/92] Add a page count to User page --- client/homebrew/pages/userPage/brewItem/brewItem.jsx | 4 ++++ client/homebrew/pages/userPage/brewItem/brewItem.less | 3 +++ server/homebrew.api.js | 2 ++ server/homebrew.model.js | 11 ++++++----- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.jsx b/client/homebrew/pages/userPage/brewItem/brewItem.jsx index b24bad363..c55933685 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.jsx +++ b/client/homebrew/pages/userPage/brewItem/brewItem.jsx @@ -105,6 +105,7 @@ const BrewItem = createClass({

{brew.title}

{brew.description}


+
@@ -113,6 +114,9 @@ const BrewItem = createClass({ {brew.views} + + {brew.pageCount || 1} + {moment(brew.updatedAt).fromNow()} diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.less b/client/homebrew/pages/userPage/brewItem/brewItem.less index efae9d8d3..7d806e841 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.less +++ b/client/homebrew/pages/userPage/brewItem/brewItem.less @@ -69,4 +69,7 @@ padding : 0px; margin : -5px; } + .spacer { + height : 25px; + } } diff --git a/server/homebrew.api.js b/server/homebrew.api.js index 1f988761d..00195910a 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -38,6 +38,7 @@ const newBrew = (req, res)=>{ brew.authors = (req.account) ? [req.account.username] : []; brew.text = mergeBrewText(brew.text, brew.style); + brew.pageCount = (brew.text.match(/\\page/g) || []).length + 1; delete brew.editId; delete brew.shareId; @@ -66,6 +67,7 @@ const updateBrew = (req, res)=>{ .then((brew)=>{ brew = _.merge(brew, req.body); brew.text = mergeBrewText(brew.text, brew.style); + brew.pageCount = (brew.text.match(/\\page/g) || []).length + 1; // Compress brew text to binary before saving brew.textBin = zlib.deflateRawSync(brew.text); diff --git a/server/homebrew.model.js b/server/homebrew.model.js index c2abdf199..acc78a624 100644 --- a/server/homebrew.model.js +++ b/server/homebrew.model.js @@ -4,11 +4,12 @@ const _ = require('lodash'); const zlib = require('zlib'); const HomebrewSchema = mongoose.Schema({ - shareId : { type: String, default: ()=>{return nanoid(12);}, index: { unique: true } }, - editId : { type: String, default: ()=>{return nanoid(12);}, index: { unique: true } }, - title : { type: String, default: '' }, - text : { type: String, default: '' }, - textBin : { type: Buffer }, + shareId : { type: String, default: ()=>{return nanoid(12);}, index: { unique: true } }, + editId : { type: String, default: ()=>{return nanoid(12);}, index: { unique: true } }, + title : { type: String, default: '' }, + text : { type: String, default: '' }, + textBin : { type: Buffer }, + pageCount : { type: Number, default: 1 }, description : { type: String, default: '' }, tags : { type: String, default: '' }, From e3285b5ca40e6f2284406501dc89f6a69d47e6e8 Mon Sep 17 00:00:00 2001 From: Gazook89 <58999374+Gazook89@users.noreply.github.com> Date: Mon, 9 Aug 2021 21:06:29 -0500 Subject: [PATCH 03/92] Create .frame class for Class Tables Add a `.frame` class for Class Tables so that the frame and background can be toggled on or off in a similar fashion to the new monster stat block. This will allow a class table to be used as a "third caster archetype" table such as referenced in PR #1079. Adds consistency with Monster blocks, too. --- themes/5ePhb.style.less | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/themes/5ePhb.style.less b/themes/5ePhb.style.less index 9e56a7009..5e5fb3b7c 100644 --- a/themes/5ePhb.style.less +++ b/themes/5ePhb.style.less @@ -514,17 +514,19 @@ body { // * CLASS TABLE // *****************************/ .page .classTable{ - margin-top : 25px; - margin-bottom : 40px; - border-collapse : separate; - background-color : white; - border : initial; - border-style : solid; - border-image-outset : 25px 17px; - border-image-repeat : stretch; - border-image-slice : 150 200 150 200; - border-image-source : @frameBorderImage; - border-image-width : 47px; + &.frame { + margin-top : 25px; + margin-bottom : 40px; + border-collapse : separate; + background-color : white; + border : initial; + border-style : solid; + border-image-outset : 25px 17px; + border-image-repeat : stretch; + border-image-slice : 150 200 150 200; + border-image-source : @frameBorderImage; + border-image-width : 47px; + } h5{ margin-bottom : 10px; } From 5d4bc23c84db150422110e94c663e16f97e3b88d Mon Sep 17 00:00:00 2001 From: Gazook89 <58999374+Gazook89@users.noreply.github.com> Date: Mon, 9 Aug 2021 21:09:34 -0500 Subject: [PATCH 04/92] Remove text wrapping from spanned header This removes text wrapping from col-spanned headers inside a classtable...needed for half-tables that contain `--- Spells Slots per Spell Level ---` so they don't wrap to next line. Both v3 and Legacy --- themes/5ePhb.style.less | 3 +++ themes/5ePhbLegacy.style.less | 3 +++ 2 files changed, 6 insertions(+) diff --git a/themes/5ePhb.style.less b/themes/5ePhb.style.less index 5e5fb3b7c..c733ca221 100644 --- a/themes/5ePhb.style.less +++ b/themes/5ePhb.style.less @@ -514,6 +514,9 @@ body { // * CLASS TABLE // *****************************/ .page .classTable{ + th[colspan] { + white-space : nowrap; + } &.frame { margin-top : 25px; margin-bottom : 40px; diff --git a/themes/5ePhbLegacy.style.less b/themes/5ePhbLegacy.style.less index 0f1cae7ec..9346c25bd 100644 --- a/themes/5ePhbLegacy.style.less +++ b/themes/5ePhbLegacy.style.less @@ -407,6 +407,9 @@ body { border-image-slice : 150 200 150 200; border-image-source : @frameBorderImage; border-image-width : 47px; + th[colspan] { + white-space : nowrap; + } h5{ margin-bottom : 10px; } From 120e99959ab7286a1320fa1ff78209bc7237fc63 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 10 Aug 2021 18:54:16 +1200 Subject: [PATCH 05/92] Update BrewItem tooltips --- client/homebrew/pages/userPage/brewItem/brewItem.jsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.jsx b/client/homebrew/pages/userPage/brewItem/brewItem.jsx index f0557c47e..693e17c94 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.jsx +++ b/client/homebrew/pages/userPage/brewItem/brewItem.jsx @@ -48,7 +48,7 @@ const BrewItem = createClass({ if(!this.props.brew.editId) return; return - + ; }, @@ -61,7 +61,7 @@ const BrewItem = createClass({ } return - + ; }, @@ -74,7 +74,7 @@ const BrewItem = createClass({ } return - + ; }, @@ -87,7 +87,7 @@ const BrewItem = createClass({ } return - + ; }, @@ -101,7 +101,7 @@ const BrewItem = createClass({ getTooltipData : function(){ const dateFormatString = 'YYYY-MM-DD HH:mm:ss'; - let outputString = `Created: ${this.props.brew.createdAt ? moment(this.props.brew.createdAt).local().format(dateFormatString) : 'UNKNOWN'}\n`; + let outputString = `Title: ${this.props.brew.title}\nCreated: ${this.props.brew.createdAt ? moment(this.props.brew.createdAt).local().format(dateFormatString) : 'UNKNOWN'}\n`; outputString += `Last updated: ${this.props.brew.updatedAt ? moment(this.props.brew.updatedAt).local().format(dateFormatString) : 'UNKNOWN'}`; return outputString; }, From 0ddfb6e4e76e8fbf09f11ebf24aab7c985e654a7 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 10 Aug 2021 20:47:49 +1200 Subject: [PATCH 06/92] Update following Gitter conversation --- .../pages/userPage/brewItem/brewItem.jsx | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.jsx b/client/homebrew/pages/userPage/brewItem/brewItem.jsx index 693e17c94..adc63c39c 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.jsx +++ b/client/homebrew/pages/userPage/brewItem/brewItem.jsx @@ -99,29 +99,29 @@ const BrewItem = createClass({ ; }, - getTooltipData : function(){ - const dateFormatString = 'YYYY-MM-DD HH:mm:ss'; - let outputString = `Title: ${this.props.brew.title}\nCreated: ${this.props.brew.createdAt ? moment(this.props.brew.createdAt).local().format(dateFormatString) : 'UNKNOWN'}\n`; - outputString += `Last updated: ${this.props.brew.updatedAt ? moment(this.props.brew.updatedAt).local().format(dateFormatString) : 'UNKNOWN'}`; - return outputString; - }, - render : function(){ const brew = this.props.brew; - return
+ const dateFormatString = 'YYYY-MM-DD HH:mm:ss'; + + return

{brew.title}

{brew.description}


- - {brew.authors.join(', ')} + + {brew.authors.join(', ')} - - {brew.views} + + {brew.views} - - {moment(brew.updatedAt).fromNow()} + + + {moment(brew.updatedAt).fromNow()} {this.renderGoogleDriveIcon()}
From 479f9af08ce92d1a05850d6d5660b81a5fd51177 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 10 Aug 2021 21:31:02 +1200 Subject: [PATCH 07/92] Wrap Last Viewed tooltip with Moment --- client/homebrew/pages/userPage/brewItem/brewItem.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.jsx b/client/homebrew/pages/userPage/brewItem/brewItem.jsx index adc63c39c..50ab397c3 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.jsx +++ b/client/homebrew/pages/userPage/brewItem/brewItem.jsx @@ -112,13 +112,13 @@ const BrewItem = createClass({ {brew.authors.join(', ')} - + {brew.views} {moment(brew.updatedAt).fromNow()} From 72b18e42665cbbe4328a176aa79e6a22afff4b96 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 10 Aug 2021 21:35:27 +1200 Subject: [PATCH 08/92] Add `modifiedTime` to properties to apply during view count increase update. --- server/googleActions.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/server/googleActions.js b/server/googleActions.js index ff5fd0662..320e6f752 100644 --- a/server/googleActions.js +++ b/server/googleActions.js @@ -358,8 +358,9 @@ GoogleActions = { await drive.files.update({ fileId : brew.googleId, - resource : { properties : { views : brew.views + 1, - lastViewed : new Date() } } + resource : { modifiedTime : brew.updatedAt, + properties : { views : brew.views + 1, + lastViewed : new Date() } } }) .catch((err)=>{ console.log('Error updating Google views'); From a6aaa933899cdafa372728612b3045d5c80df6bc Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 10 Aug 2021 21:37:03 +1200 Subject: [PATCH 09/92] Revert "Add `modifiedTime` to properties to apply during view count increase update." This reverts commit 72b18e42665cbbe4328a176aa79e6a22afff4b96. --- server/googleActions.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/server/googleActions.js b/server/googleActions.js index 320e6f752..ff5fd0662 100644 --- a/server/googleActions.js +++ b/server/googleActions.js @@ -358,9 +358,8 @@ GoogleActions = { await drive.files.update({ fileId : brew.googleId, - resource : { modifiedTime : brew.updatedAt, - properties : { views : brew.views + 1, - lastViewed : new Date() } } + resource : { properties : { views : brew.views + 1, + lastViewed : new Date() } } }) .catch((err)=>{ console.log('Error updating Google views'); From 779426dbb1afab4c6fe624144a21c9cd9c025c4d Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 10 Aug 2021 21:43:41 +1200 Subject: [PATCH 10/92] Set modifiedTime during view count update --- server/googleActions.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/server/googleActions.js b/server/googleActions.js index bfe1b406f..b2288866b 100644 --- a/server/googleActions.js +++ b/server/googleActions.js @@ -359,8 +359,9 @@ GoogleActions = { await drive.files.update({ fileId : brew.googleId, - resource : { properties : { views : brew.views + 1, - lastViewed : new Date() } } + resource : { modifiedTime : brew.updatedAt, + properties : { views : brew.views + 1, + lastViewed : new Date() } } }) .catch((err)=>{ console.log('Error updating Google views'); From e108e3082190dd7e5b5efa128f2aaac099d3edcb Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 10 Aug 2021 22:51:52 +1200 Subject: [PATCH 11/92] Remove `brew.views` for EditPage brew object --- client/homebrew/pages/editPage/editPage.jsx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx index a643296d4..d5fa6956b 100644 --- a/client/homebrew/pages/editPage/editPage.jsx +++ b/client/homebrew/pages/editPage/editPage.jsx @@ -51,16 +51,18 @@ const EditPage = createClass({ }, getInitialState : function() { + const newBrew = this.props.brew; + delete newBrew.views; return { - brew : this.props.brew, + brew : newBrew, isSaving : false, isPending : false, - alertTrashedGoogleBrew : this.props.brew.trashed, + alertTrashedGoogleBrew : newBrew.trashed, alertLoginToTransfer : false, - saveGoogle : this.props.brew.googleId ? true : false, + saveGoogle : newBrew.googleId ? true : false, confirmGoogleTransfer : false, errors : null, - htmlErrors : Markdown.validate(this.props.brew.text), + htmlErrors : Markdown.validate(newBrew.text), url : '' }; }, From 8bda68d6846de267a9f6b8dc661d9cbd8ad7c513 Mon Sep 17 00:00:00 2001 From: Gazook89 <58999374+Gazook89@users.noreply.github.com> Date: Tue, 10 Aug 2021 08:31:08 -0500 Subject: [PATCH 12/92] Add 1/3 ClassTable, Unframed classes - Adds a snippet for 1/3 Spellcasting/ClassTables for Issue #191 and builds on PR #1079 to work with v3 (but leaves out Legacy). - Refactored classTable gen to more closely match monster block gen in terms of element classes (passed to gen function via attributes rather than baked into `return` function) - Added an "unframed" snippet for each Full, Half, and Third class tables, which is consistent with monster stat blocks, and also is needed to satisfy #191 / #1079. --- .../snippetbar/snippets/classtable.gen.js | 48 +++++++++++++++++-- .../editor/snippetbar/snippets/snippets.js | 26 ++++++++-- 2 files changed, 67 insertions(+), 7 deletions(-) diff --git a/client/homebrew/editor/snippetbar/snippets/classtable.gen.js b/client/homebrew/editor/snippetbar/snippets/classtable.gen.js index c8a2d051f..ec5b4433a 100644 --- a/client/homebrew/editor/snippetbar/snippets/classtable.gen.js +++ b/client/homebrew/editor/snippetbar/snippets/classtable.gen.js @@ -51,7 +51,7 @@ const getFeature = (level)=>{ }; module.exports = { - full : function(){ + full : function(classes){ const classname = _.sample(classnames); const maxes = [4, 3, 3, 3, 3, 2, 2, 1, 1]; @@ -70,7 +70,7 @@ module.exports = { let cantrips = 3; let spells = 1; let slots = 2; - return `{{classTable,wide\n##### The ${classname}\n` + + return `{{${classes}\n##### The ${classname}\n` + `| Level | Proficiency | Features | Cantrips | Spells | --- Spell Slots Per Level --- |||||||||\n`+ `| ^| Bonus ^| ^| Known ^| Known ^| 1st | 2nd | 3rd | 4th | 5th | 6th | 7th | 8th | 9th |\n`+ `|:-----:|:-----------:|:---------|:--------:|:------:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n${ @@ -92,11 +92,11 @@ module.exports = { }).join('\n')}\n}}\n\n`; }, - half : function(){ + half : function(classes){ const classname = _.sample(classnames); let featureScore = 1; - return `
\n##### The ${classname}\n` + + return `{{${classes}\n##### The ${classname}\n` + `| Level | Proficiency Bonus | Features | ${_.sample(features)}|\n` + `|:---:|:---:|:---|:---:|\n${ _.map(levels, function(levelName, level){ @@ -111,5 +111,45 @@ module.exports = { return `| ${res} |`; }).join('\n')}\n
\n\n`; + }, + + third : function(classes){ + const classname = _.sample(classnames); + + const maxes = [4, 3, 3, 3, 3, 2, 2, 1, 1]; + const drawSlots = function(Slots){ + let slots = Number(Slots); + return _.times(4, function(i){ + const max = maxes[i]; + if(slots < 1) return '—'; + const res = _.min([max, slots]); + slots -= res; + return res; + }).join(' | '); + }; + + + let cantrips = 3; + let spells = 1; + let slots = 2; + return `{{${classes}\n##### ${classname} Spellcasting\n` + + `| Class | Cantrips | Spells | --- Spells Slots per Spell Level --- ||||\n` + + `| Level ^| Known ^| Known ^| 1st | 2nd | 3rd | 4th |\n` + + `|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n${ + _.map(levels, function(levelName, level){ + const res = [ + levelName, + cantrips, + spells, + drawSlots(slots) + ].join(' | '); + + cantrips += _.random(0, 1); + spells += _.random(0, 1); + slots += _.random(0, 2); + + return `| ${res} |`; + }).join('\n')}\n}}\n\n`; } + }; diff --git a/client/homebrew/editor/snippetbar/snippets/snippets.js b/client/homebrew/editor/snippetbar/snippets/snippets.js index b30a96e7c..10cb9cf4e 100644 --- a/client/homebrew/editor/snippetbar/snippets/snippets.js +++ b/client/homebrew/editor/snippetbar/snippets/snippets.js @@ -212,12 +212,32 @@ module.exports = [ { name : 'Class Table', icon : 'fas fa-table', - gen : ClassTableGen.full, + gen : ClassTableGen.full('classTable,frame,wide'), }, { - name : 'Half Class Table', + name : 'Class Table (unframed)', + icon : 'fas fa-table', + gen : ClassTableGen.full('classTable,wide'), + }, + { + name : '1/2 Class Table', icon : 'fas fa-list-alt', - gen : ClassTableGen.half, + gen : ClassTableGen.half('classTable,frame'), + }, + { + name : '1/2 Class Table (unframed)', + icon : 'fas fa-list-alt', + gen : ClassTableGen.half('classTable'), + }, + { + name : '1/3 Class Table', + icon : 'fas fa-list-alt', + gen : ClassTableGen.third('classTable,frame'), + }, + { + name : '1/3 Class Table (unframed)', + icon : 'fas fa-list-alt', + gen : ClassTableGen.third('classTable'), }, { name : 'Table', From 927cc2e9b557195a2774c6f179b23cb84dcb98b7 Mon Sep 17 00:00:00 2001 From: Gazook89 <58999374+Gazook89@users.noreply.github.com> Date: Tue, 10 Aug 2021 08:33:05 -0500 Subject: [PATCH 13/92] Fix "Spell Slots per Spell Level" Update current "--- Spells Slots per Level ---" to more accurate "--- Spells Slots per Spell Level ---" to match source material. --- client/homebrew/editor/snippetbar/snippets/classtable.gen.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/homebrew/editor/snippetbar/snippets/classtable.gen.js b/client/homebrew/editor/snippetbar/snippets/classtable.gen.js index ec5b4433a..39d033108 100644 --- a/client/homebrew/editor/snippetbar/snippets/classtable.gen.js +++ b/client/homebrew/editor/snippetbar/snippets/classtable.gen.js @@ -71,7 +71,7 @@ module.exports = { let spells = 1; let slots = 2; return `{{${classes}\n##### The ${classname}\n` + - `| Level | Proficiency | Features | Cantrips | Spells | --- Spell Slots Per Level --- |||||||||\n`+ + `| Level | Proficiency | Features | Cantrips | Spells | --- Spell Slots Per Spell Level --- |||||||||\n`+ `| ^| Bonus ^| ^| Known ^| Known ^| 1st | 2nd | 3rd | 4th | 5th | 6th | 7th | 8th | 9th |\n`+ `|:-----:|:-----------:|:---------|:--------:|:------:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n${ _.map(levels, function(levelName, level){ From 9f519b469d349a65d061fd5b262e4d189949e5ae Mon Sep 17 00:00:00 2001 From: Gazook89 <58999374+Gazook89@users.noreply.github.com> Date: Tue, 10 Aug 2021 08:44:25 -0500 Subject: [PATCH 14/92] Change classTable Icons --- client/homebrew/editor/snippetbar/snippets/snippets.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/homebrew/editor/snippetbar/snippets/snippets.js b/client/homebrew/editor/snippetbar/snippets/snippets.js index 10cb9cf4e..fce298b57 100644 --- a/client/homebrew/editor/snippetbar/snippets/snippets.js +++ b/client/homebrew/editor/snippetbar/snippets/snippets.js @@ -216,7 +216,7 @@ module.exports = [ }, { name : 'Class Table (unframed)', - icon : 'fas fa-table', + icon : 'fas fa-border-none', gen : ClassTableGen.full('classTable,wide'), }, { @@ -226,17 +226,17 @@ module.exports = [ }, { name : '1/2 Class Table (unframed)', - icon : 'fas fa-list-alt', + icon : 'fas fa-border-none', gen : ClassTableGen.half('classTable'), }, { name : '1/3 Class Table', - icon : 'fas fa-list-alt', + icon : 'fas fa-border-all', gen : ClassTableGen.third('classTable,frame'), }, { name : '1/3 Class Table (unframed)', - icon : 'fas fa-list-alt', + icon : 'fas fa-border-none', gen : ClassTableGen.third('classTable'), }, { From 2a428100c52567aa4c39aae252f50f9f8ee78d93 Mon Sep 17 00:00:00 2001 From: Gazook89 <58999374+Gazook89@users.noreply.github.com> Date: Tue, 10 Aug 2021 09:11:14 -0500 Subject: [PATCH 15/92] fix some indentation issues for circleCI --- .../snippetbar/snippets/classtable.gen.js | 60 +++++++++---------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/client/homebrew/editor/snippetbar/snippets/classtable.gen.js b/client/homebrew/editor/snippetbar/snippets/classtable.gen.js index 39d033108..5d631cb48 100644 --- a/client/homebrew/editor/snippetbar/snippets/classtable.gen.js +++ b/client/homebrew/editor/snippetbar/snippets/classtable.gen.js @@ -116,40 +116,40 @@ module.exports = { third : function(classes){ const classname = _.sample(classnames); - const maxes = [4, 3, 3, 3, 3, 2, 2, 1, 1]; - const drawSlots = function(Slots){ - let slots = Number(Slots); - return _.times(4, function(i){ - const max = maxes[i]; - if(slots < 1) return '—'; - const res = _.min([max, slots]); - slots -= res; - return res; - }).join(' | '); - }; + const maxes = [4, 3, 3, 3, 3, 2, 2, 1, 1]; + const drawSlots = function(Slots){ + let slots = Number(Slots); + return _.times(4, function(i){ + const max = maxes[i]; + if(slots < 1) return '—'; + const res = _.min([max, slots]); + slots -= res; + return res; + }).join(' | '); + }; - let cantrips = 3; - let spells = 1; - let slots = 2; - return `{{${classes}\n##### ${classname} Spellcasting\n` + - `| Class | Cantrips | Spells | --- Spells Slots per Spell Level --- ||||\n` + - `| Level ^| Known ^| Known ^| 1st | 2nd | 3rd | 4th |\n` + - `|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n${ - _.map(levels, function(levelName, level){ - const res = [ - levelName, - cantrips, - spells, - drawSlots(slots) - ].join(' | '); + let cantrips = 3; + let spells = 1; + let slots = 2; + return `{{${classes}\n##### ${classname} Spellcasting\n` + + `| Class | Cantrips | Spells | --- Spells Slots per Spell Level --- ||||\n` + + `| Level ^| Known ^| Known ^| 1st | 2nd | 3rd | 4th |\n` + + `|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n${ + _.map(levels, function(levelName, level){ + const res = [ + levelName, + cantrips, + spells, + drawSlots(slots) + ].join(' | '); - cantrips += _.random(0, 1); - spells += _.random(0, 1); - slots += _.random(0, 2); + cantrips += _.random(0, 1); + spells += _.random(0, 1); + slots += _.random(0, 2); - return `| ${res} |`; - }).join('\n')}\n}}\n\n`; + return `| ${res} |`; + }).join('\n')}\n}}\n\n`; } }; From c8997cee68239772a5de26a619346a1436a31711 Mon Sep 17 00:00:00 2001 From: Gazook89 <58999374+Gazook89@users.noreply.github.com> Date: Tue, 10 Aug 2021 14:35:28 -0500 Subject: [PATCH 16/92] Fix two css values throwing errors --- themes/5ePhb.style.less | 6 +++--- themes/5ePhbLegacy.style.less | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/themes/5ePhb.style.less b/themes/5ePhb.style.less index 9e56a7009..dbee1845a 100644 --- a/themes/5ePhb.style.less +++ b/themes/5ePhb.style.less @@ -238,7 +238,7 @@ body { // ************************************/ .descriptive{ .useSansSerif(); - display : block-inline; + display : inline-block; margin-top : 1.4em; background-color : #faf7ea; font-family : ScalySansRemake; @@ -335,12 +335,12 @@ body { // Monster Ability table hr + table:first-of-type{ margin : 0; - column-span : 1; + column-span : none; color : @headerText; background-color : transparent; border-style : none; border-image : none; - -webkit-column-span : 1; + -webkit-column-span : none; tr { background-color : transparent; } diff --git a/themes/5ePhbLegacy.style.less b/themes/5ePhbLegacy.style.less index 0f1cae7ec..4604c2bd7 100644 --- a/themes/5ePhbLegacy.style.less +++ b/themes/5ePhbLegacy.style.less @@ -230,11 +230,11 @@ body { // Monster Ability table hr+table{ margin : 0; - column-span : 1; + column-span : none; background-color : transparent; border-style : none; border-image : none; - -webkit-column-span : 1; + -webkit-column-span : none; tbody{ tr:nth-child(odd), tr:nth-child(even){ background-color : transparent; @@ -415,7 +415,7 @@ body { // * DESCRIPTIVE TEXT BOX // ************************************/ .phb .descriptive{ - display : block-inline; + display : inline-block; margin-bottom : 1em; background-color : #faf7ea; font-family : ScalySans; From c9e1d7ba5c27d8f5510cb198a74573c5efd71dea Mon Sep 17 00:00:00 2001 From: Gazook89 <58999374+Gazook89@users.noreply.github.com> Date: Tue, 10 Aug 2021 16:35:21 -0500 Subject: [PATCH 17/92] Fixed closing curly brackets on half class table --- client/homebrew/editor/snippetbar/snippets/classtable.gen.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/homebrew/editor/snippetbar/snippets/classtable.gen.js b/client/homebrew/editor/snippetbar/snippets/classtable.gen.js index 5d631cb48..1b1beb66a 100644 --- a/client/homebrew/editor/snippetbar/snippets/classtable.gen.js +++ b/client/homebrew/editor/snippetbar/snippets/classtable.gen.js @@ -110,7 +110,7 @@ module.exports = { featureScore += _.random(0, 1); return `| ${res} |`; - }).join('\n')}\n
\n\n`; + }).join('\n')}\n}}\n\n`; }, third : function(classes){ From 521c393b746d35c9e705c3d0d61269200ece319d Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Sun, 15 Aug 2021 15:51:24 +1200 Subject: [PATCH 18/92] Add title filtering to User Page. --- client/homebrew/pages/userPage/userPage.jsx | 32 ++++++++++++++++++-- client/homebrew/pages/userPage/userPage.less | 3 +- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/client/homebrew/pages/userPage/userPage.jsx b/client/homebrew/pages/userPage/userPage.jsx index 9e78ee6ea..58bce39b6 100644 --- a/client/homebrew/pages/userPage/userPage.jsx +++ b/client/homebrew/pages/userPage/userPage.jsx @@ -31,8 +31,9 @@ const UserPage = createClass({ }, getInitialState : function() { return { - sortType : 'alpha', - sortDir : 'asc' + sortType : 'alpha', + sortDir : 'asc', + filterString : '' }; }, getUsernameWithS : function() { @@ -52,6 +53,7 @@ const UserPage = createClass({ }, sortBrewOrder : function(brew){ + if(!brew.title){brew.title='No Title';}; const mapping = { 'alpha' : _.deburr(brew.title.toLowerCase()), 'created' : moment(brew.createdAt).format(), @@ -90,6 +92,25 @@ const UserPage = createClass({ ; }, + handleFilterTextChange : function(e){ + this.setState({ + filterString : e.target.value + }); + return; + }, + + renderFilterOption : function(){ + return + + ; + }, + renderSortOptions : function(){ return
@@ -114,6 +135,7 @@ const UserPage = createClass({ {`${(this.state.sortDir == 'asc' ? '\u25B2 ASC' : '\u25BC DESC')}`} + {this.renderFilterOption()}
@@ -121,7 +143,11 @@ const UserPage = createClass({ }, getSortedBrews : function(){ - return _.groupBy(this.props.brews, (brew)=>{ + const testString = _.deburr(this.state.filterString).toLowerCase(); + const brewCollection = this.state.filterString ? _.filter(this.props.brews, (brew)=>{ + return (_.deburr(brew?.title).toLowerCase().includes(testString)); + }) : this.props.brews; + return _.groupBy(brewCollection, (brew)=>{ return (brew.published ? 'published' : 'private'); }); }, diff --git a/client/homebrew/pages/userPage/userPage.less b/client/homebrew/pages/userPage/userPage.less index c7e8621e3..3b1fa0260 100644 --- a/client/homebrew/pages/userPage/userPage.less +++ b/client/homebrew/pages/userPage/userPage.less @@ -34,8 +34,9 @@ font-family : 'Open Sans', sans-serif; position : fixed; top : 35px; + left : calc(50vw - 408px); border : 2px solid #58180D; - width : 675px; + width : 800px; background-color : #EEE5CE; padding : 2px; text-align : center; From a7e6d0a5138c2639ccda26582956aa4518c4494a Mon Sep 17 00:00:00 2001 From: Gazook89 <58999374+Gazook89@users.noreply.github.com> Date: Sat, 14 Aug 2021 23:34:12 -0500 Subject: [PATCH 19/92] Update metadataEditor.less "small" text --- client/homebrew/editor/metadataEditor/metadataEditor.less | 3 --- 1 file changed, 3 deletions(-) diff --git a/client/homebrew/editor/metadataEditor/metadataEditor.less b/client/homebrew/editor/metadataEditor/metadataEditor.less index a58df14cd..c046b655d 100644 --- a/client/homebrew/editor/metadataEditor/metadataEditor.less +++ b/client/homebrew/editor/metadataEditor/metadataEditor.less @@ -62,9 +62,6 @@ .button(@silver); } small{ - position : absolute; - bottom : -15px; - left : 0px; font-size : 0.6em; font-style : italic; } From 501b356344ab4b874bffa567b449efd719be93a4 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Sun, 15 Aug 2021 19:15:43 +1200 Subject: [PATCH 20/92] Updates based on Gitter feedback --- client/homebrew/pages/userPage/userPage.jsx | 8 +++++--- client/homebrew/pages/userPage/userPage.less | 3 +++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/client/homebrew/pages/userPage/userPage.jsx b/client/homebrew/pages/userPage/userPage.jsx index 58bce39b6..b2b0df5ec 100644 --- a/client/homebrew/pages/userPage/userPage.jsx +++ b/client/homebrew/pages/userPage/userPage.jsx @@ -102,9 +102,10 @@ const UserPage = createClass({ renderFilterOption : function(){ return @@ -145,7 +146,8 @@ const UserPage = createClass({ getSortedBrews : function(){ const testString = _.deburr(this.state.filterString).toLowerCase(); const brewCollection = this.state.filterString ? _.filter(this.props.brews, (brew)=>{ - return (_.deburr(brew?.title).toLowerCase().includes(testString)); + return (_.deburr(brew?.title).toLowerCase().includes(testString)) || + (_.deburr(brew?.description).toLowerCase().includes(testString)); }) : this.props.brews; return _.groupBy(brewCollection, (brew)=>{ return (brew.published ? 'published' : 'private'); diff --git a/client/homebrew/pages/userPage/userPage.less b/client/homebrew/pages/userPage/userPage.less index 3b1fa0260..d968aab9a 100644 --- a/client/homebrew/pages/userPage/userPage.less +++ b/client/homebrew/pages/userPage/userPage.less @@ -53,6 +53,9 @@ vertical-align : middle; tbody tr{ background-color: transparent !important; + i{ + padding-right : 5px + } button{ background-color : transparent; color : #58180D; From 3cf05e551fdca5679be5a96757e2555db8c09a7e Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Sun, 15 Aug 2021 20:17:50 +1200 Subject: [PATCH 21/92] Add support for Google Brews. --- server/googleActions.js | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/server/googleActions.js b/server/googleActions.js index 8faa0c720..66deb538a 100644 --- a/server/googleActions.js +++ b/server/googleActions.js @@ -116,10 +116,11 @@ GoogleActions = { updatedAt : file.modifiedTime, gDrive : true, googleId : file.id, + pageCount : file.properties?.pageCount || 1, title : file.properties.title, description : file.description, - views : file.properties.views, + views : file.properties.views, tags : '', published : file.properties.published ? file.properties.published == 'true' : false, authors : [req.account.username], //TODO: properly save and load authors to google drive @@ -154,13 +155,15 @@ GoogleActions = { resource : { name : `${brew.title}.txt`, description : `${brew.description}`, properties : { title : brew.title, - published : brew.published, - lastViewed : brew.lastViewed, - views : brew.views, - version : brew.version, - renderer : brew.renderer, - tags : brew.tags, - systems : brew.systems.join() } + published : brew.published, + lastViewed : brew.lastViewed, + views : brew.views, + version : brew.version, + renderer : brew.renderer, + tags : brew.tags, + systems : brew.systems.join(), + pageCount : (brew.text.match(/\\page/g) || []).length + 1 + } }, media : { mimeType : 'text/plain', body : brew.text } @@ -190,10 +193,11 @@ GoogleActions = { 'description' : `${brew.description}`, 'parents' : [folderId], 'properties' : { //AppProperties is not accessible - 'shareId' : nanoid(12), - 'editId' : nanoid(12), - 'title' : brew.title, - 'views' : '0' + 'shareId' : nanoid(12), + 'editId' : nanoid(12), + 'title' : brew.title, + 'views' : '0', + 'pageCount' : (brew.text.match(/\\page/g) || []).length + 1 } }; @@ -227,6 +231,7 @@ GoogleActions = { updatedAt : new Date(), gDrive : true, googleId : obj.data.id, + pageCount : fileMetadata.properties.pageCount || 1, title : brew.title, description : brew.description, @@ -298,6 +303,7 @@ GoogleActions = { createdAt : obj.data.createdTime, updatedAt : obj.data.modifiedTime, lastViewed : obj.data.properties.lastViewed, + pageCount : obj.data.properties?.pageCount || 1, views : parseInt(obj.data.properties.views) || 0, //brews with no view parameter will return undefined version : parseInt(obj.data.properties.version) || 0, renderer : obj.data.properties.renderer ? obj.data.properties.renderer : 'legacy', From 3489a76a1db228e2b59d9f3ca016897d002fbce9 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Sun, 15 Aug 2021 20:32:23 +1200 Subject: [PATCH 22/92] Hide pageCount on User Page if the brew only has one page --- client/homebrew/pages/userPage/brewItem/brewItem.jsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.jsx b/client/homebrew/pages/userPage/brewItem/brewItem.jsx index c55933685..8a9d90880 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.jsx +++ b/client/homebrew/pages/userPage/brewItem/brewItem.jsx @@ -114,9 +114,11 @@ const BrewItem = createClass({ {brew.views} - - {brew.pageCount || 1} - + {(brew?.pageCount>1) && + + {brew.pageCount} + + } {moment(brew.updatedAt).fromNow()} From f0a0c0c11daeb6fd033f6feac539a888730f81eb Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Sat, 31 Jul 2021 17:21:25 +1200 Subject: [PATCH 23/92] Add a page count to User page --- client/homebrew/pages/userPage/brewItem/brewItem.jsx | 4 ++++ client/homebrew/pages/userPage/brewItem/brewItem.less | 3 +++ server/homebrew.api.js | 2 ++ server/homebrew.model.js | 11 ++++++----- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.jsx b/client/homebrew/pages/userPage/brewItem/brewItem.jsx index f0557c47e..7603e19ac 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.jsx +++ b/client/homebrew/pages/userPage/brewItem/brewItem.jsx @@ -112,6 +112,7 @@ const BrewItem = createClass({

{brew.title}

{brew.description}


+
@@ -120,6 +121,9 @@ const BrewItem = createClass({ {brew.views} + + {brew.pageCount || 1} + {moment(brew.updatedAt).fromNow()} diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.less b/client/homebrew/pages/userPage/brewItem/brewItem.less index efae9d8d3..7d806e841 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.less +++ b/client/homebrew/pages/userPage/brewItem/brewItem.less @@ -69,4 +69,7 @@ padding : 0px; margin : -5px; } + .spacer { + height : 25px; + } } diff --git a/server/homebrew.api.js b/server/homebrew.api.js index 36d0aa576..b865d9193 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -38,6 +38,7 @@ const newBrew = (req, res)=>{ brew.authors = (req.account) ? [req.account.username] : []; brew.text = mergeBrewText(brew.text, brew.style); + brew.pageCount = (brew.text.match(/\\page/g) || []).length + 1; delete brew.editId; delete brew.shareId; @@ -66,6 +67,7 @@ const updateBrew = (req, res)=>{ .then((brew)=>{ brew = _.merge(brew, req.body); brew.text = mergeBrewText(brew.text, brew.style); + brew.pageCount = (brew.text.match(/\\page/g) || []).length + 1; // Compress brew text to binary before saving brew.textBin = zlib.deflateRawSync(brew.text); diff --git a/server/homebrew.model.js b/server/homebrew.model.js index c2abdf199..acc78a624 100644 --- a/server/homebrew.model.js +++ b/server/homebrew.model.js @@ -4,11 +4,12 @@ const _ = require('lodash'); const zlib = require('zlib'); const HomebrewSchema = mongoose.Schema({ - shareId : { type: String, default: ()=>{return nanoid(12);}, index: { unique: true } }, - editId : { type: String, default: ()=>{return nanoid(12);}, index: { unique: true } }, - title : { type: String, default: '' }, - text : { type: String, default: '' }, - textBin : { type: Buffer }, + shareId : { type: String, default: ()=>{return nanoid(12);}, index: { unique: true } }, + editId : { type: String, default: ()=>{return nanoid(12);}, index: { unique: true } }, + title : { type: String, default: '' }, + text : { type: String, default: '' }, + textBin : { type: Buffer }, + pageCount : { type: Number, default: 1 }, description : { type: String, default: '' }, tags : { type: String, default: '' }, From 7b0f5cec977da236e608ffafb94b15560a27db30 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Sun, 15 Aug 2021 20:17:50 +1200 Subject: [PATCH 24/92] Add support for Google Brews. --- server/googleActions.js | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/server/googleActions.js b/server/googleActions.js index eab6babf3..291747349 100644 --- a/server/googleActions.js +++ b/server/googleActions.js @@ -116,10 +116,11 @@ GoogleActions = { updatedAt : file.modifiedTime, gDrive : true, googleId : file.id, + pageCount : file.properties?.pageCount || 1, title : file.properties.title, description : file.description, - views : file.properties.views, + views : file.properties.views, tags : '', published : file.properties.published ? file.properties.published == 'true' : false, authors : [req.account.username], //TODO: properly save and load authors to google drive @@ -154,13 +155,15 @@ GoogleActions = { resource : { name : `${brew.title}.txt`, description : `${brew.description}`, properties : { title : brew.title, - published : brew.published, - lastViewed : brew.lastViewed, - views : brew.views, - version : brew.version, - renderer : brew.renderer, - tags : brew.tags, - systems : brew.systems.join() } + published : brew.published, + lastViewed : brew.lastViewed, + views : brew.views, + version : brew.version, + renderer : brew.renderer, + tags : brew.tags, + systems : brew.systems.join(), + pageCount : (brew.text.match(/\\page/g) || []).length + 1 + } }, media : { mimeType : 'text/plain', body : brew.text } @@ -191,11 +194,12 @@ GoogleActions = { 'description' : `${brew.description}`, 'parents' : [folderId], 'properties' : { //AppProperties is not accessible - 'shareId' : nanoid(12), - 'editId' : nanoid(12), - 'title' : brew.title, - 'views' : '0', - 'renderer' : brew.renderer || 'legacy' + 'shareId' : nanoid(12), + 'editId' : nanoid(12), + 'title' : brew.title, + 'views' : '0', + 'pageCount' : (brew.text.match(/\\page/g) || []).length + 1, + 'renderer' : brew.renderer || 'legacy' } }; @@ -230,6 +234,7 @@ GoogleActions = { updatedAt : new Date(), gDrive : true, googleId : obj.data.id, + pageCount : fileMetadata.properties.pageCount || 1, title : brew.title, description : brew.description, @@ -301,6 +306,7 @@ GoogleActions = { createdAt : obj.data.createdTime, updatedAt : obj.data.modifiedTime, lastViewed : obj.data.properties.lastViewed, + pageCount : obj.data.properties?.pageCount || 1, views : parseInt(obj.data.properties.views) || 0, //brews with no view parameter will return undefined version : parseInt(obj.data.properties.version) || 0, renderer : obj.data.properties.renderer ? obj.data.properties.renderer : 'legacy', From 1edc62d0235b7f5344c3e02c96c21d238c790e55 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Sun, 15 Aug 2021 20:32:23 +1200 Subject: [PATCH 25/92] Hide pageCount on User Page if the brew only has one page --- client/homebrew/pages/userPage/brewItem/brewItem.jsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.jsx b/client/homebrew/pages/userPage/brewItem/brewItem.jsx index 7603e19ac..bd91e0796 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.jsx +++ b/client/homebrew/pages/userPage/brewItem/brewItem.jsx @@ -121,9 +121,11 @@ const BrewItem = createClass({ {brew.views} - - {brew.pageCount || 1} - + {(brew?.pageCount>1) && + + {brew.pageCount} + + } {moment(brew.updatedAt).fromNow()} From 76a6c9c2d39ab5f02c1a163f41b9ddc503e66579 Mon Sep 17 00:00:00 2001 From: Gazook89 <58999374+Gazook89@users.noreply.github.com> Date: Sun, 15 Aug 2021 19:52:12 -0500 Subject: [PATCH 26/92] Remove :before on .note Move all properties from :before to the base .note....don't see a need to add a superfluous pseudo element. --- themes/5ePhb.style.less | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/themes/5ePhb.style.less b/themes/5ePhb.style.less index 095d7c568..629886e4c 100644 --- a/themes/5ePhb.style.less +++ b/themes/5ePhb.style.less @@ -199,20 +199,12 @@ body { // * NOTE // *****************************/ .note{ - &::before{ - content : ""; - box-sizing : border-box; - border-style : solid; - border-width : 11px; - border-image : @noteBorderImage 12; - border-image-outset : 9px 0px; - box-shadow : 1px 4px 14px #888; - position : absolute; - width : 100%; - height : 100%; - top : 0; - left : 0; - } + box-sizing : border-box; + border-style : solid; + border-width : 11px; + border-image : @noteBorderImage 12; + border-image-outset : 9px 0px; + box-shadow : 1px 4px 14px #888; .useSansSerif(); position : relative; margin-top : 1.3em; From 0773dd24ab600844a4bbfb09737e09327f035a8c Mon Sep 17 00:00:00 2001 From: Gazook89 <58999374+Gazook89@users.noreply.github.com> Date: Sun, 15 Aug 2021 19:57:20 -0500 Subject: [PATCH 27/92] change box-shadows to drop-shadows monster blocks, descriptive notes, regular notes. --- themes/5ePhb.style.less | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/themes/5ePhb.style.less b/themes/5ePhb.style.less index 629886e4c..d50349f46 100644 --- a/themes/5ePhb.style.less +++ b/themes/5ePhb.style.less @@ -204,7 +204,7 @@ body { border-width : 11px; border-image : @noteBorderImage 12; border-image-outset : 9px 0px; - box-shadow : 1px 4px 14px #888; + filter : drop-shadow(1px 4px 6px #888); .useSansSerif(); position : relative; margin-top : 1.3em; @@ -239,7 +239,7 @@ body { border-width : 7px; border-image : @descriptiveBoxImage 12 stretch; border-image-outset : 4px; - box-shadow : 0px 0px 6px #faf7ea; + filter : drop-shadow(0 0 3px #faf7ea); padding : 0.1em; & + * { margin-top : 1.4em; @@ -297,7 +297,7 @@ body { border-image-outset : 0px 2px; background-blend-mode : overlay; background-attachment : fixed; - box-shadow : 1px 4px 14px #888; + filter : drop-shadow(1px 4px 6px #888); padding : 4px 2px; margin : 0px -6px 1em; } From 1b7729ca010b3b5f4b0b9f507269d5dfddafdec7 Mon Sep 17 00:00:00 2001 From: Gazook89 <58999374+Gazook89@users.noreply.github.com> Date: Sun, 15 Aug 2021 20:17:15 -0500 Subject: [PATCH 28/92] reverting change to .note:before setting back to what it was. apparently :before is necessary due to border-image spacing. --- themes/5ePhb.style.less | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/themes/5ePhb.style.less b/themes/5ePhb.style.less index d50349f46..b736056b0 100644 --- a/themes/5ePhb.style.less +++ b/themes/5ePhb.style.less @@ -199,12 +199,20 @@ body { // * NOTE // *****************************/ .note{ - box-sizing : border-box; - border-style : solid; - border-width : 11px; - border-image : @noteBorderImage 12; - border-image-outset : 9px 0px; - filter : drop-shadow(1px 4px 6px #888); + &::before{ + content : ""; + box-sizing : border-box; + border-style : solid; + border-width : 11px; + border-image : @noteBorderImage 12; + border-image-outset : 9px 0px; + filter : drop-shadow(1px 4px 6px #888); + position : absolute; + width : 100%; + height : 100%; + top : 0; + left : 0; + } .useSansSerif(); position : relative; margin-top : 1.3em; From c907d327791579b4d65640b37461327b011dea3f Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 17 Aug 2021 15:50:40 +1200 Subject: [PATCH 29/92] Update server/googleActions.js Co-authored-by: Trevor Buckner --- server/googleActions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/googleActions.js b/server/googleActions.js index 291747349..e310e27cf 100644 --- a/server/googleActions.js +++ b/server/googleActions.js @@ -116,7 +116,7 @@ GoogleActions = { updatedAt : file.modifiedTime, gDrive : true, googleId : file.id, - pageCount : file.properties?.pageCount || 1, + pageCount : file.properties.pageCount, title : file.properties.title, description : file.description, From 6489a294360cd2313e858af27baabb902297d9e5 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 17 Aug 2021 15:51:05 +1200 Subject: [PATCH 30/92] Update server/googleActions.js Co-authored-by: Trevor Buckner --- server/googleActions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/googleActions.js b/server/googleActions.js index e310e27cf..c398b11ae 100644 --- a/server/googleActions.js +++ b/server/googleActions.js @@ -306,7 +306,7 @@ GoogleActions = { createdAt : obj.data.createdTime, updatedAt : obj.data.modifiedTime, lastViewed : obj.data.properties.lastViewed, - pageCount : obj.data.properties?.pageCount || 1, + pageCount : obj.data.properties.pageCount, views : parseInt(obj.data.properties.views) || 0, //brews with no view parameter will return undefined version : parseInt(obj.data.properties.version) || 0, renderer : obj.data.properties.renderer ? obj.data.properties.renderer : 'legacy', From 3b7a52a60f3f0059d736c96473c11db3f2980d69 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 17 Aug 2021 16:02:50 +1200 Subject: [PATCH 31/92] Update client/homebrew/pages/userPage/brewItem/brewItem.jsx Co-authored-by: Trevor Buckner --- client/homebrew/pages/userPage/brewItem/brewItem.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.jsx b/client/homebrew/pages/userPage/brewItem/brewItem.jsx index bd91e0796..3bf4392df 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.jsx +++ b/client/homebrew/pages/userPage/brewItem/brewItem.jsx @@ -121,7 +121,7 @@ const BrewItem = createClass({ {brew.views} - {(brew?.pageCount>1) && + {brew.pageCount && {brew.pageCount} From a99cf75b2ebb6dc1e3845a58de60ba44c01ae32d Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 17 Aug 2021 17:07:19 +1200 Subject: [PATCH 32/92] Lint fix. --- server/googleActions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/googleActions.js b/server/googleActions.js index c398b11ae..8f301d487 100644 --- a/server/googleActions.js +++ b/server/googleActions.js @@ -306,7 +306,7 @@ GoogleActions = { createdAt : obj.data.createdTime, updatedAt : obj.data.modifiedTime, lastViewed : obj.data.properties.lastViewed, - pageCount : obj.data.properties.pageCount, + pageCount : obj.data.properties.pageCount, views : parseInt(obj.data.properties.views) || 0, //brews with no view parameter will return undefined version : parseInt(obj.data.properties.version) || 0, renderer : obj.data.properties.renderer ? obj.data.properties.renderer : 'legacy', From a13759130d1bc4790f16243d1b204ae86b0ed0c3 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 17 Aug 2021 17:36:26 +1200 Subject: [PATCH 33/92] Push `pageCount` to NewPage and EditPage --- client/homebrew/pages/editPage/editPage.jsx | 21 ++++++++++++--------- client/homebrew/pages/newPage/newPage.jsx | 2 ++ server/googleActions.js | 6 +++--- server/homebrew.api.js | 2 -- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx index 0967e05e2..f7acb45dc 100644 --- a/client/homebrew/pages/editPage/editPage.jsx +++ b/client/homebrew/pages/editPage/editPage.jsx @@ -191,16 +191,19 @@ const EditPage = createClass({ this.setState((prevState)=>({ isSaving : true, errors : null, - htmlErrors : Markdown.validate(prevState.brew.text) + htmlErrors : Markdown.validate(prevState.brew.text), })); 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; + if(this.state.saveGoogle) { if(transfer) { const res = await request .post('/api/newGoogle/') - .send(this.state.brew) + .send(brew) .catch((err)=>{ console.log(err.status === 401 ? 'Not signed in!' @@ -211,7 +214,7 @@ const EditPage = createClass({ if(!res) { return; } console.log('Deleting Local Copy'); - await request.delete(`/api/${this.state.brew.editId}`) + await request.delete(`/api/${brew.editId}`) .send() .catch((err)=>{ console.log('Error deleting Local Copy'); @@ -221,8 +224,8 @@ const EditPage = createClass({ history.replaceState(null, null, `/edit/${this.savedBrew.googleId}${this.savedBrew.editId}`); //update URL to match doc ID } else { const res = await request - .put(`/api/updateGoogle/${this.state.brew.editId}`) - .send(this.state.brew) + .put(`/api/updateGoogle/${brew.editId}`) + .send(brew) .catch((err)=>{ console.log(err.status === 401 ? 'Not signed in!' @@ -236,14 +239,14 @@ const EditPage = createClass({ } else { if(transfer) { const res = await request.post('/api') - .send(this.state.brew) + .send(brew) .catch((err)=>{ console.log('Error creating Local Copy'); this.setState({ errors: err }); return; }); - await request.get(`/api/removeGoogle/${this.state.brew.googleId}${this.state.brew.editId}`) + await request.get(`/api/removeGoogle/${brew.googleId}${brew.editId}`) .send() .catch((err)=>{ console.log('Error Deleting Google Brew'); @@ -253,8 +256,8 @@ const EditPage = createClass({ history.replaceState(null, null, `/edit/${this.savedBrew.editId}`); //update URL to match doc ID } else { const res = await request - .put(`/api/update/${this.state.brew.editId}`) - .send(this.state.brew) + .put(`/api/update/${brew.editId}`) + .send(brew) .catch((err)=>{ console.log('Error Updating Local Brew'); this.setState({ errors: err }); diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx index e77fbc987..cebfed133 100644 --- a/client/homebrew/pages/newPage/newPage.jsx +++ b/client/homebrew/pages/newPage/newPage.jsx @@ -161,6 +161,8 @@ 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; + if(this.state.saveGoogle) { const res = await request .post('/api/newGoogle/') diff --git a/server/googleActions.js b/server/googleActions.js index 8f301d487..fe91ee9be 100644 --- a/server/googleActions.js +++ b/server/googleActions.js @@ -162,7 +162,7 @@ GoogleActions = { renderer : brew.renderer, tags : brew.tags, systems : brew.systems.join(), - pageCount : (brew.text.match(/\\page/g) || []).length + 1 + pageCount : brew.pageCount } }, media : { mimeType : 'text/plain', @@ -198,7 +198,7 @@ GoogleActions = { 'editId' : nanoid(12), 'title' : brew.title, 'views' : '0', - 'pageCount' : (brew.text.match(/\\page/g) || []).length + 1, + 'pageCount' : brew.pageCount, 'renderer' : brew.renderer || 'legacy' } }; @@ -234,7 +234,7 @@ GoogleActions = { updatedAt : new Date(), gDrive : true, googleId : obj.data.id, - pageCount : fileMetadata.properties.pageCount || 1, + pageCount : fileMetadata.properties.pageCount, title : brew.title, description : brew.description, diff --git a/server/homebrew.api.js b/server/homebrew.api.js index b865d9193..36d0aa576 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -38,7 +38,6 @@ const newBrew = (req, res)=>{ brew.authors = (req.account) ? [req.account.username] : []; brew.text = mergeBrewText(brew.text, brew.style); - brew.pageCount = (brew.text.match(/\\page/g) || []).length + 1; delete brew.editId; delete brew.shareId; @@ -67,7 +66,6 @@ const updateBrew = (req, res)=>{ .then((brew)=>{ brew = _.merge(brew, req.body); brew.text = mergeBrewText(brew.text, brew.style); - brew.pageCount = (brew.text.match(/\\page/g) || []).length + 1; // Compress brew text to binary before saving brew.textBin = zlib.deflateRawSync(brew.text); From f1d19d2d63291ed445bcfd49719ffe043f132a8f Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 17 Aug 2021 18:01:07 +1200 Subject: [PATCH 34/92] Eliminate spacer div in BrewItem --- client/homebrew/pages/userPage/brewItem/brewItem.jsx | 2 -- client/homebrew/pages/userPage/brewItem/brewItem.less | 6 +++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.jsx b/client/homebrew/pages/userPage/brewItem/brewItem.jsx index 3bf4392df..56629f201 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.jsx +++ b/client/homebrew/pages/userPage/brewItem/brewItem.jsx @@ -112,8 +112,6 @@ const BrewItem = createClass({

{brew.title}

{brew.description}


-
-
{brew.authors.join(', ')} diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.less b/client/homebrew/pages/userPage/brewItem/brewItem.less index 7d806e841..6e47458e3 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.less +++ b/client/homebrew/pages/userPage/brewItem/brewItem.less @@ -21,6 +21,9 @@ margin-bottom : 5px; font-size : 2.2em; } + .description{ + padding-bottom : 30px; + } .info{ position: absolute; bottom: 0px; @@ -69,7 +72,4 @@ padding : 0px; margin : -5px; } - .spacer { - height : 25px; - } } From 2e68cd77fae7e711e69455e7d43132ec1cf306d3 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Sat, 31 Jul 2021 17:21:25 +1200 Subject: [PATCH 35/92] Add a page count to User page --- client/homebrew/pages/userPage/brewItem/brewItem.jsx | 3 +++ client/homebrew/pages/userPage/brewItem/brewItem.less | 3 +++ server/homebrew.api.js | 2 ++ 3 files changed, 8 insertions(+) diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.jsx b/client/homebrew/pages/userPage/brewItem/brewItem.jsx index 56629f201..41ed37ffe 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.jsx +++ b/client/homebrew/pages/userPage/brewItem/brewItem.jsx @@ -124,6 +124,9 @@ const BrewItem = createClass({ {brew.pageCount} } + + {brew.pageCount || 1} + {moment(brew.updatedAt).fromNow()} diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.less b/client/homebrew/pages/userPage/brewItem/brewItem.less index 6e47458e3..5122ea6ce 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.less +++ b/client/homebrew/pages/userPage/brewItem/brewItem.less @@ -72,4 +72,7 @@ padding : 0px; margin : -5px; } + .spacer { + height : 25px; + } } diff --git a/server/homebrew.api.js b/server/homebrew.api.js index 36d0aa576..b865d9193 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -38,6 +38,7 @@ const newBrew = (req, res)=>{ brew.authors = (req.account) ? [req.account.username] : []; brew.text = mergeBrewText(brew.text, brew.style); + brew.pageCount = (brew.text.match(/\\page/g) || []).length + 1; delete brew.editId; delete brew.shareId; @@ -66,6 +67,7 @@ const updateBrew = (req, res)=>{ .then((brew)=>{ brew = _.merge(brew, req.body); brew.text = mergeBrewText(brew.text, brew.style); + brew.pageCount = (brew.text.match(/\\page/g) || []).length + 1; // Compress brew text to binary before saving brew.textBin = zlib.deflateRawSync(brew.text); From eca58bb27e06e451f0dc3594502b10575634ac31 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 17 Aug 2021 17:36:26 +1200 Subject: [PATCH 36/92] Push `pageCount` to NewPage and EditPage --- server/homebrew.api.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/server/homebrew.api.js b/server/homebrew.api.js index b865d9193..36d0aa576 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -38,7 +38,6 @@ const newBrew = (req, res)=>{ brew.authors = (req.account) ? [req.account.username] : []; brew.text = mergeBrewText(brew.text, brew.style); - brew.pageCount = (brew.text.match(/\\page/g) || []).length + 1; delete brew.editId; delete brew.shareId; @@ -67,7 +66,6 @@ const updateBrew = (req, res)=>{ .then((brew)=>{ brew = _.merge(brew, req.body); brew.text = mergeBrewText(brew.text, brew.style); - brew.pageCount = (brew.text.match(/\\page/g) || []).length + 1; // Compress brew text to binary before saving brew.textBin = zlib.deflateRawSync(brew.text); From 2a7bde7e4411fca461b1b9082ba8a95f646cc6ca Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 17 Aug 2021 18:01:07 +1200 Subject: [PATCH 37/92] Eliminate spacer div in BrewItem --- client/homebrew/pages/userPage/brewItem/brewItem.less | 3 --- 1 file changed, 3 deletions(-) diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.less b/client/homebrew/pages/userPage/brewItem/brewItem.less index 5122ea6ce..6e47458e3 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.less +++ b/client/homebrew/pages/userPage/brewItem/brewItem.less @@ -72,7 +72,4 @@ padding : 0px; margin : -5px; } - .spacer { - height : 25px; - } } From 6573ada881ff671bfcb7dfb540bec67ee1fc69ab Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 17 Aug 2021 19:25:39 +1200 Subject: [PATCH 38/92] Eliminate hanging comma --- client/homebrew/pages/editPage/editPage.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx index f7acb45dc..1f77d785c 100644 --- a/client/homebrew/pages/editPage/editPage.jsx +++ b/client/homebrew/pages/editPage/editPage.jsx @@ -191,7 +191,7 @@ const EditPage = createClass({ this.setState((prevState)=>({ isSaving : true, errors : null, - htmlErrors : Markdown.validate(prevState.brew.text), + htmlErrors : Markdown.validate(prevState.brew.text) })); const transfer = this.state.saveGoogle == _.isNil(this.state.brew.googleId); From cdaa0b3ac2da35ffa00515416fe7404b35b783a9 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 17 Aug 2021 19:26:03 +1200 Subject: [PATCH 39/92] Eliminate duplicate section --- client/homebrew/pages/userPage/brewItem/brewItem.jsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.jsx b/client/homebrew/pages/userPage/brewItem/brewItem.jsx index 41ed37ffe..69e755b6b 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.jsx +++ b/client/homebrew/pages/userPage/brewItem/brewItem.jsx @@ -120,13 +120,10 @@ const BrewItem = createClass({ {brew.views} {brew.pageCount && - + {brew.pageCount} } - - {brew.pageCount || 1} - {moment(brew.updatedAt).fromNow()} From a908c5f5d5e0ac30682d04cc38fe224e6b1d913b Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Sat, 31 Jul 2021 17:21:25 +1200 Subject: [PATCH 40/92] Add a page count to User page --- client/homebrew/pages/userPage/brewItem/brewItem.jsx | 1 + client/homebrew/pages/userPage/brewItem/brewItem.less | 3 +++ server/homebrew.api.js | 2 ++ server/homebrew.model.js | 11 ++++++----- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.jsx b/client/homebrew/pages/userPage/brewItem/brewItem.jsx index 50ab397c3..2d07ea152 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.jsx +++ b/client/homebrew/pages/userPage/brewItem/brewItem.jsx @@ -107,6 +107,7 @@ const BrewItem = createClass({

{brew.title}

{brew.description}


+
diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.less b/client/homebrew/pages/userPage/brewItem/brewItem.less index efae9d8d3..7d806e841 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.less +++ b/client/homebrew/pages/userPage/brewItem/brewItem.less @@ -69,4 +69,7 @@ padding : 0px; margin : -5px; } + .spacer { + height : 25px; + } } diff --git a/server/homebrew.api.js b/server/homebrew.api.js index 36d0aa576..b865d9193 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -38,6 +38,7 @@ const newBrew = (req, res)=>{ brew.authors = (req.account) ? [req.account.username] : []; brew.text = mergeBrewText(brew.text, brew.style); + brew.pageCount = (brew.text.match(/\\page/g) || []).length + 1; delete brew.editId; delete brew.shareId; @@ -66,6 +67,7 @@ const updateBrew = (req, res)=>{ .then((brew)=>{ brew = _.merge(brew, req.body); brew.text = mergeBrewText(brew.text, brew.style); + brew.pageCount = (brew.text.match(/\\page/g) || []).length + 1; // Compress brew text to binary before saving brew.textBin = zlib.deflateRawSync(brew.text); diff --git a/server/homebrew.model.js b/server/homebrew.model.js index c2abdf199..acc78a624 100644 --- a/server/homebrew.model.js +++ b/server/homebrew.model.js @@ -4,11 +4,12 @@ const _ = require('lodash'); const zlib = require('zlib'); const HomebrewSchema = mongoose.Schema({ - shareId : { type: String, default: ()=>{return nanoid(12);}, index: { unique: true } }, - editId : { type: String, default: ()=>{return nanoid(12);}, index: { unique: true } }, - title : { type: String, default: '' }, - text : { type: String, default: '' }, - textBin : { type: Buffer }, + shareId : { type: String, default: ()=>{return nanoid(12);}, index: { unique: true } }, + editId : { type: String, default: ()=>{return nanoid(12);}, index: { unique: true } }, + title : { type: String, default: '' }, + text : { type: String, default: '' }, + textBin : { type: Buffer }, + pageCount : { type: Number, default: 1 }, description : { type: String, default: '' }, tags : { type: String, default: '' }, From df07e0401adeff7963e9701710425f38cca35a4b Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Sun, 15 Aug 2021 20:17:50 +1200 Subject: [PATCH 41/92] Add support for Google Brews. --- server/googleActions.js | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/server/googleActions.js b/server/googleActions.js index eab6babf3..291747349 100644 --- a/server/googleActions.js +++ b/server/googleActions.js @@ -116,10 +116,11 @@ GoogleActions = { updatedAt : file.modifiedTime, gDrive : true, googleId : file.id, + pageCount : file.properties?.pageCount || 1, title : file.properties.title, description : file.description, - views : file.properties.views, + views : file.properties.views, tags : '', published : file.properties.published ? file.properties.published == 'true' : false, authors : [req.account.username], //TODO: properly save and load authors to google drive @@ -154,13 +155,15 @@ GoogleActions = { resource : { name : `${brew.title}.txt`, description : `${brew.description}`, properties : { title : brew.title, - published : brew.published, - lastViewed : brew.lastViewed, - views : brew.views, - version : brew.version, - renderer : brew.renderer, - tags : brew.tags, - systems : brew.systems.join() } + published : brew.published, + lastViewed : brew.lastViewed, + views : brew.views, + version : brew.version, + renderer : brew.renderer, + tags : brew.tags, + systems : brew.systems.join(), + pageCount : (brew.text.match(/\\page/g) || []).length + 1 + } }, media : { mimeType : 'text/plain', body : brew.text } @@ -191,11 +194,12 @@ GoogleActions = { 'description' : `${brew.description}`, 'parents' : [folderId], 'properties' : { //AppProperties is not accessible - 'shareId' : nanoid(12), - 'editId' : nanoid(12), - 'title' : brew.title, - 'views' : '0', - 'renderer' : brew.renderer || 'legacy' + 'shareId' : nanoid(12), + 'editId' : nanoid(12), + 'title' : brew.title, + 'views' : '0', + 'pageCount' : (brew.text.match(/\\page/g) || []).length + 1, + 'renderer' : brew.renderer || 'legacy' } }; @@ -230,6 +234,7 @@ GoogleActions = { updatedAt : new Date(), gDrive : true, googleId : obj.data.id, + pageCount : fileMetadata.properties.pageCount || 1, title : brew.title, description : brew.description, @@ -301,6 +306,7 @@ GoogleActions = { createdAt : obj.data.createdTime, updatedAt : obj.data.modifiedTime, lastViewed : obj.data.properties.lastViewed, + pageCount : obj.data.properties?.pageCount || 1, views : parseInt(obj.data.properties.views) || 0, //brews with no view parameter will return undefined version : parseInt(obj.data.properties.version) || 0, renderer : obj.data.properties.renderer ? obj.data.properties.renderer : 'legacy', From 7e30fb19d4208d22cd7d9c0870172a50861108bf Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 17 Aug 2021 15:50:40 +1200 Subject: [PATCH 42/92] Update server/googleActions.js Co-authored-by: Trevor Buckner --- server/googleActions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/googleActions.js b/server/googleActions.js index 291747349..e310e27cf 100644 --- a/server/googleActions.js +++ b/server/googleActions.js @@ -116,7 +116,7 @@ GoogleActions = { updatedAt : file.modifiedTime, gDrive : true, googleId : file.id, - pageCount : file.properties?.pageCount || 1, + pageCount : file.properties.pageCount, title : file.properties.title, description : file.description, From e0e86dff7cdbaad7a27dfd209322d8a8e38f13d2 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 17 Aug 2021 15:51:05 +1200 Subject: [PATCH 43/92] Update server/googleActions.js Co-authored-by: Trevor Buckner --- server/googleActions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/googleActions.js b/server/googleActions.js index e310e27cf..c398b11ae 100644 --- a/server/googleActions.js +++ b/server/googleActions.js @@ -306,7 +306,7 @@ GoogleActions = { createdAt : obj.data.createdTime, updatedAt : obj.data.modifiedTime, lastViewed : obj.data.properties.lastViewed, - pageCount : obj.data.properties?.pageCount || 1, + pageCount : obj.data.properties.pageCount, views : parseInt(obj.data.properties.views) || 0, //brews with no view parameter will return undefined version : parseInt(obj.data.properties.version) || 0, renderer : obj.data.properties.renderer ? obj.data.properties.renderer : 'legacy', From 0fd7921a5034387e0ca2d250a31cdc5be9fe1ddf Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 17 Aug 2021 17:07:19 +1200 Subject: [PATCH 44/92] Lint fix. --- server/googleActions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/googleActions.js b/server/googleActions.js index c398b11ae..8f301d487 100644 --- a/server/googleActions.js +++ b/server/googleActions.js @@ -306,7 +306,7 @@ GoogleActions = { createdAt : obj.data.createdTime, updatedAt : obj.data.modifiedTime, lastViewed : obj.data.properties.lastViewed, - pageCount : obj.data.properties.pageCount, + pageCount : obj.data.properties.pageCount, views : parseInt(obj.data.properties.views) || 0, //brews with no view parameter will return undefined version : parseInt(obj.data.properties.version) || 0, renderer : obj.data.properties.renderer ? obj.data.properties.renderer : 'legacy', From cfb98986cd4a876c8276df1bdb424a7d90e15d90 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 17 Aug 2021 17:36:26 +1200 Subject: [PATCH 45/92] Push `pageCount` to NewPage and EditPage --- client/homebrew/pages/editPage/editPage.jsx | 21 ++++++++++++--------- client/homebrew/pages/newPage/newPage.jsx | 2 ++ server/googleActions.js | 6 +++--- server/homebrew.api.js | 2 -- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx index 0967e05e2..f7acb45dc 100644 --- a/client/homebrew/pages/editPage/editPage.jsx +++ b/client/homebrew/pages/editPage/editPage.jsx @@ -191,16 +191,19 @@ const EditPage = createClass({ this.setState((prevState)=>({ isSaving : true, errors : null, - htmlErrors : Markdown.validate(prevState.brew.text) + htmlErrors : Markdown.validate(prevState.brew.text), })); 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; + if(this.state.saveGoogle) { if(transfer) { const res = await request .post('/api/newGoogle/') - .send(this.state.brew) + .send(brew) .catch((err)=>{ console.log(err.status === 401 ? 'Not signed in!' @@ -211,7 +214,7 @@ const EditPage = createClass({ if(!res) { return; } console.log('Deleting Local Copy'); - await request.delete(`/api/${this.state.brew.editId}`) + await request.delete(`/api/${brew.editId}`) .send() .catch((err)=>{ console.log('Error deleting Local Copy'); @@ -221,8 +224,8 @@ const EditPage = createClass({ history.replaceState(null, null, `/edit/${this.savedBrew.googleId}${this.savedBrew.editId}`); //update URL to match doc ID } else { const res = await request - .put(`/api/updateGoogle/${this.state.brew.editId}`) - .send(this.state.brew) + .put(`/api/updateGoogle/${brew.editId}`) + .send(brew) .catch((err)=>{ console.log(err.status === 401 ? 'Not signed in!' @@ -236,14 +239,14 @@ const EditPage = createClass({ } else { if(transfer) { const res = await request.post('/api') - .send(this.state.brew) + .send(brew) .catch((err)=>{ console.log('Error creating Local Copy'); this.setState({ errors: err }); return; }); - await request.get(`/api/removeGoogle/${this.state.brew.googleId}${this.state.brew.editId}`) + await request.get(`/api/removeGoogle/${brew.googleId}${brew.editId}`) .send() .catch((err)=>{ console.log('Error Deleting Google Brew'); @@ -253,8 +256,8 @@ const EditPage = createClass({ history.replaceState(null, null, `/edit/${this.savedBrew.editId}`); //update URL to match doc ID } else { const res = await request - .put(`/api/update/${this.state.brew.editId}`) - .send(this.state.brew) + .put(`/api/update/${brew.editId}`) + .send(brew) .catch((err)=>{ console.log('Error Updating Local Brew'); this.setState({ errors: err }); diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx index e77fbc987..cebfed133 100644 --- a/client/homebrew/pages/newPage/newPage.jsx +++ b/client/homebrew/pages/newPage/newPage.jsx @@ -161,6 +161,8 @@ 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; + if(this.state.saveGoogle) { const res = await request .post('/api/newGoogle/') diff --git a/server/googleActions.js b/server/googleActions.js index 8f301d487..fe91ee9be 100644 --- a/server/googleActions.js +++ b/server/googleActions.js @@ -162,7 +162,7 @@ GoogleActions = { renderer : brew.renderer, tags : brew.tags, systems : brew.systems.join(), - pageCount : (brew.text.match(/\\page/g) || []).length + 1 + pageCount : brew.pageCount } }, media : { mimeType : 'text/plain', @@ -198,7 +198,7 @@ GoogleActions = { 'editId' : nanoid(12), 'title' : brew.title, 'views' : '0', - 'pageCount' : (brew.text.match(/\\page/g) || []).length + 1, + 'pageCount' : brew.pageCount, 'renderer' : brew.renderer || 'legacy' } }; @@ -234,7 +234,7 @@ GoogleActions = { updatedAt : new Date(), gDrive : true, googleId : obj.data.id, - pageCount : fileMetadata.properties.pageCount || 1, + pageCount : fileMetadata.properties.pageCount, title : brew.title, description : brew.description, diff --git a/server/homebrew.api.js b/server/homebrew.api.js index b865d9193..36d0aa576 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -38,7 +38,6 @@ const newBrew = (req, res)=>{ brew.authors = (req.account) ? [req.account.username] : []; brew.text = mergeBrewText(brew.text, brew.style); - brew.pageCount = (brew.text.match(/\\page/g) || []).length + 1; delete brew.editId; delete brew.shareId; @@ -67,7 +66,6 @@ const updateBrew = (req, res)=>{ .then((brew)=>{ brew = _.merge(brew, req.body); brew.text = mergeBrewText(brew.text, brew.style); - brew.pageCount = (brew.text.match(/\\page/g) || []).length + 1; // Compress brew text to binary before saving brew.textBin = zlib.deflateRawSync(brew.text); From ee006b6b1642e40c168e47db713674e63649c054 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 17 Aug 2021 18:01:07 +1200 Subject: [PATCH 46/92] Eliminate spacer div in BrewItem --- client/homebrew/pages/userPage/brewItem/brewItem.jsx | 2 -- client/homebrew/pages/userPage/brewItem/brewItem.less | 6 +++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.jsx b/client/homebrew/pages/userPage/brewItem/brewItem.jsx index 2d07ea152..c0aee59ad 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.jsx +++ b/client/homebrew/pages/userPage/brewItem/brewItem.jsx @@ -107,8 +107,6 @@ const BrewItem = createClass({

{brew.title}

{brew.description}


-
-
{brew.authors.join(', ')} diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.less b/client/homebrew/pages/userPage/brewItem/brewItem.less index 7d806e841..6e47458e3 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.less +++ b/client/homebrew/pages/userPage/brewItem/brewItem.less @@ -21,6 +21,9 @@ margin-bottom : 5px; font-size : 2.2em; } + .description{ + padding-bottom : 30px; + } .info{ position: absolute; bottom: 0px; @@ -69,7 +72,4 @@ padding : 0px; margin : -5px; } - .spacer { - height : 25px; - } } From 42da4b4c43b045732787ea2359b048a2d32323b1 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Sat, 31 Jul 2021 17:21:25 +1200 Subject: [PATCH 47/92] Add a page count to User page --- .../pages/userPage/brewItem/brewItem.jsx | 17 ++++++++++------- .../pages/userPage/brewItem/brewItem.less | 3 +++ server/homebrew.api.js | 2 ++ 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.jsx b/client/homebrew/pages/userPage/brewItem/brewItem.jsx index c0aee59ad..3b27b302b 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.jsx +++ b/client/homebrew/pages/userPage/brewItem/brewItem.jsx @@ -114,13 +114,16 @@ const BrewItem = createClass({ {brew.views} - - - {moment(brew.updatedAt).fromNow()} + {brew.pageCount && + + {brew.pageCount} + + } + + {brew.pageCount || 1} + + + {moment(brew.updatedAt).fromNow()} {this.renderGoogleDriveIcon()}
diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.less b/client/homebrew/pages/userPage/brewItem/brewItem.less index 6e47458e3..5122ea6ce 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.less +++ b/client/homebrew/pages/userPage/brewItem/brewItem.less @@ -72,4 +72,7 @@ padding : 0px; margin : -5px; } + .spacer { + height : 25px; + } } diff --git a/server/homebrew.api.js b/server/homebrew.api.js index 36d0aa576..b865d9193 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -38,6 +38,7 @@ const newBrew = (req, res)=>{ brew.authors = (req.account) ? [req.account.username] : []; brew.text = mergeBrewText(brew.text, brew.style); + brew.pageCount = (brew.text.match(/\\page/g) || []).length + 1; delete brew.editId; delete brew.shareId; @@ -66,6 +67,7 @@ const updateBrew = (req, res)=>{ .then((brew)=>{ brew = _.merge(brew, req.body); brew.text = mergeBrewText(brew.text, brew.style); + brew.pageCount = (brew.text.match(/\\page/g) || []).length + 1; // Compress brew text to binary before saving brew.textBin = zlib.deflateRawSync(brew.text); From 2c6c148da84e3bfdac9bdf0d09f2f7505d2d6c9e Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 17 Aug 2021 17:36:26 +1200 Subject: [PATCH 48/92] Push `pageCount` to NewPage and EditPage --- server/homebrew.api.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/server/homebrew.api.js b/server/homebrew.api.js index b865d9193..36d0aa576 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -38,7 +38,6 @@ const newBrew = (req, res)=>{ brew.authors = (req.account) ? [req.account.username] : []; brew.text = mergeBrewText(brew.text, brew.style); - brew.pageCount = (brew.text.match(/\\page/g) || []).length + 1; delete brew.editId; delete brew.shareId; @@ -67,7 +66,6 @@ const updateBrew = (req, res)=>{ .then((brew)=>{ brew = _.merge(brew, req.body); brew.text = mergeBrewText(brew.text, brew.style); - brew.pageCount = (brew.text.match(/\\page/g) || []).length + 1; // Compress brew text to binary before saving brew.textBin = zlib.deflateRawSync(brew.text); From 18cd851674e40a1a66727d4c2e7fdeac48a28881 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 17 Aug 2021 18:01:07 +1200 Subject: [PATCH 49/92] Eliminate spacer div in BrewItem --- client/homebrew/pages/userPage/brewItem/brewItem.less | 3 --- 1 file changed, 3 deletions(-) diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.less b/client/homebrew/pages/userPage/brewItem/brewItem.less index 5122ea6ce..6e47458e3 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.less +++ b/client/homebrew/pages/userPage/brewItem/brewItem.less @@ -72,7 +72,4 @@ padding : 0px; margin : -5px; } - .spacer { - height : 25px; - } } From 4218078502384206bf27a71140172d5d17cb4ad7 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 17 Aug 2021 19:25:39 +1200 Subject: [PATCH 50/92] Eliminate hanging comma --- client/homebrew/pages/editPage/editPage.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx index f7acb45dc..1f77d785c 100644 --- a/client/homebrew/pages/editPage/editPage.jsx +++ b/client/homebrew/pages/editPage/editPage.jsx @@ -191,7 +191,7 @@ const EditPage = createClass({ this.setState((prevState)=>({ isSaving : true, errors : null, - htmlErrors : Markdown.validate(prevState.brew.text), + htmlErrors : Markdown.validate(prevState.brew.text) })); const transfer = this.state.saveGoogle == _.isNil(this.state.brew.googleId); From 15f4aef7ef882830eebcc827b874584b50724672 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 17 Aug 2021 19:26:03 +1200 Subject: [PATCH 51/92] Eliminate duplicate section --- client/homebrew/pages/userPage/brewItem/brewItem.jsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.jsx b/client/homebrew/pages/userPage/brewItem/brewItem.jsx index 3b27b302b..c096dd438 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.jsx +++ b/client/homebrew/pages/userPage/brewItem/brewItem.jsx @@ -115,13 +115,10 @@ const BrewItem = createClass({ {brew.views}
{brew.pageCount && - + {brew.pageCount} } - - {brew.pageCount || 1} - {moment(brew.updatedAt).fromNow()} From a97fd4f47f140a901514adfe37830a582bd97ed6 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Wed, 4 Aug 2021 12:24:29 +1200 Subject: [PATCH 52/92] Check `brew.title` exists before sorting by it --- client/homebrew/pages/userPage/userPage.jsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/homebrew/pages/userPage/userPage.jsx b/client/homebrew/pages/userPage/userPage.jsx index 9e78ee6ea..206e58fc7 100644 --- a/client/homebrew/pages/userPage/userPage.jsx +++ b/client/homebrew/pages/userPage/userPage.jsx @@ -44,7 +44,7 @@ const UserPage = createClass({ renderBrews : function(brews){ if(!brews || !brews.length) return
No Brews.
; - const sortedBrews = this.sortBrews(brews, this.state.sortType); + const sortedBrews = this.sortBrews(brews); return _.map(sortedBrews, (brew, idx)=>{ return ; @@ -52,6 +52,7 @@ const UserPage = createClass({ }, sortBrewOrder : function(brew){ + if(!brew.title){brew.title = 'No Title';}; const mapping = { 'alpha' : _.deburr(brew.title.toLowerCase()), 'created' : moment(brew.createdAt).format(), From 72360be3e9e0d3eec6b3198f4d18c1e19af5b15b Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Tue, 17 Aug 2021 23:58:16 -0400 Subject: [PATCH 53/92] up version to 2.13.4 --- changelog.md | 13 +++++++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/changelog.md b/changelog.md index 9cc5a98de..b72024e3a 100644 --- a/changelog.md +++ b/changelog.md @@ -6,6 +6,17 @@ h5 { # changelog +### Tuesday, 17/08/2021 - v2.13.4 +- Fixed user page crashing when user has untitled brew + +##### G-Ambatte: +- Tweaks to user page tool tips +- Fix view counts being reset on Google Drive files + +##### Gazook89 : +- New **PHB → Artist Credit** snippet +- **PRINT** snippets moved to the **Style Editor** tab + ### Monday, 09/08/2021 - v2.13.3 ##### G-Ambatte : @@ -48,6 +59,8 @@ myStyle {color: black} - Pasting your brew into a "New" page and saving will transfer any CSS in the code fence to the Style tab. - Unsaved work in the New page Style tab is now cached to your browser storage if you navigate away. +\page + ### Thursday, 10/6/2021 - v2.12.0 diff --git a/package-lock.json b/package-lock.json index b96f158e9..2c0cf0095 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { "name": "homebrewery", - "version": "2.13.3", + "version": "2.13.4", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "2.13.3", + "version": "2.13.4", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 988c36f55..0146f74d0 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.13.3", + "version": "2.13.4", "engines": { "node": "14.15.x" }, From 7a081e1147a862465fa61d171fbc1944e4649911 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Wed, 18 Aug 2021 16:20:27 +1200 Subject: [PATCH 54/92] Property alignment in `googleActions.js` --- server/googleActions.js | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/server/googleActions.js b/server/googleActions.js index fe91ee9be..2594344d8 100644 --- a/server/googleActions.js +++ b/server/googleActions.js @@ -109,15 +109,14 @@ GoogleActions = { const brews = obj.data.files.map((file)=>{ return { - text : '', - shareId : file.properties.shareId, - editId : file.properties.editId, - createdAt : file.createdTime, - updatedAt : file.modifiedTime, - gDrive : true, - googleId : file.id, - pageCount : file.properties.pageCount, - + text : '', + shareId : file.properties.shareId, + editId : file.properties.editId, + createdAt : file.createdTime, + updatedAt : file.modifiedTime, + gDrive : true, + googleId : file.id, + pageCount : file.properties.pageCount, title : file.properties.title, description : file.description, views : file.properties.views, From cb8c3a016ab37112a45ef9df399f009e72057509 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Wed, 18 Aug 2021 16:25:08 +1200 Subject: [PATCH 55/92] BETTER property alignment in `googleActions` --- server/googleActions.js | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/server/googleActions.js b/server/googleActions.js index 2594344d8..04cda42a9 100644 --- a/server/googleActions.js +++ b/server/googleActions.js @@ -109,24 +109,23 @@ GoogleActions = { const brews = obj.data.files.map((file)=>{ return { - text : '', - shareId : file.properties.shareId, - editId : file.properties.editId, - createdAt : file.createdTime, - updatedAt : file.modifiedTime, - gDrive : true, - googleId : file.id, - pageCount : file.properties.pageCount, - title : file.properties.title, - description : file.description, - views : file.properties.views, - tags : '', - published : file.properties.published ? file.properties.published == 'true' : false, - authors : [req.account.username], //TODO: properly save and load authors to google drive - systems : [] - }; - }); - + text : '', + shareId : file.properties.shareId, + editId : file.properties.editId, + createdAt : file.createdTime, + updatedAt : file.modifiedTime, + gDrive : true, + googleId : file.id, + pageCount : file.properties.pageCount, + title : file.properties.title, + description : file.description, + views : file.properties.views, + tags : '', + published : file.properties.published ? file.properties.published == 'true' : false, + authors : [req.account.username], //TODO: properly save and load authors to google drive + systems : [] + }; + }); return brews; }, From a834c79b4958f93546d4e00c83714be01a7f29a7 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Wed, 18 Aug 2021 18:07:17 +1200 Subject: [PATCH 56/92] Fix BrewItem locations and overlapping. --- .../pages/userPage/brewItem/brewItem.jsx | 13 ++++++++----- .../pages/userPage/brewItem/brewItem.less | 19 ++++++++++--------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.jsx b/client/homebrew/pages/userPage/brewItem/brewItem.jsx index c096dd438..be0583f88 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.jsx +++ b/client/homebrew/pages/userPage/brewItem/brewItem.jsx @@ -104,13 +104,12 @@ const BrewItem = createClass({ const dateFormatString = 'YYYY-MM-DD HH:mm:ss'; return
-

{brew.title}

-

{brew.description}

+
+

{brew.title}

+

{brew.description}

+

- - {brew.authors.join(', ')} - {brew.views} @@ -123,6 +122,10 @@ const BrewItem = createClass({ {moment(brew.updatedAt).fromNow()} {this.renderGoogleDriveIcon()} +
+ + {brew.authors.join(', ')} +
diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.less b/client/homebrew/pages/userPage/brewItem/brewItem.less index 6e47458e3..b5250ae8c 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.less +++ b/client/homebrew/pages/userPage/brewItem/brewItem.less @@ -10,27 +10,28 @@ min-height : 105px; margin-right : 15px; margin-bottom : 15px; - padding : 5px 15px 5px 8px; + padding : 5px 15px 2px 8px; padding-right : 15px; border : 1px solid #c9ad6a; border-radius : 5px; -webkit-column-break-inside : avoid; page-break-inside : avoid; break-inside : avoid; - h4{ - margin-bottom : 5px; - font-size : 2.2em; - } - .description{ - padding-bottom : 30px; + .text { + min-height : 54px; + h4{ + margin-bottom : 5px; + font-size : 2.2em; + } } .info{ - position: absolute; - bottom: 0px; + position: initial; + bottom: 2px; margin-bottom: 4px; font-family : ScalySans; font-size : 1.2em; &>span{ + display : float; margin-right : 12px; } } From 519d102a6ed61d99f4382fd7e887cff2d012b322 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Fri, 20 Aug 2021 01:45:50 -0400 Subject: [PATCH 57/92] Throw errors in listGoogleBrews() and getGoogleFolder() --- server/googleActions.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/server/googleActions.js b/server/googleActions.js index 04cda42a9..38118b96f 100644 --- a/server/googleActions.js +++ b/server/googleActions.js @@ -17,7 +17,7 @@ GoogleActions = { if(!account || !account.googleId){ // If not signed into Google const err = new Error('Not Signed In'); err.status = 401; - throw err; + throw (err); } const oAuth2Client = new google.auth.OAuth2( @@ -60,6 +60,7 @@ GoogleActions = { .catch((err)=>{ console.log('Error searching Google Drive Folders'); console.error(err); + throw (err); }); let folderId; @@ -69,8 +70,9 @@ GoogleActions = { resource : fileMetadata }) .catch((err)=>{ - console.log('Error creating google app folder'); + console.log('Error creating Google Drive folder'); console.error(err); + throw (err); }); folderId = obj.data.id; @@ -99,7 +101,9 @@ GoogleActions = { q : 'mimeType != \'application/vnd.google-apps.folder\' and trashed = false' }) .catch((err)=>{ - return console.error(`Error Listing Google Brews: ${err}`); + console.log(`Error Listing Google Brews`); + console.error(err); + throw (err); //TODO: Should break out here, but continues on for some reason. }); @@ -135,7 +139,7 @@ GoogleActions = { const result = await drive.files.get({ fileId: id }) .catch((err)=>{ console.log('error checking file exists...'); - console.log(err); + console.error(err); return false; }); From 043ade6e342f5b7a3f44db7f6c586e35d094972c Mon Sep 17 00:00:00 2001 From: Gazook89 <58999374+Gazook89@users.noreply.github.com> Date: Fri, 20 Aug 2021 10:36:28 -0500 Subject: [PATCH 58/92] minor fix for ink-friendly legacy snippet --- client/homebrew/editor/snippetbar/snippetsLegacy/snippets.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/homebrew/editor/snippetbar/snippetsLegacy/snippets.js b/client/homebrew/editor/snippetbar/snippetsLegacy/snippets.js index 9d31ddde5..7ea2f236c 100644 --- a/client/homebrew/editor/snippetbar/snippetsLegacy/snippets.js +++ b/client/homebrew/editor/snippetbar/snippetsLegacy/snippets.js @@ -305,7 +305,7 @@ module.exports = [ name : 'Ink Friendly', icon : 'fas fa-tint', gen : dedent` - /* Ink Friendly */', + /* Ink Friendly */ .phb, .phb blockquote, .phb hr+blockquote { background : white; box-shadow : 0px 0px 3px; From 31c348baff13c4e2ae357753a32e83ca91b22c00 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Sat, 21 Aug 2021 11:37:01 +1200 Subject: [PATCH 59/92] Handle `brew.style` being `undefined` when inject snippets. --- client/homebrew/editor/editor.jsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/client/homebrew/editor/editor.jsx b/client/homebrew/editor/editor.jsx index d43ae7c61..ce18aa689 100644 --- a/client/homebrew/editor/editor.jsx +++ b/client/homebrew/editor/editor.jsx @@ -68,7 +68,10 @@ const Editor = createClass({ }, handleInject : function(injectText){ - const text = (this.isText() ? this.props.brew.text : this.props.brew.style); + const text = ( + this.isText() && this.props.brew.text || + this.isStyle() && (this.props.brew.style || DEFAULT_STYLE_TEXT) + ); const lines = text.split('\n'); const cursorPos = this.refs.codeEditor.getCursorPosition(); From 9cdfbc74596b0bd88e10aedec68b12240fab82e0 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Sat, 21 Aug 2021 00:15:53 -0400 Subject: [PATCH 60/92] Fix Table of Content spacing --- themes/5ePhb.style.less | 1 - 1 file changed, 1 deletion(-) diff --git a/themes/5ePhb.style.less b/themes/5ePhb.style.less index 955a4639a..4363245df 100644 --- a/themes/5ePhb.style.less +++ b/themes/5ePhb.style.less @@ -641,7 +641,6 @@ body { .inline-block { display : inline-block; text-indent : initial; - line-height : 1.3em; } div { column-gap : 0.5cm; //Default spacing if a div uses multicolumns From 653fd513addc3e1c53882867026efb7b5a995c6d Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Sat, 21 Aug 2021 01:36:25 -0400 Subject: [PATCH 61/92] inject newlines around `\column` so its DIV isn't consumed as markdown --- shared/naturalcrit/markdown.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared/naturalcrit/markdown.js b/shared/naturalcrit/markdown.js index eee0e982b..b37dedf81 100644 --- a/shared/naturalcrit/markdown.js +++ b/shared/naturalcrit/markdown.js @@ -527,7 +527,7 @@ const processStyleTags = (string)=>{ module.exports = { marked : Markdown, render : (rawBrewText)=>{ - rawBrewText = rawBrewText.replace(/^\\column$/gm, `
`) + rawBrewText = rawBrewText.replace(/^\\column$/gm, `\n
\n`) .replace(/^(:+)$/gm, (match)=>`${`
`.repeat(match.length)}\n`); return Markdown( sanatizeScriptTags(rawBrewText), From 9c6d87552409e901cdb22b3b65d10d5e21fc5db1 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Sun, 22 Aug 2021 23:00:43 -0400 Subject: [PATCH 62/92] Add wrapper to .page to improve `wide` behavior with columns --- client/homebrew/brewRenderer/brewRenderer.jsx | 6 +++++- client/homebrew/brewRenderer/brewRenderer.less | 6 ++++++ themes/5ePhb.style.less | 8 +++++--- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/client/homebrew/brewRenderer/brewRenderer.jsx b/client/homebrew/brewRenderer/brewRenderer.jsx index e3ab31742..b747aa4a6 100644 --- a/client/homebrew/brewRenderer/brewRenderer.jsx +++ b/client/homebrew/brewRenderer/brewRenderer.jsx @@ -131,7 +131,11 @@ const BrewRenderer = createClass({ if(this.props.renderer == 'legacy') return
; else - return
; + return ( +
+
+
+ ); }, renderPages : function(){ diff --git a/client/homebrew/brewRenderer/brewRenderer.less b/client/homebrew/brewRenderer/brewRenderer.less index abb80fc5f..8cd8b751c 100644 --- a/client/homebrew/brewRenderer/brewRenderer.less +++ b/client/homebrew/brewRenderer/brewRenderer.less @@ -11,6 +11,12 @@ margin-left : auto; box-shadow : 1px 4px 14px #000; } + &>.pageWrapper{ + margin-right : auto; + margin-bottom : 30px; + margin-left : auto; + box-shadow : 1px 4px 14px #000; + } } } .pane{ diff --git a/themes/5ePhb.style.less b/themes/5ePhb.style.less index 82c7c7dff..1f1356f5b 100644 --- a/themes/5ePhb.style.less +++ b/themes/5ePhb.style.less @@ -46,8 +46,7 @@ body { -webkit-column-gap : 0.9cm; -moz-column-gap : 0.9cm; } -.page{ - .useColumns(); +.pageWrapper{ counter-increment : phb-page-numbers; position : relative; z-index : 15; @@ -55,9 +54,12 @@ body { overflow : hidden; height : 279.4mm; width : 215.9mm; - padding : 1.4cm 1.9cm 1.7cm; background-color : @background; background-image : @backgroundImage; +} +.page{ + .useColumns(); + padding : 1.4cm 1.9cm 1.7cm; font-family : BookInsanityRemake; font-size : 0.34cm; text-rendering : optimizeLegibility; From 3de95a4f95f56feedd7326ec3439230dd9392f90 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Aug 2021 03:01:02 +0000 Subject: [PATCH 63/92] Bump codemirror from 5.62.2 to 5.62.3 Bumps [codemirror](https://github.com/codemirror/CodeMirror) from 5.62.2 to 5.62.3. - [Release notes](https://github.com/codemirror/CodeMirror/releases) - [Changelog](https://github.com/codemirror/CodeMirror/blob/master/CHANGELOG.md) - [Commits](https://github.com/codemirror/CodeMirror/compare/5.62.2...5.62.3) --- updated-dependencies: - dependency-name: codemirror dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2c0cf0095..23b1552f8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "@babel/preset-react": "^7.14.5", "body-parser": "^1.19.0", "classnames": "^2.3.1", - "codemirror": "^5.62.2", + "codemirror": "^5.62.3", "cookie-parser": "^1.4.5", "create-react-class": "^15.7.0", "dedent-tabs": "^0.9.0", @@ -3126,9 +3126,9 @@ } }, "node_modules/codemirror": { - "version": "5.62.2", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.62.2.tgz", - "integrity": "sha512-tVFMUa4J3Q8JUd1KL9yQzQB0/BJt7ZYZujZmTPgo/54Lpuq3ez4C8x/ATUY/wv7b7X3AUq8o3Xd+2C5ZrCGWHw==" + "version": "5.62.3", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.62.3.tgz", + "integrity": "sha512-zZAyOfN8TU67ngqrxhOgtkSAGV9jSpN1snbl8elPtnh9Z5A11daR405+dhLzLnuXrwX0WCShWlybxPN3QC/9Pg==" }, "node_modules/collection-visit": { "version": "1.0.0", @@ -11828,9 +11828,9 @@ } }, "codemirror": { - "version": "5.62.2", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.62.2.tgz", - "integrity": "sha512-tVFMUa4J3Q8JUd1KL9yQzQB0/BJt7ZYZujZmTPgo/54Lpuq3ez4C8x/ATUY/wv7b7X3AUq8o3Xd+2C5ZrCGWHw==" + "version": "5.62.3", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.62.3.tgz", + "integrity": "sha512-zZAyOfN8TU67ngqrxhOgtkSAGV9jSpN1snbl8elPtnh9Z5A11daR405+dhLzLnuXrwX0WCShWlybxPN3QC/9Pg==" }, "collection-visit": { "version": "1.0.0", diff --git a/package.json b/package.json index 0146f74d0..cfec9fd64 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "@babel/preset-react": "^7.14.5", "body-parser": "^1.19.0", "classnames": "^2.3.1", - "codemirror": "^5.62.2", + "codemirror": "^5.62.3", "cookie-parser": "^1.4.5", "create-react-class": "^15.7.0", "dedent-tabs": "^0.9.0", From 039db01b317d701883eb25726a8a12d3046fa935 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Mon, 23 Aug 2021 23:03:57 -0400 Subject: [PATCH 64/92] Artificial column-break at page end Inserting a \column into the end of the page (and a nbsp after). This makes the page emulate column-fill:auto (the standard "Homebrewery" behavior) since there is always at least one column-break, making the browser try less hard to aggressively "balance" the columns. Then, when a user inserts `wide` or `column-span` elements, `column-fill: balance` will be able to take over and work as we expect. --- client/homebrew/brewRenderer/brewRenderer.jsx | 4 +++- themes/5ePhb.style.less | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/client/homebrew/brewRenderer/brewRenderer.jsx b/client/homebrew/brewRenderer/brewRenderer.jsx index b747aa4a6..d22428f21 100644 --- a/client/homebrew/brewRenderer/brewRenderer.jsx +++ b/client/homebrew/brewRenderer/brewRenderer.jsx @@ -130,12 +130,14 @@ const BrewRenderer = createClass({ renderPage : function(pageText, index){ if(this.props.renderer == 'legacy') return
; - else + else { + 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 (
); + } }, renderPages : function(){ diff --git a/themes/5ePhb.style.less b/themes/5ePhb.style.less index 1f1356f5b..eaf69023a 100644 --- a/themes/5ePhb.style.less +++ b/themes/5ePhb.style.less @@ -59,6 +59,7 @@ body { } .page{ .useColumns(); + max-height : 100%; padding : 1.4cm 1.9cm 1.7cm; font-family : BookInsanityRemake; font-size : 0.34cm; From 050a1d45fdceebbc17303cb6101359e267b27025 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Tue, 24 Aug 2021 23:47:31 -0400 Subject: [PATCH 65/92] Move to new theme file, make balance default --- themes/5ePhb.style.less | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/themes/5ePhb.style.less b/themes/5ePhb.style.less index eaf69023a..26fb82430 100644 --- a/themes/5ePhb.style.less +++ b/themes/5ePhb.style.less @@ -34,9 +34,9 @@ body { letter-spacing : -0.02em; } } -.useColumns(@multiplier : 1){ +.useColumns(@multiplier : 1, @fillMode: balance){ column-count : 2; - column-fill : auto; + column-fill : @fillMode; column-gap : 0.9cm; column-width : 8cm * @multiplier; -webkit-column-count : 2; @@ -383,7 +383,7 @@ body { //Full Width .monster.wide{ - .useColumns(0.96); + .useColumns(0.96, @fillMode: balance); } //***************************** @@ -629,7 +629,7 @@ body { } } &.wide{ - .useColumns(0.96); + .useColumns(0.96, @fillMode: balance); } } From e9939e7a0d3faa54e12cec9b4d0bb4b876f9a83d Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Tue, 24 Aug 2021 23:55:03 -0400 Subject: [PATCH 66/92] Fix alignment --- server/googleActions.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/server/googleActions.js b/server/googleActions.js index b2288866b..7c8bc7028 100644 --- a/server/googleActions.js +++ b/server/googleActions.js @@ -359,9 +359,13 @@ GoogleActions = { await drive.files.update({ fileId : brew.googleId, - resource : { modifiedTime : brew.updatedAt, - properties : { views : brew.views + 1, - lastViewed : new Date() } } + resource : { + modifiedTime : brew.updatedAt, + properties : { + views : brew.views + 1, + lastViewed : new Date() + } + } }) .catch((err)=>{ console.log('Error updating Google views'); From a3354e961494ebd73f084ffde5ea9a2c303520c7 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Wed, 25 Aug 2021 21:46:59 -0400 Subject: [PATCH 67/92] Move `.note` shadow to main box, not `::before` element. --- themes/5ePhb.style.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/5ePhb.style.less b/themes/5ePhb.style.less index a42d81add..6405a2efc 100644 --- a/themes/5ePhb.style.less +++ b/themes/5ePhb.style.less @@ -206,7 +206,6 @@ body { border-width : 11px; border-image : @noteBorderImage 12; border-image-outset : 9px 0px; - filter : drop-shadow(1px 4px 6px #888); position : absolute; width : 100%; height : 100%; @@ -219,6 +218,7 @@ body { margin-left : -0.1em; margin-right : -0.1em; background-color : @noteGreen; + filter : drop-shadow(1px 4px 6px #888); padding : 0.5em 0.6em; & + * { margin-top : 1.3em; From 8e841c6825bf9a92407647a457f362ca8385e634 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Thu, 26 Aug 2021 17:20:03 +1200 Subject: [PATCH 68/92] Unwind changes to EditPage --- client/homebrew/pages/editPage/editPage.jsx | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx index d5fa6956b..a643296d4 100644 --- a/client/homebrew/pages/editPage/editPage.jsx +++ b/client/homebrew/pages/editPage/editPage.jsx @@ -51,18 +51,16 @@ const EditPage = createClass({ }, getInitialState : function() { - const newBrew = this.props.brew; - delete newBrew.views; return { - brew : newBrew, + brew : this.props.brew, isSaving : false, isPending : false, - alertTrashedGoogleBrew : newBrew.trashed, + alertTrashedGoogleBrew : this.props.brew.trashed, alertLoginToTransfer : false, - saveGoogle : newBrew.googleId ? true : false, + saveGoogle : this.props.brew.googleId ? true : false, confirmGoogleTransfer : false, errors : null, - htmlErrors : Markdown.validate(newBrew.text), + htmlErrors : Markdown.validate(this.props.brew.text), url : '' }; }, From 941bb94190c9d90476bc4878f7f2e7c7e2041509 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Thu, 26 Aug 2021 17:21:45 +1200 Subject: [PATCH 69/92] Remove undesired properties from brews prior to updating Clean up tab/spacing in `googleActions.js` --- server/googleActions.js | 28 +++++++++++++++------------- server/homebrew.api.js | 14 ++++++++++++-- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/server/googleActions.js b/server/googleActions.js index bfe1b406f..29d82c15e 100644 --- a/server/googleActions.js +++ b/server/googleActions.js @@ -151,19 +151,21 @@ GoogleActions = { if(await GoogleActions.existsGoogleBrew(auth, brew.googleId) == true) { await drive.files.update({ fileId : brew.googleId, - resource : { name : `${brew.title}.txt`, - description : `${brew.description}`, - properties : { title : brew.title, - published : brew.published, - lastViewed : brew.lastViewed, - views : brew.views, - version : brew.version, - renderer : brew.renderer, - tags : brew.tags, - systems : brew.systems.join() } - }, - media : { mimeType : 'text/plain', - body : brew.text } + resource : { + name : `${brew.title}.txt`, + description : `${brew.description}`, + properties : { + title : brew.title, + published : brew.published, + version : brew.version, + renderer : brew.renderer, + tags : brew.tags, + systems : brew.systems.join() } + }, + media : { + mimeType : 'text/plain', + body : brew.text + } }) .catch((err)=>{ console.log('Error saving to google'); diff --git a/server/homebrew.api.js b/server/homebrew.api.js index 1f988761d..d838575e1 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -61,10 +61,20 @@ const newBrew = (req, res)=>{ }); }; +const cleanBrew = (brew)=>{ + // Remove undesired properties + const undesiredPropertyNames=['views', 'lastViewed']; + for (const undesiredProperty of undesiredPropertyNames) { + delete brew[undesiredProperty]; + }; + return brew; +}; + const updateBrew = (req, res)=>{ HomebrewModel.get({ editId: req.params.id }) .then((brew)=>{ - brew = _.merge(brew, req.body); + const updateBrew = cleanBrew(req.body); + brew = _.merge(brew, updateBrew); brew.text = mergeBrewText(brew.text, brew.style); // Compress brew text to binary before saving @@ -151,7 +161,7 @@ const updateGoogleBrew = async (req, res, next)=>{ try { oAuth2Client = GoogleActions.authCheck(req.account, res); } catch (err) { return res.status(err.status).send(err.message); } - const brew = req.body; + const brew = cleanBrew(req.body); brew.text = mergeBrewText(brew.text, brew.style); const updatedBrew = await GoogleActions.updateGoogleBrew(oAuth2Client, brew); From a1df68ed20deabad6ea9ca037dab29d2c2e5b3b2 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 10 Aug 2021 22:51:52 +1200 Subject: [PATCH 70/92] Remove `brew.views` for EditPage brew object --- client/homebrew/pages/editPage/editPage.jsx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx index 1f77d785c..fcdfb8301 100644 --- a/client/homebrew/pages/editPage/editPage.jsx +++ b/client/homebrew/pages/editPage/editPage.jsx @@ -51,16 +51,18 @@ const EditPage = createClass({ }, getInitialState : function() { + const newBrew = this.props.brew; + delete newBrew.views; return { - brew : this.props.brew, + brew : newBrew, isSaving : false, isPending : false, - alertTrashedGoogleBrew : this.props.brew.trashed, + alertTrashedGoogleBrew : newBrew.trashed, alertLoginToTransfer : false, - saveGoogle : this.props.brew.googleId ? true : false, + saveGoogle : newBrew.googleId ? true : false, confirmGoogleTransfer : false, errors : null, - htmlErrors : Markdown.validate(this.props.brew.text), + htmlErrors : Markdown.validate(newBrew.text), url : '' }; }, From ceb4667193f77b58c453de439d36a039a4212c04 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Thu, 26 Aug 2021 17:20:03 +1200 Subject: [PATCH 71/92] Unwind changes to EditPage --- client/homebrew/pages/editPage/editPage.jsx | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx index fcdfb8301..1f77d785c 100644 --- a/client/homebrew/pages/editPage/editPage.jsx +++ b/client/homebrew/pages/editPage/editPage.jsx @@ -51,18 +51,16 @@ const EditPage = createClass({ }, getInitialState : function() { - const newBrew = this.props.brew; - delete newBrew.views; return { - brew : newBrew, + brew : this.props.brew, isSaving : false, isPending : false, - alertTrashedGoogleBrew : newBrew.trashed, + alertTrashedGoogleBrew : this.props.brew.trashed, alertLoginToTransfer : false, - saveGoogle : newBrew.googleId ? true : false, + saveGoogle : this.props.brew.googleId ? true : false, confirmGoogleTransfer : false, errors : null, - htmlErrors : Markdown.validate(newBrew.text), + htmlErrors : Markdown.validate(this.props.brew.text), url : '' }; }, From 4971c40e2322ef5a39c96ab47e5c57bfa6b888bd Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Thu, 26 Aug 2021 17:21:45 +1200 Subject: [PATCH 72/92] Remove undesired properties from brews prior to updating Clean up tab/spacing in `googleActions.js` --- server/googleActions.js | 30 +++++++++++++++--------------- server/homebrew.api.js | 14 ++++++++++++-- 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/server/googleActions.js b/server/googleActions.js index 68532a7a9..d193f32f8 100644 --- a/server/googleActions.js +++ b/server/googleActions.js @@ -154,21 +154,21 @@ GoogleActions = { if(await GoogleActions.existsGoogleBrew(auth, brew.googleId) == true) { await drive.files.update({ fileId : brew.googleId, - resource : { name : `${brew.title}.txt`, - description : `${brew.description}`, - properties : { title : brew.title, - published : brew.published, - lastViewed : brew.lastViewed, - views : brew.views, - version : brew.version, - renderer : brew.renderer, - tags : brew.tags, - systems : brew.systems.join(), - pageCount : brew.pageCount - } - }, - media : { mimeType : 'text/plain', - body : brew.text } + resource : { + name : `${brew.title}.txt`, + description : `${brew.description}`, + properties : { + title : brew.title, + published : brew.published, + version : brew.version, + renderer : brew.renderer, + tags : brew.tags, + systems : brew.systems.join() } + }, + media : { + mimeType : 'text/plain', + body : brew.text + } }) .catch((err)=>{ console.log('Error saving to google'); diff --git a/server/homebrew.api.js b/server/homebrew.api.js index 36d0aa576..afd5a8d30 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -61,10 +61,20 @@ const newBrew = (req, res)=>{ }); }; +const cleanBrew = (brew)=>{ + // Remove undesired properties + const undesiredPropertyNames=['views', 'lastViewed']; + for (const undesiredProperty of undesiredPropertyNames) { + delete brew[undesiredProperty]; + }; + return brew; +}; + const updateBrew = (req, res)=>{ HomebrewModel.get({ editId: req.params.id }) .then((brew)=>{ - brew = _.merge(brew, req.body); + const updateBrew = cleanBrew(req.body); + brew = _.merge(brew, updateBrew); brew.text = mergeBrewText(brew.text, brew.style); // Compress brew text to binary before saving @@ -154,7 +164,7 @@ const updateGoogleBrew = async (req, res, next)=>{ try { oAuth2Client = GoogleActions.authCheck(req.account, res); } catch (err) { return res.status(err.status).send(err.message); } - const brew = req.body; + const brew = cleanBrew(req.body); brew.text = mergeBrewText(brew.text, brew.style); try { From 50a8468995c0487ce6397119052ee71ec33b6039 Mon Sep 17 00:00:00 2001 From: Gazook89 <58999374+Gazook89@users.noreply.github.com> Date: Thu, 26 Aug 2021 12:00:56 -0500 Subject: [PATCH 73/92] Update legacy and v3 styles - removed wrap from legacy - add :not([rowspan]) qualifier to wrap on v3. --- themes/5ePhb.style.less | 2 +- themes/5ePhbLegacy.style.less | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/themes/5ePhb.style.less b/themes/5ePhb.style.less index ff0b2f189..8179ea97f 100644 --- a/themes/5ePhb.style.less +++ b/themes/5ePhb.style.less @@ -542,7 +542,7 @@ body { // * CLASS TABLE // *****************************/ .page .classTable{ - th[colspan] { + th[colspan]:not([rowspan]) { white-space : nowrap; } &.frame { diff --git a/themes/5ePhbLegacy.style.less b/themes/5ePhbLegacy.style.less index 65fff2ba0..d814d4036 100644 --- a/themes/5ePhbLegacy.style.less +++ b/themes/5ePhbLegacy.style.less @@ -408,9 +408,6 @@ body { border-image-slice : 150 200 150 200; border-image-source : @frameBorderImage; border-image-width : 47px; - th[colspan] { - white-space : nowrap; - } h5{ margin-bottom : 10px; } From dc65980dcb1acecb5c1f82ed8f9de13836c8e95a Mon Sep 17 00:00:00 2001 From: Gazook89 <58999374+Gazook89@users.noreply.github.com> Date: Thu, 26 Aug 2021 12:51:36 -0500 Subject: [PATCH 74/92] pull drawSlots out of individual functions --- .../snippetbar/snippets/classtable.gen.js | 44 +++++++------------ 1 file changed, 16 insertions(+), 28 deletions(-) diff --git a/client/homebrew/editor/snippetbar/snippets/classtable.gen.js b/client/homebrew/editor/snippetbar/snippets/classtable.gen.js index 1b1beb66a..0c72ac898 100644 --- a/client/homebrew/editor/snippetbar/snippets/classtable.gen.js +++ b/client/homebrew/editor/snippetbar/snippets/classtable.gen.js @@ -50,22 +50,23 @@ const getFeature = (level)=>{ return res.join(', '); }; +const maxes = [4, 3, 3, 3, 3, 2, 2, 1, 1]; + +const drawSlots = function(Slots, rows){ + let slots = Number(Slots); + return _.times(rows, function(i){ + const max = maxes[i]; + if(slots < 1) return '—'; + const res = _.min([max, slots]); + slots -= res; + return res; + }).join(' | '); +}; + module.exports = { full : function(classes){ const classname = _.sample(classnames); - const maxes = [4, 3, 3, 3, 3, 2, 2, 1, 1]; - const drawSlots = function(Slots){ - let slots = Number(Slots); - return _.times(9, function(i){ - const max = maxes[i]; - if(slots < 1) return '—'; - const res = _.min([max, slots]); - slots -= res; - return res; - }).join(' | '); - }; - let cantrips = 3; let spells = 1; @@ -81,7 +82,7 @@ module.exports = { getFeature(level), cantrips, spells, - drawSlots(slots) + drawSlots(slots, 9) ].join(' | '); cantrips += _.random(0, 1); @@ -116,19 +117,6 @@ module.exports = { third : function(classes){ const classname = _.sample(classnames); - const maxes = [4, 3, 3, 3, 3, 2, 2, 1, 1]; - const drawSlots = function(Slots){ - let slots = Number(Slots); - return _.times(4, function(i){ - const max = maxes[i]; - if(slots < 1) return '—'; - const res = _.min([max, slots]); - slots -= res; - return res; - }).join(' | '); - }; - - let cantrips = 3; let spells = 1; let slots = 2; @@ -141,12 +129,12 @@ module.exports = { levelName, cantrips, spells, - drawSlots(slots) + drawSlots(slots, 4) ].join(' | '); cantrips += _.random(0, 1); spells += _.random(0, 1); - slots += _.random(0, 2); + slots += _.random(0, 1); return `| ${res} |`; }).join('\n')}\n}}\n\n`; From a7005d779a74f86d9269d2beba89ed89ec885e8a Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Thu, 26 Aug 2021 22:43:57 -0400 Subject: [PATCH 75/92] Fix /print, make .page outer element for consistency with legacy --- client/homebrew/brewRenderer/brewRenderer.jsx | 4 ++-- client/homebrew/brewRenderer/brewRenderer.less | 6 ------ client/homebrew/pages/printPage/printPage.jsx | 17 +++++++++-------- themes/5ePhb.style.less | 11 ++++++----- 4 files changed, 17 insertions(+), 21 deletions(-) diff --git a/client/homebrew/brewRenderer/brewRenderer.jsx b/client/homebrew/brewRenderer/brewRenderer.jsx index d22428f21..03f0292c9 100644 --- a/client/homebrew/brewRenderer/brewRenderer.jsx +++ b/client/homebrew/brewRenderer/brewRenderer.jsx @@ -133,8 +133,8 @@ const BrewRenderer = createClass({ else { 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 ( -
-
+
+
); } diff --git a/client/homebrew/brewRenderer/brewRenderer.less b/client/homebrew/brewRenderer/brewRenderer.less index 8cd8b751c..abb80fc5f 100644 --- a/client/homebrew/brewRenderer/brewRenderer.less +++ b/client/homebrew/brewRenderer/brewRenderer.less @@ -11,12 +11,6 @@ margin-left : auto; box-shadow : 1px 4px 14px #000; } - &>.pageWrapper{ - margin-right : auto; - margin-bottom : 30px; - margin-left : auto; - box-shadow : 1px 4px 14px #000; - } } } .pane{ diff --git a/client/homebrew/pages/printPage/printPage.jsx b/client/homebrew/pages/printPage/printPage.jsx index d4f15c91b..b337a32f2 100644 --- a/client/homebrew/pages/printPage/printPage.jsx +++ b/client/homebrew/pages/printPage/printPage.jsx @@ -37,20 +37,21 @@ const PrintPage = createClass({ renderPages : function(){ if(this.props.brew.renderer == 'legacy') { - return _.map(this.state.brewText.split('\\page'), (page, index)=>{ + return _.map(this.state.brewText.split('\\page'), (pageText, index)=>{ return
; }); } else { - return _.map(this.state.brewText.split(/^\\page/gm), (page, index)=>{ - return
; + 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 ( +
+
+
+ ); }); } diff --git a/themes/5ePhb.style.less b/themes/5ePhb.style.less index 6613d89b4..a057fbabb 100644 --- a/themes/5ePhb.style.less +++ b/themes/5ePhb.style.less @@ -46,7 +46,11 @@ body { -webkit-column-gap : 0.9cm; -moz-column-gap : 0.9cm; } -.pageWrapper{ +.columnWrapper{ + max-height : 100%; +} +.page{ + .useColumns(); counter-increment : phb-page-numbers; position : relative; z-index : 15; @@ -56,10 +60,6 @@ body { width : 215.9mm; background-color : @background; background-image : @backgroundImage; -} -.page{ - .useColumns(); - max-height : 100%; padding : 1.4cm 1.9cm 1.7cm; font-family : BookInsanityRemake; font-size : 0.34cm; @@ -540,6 +540,7 @@ body { column-span : all; -webkit-column-span : all; -moz-column-span : all; + display : block; } //***************************** // * CLASS TABLE From 1e8c285eef2490e9e9c0f85cc56004501720ea83 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Thu, 26 Aug 2021 23:09:56 -0400 Subject: [PATCH 76/92] Just renaming/rearranging variables --- server/googleActions.js | 3 ++- server/homebrew.api.js | 22 +++++++++++----------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/server/googleActions.js b/server/googleActions.js index d193f32f8..aca84daa3 100644 --- a/server/googleActions.js +++ b/server/googleActions.js @@ -163,7 +163,8 @@ GoogleActions = { version : brew.version, renderer : brew.renderer, tags : brew.tags, - systems : brew.systems.join() } + systems : brew.systems.join() + } }, media : { mimeType : 'text/plain', diff --git a/server/homebrew.api.js b/server/homebrew.api.js index afd5a8d30..59d4f6d68 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -19,6 +19,15 @@ const getGoodBrewTitle = (text)=>{ .slice(0, MAX_TITLE_LENGTH); }; +const excludePropsFromUpdate = (brew)=>{ + // Remove undesired properties + const propsToExclude = ['views', 'lastViewed']; + for (const prop of propsToExclude) { + delete brew[prop]; + }; + return brew; +}; + const mergeBrewText = (text, style)=>{ if(typeof style !== 'undefined') { text = `\`\`\`css\n` + @@ -61,19 +70,10 @@ const newBrew = (req, res)=>{ }); }; -const cleanBrew = (brew)=>{ - // Remove undesired properties - const undesiredPropertyNames=['views', 'lastViewed']; - for (const undesiredProperty of undesiredPropertyNames) { - delete brew[undesiredProperty]; - }; - return brew; -}; - const updateBrew = (req, res)=>{ HomebrewModel.get({ editId: req.params.id }) .then((brew)=>{ - const updateBrew = cleanBrew(req.body); + const updateBrew = excludePropsFromUpdate(req.body); brew = _.merge(brew, updateBrew); brew.text = mergeBrewText(brew.text, brew.style); @@ -164,7 +164,7 @@ const updateGoogleBrew = async (req, res, next)=>{ try { oAuth2Client = GoogleActions.authCheck(req.account, res); } catch (err) { return res.status(err.status).send(err.message); } - const brew = cleanBrew(req.body); + const brew = excludePropsFromUpdate(req.body); brew.text = mergeBrewText(brew.text, brew.style); try { From b4825e085e270ca176de0517636392ea262bddf9 Mon Sep 17 00:00:00 2001 From: Gazook89 <58999374+Gazook89@users.noreply.github.com> Date: Fri, 27 Aug 2021 10:40:40 -0500 Subject: [PATCH 77/92] fix table snippet spacing in editor --- .../snippetbar/snippets/classtable.gen.js | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/client/homebrew/editor/snippetbar/snippets/classtable.gen.js b/client/homebrew/editor/snippetbar/snippets/classtable.gen.js index 0c72ac898..0055adf65 100644 --- a/client/homebrew/editor/snippetbar/snippets/classtable.gen.js +++ b/client/homebrew/editor/snippetbar/snippets/classtable.gen.js @@ -52,14 +52,14 @@ const getFeature = (level)=>{ const maxes = [4, 3, 3, 3, 3, 2, 2, 1, 1]; -const drawSlots = function(Slots, rows){ +const drawSlots = function(Slots, rows, padding){ let slots = Number(Slots); return _.times(rows, function(i){ const max = maxes[i]; - if(slots < 1) return '—'; + if(slots < 1) return _.pad('—', padding); const res = _.min([max, slots]); slots -= res; - return res; + return _.pad(res.toString(), padding); }).join(' | '); }; @@ -72,17 +72,17 @@ module.exports = { let spells = 1; let slots = 2; return `{{${classes}\n##### The ${classname}\n` + - `| Level | Proficiency | Features | Cantrips | Spells | --- Spell Slots Per Spell Level --- |||||||||\n`+ - `| ^| Bonus ^| ^| Known ^| Known ^| 1st | 2nd | 3rd | 4th | 5th | 6th | 7th | 8th | 9th |\n`+ - `|:-----:|:-----------:|:---------|:--------:|:------:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n${ + `| Level | Proficiency | Features | Cantrips | Spells | --- Spell Slots Per Spell Level --- |||||||||\n`+ + `| ^| Bonus ^| ^| Known ^| Known ^| 1st | 2nd | 3rd | 4th | 5th | 6th | 7th | 8th | 9th |\n`+ + `|:-----:|:-----------:|:--------------------------------------------------------|:--------:|:------:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n${ _.map(levels, function(levelName, level){ const res = [ - levelName, - `+${profBonus[level]}`, - getFeature(level), - cantrips, - spells, - drawSlots(slots, 9) + _.pad(levelName, 5), + _.pad(`+${profBonus[level]}`, 11), + _.padEnd(getFeature(level), 55), + _.pad(cantrips.toString(), 8), + _.pad(spells.toString(), 6), + drawSlots(slots, 9, 3), ].join(' | '); cantrips += _.random(0, 1); @@ -98,14 +98,14 @@ module.exports = { let featureScore = 1; return `{{${classes}\n##### The ${classname}\n` + - `| Level | Proficiency Bonus | Features | ${_.sample(features)}|\n` + - `|:---:|:---:|:---|:---:|\n${ + `| Level | Proficiency Bonus | Features | ${_.pad(_.sample(features), 26)} |\n` + + `|:-----:|:-----------------:|:--------------------------------------------------------|:--------------------------:|\n${ _.map(levels, function(levelName, level){ const res = [ - levelName, - `+${profBonus[level]}`, - getFeature(level), - `+${featureScore}` + _.pad(levelName, 5), + _.pad(`+${profBonus[level]}`, 17), + _.padEnd(getFeature(level), 55), + _.pad(`+${featureScore}`, 26), ].join(' | '); featureScore += _.random(0, 1); @@ -121,15 +121,15 @@ module.exports = { let spells = 1; let slots = 2; return `{{${classes}\n##### ${classname} Spellcasting\n` + - `| Class | Cantrips | Spells | --- Spells Slots per Spell Level --- ||||\n` + - `| Level ^| Known ^| Known ^| 1st | 2nd | 3rd | 4th |\n` + - `|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n${ + `| Class | Cantrips | Spells | --- Spells Slots per Spell Level --- ||||\n` + + `| Level ^| Known ^| Known ^| 1st | 2nd | 3rd | 4th |\n` + + `|:------:|:--------:|:-------:|:--------:|:--------:|:--------:|:--------:|\n${ _.map(levels, function(levelName, level){ const res = [ - levelName, - cantrips, - spells, - drawSlots(slots, 4) + _.pad(levelName, 6), + _.pad(cantrips.toString(), 8), + _.pad(spells.toString(), 7), + drawSlots(slots, 4, 8), ].join(' | '); cantrips += _.random(0, 1); From 9d5130154be7c2d65de18524611e51881ff7a89b Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Fri, 27 Aug 2021 12:29:11 -0400 Subject: [PATCH 78/92] Remixed Feature names to be shorter. --- .../snippetbar/snippets/classtable.gen.js | 46 +++++++++---------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/client/homebrew/editor/snippetbar/snippets/classtable.gen.js b/client/homebrew/editor/snippetbar/snippets/classtable.gen.js index 0055adf65..789d15b68 100644 --- a/client/homebrew/editor/snippetbar/snippets/classtable.gen.js +++ b/client/homebrew/editor/snippetbar/snippets/classtable.gen.js @@ -4,33 +4,31 @@ const features = [ 'Astrological Botany', 'Astrological Chemistry', 'Biochemical Sorcery', - 'Civil Alchemy', - 'Consecrated Biochemistry', + 'Civil Divination', + 'Consecrated Augury', 'Demonic Anthropology', 'Divinatory Mineralogy', - 'Genetic Banishing', - 'Hermetic Geography', - 'Immunological Incantations', - 'Nuclear Illusionism', - 'Ritual Astronomy', - 'Seismological Divination', - 'Spiritual Biochemistry', - 'Statistical Occultism', - 'Police Necromancer', - 'Sixgun Poisoner', - 'Pharmaceutical Gunslinger', - 'Infernal Banker', - 'Spell Analyst', - 'Gunslinger Corruptor', - 'Torque Interfacer', 'Exo Interfacer', + 'Genetic Banishing', 'Gunpowder Torturer', - 'Orbital Gravedigger', - 'Phased Linguist', - 'Mathematical Pharmacist', - 'Plasma Outlaw', + 'Gunslinger Corruptor', + 'Hermetic Geography', + 'Immunological Cultist', 'Malefic Chemist', - 'Police Cultist' + 'Mathematical Pharmacy', + 'Nuclear Biochemistry', + 'Orbital Gravedigger', + 'Pharmaceutical Outlaw', + 'Phased Linguist', + 'Plasma Gunslinger', + 'Police Necromancer', + 'Ritual Astronomy', + 'Sixgun Poisoner', + 'Seismological Alchemy', + 'Spiritual Illusionism', + 'Statistical Occultism', + 'Spell Analyst', + 'Torque Interfacer' ]; const classnames = ['Archivist', 'Fancyman', 'Linguist', 'Fletcher', @@ -79,7 +77,7 @@ module.exports = { const res = [ _.pad(levelName, 5), _.pad(`+${profBonus[level]}`, 11), - _.padEnd(getFeature(level), 55), + _.padEnd(getFeature(level), 48), _.pad(cantrips.toString(), 8), _.pad(spells.toString(), 6), drawSlots(slots, 9, 3), @@ -104,7 +102,7 @@ module.exports = { const res = [ _.pad(levelName, 5), _.pad(`+${profBonus[level]}`, 17), - _.padEnd(getFeature(level), 55), + _.padEnd(getFeature(level), 48), _.pad(`+${featureScore}`, 26), ].join(' | '); From e5cfa98bbde35cb3fb0c574785dcf38e2a9d9a44 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Fri, 27 Aug 2021 12:30:57 -0400 Subject: [PATCH 79/92] Shorten Features column to match shorter names --- .../editor/snippetbar/snippets/classtable.gen.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/client/homebrew/editor/snippetbar/snippets/classtable.gen.js b/client/homebrew/editor/snippetbar/snippets/classtable.gen.js index 789d15b68..40c133b7a 100644 --- a/client/homebrew/editor/snippetbar/snippets/classtable.gen.js +++ b/client/homebrew/editor/snippetbar/snippets/classtable.gen.js @@ -70,9 +70,9 @@ module.exports = { let spells = 1; let slots = 2; return `{{${classes}\n##### The ${classname}\n` + - `| Level | Proficiency | Features | Cantrips | Spells | --- Spell Slots Per Spell Level --- |||||||||\n`+ - `| ^| Bonus ^| ^| Known ^| Known ^| 1st | 2nd | 3rd | 4th | 5th | 6th | 7th | 8th | 9th |\n`+ - `|:-----:|:-----------:|:--------------------------------------------------------|:--------:|:------:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n${ + `| Level | Proficiency | Features | Cantrips | Spells | --- Spell Slots Per Spell Level --- |||||||||\n`+ + `| ^| Bonus ^| ^| Known ^| Known ^| 1st | 2nd | 3rd | 4th | 5th | 6th | 7th | 8th | 9th |\n`+ + `|:-----:|:-----------:|:-----------------------------------------------|:--------:|:------:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n${ _.map(levels, function(levelName, level){ const res = [ _.pad(levelName, 5), @@ -96,8 +96,8 @@ module.exports = { let featureScore = 1; return `{{${classes}\n##### The ${classname}\n` + - `| Level | Proficiency Bonus | Features | ${_.pad(_.sample(features), 26)} |\n` + - `|:-----:|:-----------------:|:--------------------------------------------------------|:--------------------------:|\n${ + `| Level | Proficiency Bonus | Features | ${_.pad(_.sample(features), 26)} |\n` + + `|:-----:|:-----------------:|:-----------------------------------------------|:--------------------------:|\n${ _.map(levels, function(levelName, level){ const res = [ _.pad(levelName, 5), @@ -137,5 +137,4 @@ module.exports = { return `| ${res} |`; }).join('\n')}\n}}\n\n`; } - }; From 04b2421793c9378799f31fd13550168e6b2dfb5f Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Sat, 28 Aug 2021 11:03:47 +1200 Subject: [PATCH 80/92] Update client/homebrew/editor/editor.jsx Co-authored-by: Trevor Buckner --- 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 ce18aa689..5f6a70493 100644 --- a/client/homebrew/editor/editor.jsx +++ b/client/homebrew/editor/editor.jsx @@ -70,7 +70,7 @@ const Editor = createClass({ handleInject : function(injectText){ const text = ( this.isText() && this.props.brew.text || - this.isStyle() && (this.props.brew.style || DEFAULT_STYLE_TEXT) + this.isStyle() && (this.props.brew.style ?? DEFAULT_STYLE_TEXT) ); const lines = text.split('\n'); From 5f837f7b3ca92616d3971938c49b3c85830dfa90 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Sat, 28 Aug 2021 11:09:33 +1200 Subject: [PATCH 81/92] Update client/homebrew/pages/userPage/userPage.jsx Co-authored-by: Trevor Buckner --- client/homebrew/pages/userPage/userPage.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/homebrew/pages/userPage/userPage.jsx b/client/homebrew/pages/userPage/userPage.jsx index b2b0df5ec..51c940071 100644 --- a/client/homebrew/pages/userPage/userPage.jsx +++ b/client/homebrew/pages/userPage/userPage.jsx @@ -146,7 +146,7 @@ const UserPage = createClass({ getSortedBrews : function(){ const testString = _.deburr(this.state.filterString).toLowerCase(); const brewCollection = this.state.filterString ? _.filter(this.props.brews, (brew)=>{ - return (_.deburr(brew?.title).toLowerCase().includes(testString)) || + return (_.deburr(brew.title).toLowerCase().includes(testString)) || (_.deburr(brew?.description).toLowerCase().includes(testString)); }) : this.props.brews; return _.groupBy(brewCollection, (brew)=>{ From 22fb84ca326ece9ad0d67eb69517d07ea79dd3e3 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Sat, 28 Aug 2021 12:12:35 +1200 Subject: [PATCH 82/92] Update client/homebrew/pages/userPage/userPage.jsx Co-authored-by: Trevor Buckner --- client/homebrew/pages/userPage/userPage.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/homebrew/pages/userPage/userPage.jsx b/client/homebrew/pages/userPage/userPage.jsx index 51c940071..4feffe21c 100644 --- a/client/homebrew/pages/userPage/userPage.jsx +++ b/client/homebrew/pages/userPage/userPage.jsx @@ -147,7 +147,7 @@ const UserPage = createClass({ const testString = _.deburr(this.state.filterString).toLowerCase(); const brewCollection = this.state.filterString ? _.filter(this.props.brews, (brew)=>{ return (_.deburr(brew.title).toLowerCase().includes(testString)) || - (_.deburr(brew?.description).toLowerCase().includes(testString)); + (_.deburr(brew.description).toLowerCase().includes(testString)); }) : this.props.brews; return _.groupBy(brewCollection, (brew)=>{ return (brew.published ? 'published' : 'private'); From 56be8931bbb61284771be42417a49c274adbc330 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Aug 2021 03:00:46 +0000 Subject: [PATCH 83/92] Bump react-router-dom from 5.2.0 to 5.2.1 Bumps [react-router-dom](https://github.com/ReactTraining/react-router) from 5.2.0 to 5.2.1. - [Release notes](https://github.com/ReactTraining/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/CHANGELOG.md) - [Commits](https://github.com/ReactTraining/react-router/compare/v5.2.0...v5.2.1) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 233 ++++++++++++++++------------------------------ package.json | 2 +- 2 files changed, 83 insertions(+), 152 deletions(-) diff --git a/package-lock.json b/package-lock.json index 23b1552f8..1f4eef4ea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,7 +38,7 @@ "react": "^16.14.0", "react-dom": "^16.14.0", "react-frame-component": "4.1.3", - "react-router-dom": "5.2.0", + "react-router-dom": "5.2.1", "sanitize-filename": "1.6.3", "superagent": "^6.1.0", "vitreum": "git+https://git@github.com/calculuschild/vitreum.git" @@ -1665,11 +1665,14 @@ } }, "node_modules/@babel/runtime": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.6.tgz", - "integrity": "sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ==", + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.3.tgz", + "integrity": "sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==", "dependencies": { "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/runtime/node_modules/regenerator-runtime": { @@ -6185,15 +6188,6 @@ "node": ">=4" } }, - "node_modules/mini-create-react-context": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.0.tgz", - "integrity": "sha512-b0TytUgFSbgFJGzJqXPKCFCBWigAjpjo+Fl7Vf7ZbKRDptszpppKxXH6DRXEABZ/gcEQczeb0iZ7JvL8e8jjCA==", - "dependencies": { - "@babel/runtime": "^7.5.5", - "tiny-warning": "^1.0.3" - } - }, "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -7287,12 +7281,42 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.12.0.tgz", "integrity": "sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==" }, - "node_modules/react-router": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", - "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==", + "node_modules/react-router-dom": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.1.tgz", + "integrity": "sha512-xhFFkBGVcIVPbWM2KEYzED+nuHQPmulVa7sqIs3ESxzYd1pYg8N8rxPnQ4T2o1zu/2QeDUWcaqST131SO1LR3w==", "dependencies": { - "@babel/runtime": "^7.1.2", + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.2.1", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-router-dom/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "node_modules/react-router-dom/node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/react-router-dom/node_modules/react-router": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.1.tgz", + "integrity": "sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ==", + "dependencies": { + "@babel/runtime": "^7.12.13", "history": "^4.9.0", "hoist-non-react-statics": "^3.1.0", "loose-envify": "^1.3.1", @@ -7302,75 +7326,22 @@ "react-is": "^16.6.0", "tiny-invariant": "^1.0.2", "tiny-warning": "^1.0.0" - } - }, - "node_modules/react-router-dom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz", - "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==", - "dependencies": { - "@babel/runtime": "^7.1.2", - "history": "^4.9.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.2", - "react-router": "5.2.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - } - }, - "node_modules/react-router-dom/node_modules/prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "node_modules/react-router-dom/node_modules/prop-types/node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" }, - "bin": { - "loose-envify": "cli.js" + "peerDependencies": { + "react": ">=15" } }, - "node_modules/react-router/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "node_modules/react-router/node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "node_modules/react-router-dom/node_modules/react-router/node_modules/mini-create-react-context": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz", + "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==", "dependencies": { - "isarray": "0.0.1" - } - }, - "node_modules/react-router/node_modules/prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "node_modules/react-router/node_modules/prop-types/node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" + "@babel/runtime": "^7.12.1", + "tiny-warning": "^1.0.3" }, - "bin": { - "loose-envify": "cli.js" + "peerDependencies": { + "prop-types": "^15.0.0", + "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "node_modules/read-only-stream": { @@ -10616,9 +10587,9 @@ } }, "@babel/runtime": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.6.tgz", - "integrity": "sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ==", + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.3.tgz", + "integrity": "sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==", "requires": { "regenerator-runtime": "^0.13.4" }, @@ -14247,15 +14218,6 @@ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" }, - "mini-create-react-context": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.0.tgz", - "integrity": "sha512-b0TytUgFSbgFJGzJqXPKCFCBWigAjpjo+Fl7Vf7ZbKRDptszpppKxXH6DRXEABZ/gcEQczeb0iZ7JvL8e8jjCA==", - "requires": { - "@babel/runtime": "^7.5.5", - "tiny-warning": "^1.0.3" - } - }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -15108,19 +15070,16 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.12.0.tgz", "integrity": "sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==" }, - "react-router": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", - "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==", + "react-router-dom": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.1.tgz", + "integrity": "sha512-xhFFkBGVcIVPbWM2KEYzED+nuHQPmulVa7sqIs3ESxzYd1pYg8N8rxPnQ4T2o1zu/2QeDUWcaqST131SO1LR3w==", "requires": { - "@babel/runtime": "^7.1.2", + "@babel/runtime": "^7.12.13", "history": "^4.9.0", - "hoist-non-react-statics": "^3.1.0", "loose-envify": "^1.3.1", - "mini-create-react-context": "^0.4.0", - "path-to-regexp": "^1.7.0", "prop-types": "^15.6.2", - "react-is": "^16.6.0", + "react-router": "5.2.1", "tiny-invariant": "^1.0.2", "tiny-warning": "^1.0.0" }, @@ -15138,58 +15097,30 @@ "isarray": "0.0.1" } }, - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "react-router": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.1.tgz", + "integrity": "sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ==", "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "mini-create-react-context": "^0.4.0", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" }, "dependencies": { - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "mini-create-react-context": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz", + "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==", "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - } - } - } - } - }, - "react-router-dom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz", - "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==", - "requires": { - "@babel/runtime": "^7.1.2", - "history": "^4.9.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.2", - "react-router": "5.2.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - }, - "dependencies": { - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - }, - "dependencies": { - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" + "@babel/runtime": "^7.12.1", + "tiny-warning": "^1.0.3" } } } diff --git a/package.json b/package.json index cfec9fd64..f3cedf573 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,7 @@ "react": "^16.14.0", "react-dom": "^16.14.0", "react-frame-component": "4.1.3", - "react-router-dom": "5.2.0", + "react-router-dom": "5.2.1", "sanitize-filename": "1.6.3", "superagent": "^6.1.0", "vitreum": "git+https://git@github.com/calculuschild/vitreum.git" From d41a868f07f8abec3d873e482fd2995191657128 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Aug 2021 03:00:59 +0000 Subject: [PATCH 84/92] Bump eslint-plugin-react from 7.24.0 to 7.25.0 Bumps [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) from 7.24.0 to 7.25.0. - [Release notes](https://github.com/yannickcr/eslint-plugin-react/releases) - [Changelog](https://github.com/yannickcr/eslint-plugin-react/blob/master/CHANGELOG.md) - [Commits](https://github.com/yannickcr/eslint-plugin-react/compare/v7.24.0...v7.25.0) --- updated-dependencies: - dependency-name: eslint-plugin-react dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 31 ++++++++++++++++++++++++------- package.json | 2 +- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 23b1552f8..bd6a55633 100644 --- a/package-lock.json +++ b/package-lock.json @@ -45,7 +45,7 @@ }, "devDependencies": { "eslint": "^7.32.0", - "eslint-plugin-react": "^7.24.0", + "eslint-plugin-react": "^7.25.0", "pico-check": "^2.1.3" }, "engines": { @@ -3856,14 +3856,15 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.24.0.tgz", - "integrity": "sha512-KJJIx2SYx7PBx3ONe/mEeMz4YE0Lcr7feJTCMyyKb/341NcjuAgim3Acgan89GfPv7nxXK2+0slu0CWXYM4x+Q==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.25.0.tgz", + "integrity": "sha512-bZL+HeB+Qaimb4ryOc+OYYOX0XnOr6FX30ZXkzL8iSJA3tATTtZ1YgYyjK3jGvVDcZMejfUaeS/5wKDfTgyfVw==", "dev": true, "dependencies": { "array-includes": "^3.1.3", "array.prototype.flatmap": "^1.2.4", "doctrine": "^2.1.0", + "estraverse": "^5.2.0", "has": "^1.0.3", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.0.4", @@ -3893,6 +3894,15 @@ "node": ">=0.10.0" } }, + "node_modules/eslint-plugin-react/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/eslint-plugin-react/node_modules/resolve": { "version": "2.0.0-next.3", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", @@ -12517,14 +12527,15 @@ } }, "eslint-plugin-react": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.24.0.tgz", - "integrity": "sha512-KJJIx2SYx7PBx3ONe/mEeMz4YE0Lcr7feJTCMyyKb/341NcjuAgim3Acgan89GfPv7nxXK2+0slu0CWXYM4x+Q==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.25.0.tgz", + "integrity": "sha512-bZL+HeB+Qaimb4ryOc+OYYOX0XnOr6FX30ZXkzL8iSJA3tATTtZ1YgYyjK3jGvVDcZMejfUaeS/5wKDfTgyfVw==", "dev": true, "requires": { "array-includes": "^3.1.3", "array.prototype.flatmap": "^1.2.4", "doctrine": "^2.1.0", + "estraverse": "^5.2.0", "has": "^1.0.3", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.0.4", @@ -12545,6 +12556,12 @@ "esutils": "^2.0.2" } }, + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + }, "resolve": { "version": "2.0.0-next.3", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", diff --git a/package.json b/package.json index cfec9fd64..55d5391fd 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,7 @@ }, "devDependencies": { "eslint": "^7.32.0", - "eslint-plugin-react": "^7.24.0", + "eslint-plugin-react": "^7.25.0", "pico-check": "^2.1.3" } } From 0e5ed35b6cdbbac893b6c78a97a7150027552dbb Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Mon, 30 Aug 2021 13:34:12 -0400 Subject: [PATCH 85/92] Fixing drop caps inside `columnWrap` --- .../homebrew/pages/homePage/welcome_msg_v3.md | 14 +--- server.js | 5 +- themes/5ePhb.style.less | 74 +++++++++++-------- 3 files changed, 51 insertions(+), 42 deletions(-) diff --git a/client/homebrew/pages/homePage/welcome_msg_v3.md b/client/homebrew/pages/homePage/welcome_msg_v3.md index 471932ed1..553d7aa2e 100644 --- a/client/homebrew/pages/homePage/welcome_msg_v3.md +++ b/client/homebrew/pages/homePage/welcome_msg_v3.md @@ -4,7 +4,7 @@ } .page { - padding-bottom : 1.6cm; + padding-bottom : 1.3cm; } @@ -37,7 +37,10 @@ After clicking the "Print" item in the navbar a new page will open and a print d If you want to save ink or have a monochrome printer, add the {{fas,fa-tint}} **Ink Friendly** snippet to your brew before you print + +
1
+
PART 1 | FANCINESS
\column @@ -75,15 +78,6 @@ If you'd like to credit The Homebrewery in your brew, I'd be flattered! Just ref If you are looking for more 5e Homebrew resources check out [r/UnearthedArcana](https://www.reddit.com/r/UnearthedArcana/) and their list of useful resources [here](https://www.reddit.com/r/UnearthedArcana/comments/3uwxx9/resources_open_to_the_community/). - - - -
1
-
PART 1 | FANCINESS
- - - - \page ## Markdown+ diff --git a/server.js b/server.js index fbf741ec0..2f1564b20 100644 --- a/server.js +++ b/server.js @@ -134,8 +134,9 @@ app.get('/v3_preview', async (req, res, next)=>{ //Changelog page app.get('/changelog', async (req, res, next)=>{ const brew = { - title : 'Changelog', - text : changelogText + title : 'Changelog', + text : changelogText, + renderer : 'V3' }; req.brew = brew; return next(); diff --git a/themes/5ePhb.style.less b/themes/5ePhb.style.less index a057fbabb..8de832793 100644 --- a/themes/5ePhb.style.less +++ b/themes/5ePhb.style.less @@ -48,6 +48,8 @@ body { } .columnWrapper{ max-height : 100%; + column-span : all; + columns : inherit; } .page{ .useColumns(); @@ -71,10 +73,13 @@ body { // *****************************/ p{ overflow-wrap : break-word; //TODO: MAKE ALL MARGINS TOP-ONLY. USE * + * STYLE SELECTORS - margin-bottom : 0.8em; + display : block; line-height : 1.3em; + &+* { + margin-top : 0.27cm; + } &+p{ - margin-top : -0.8em; + margin-top : 0; } } ul{ @@ -124,50 +129,49 @@ body { color : @headerText; } h1{ - margin-bottom : 0.18cm; + margin-bottom : 0.18cm; //Margin-bottom only because this is WIDE column-span : all; font-size : 0.89cm; -webkit-column-span : all; -moz-column-span : all; &+p::first-letter{ - float : left; - font-family : SolberaImitationRemake; - line-height : 0.8em; - font-size: 3.5cm; - padding-left: 40px; - margin-left: -40px; - padding-top:10px; - margin-top:-8px; - padding-bottom:10px; - margin-bottom:-20px; - background-image: linear-gradient(-45deg, #322814, #998250, #322814); - background-clip: text; - -webkit-background-clip: text; - color: rgba(0, 0, 0, 0); + float : left; + font-family : SolberaImitationRemake; + line-height : 1em; + font-size : 3.5cm; + padding-left : 40px; //Allow background color to extend into margins + margin-left : -40px; + margin-top :-0.3cm; + padding-bottom :2px; + margin-bottom :-20px; + background-image : linear-gradient(-45deg, #322814, #998250, #322814); + background-clip : text; + -webkit-background-clip : text; + color : rgba(0, 0, 0, 0); } &+p::first-line{ font-variant : small-caps; } } h2{ - margin-top : 0px; - margin-bottom : 0.05cm; + //margin-top : 0px; //Font is misaligned. Shift up slightly + //margin-bottom : 0.05cm; font-size : 0.75cm; } h3{ - margin-top : -0.1cm; - margin-bottom : 0.1cm; + //margin-top : -0.1cm; //Font is misaligned. Shift up slightly + //margin-bottom : 0.1cm; font-size : 0.575cm; border-bottom : 2px solid @headerUnderline; } h4{ - margin-top : -0.02cm; - margin-bottom : 0.02cm; + //margin-top : -0.02cm; //Font is misaligned. Shift up slightly + //margin-bottom : 0.02cm; font-size : 0.458cm; } h5{ - margin-top : -0.02cm; - margin-bottom : 0.02cm; + //margin-top : -0.02cm; //Font is misaligned. Shift up slightly + //margin-bottom : 0.02cm; font-family : ScalySansSmallCapsRemake; font-size : 0.423cm; font-weight : 900; @@ -480,6 +484,9 @@ body { break-after : always; -moz-column-break-after : always; break-before : column; + &+* { + margin-top: 0; + } } //Avoid breaking up blockquote,table{ @@ -541,6 +548,10 @@ body { -webkit-column-span : all; -moz-column-span : all; display : block; + margin-bottom : 0.34cm; + &+* { + margin-top : 0; + } } //***************************** // * CLASS TABLE @@ -659,15 +670,18 @@ body { line-height : 1.3em; padding-left : 1em; text-indent : -1em; + & + * { + margin-top : 0.28cm; + } + & + dl { + margin-top : 0; + } } dl + * { - margin-top : 0.28cm; - } - dl + p { - margin-top : 0.5em; + margin-top : 0.17cm; } p + dl { - margin-top: -0.5em; + margin-top: 0.17cm; } dt { display : inline; From 03eef94232f1729b5224856ec4ca541a7b8b4763 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Mon, 30 Aug 2021 13:40:43 -0400 Subject: [PATCH 86/92] Allows DL hanging indents in the mosnter stat block that are not red. --- themes/5ePhb.style.less | 3 +++ 1 file changed, 3 insertions(+) diff --git a/themes/5ePhb.style.less b/themes/5ePhb.style.less index a057fbabb..0c24e7b76 100644 --- a/themes/5ePhb.style.less +++ b/themes/5ePhb.style.less @@ -362,6 +362,9 @@ body { dl { color : @headerText; } + hr:last-of-type~dl{ + color : inherit; // After the HRs, hanging indents remain black. + } // Monster Ability table hr + table:first-of-type{ From ec494298101c8aada29de8aa1a3345039ebb587a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 31 Aug 2021 03:00:48 +0000 Subject: [PATCH 87/92] Bump eslint-plugin-react from 7.25.0 to 7.25.1 Bumps [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) from 7.25.0 to 7.25.1. - [Release notes](https://github.com/yannickcr/eslint-plugin-react/releases) - [Changelog](https://github.com/yannickcr/eslint-plugin-react/blob/master/CHANGELOG.md) - [Commits](https://github.com/yannickcr/eslint-plugin-react/compare/v7.25.0...v7.25.1) --- updated-dependencies: - dependency-name: eslint-plugin-react dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index e2b6f314c..9cb431541 100644 --- a/package-lock.json +++ b/package-lock.json @@ -45,7 +45,7 @@ }, "devDependencies": { "eslint": "^7.32.0", - "eslint-plugin-react": "^7.25.0", + "eslint-plugin-react": "^7.25.1", "pico-check": "^2.1.3" }, "engines": { @@ -3859,9 +3859,9 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.25.0.tgz", - "integrity": "sha512-bZL+HeB+Qaimb4ryOc+OYYOX0XnOr6FX30ZXkzL8iSJA3tATTtZ1YgYyjK3jGvVDcZMejfUaeS/5wKDfTgyfVw==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.25.1.tgz", + "integrity": "sha512-P4j9K1dHoFXxDNP05AtixcJEvIT6ht8FhYKsrkY0MPCPaUMYijhpWwNiRDZVtA8KFuZOkGSeft6QwH8KuVpJug==", "dev": true, "dependencies": { "array-includes": "^3.1.3", @@ -12498,9 +12498,9 @@ } }, "eslint-plugin-react": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.25.0.tgz", - "integrity": "sha512-bZL+HeB+Qaimb4ryOc+OYYOX0XnOr6FX30ZXkzL8iSJA3tATTtZ1YgYyjK3jGvVDcZMejfUaeS/5wKDfTgyfVw==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.25.1.tgz", + "integrity": "sha512-P4j9K1dHoFXxDNP05AtixcJEvIT6ht8FhYKsrkY0MPCPaUMYijhpWwNiRDZVtA8KFuZOkGSeft6QwH8KuVpJug==", "dev": true, "requires": { "array-includes": "^3.1.3", diff --git a/package.json b/package.json index 9186f77a7..2fa3e481e 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,7 @@ }, "devDependencies": { "eslint": "^7.32.0", - "eslint-plugin-react": "^7.25.0", + "eslint-plugin-react": "^7.25.1", "pico-check": "^2.1.3" } } From 13ba5ebcc8766c33d7bf2aed01fb2f2fd0585927 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Tue, 31 Aug 2021 11:56:48 -0400 Subject: [PATCH 88/92] 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 89/92] 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 90/92] 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 (
From 1096c80b17c2562eece7d962b9b62232eb7b1481 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Tue, 31 Aug 2021 13:50:45 -0400 Subject: [PATCH 91/92] Make Markdown extensions work with Marked.js 3 --- package-lock.json | 16 ++++++++-------- package.json | 2 +- shared/naturalcrit/markdown.js | 28 ++++++++++++++-------------- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9cb431541..5476b98d4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "jwt-simple": "^0.5.6", "less": "^3.13.1", "lodash": "^4.17.21", - "marked": "2.1.3", + "marked": "3.0.2", "markedLegacy": "npm:marked@^0.3.19", "moment": "^2.29.1", "mongoose": "^5.13.7", @@ -5974,14 +5974,14 @@ } }, "node_modules/marked": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/marked/-/marked-2.1.3.tgz", - "integrity": "sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-3.0.2.tgz", + "integrity": "sha512-TMJQQ79Z0e3rJYazY0tIoMsFzteUGw9fB3FD+gzuIT3zLuG9L9ckIvUfF51apdJkcqc208jJN2KbtPbOvXtbjA==", "bin": { "marked": "bin/marked" }, "engines": { - "node": ">= 10" + "node": ">= 12" } }, "node_modules/markedLegacy": { @@ -14059,9 +14059,9 @@ } }, "marked": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/marked/-/marked-2.1.3.tgz", - "integrity": "sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA==" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-3.0.2.tgz", + "integrity": "sha512-TMJQQ79Z0e3rJYazY0tIoMsFzteUGw9fB3FD+gzuIT3zLuG9L9ckIvUfF51apdJkcqc208jJN2KbtPbOvXtbjA==" }, "markedLegacy": { "version": "npm:marked@0.3.19", diff --git a/package.json b/package.json index 2fa3e481e..2aafba0a8 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "jwt-simple": "^0.5.6", "less": "^3.13.1", "lodash": "^4.17.21", - "marked": "2.1.3", + "marked": "3.0.2", "markedLegacy": "npm:marked@^0.3.19", "moment": "^2.29.1", "mongoose": "^5.13.7", diff --git a/shared/naturalcrit/markdown.js b/shared/naturalcrit/markdown.js index b37dedf81..8f01f0147 100644 --- a/shared/naturalcrit/markdown.js +++ b/shared/naturalcrit/markdown.js @@ -65,13 +65,13 @@ const mustacheSpans = { raw : raw, // Text to consume from the source text : text, // Additional custom properties tags : tags, - tokens : this.inlineTokens(text) // inlineTokens to process **bold**, *italics*, etc. + tokens : this.lexer.inlineTokens(text) // inlineTokens to process **bold**, *italics*, etc. }; } } }, renderer(token) { - return `${this.parser.parseInline(token.tokens)}`; // parseInline to turn child tokens into HTML } }; @@ -114,13 +114,13 @@ const mustacheDivs = { raw : raw, // Text to consume from the source text : text, // Additional custom properties tags : tags, - tokens : this.inline(this.blockTokens(text)) + tokens : this.lexer.blockTokens(text) }; } } }, renderer(token) { - return `
${this.parser.parse(token.tokens)}
`; // parseInline to turn child tokens into HTML } }; @@ -149,7 +149,7 @@ const mustacheInjectInline = { }, renderer(token) { token.type = token.originalType; - const text = this.parseInline([token]); + const text = this.parser.parseInline([token]); const openingTag = /(<[^\s<>]+)([^\n<>]*>.*)/s.exec(text); if(openingTag) { return `${openingTag[1]} class="${token.tags}${openingTag[2]}`; @@ -182,7 +182,7 @@ const mustacheInjectBlock = { }, renderer(token) { token.type = token.originalType; - const text = this.parse([token]); + const text = this.parser.parse([token]); const openingTag = /(<[^\s<>]+)([^\n<>]*>.*)/s.exec(text); if(openingTag) { return `${openingTag[1]} class="${token.tags}${openingTag[2]}`; @@ -211,8 +211,8 @@ const definitionLists = { const definitions = []; while (match = regex.exec(src)) { definitions.push({ - dt : this.inlineTokens(match[1].trim()), - dd : this.inlineTokens(match[2].trim()) + dt : this.lexer.inlineTokens(match[1].trim()), + dd : this.lexer.inlineTokens(match[2].trim()) }); endIndex = regex.lastIndex; } @@ -227,8 +227,8 @@ const definitionLists = { renderer(token) { return `
${token.definitions.reduce((html, def)=>{ - return `${html}
${this.parseInline(def.dt)}
` - + `
${this.parseInline(def.dd)}
\n`; + return `${html}
${this.parser.parseInline(def.dt)}
` + + `
${this.parser.parseInline(def.dd)}
\n`; }, '')}
`; } @@ -302,7 +302,7 @@ const spanTable = { row = item.header[j]; for (k = 0; k < row.length; k++) { row[k].tokens = []; - this.inlineTokens(row[k].text, row[k].tokens); + this.lexer.inlineTokens(row[k].text, row[k].tokens); } } @@ -312,7 +312,7 @@ const spanTable = { row = item.rows[j]; for (k = 0; k < row.length; k++) { row[k].tokens = []; - this.inlineTokens(row[k].text, row[k].tokens); + this.lexer.inlineTokens(row[k].text, row[k].tokens); } } return item; @@ -329,7 +329,7 @@ const spanTable = { output += ``; for (j = 0; j < row.length; j++) { cell = row[j]; - text = this.parseInline(cell.tokens); + text = this.parser.parseInline(cell.tokens); output += getTableCell(text, cell, 'th', token.align[col]); col += cell.colspan; } @@ -344,7 +344,7 @@ const spanTable = { output += ``; for (j = 0; j < row.length; j++) { cell = row[j]; - text = this.parseInline(cell.tokens); + text = this.parser.parseInline(cell.tokens); output += getTableCell(text, cell, 'td', token.align[col]); col += cell.colspan; } From f5057119da7edd726ec8f051f472c42c8202109e Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Tue, 31 Aug 2021 16:39:13 -0400 Subject: [PATCH 92/92] Shrink tables width --- .../snippetbar/snippets/classtable.gen.js | 50 ++++++++----------- 1 file changed, 21 insertions(+), 29 deletions(-) diff --git a/client/homebrew/editor/snippetbar/snippets/classtable.gen.js b/client/homebrew/editor/snippetbar/snippets/classtable.gen.js index 40c133b7a..c1f6254f9 100644 --- a/client/homebrew/editor/snippetbar/snippets/classtable.gen.js +++ b/client/homebrew/editor/snippetbar/snippets/classtable.gen.js @@ -2,7 +2,6 @@ const _ = require('lodash'); const features = [ 'Astrological Botany', - 'Astrological Chemistry', 'Biochemical Sorcery', 'Civil Divination', 'Consecrated Augury', @@ -31,23 +30,16 @@ const features = [ 'Torque Interfacer' ]; -const classnames = ['Archivist', 'Fancyman', 'Linguist', 'Fletcher', - 'Notary', 'Berserker-Typist', 'Fishmongerer', 'Manicurist', 'Haberdasher', 'Concierge']; +const classnames = ['Ackerman', 'Berserker-Typist', 'Concierge', 'Fishmonger', + 'Haberdasher', 'Manicurist', 'Netrunner', 'Weirkeeper']; -const levels = ['1st', '2nd', '3rd', '4th', '5th', '6th', '7th', '8th', '9th', '10th', '11th', '12th', '13th', '14th', '15th', '16th', '17th', '18th', '19th', '20th']; +const levels = ['1st', '2nd', '3rd', '4th', '5th', + '6th', '7th', '8th', '9th', '10th', + '11th', '12th', '13th', '14th', '15th', + '16th', '17th', '18th', '19th', '20th']; const profBonus = [2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6]; -const getFeature = (level)=>{ - let res = []; - if(_.includes([4, 6, 8, 12, 14, 16, 19], level+1)){ - res = ['Ability Score Improvement']; - } - res = _.union(res, _.sampleSize(features, _.sample([0, 1, 1, 1, 1, 1]))); - if(!res.length) return '─'; - return res.join(', '); -}; - const maxes = [4, 3, 3, 3, 3, 2, 2, 1, 1]; const drawSlots = function(Slots, rows, padding){ @@ -70,17 +62,17 @@ module.exports = { let spells = 1; let slots = 2; return `{{${classes}\n##### The ${classname}\n` + - `| Level | Proficiency | Features | Cantrips | Spells | --- Spell Slots Per Spell Level --- |||||||||\n`+ - `| ^| Bonus ^| ^| Known ^| Known ^| 1st | 2nd | 3rd | 4th | 5th | 6th | 7th | 8th | 9th |\n`+ - `|:-----:|:-----------:|:-----------------------------------------------|:--------:|:------:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n${ + `| Level | Proficiency | Features | Cantrips | Spells | --- Spell Slots Per Spell Level ---|||||||||\n`+ + `| ^| Bonus ^| ^| Known ^| Known ^|1st |2nd |3rd |4th |5th |6th |7th |8th |9th |\n`+ + `|:-----:|:-----------:|:-------------|:--------:|:------:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|\n${ _.map(levels, function(levelName, level){ const res = [ _.pad(levelName, 5), - _.pad(`+${profBonus[level]}`, 11), - _.padEnd(getFeature(level), 48), + _.pad(`+${profBonus[level]}`, 2), + _.padEnd(_.sample(features), 21), _.pad(cantrips.toString(), 8), _.pad(spells.toString(), 6), - drawSlots(slots, 9, 3), + drawSlots(slots, 9, 2), ].join(' | '); cantrips += _.random(0, 1); @@ -96,14 +88,14 @@ module.exports = { let featureScore = 1; return `{{${classes}\n##### The ${classname}\n` + - `| Level | Proficiency Bonus | Features | ${_.pad(_.sample(features), 26)} |\n` + - `|:-----:|:-----------------:|:-----------------------------------------------|:--------------------------:|\n${ + `| Level | Proficiency Bonus | Features | ${_.pad(_.sample(features), 21)} |\n` + + `|:-----:|:-----------------:|:---------|:---------------------:|\n${ _.map(levels, function(levelName, level){ const res = [ _.pad(levelName, 5), - _.pad(`+${profBonus[level]}`, 17), - _.padEnd(getFeature(level), 48), - _.pad(`+${featureScore}`, 26), + _.pad(`+${profBonus[level]}`, 2), + _.padEnd(_.sample(features), 23), + _.pad(`+${featureScore}`, 21), ].join(' | '); featureScore += _.random(0, 1); @@ -119,15 +111,15 @@ module.exports = { let spells = 1; let slots = 2; return `{{${classes}\n##### ${classname} Spellcasting\n` + - `| Class | Cantrips | Spells | --- Spells Slots per Spell Level --- ||||\n` + - `| Level ^| Known ^| Known ^| 1st | 2nd | 3rd | 4th |\n` + - `|:------:|:--------:|:-------:|:--------:|:--------:|:--------:|:--------:|\n${ + `| Class | Cantrips | Spells |--- Spells Slots per Spell Level ---||||\n` + + `| Level ^| Known ^| Known ^| 1st | 2nd | 3rd | 4th |\n` + + `|:------:|:--------:|:-------:|:-------:|:-------:|:-------:|:-------:|\n${ _.map(levels, function(levelName, level){ const res = [ _.pad(levelName, 6), _.pad(cantrips.toString(), 8), _.pad(spells.toString(), 7), - drawSlots(slots, 4, 8), + drawSlots(slots, 4, 7), ].join(' | '); cantrips += _.random(0, 1);