0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2026-01-23 20:53:05 +00:00

Compare commits

...

1651 Commits

Author SHA1 Message Date
Trevor Buckner
1045867d73 Up version to 3.1.1 2022-06-09 00:26:22 -04:00
Trevor Buckner
0061e44339 3.1.1 2022-06-09 00:11:57 -04:00
Trevor Buckner
29eb2fe39e Merge pull request #2211 from naturalcrit/FixOverlappingDecorations
Fix Overlapping ClassTable Decorations
2022-06-09 00:09:35 -04:00
Trevor Buckner
f9af27b159 Merge pull request #2208 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.3.6
Bump mongoose from 6.3.5 to 6.3.6
2022-06-09 00:05:29 -04:00
Trevor Buckner
86f0abbfd1 Merge pull request #2209 from naturalcrit/dependabot/npm_and_yarn/googleapis-101.0.0
Bump googleapis from 100.0.0 to 101.0.0
2022-06-09 00:05:18 -04:00
Trevor Buckner
e2a46c4883 Merge pull request #2210 from naturalcrit/dependabot/npm_and_yarn/jest-28.1.1
Bump jest from 28.1.0 to 28.1.1
2022-06-09 00:04:43 -04:00
Trevor Buckner
389bcf1bbd Use z-index instead of translateZ 2022-06-08 00:44:58 -04:00
dependabot[bot]
b3ccbc183d Bump jest from 28.1.0 to 28.1.1
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 28.1.0 to 28.1.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v28.1.1/packages/jest)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-08 03:02:34 +00:00
dependabot[bot]
362cb4f728 Bump googleapis from 100.0.0 to 101.0.0
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 100.0.0 to 101.0.0.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/googleapis-v100.0.0...googleapis-v101.0.0)

---
updated-dependencies:
- dependency-name: googleapis
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-08 03:01:43 +00:00
dependabot[bot]
7bc2e5a71e Bump mongoose from 6.3.5 to 6.3.6
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.3.5 to 6.3.6.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.3.5...6.3.6)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-08 03:00:49 +00:00
Trevor Buckner
b1066a1df5 Merge pull request #2206 from naturalcrit/v3.1.0
Up version to 3.1.0
2022-06-06 00:45:12 -04:00
Trevor Buckner
111ade7719 Merge pull request #2205 from naturalcrit/dependabot/npm_and_yarn/eslint-8.17.0
Bump eslint from 8.16.0 to 8.17.0
2022-06-06 00:44:59 -04:00
Trevor Buckner
a60b8f9acc Up version to 3.1.0 2022-06-06 00:44:29 -04:00
Trevor Buckner
8b55e55277 Merge pull request #2162 from G-Ambatte/fixBrewJump
Brew & Source Navigation
2022-06-06 00:20:58 -04:00
dependabot[bot]
4b57745275 Bump eslint from 8.16.0 to 8.17.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.16.0 to 8.17.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.16.0...v8.17.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-06 03:01:42 +00:00
G.Ambatte
4f69b1e7e0 Remove unused toTop function 2022-06-05 11:13:35 +12:00
G.Ambatte
2ac9c190a9 Remove commented out shortcut keys 2022-06-05 11:11:58 +12:00
G.Ambatte
d04df9aeb0 Remove redundant isStyle check 2022-06-05 10:10:59 +12:00
G.Ambatte
6bc5edd33f Remove unnecessary isMeta check 2022-06-05 10:03:03 +12:00
G.Ambatte
6c8cdffd8f Fix typo 2022-06-04 19:52:41 +12:00
G.Ambatte
ae6ad1eaff Prune unnecessary styles 2022-06-04 18:40:05 +12:00
G.Ambatte
ee3c521094 Change throttle options 2022-06-04 18:35:22 +12:00
G.Ambatte
ff2268871d Throttle brew move function 2022-06-04 17:54:35 +12:00
G.Ambatte
1d0cceda04 Eliminate unnecessary window.frames calls 2022-06-04 17:09:25 +12:00
G.Ambatte
4e8cbf621b Add brew bounce animation 2022-06-04 16:38:32 +12:00
Trevor Buckner
c9a182f1e2 Add Tooltips to arrow buttons 2022-06-03 15:38:26 -04:00
Trevor Buckner
df41b58441 Smooth scroll editor Panel, and flash target line 2022-06-03 13:32:04 -04:00
Trevor Buckner
bd681dffae Fix scrollpastend not working
Since the `require('codemirror/addon/scroll/scrollpastend.js');` line is inside of an `if()` block, it doesn't get compiled in the same way. We have to specify it in the `libs` array of our build script so our bundler can allow it to be loaded dynamically.
2022-06-02 23:24:41 -04:00
Trevor Buckner
f21d79d4e0 Merge pull request #2200 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.3.5
Bump mongoose from 6.3.4 to 6.3.5
2022-06-02 12:15:34 -04:00
Trevor Buckner
87db57239c Merge pull request #2199 from naturalcrit/dependabot/npm_and_yarn/codemirror-5.65.5
Bump codemirror from 5.65.4 to 5.65.5
2022-06-02 12:15:25 -04:00
G.Ambatte
0dbe84a91a Update style 2022-06-02 14:09:41 +12:00
G.Ambatte
e9adc4de82 Highlight target line during moveSource 2022-06-02 13:50:37 +12:00
G.Ambatte
0c0d817cc2 Add scrollPastEnd to CodeMirror 2022-06-02 13:49:27 +12:00
dependabot[bot]
6c307856e1 Bump mongoose from 6.3.4 to 6.3.5
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.3.4 to 6.3.5.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.3.4...6.3.5)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-31 03:01:45 +00:00
dependabot[bot]
24248c2dc6 Bump codemirror from 5.65.4 to 5.65.5
Bumps [codemirror](https://github.com/codemirror/CodeMirror) from 5.65.4 to 5.65.5.
- [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.65.4...5.65.5)

---
updated-dependencies:
- dependency-name: codemirror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-31 03:01:02 +00:00
Trevor Buckner
fe374f7de0 Merge pull request #2187 from naturalcrit/dependabot/npm_and_yarn/eslint-8.16.0
Bump eslint from 8.15.0 to 8.16.0
2022-05-29 11:59:22 -04:00
Trevor Buckner
3e9ecc2b34 Merge pull request #2194 from naturalcrit/dependabot/npm_and_yarn/babel/plugin-transform-runtime-7.18.2
Bump @babel/plugin-transform-runtime from 7.18.0 to 7.18.2
2022-05-29 11:59:09 -04:00
dependabot[bot]
bce9cc2586 Bump eslint from 8.15.0 to 8.16.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.15.0 to 8.16.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.15.0...v8.16.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-29 15:58:06 +00:00
dependabot[bot]
7de747b264 Bump @babel/plugin-transform-runtime from 7.18.0 to 7.18.2
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.18.0 to 7.18.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.18.2/packages/babel-plugin-transform-runtime)

---
updated-dependencies:
- dependency-name: "@babel/plugin-transform-runtime"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-29 15:58:02 +00:00
Trevor Buckner
d14466f1d3 Merge pull request #2193 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.18.2
Bump @babel/core from 7.18.0 to 7.18.2
2022-05-29 11:57:24 -04:00
Trevor Buckner
97a0a17149 Merge pull request #2192 from naturalcrit/dependabot/npm_and_yarn/babel/preset-env-7.18.2
Bump @babel/preset-env from 7.18.0 to 7.18.2
2022-05-29 11:57:15 -04:00
G.Ambatte
bb1fba27c2 Set a default userSetDividerPos 2022-05-29 16:26:30 +12:00
G.Ambatte
eff2ec20b2 Fall back to current divider position on resizing 2022-05-29 16:19:58 +12:00
G.Ambatte
4cc3dd93e2 Move state change to handleViewChange 2022-05-29 16:16:48 +12:00
G.Ambatte
ab8dd8ae76 Merge branch 'master' into fixBrewJump 2022-05-29 16:00:41 +12:00
G.Ambatte
08db2e8492 Hide divider arrows when not required 2022-05-29 15:49:37 +12:00
G.Ambatte
7b2486e411 Use RegEx for text.split 2022-05-29 15:31:57 +12:00
G.Ambatte
03bcbee1fc Apply suggested regex
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2022-05-29 15:27:02 +12:00
G.Ambatte
4e5daf583a Remove from snippet bar 2022-05-29 15:24:02 +12:00
G.Ambatte
eca39369de Initial pass at split pane button functionality 2022-05-29 15:18:35 +12:00
Trevor Buckner
69ea9a8f94 Merge pull request #2197 from naturalcrit/FixPublishedPropNotFetched
Fetch `published` prop for brew on user page
2022-05-28 22:59:10 -04:00
Trevor Buckner
7eaec80d96 Fetch published prop for brew on user page 2022-05-28 22:57:31 -04:00
G.Ambatte
3ccd1ebb7b Merge branch 'master' into fixBrewJump 2022-05-29 14:17:11 +12:00
G.Ambatte
db5e4fc36c Fix button position with default divider position 2022-05-29 13:49:08 +12:00
G.Ambatte
160cfcce4d Change for line consistency when moving to page 1 2022-05-29 13:48:36 +12:00
Trevor Buckner
ca8bd448a2 Merge pull request #2196 from naturalcrit/Remove-Duplicate-Column-Break-for-Chrome-102
Remove `break-before: column`
2022-05-27 21:22:40 -04:00
Trevor Buckner
fdaf56b91a Remove break-before: column 2022-05-27 21:19:16 -04:00
dependabot[bot]
53367579f4 Bump @babel/core from 7.18.0 to 7.18.2
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.18.0 to 7.18.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.18.2/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-26 03:33:29 +00:00
dependabot[bot]
9ebe5fa989 Bump @babel/preset-env from 7.18.0 to 7.18.2
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.18.0 to 7.18.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.18.2/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-26 03:32:33 +00:00
G.Ambatte
3f852ccff3 Merge branch 'master' into fixBrewJump 2022-05-23 07:59:06 +12:00
Trevor Buckner
46853a121c Merge pull request #2183 from naturalcrit/dependabot/npm_and_yarn/babel/plugin-transform-runtime-7.18.0
Bump @babel/plugin-transform-runtime from 7.17.12 to 7.18.0
2022-05-21 18:15:41 -04:00
Trevor Buckner
757ba04d67 Merge pull request #2186 from naturalcrit/dependabot/npm_and_yarn/codemirror-5.65.4
Bump codemirror from 5.65.3 to 5.65.4
2022-05-21 18:15:33 -04:00
dependabot[bot]
fb40817826 Bump codemirror from 5.65.3 to 5.65.4
Bumps [codemirror](https://github.com/codemirror/CodeMirror) from 5.65.3 to 5.65.4.
- [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.65.3...5.65.4)

---
updated-dependencies:
- dependency-name: codemirror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-20 20:46:15 +00:00
dependabot[bot]
7ca6d362f3 Bump @babel/plugin-transform-runtime from 7.17.12 to 7.18.0
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.17.12 to 7.18.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.18.0/packages/babel-plugin-transform-runtime)

---
updated-dependencies:
- dependency-name: "@babel/plugin-transform-runtime"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-20 20:45:04 +00:00
Trevor Buckner
7e124641e7 Merge pull request #2184 from naturalcrit/dependabot/npm_and_yarn/babel/preset-env-7.18.0
Bump @babel/preset-env from 7.17.12 to 7.18.0
2022-05-20 16:43:33 -04:00
Trevor Buckner
d68c306c95 Merge pull request #2182 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.3.4
Bump mongoose from 6.3.3 to 6.3.4
2022-05-20 16:43:15 -04:00
Trevor Buckner
2e5cfaea1f Merge pull request #2181 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.18.0
Bump @babel/core from 7.17.12 to 7.18.0
2022-05-20 16:43:07 -04:00
dependabot[bot]
87c9650f17 Bump @babel/preset-env from 7.17.12 to 7.18.0
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.17.12 to 7.18.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.18.0/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-20 03:02:11 +00:00
dependabot[bot]
fbf02c3393 Bump mongoose from 6.3.3 to 6.3.4
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.3.3 to 6.3.4.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.3.3...6.3.4)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-20 03:01:26 +00:00
dependabot[bot]
f5ca950b0b Bump @babel/core from 7.17.12 to 7.18.0
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.17.12 to 7.18.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.18.0/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-20 03:01:10 +00:00
Trevor Buckner
aea9b55a01 Merge pull request #2179 from naturalcrit/dependabot/npm_and_yarn/eslint-plugin-react-7.30.0
Bump eslint-plugin-react from 7.29.4 to 7.30.0
2022-05-19 11:06:20 -04:00
dependabot[bot]
dc8c1c359d Bump eslint-plugin-react from 7.29.4 to 7.30.0
Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.29.4 to 7.30.0.
- [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases)
- [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.29.4...v7.30.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-react
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-19 03:01:14 +00:00
Trevor Buckner
c1d8c8f341 Merge pull request #2176 from naturalcrit/dependabot/npm_and_yarn/babel/preset-env-7.17.12
Bump @babel/preset-env from 7.17.10 to 7.17.12
2022-05-18 16:28:47 -04:00
Trevor Buckner
ec07feee80 Merge pull request #2178 from naturalcrit/dependabot/npm_and_yarn/marked-4.0.16
Bump marked from 4.0.14 to 4.0.16
2022-05-18 16:28:37 -04:00
dependabot[bot]
52835a5bbd Bump @babel/preset-env from 7.17.10 to 7.17.12
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.17.10 to 7.17.12.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.17.12/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-18 20:20:22 +00:00
Trevor Buckner
18d5d96ddb Merge pull request #2174 from naturalcrit/dependabot/npm_and_yarn/babel/plugin-transform-runtime-7.17.12
Bump @babel/plugin-transform-runtime from 7.17.10 to 7.17.12
2022-05-18 16:18:55 -04:00
dependabot[bot]
1323a433d2 Bump marked from 4.0.14 to 4.0.16
Bumps [marked](https://github.com/markedjs/marked) from 4.0.14 to 4.0.16.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v4.0.14...v4.0.16)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-18 20:18:02 +00:00
Trevor Buckner
4aad03074c Merge pull request #2177 from naturalcrit/dependabot/npm_and_yarn/express-static-gzip-2.1.7
Bump express-static-gzip from 2.1.5 to 2.1.7
2022-05-18 16:17:57 -04:00
dependabot[bot]
cadf0efbd8 Bump @babel/plugin-transform-runtime from 7.17.10 to 7.17.12
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.17.10 to 7.17.12.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.17.12/packages/babel-plugin-transform-runtime)

---
updated-dependencies:
- dependency-name: "@babel/plugin-transform-runtime"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-18 20:17:38 +00:00
Trevor Buckner
53e7c78141 Merge pull request #2173 from naturalcrit/dependabot/npm_and_yarn/babel/preset-react-7.17.12
Bump @babel/preset-react from 7.16.7 to 7.17.12
2022-05-18 16:16:23 -04:00
Trevor Buckner
57687c83e6 Merge pull request #2172 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.17.12
Bump @babel/core from 7.17.10 to 7.17.12
2022-05-18 16:16:14 -04:00
Trevor Buckner
d7fb137263 Merge pull request #2170 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.3.3
Bump mongoose from 6.3.1 to 6.3.3
2022-05-18 16:16:06 -04:00
Trevor Buckner
2493442e3f Merge pull request #2168 from naturalcrit/dependabot/npm_and_yarn/jest-28.1.0
Bump jest from 28.0.3 to 28.1.0
2022-05-18 16:15:56 -04:00
dependabot[bot]
353a438849 Bump jest from 28.0.3 to 28.1.0
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 28.0.3 to 28.1.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v28.1.0/packages/jest)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-18 16:24:25 +00:00
dependabot[bot]
37a4d8edca Bump mongoose from 6.3.1 to 6.3.3
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.3.1 to 6.3.3.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.3.1...6.3.3)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-18 16:22:58 +00:00
Trevor Buckner
79dff10240 Merge pull request #2167 from naturalcrit/dependabot/npm_and_yarn/eslint-8.15.0
Bump eslint from 8.14.0 to 8.15.0
2022-05-18 12:22:01 -04:00
Trevor Buckner
d7c62b2d38 Merge pull request #2165 from naturalcrit/dependabot/npm_and_yarn/nanoid-3.3.4
Bump nanoid from 3.3.3 to 3.3.4
2022-05-18 12:20:48 -04:00
dependabot[bot]
5f073932ec Bump express-static-gzip from 2.1.5 to 2.1.7
Bumps [express-static-gzip](https://github.com/tkoenig89/express-static-gzip) from 2.1.5 to 2.1.7.
- [Release notes](https://github.com/tkoenig89/express-static-gzip/releases)
- [Commits](https://github.com/tkoenig89/express-static-gzip/compare/v2.1.5...v2.1.7)

---
updated-dependencies:
- dependency-name: express-static-gzip
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-18 03:00:43 +00:00
dependabot[bot]
63d0d9447f Bump @babel/preset-react from 7.16.7 to 7.17.12
Bumps [@babel/preset-react](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-react) from 7.16.7 to 7.17.12.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.17.12/packages/babel-preset-react)

---
updated-dependencies:
- dependency-name: "@babel/preset-react"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-17 03:01:18 +00:00
dependabot[bot]
fbd772ecef Bump @babel/core from 7.17.10 to 7.17.12
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.17.10 to 7.17.12.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.17.12/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-17 03:00:48 +00:00
G.Ambatte
80fa48e592 Remove redundant variable
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2022-05-11 15:48:03 +12:00
G.Ambatte
9f7ee39b09 Use BoundingRect.bottom to determine page 2022-05-11 10:46:49 +12:00
G.Ambatte
412ac5f331 Change to getBoundingClientRect().bottom 2022-05-09 23:39:04 +12:00
G.Ambatte
7c0e702ead Remove a loop from sourceJump 2022-05-09 23:20:16 +12:00
G.Ambatte
02c8bf7292 Change to smooth scrolling from auto 2022-05-09 22:21:00 +12:00
G.Ambatte
b26ff9eb00 Shift to getBoundingClientRect().height 2022-05-09 22:20:35 +12:00
G.Ambatte
be0b1abe41 Adjust \page check for renderer 2022-05-09 20:57:43 +12:00
G.Ambatte
3c36b7f328 Limit Style tab source jumping 2022-05-09 20:23:39 +12:00
G.Ambatte
3d9704a392 Fix typo
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2022-05-09 19:47:04 +12:00
dependabot[bot]
d798cb1407 Bump eslint from 8.14.0 to 8.15.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.14.0 to 8.15.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.14.0...v8.15.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-09 03:08:22 +00:00
dependabot[bot]
ac6af3cbcc Bump nanoid from 3.3.3 to 3.3.4
Bumps [nanoid](https://github.com/ai/nanoid) from 3.3.3 to 3.3.4.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.3.3...3.3.4)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-04 03:00:53 +00:00
G.Ambatte
e84f68aa15 Minor styling adjustments 2022-05-04 07:54:15 +12:00
G.Ambatte
af3a403971 Add moveBrew and moveSource function calls 2022-05-03 22:33:05 +12:00
G.Ambatte
7034f1d2d5 Add sourceJump function 2022-05-03 22:32:30 +12:00
G.Ambatte
a56601196d Add divider buttons 2022-05-03 17:24:58 +12:00
G.Ambatte
451f06ca74 Fix getCurrentPage 2022-05-03 17:24:37 +12:00
G.Ambatte
f202e45e49 Shift to [].includes 2022-05-03 13:48:19 +12:00
G.Ambatte
010309b04f Add toTop button to SnippetBar 2022-05-03 13:36:27 +12:00
G.Ambatte
f6db66b28c Add brewJump and sourceJump functions 2022-05-03 13:36:03 +12:00
G.Ambatte
cde611eed5 Add ID to iFrame 2022-05-03 11:50:04 +12:00
Trevor Buckner
b9f2517696 Merge pull request #2159 from naturalcrit/dependabot/npm_and_yarn/babel/preset-env-7.17.10
Bump @babel/preset-env from 7.16.11 to 7.17.10
2022-04-29 16:40:11 -04:00
Trevor Buckner
5709a15f52 Merge pull request #2157 from naturalcrit/dependabot/npm_and_yarn/express-4.18.1
Bump express from 4.17.3 to 4.18.1
2022-04-29 16:40:02 -04:00
Trevor Buckner
27d1f6daa6 Merge pull request #2160 from naturalcrit/dependabot/npm_and_yarn/jest-28.0.3
Bump jest from 27.5.1 to 28.0.3
2022-04-29 16:39:53 -04:00
dependabot[bot]
ef6f8b4433 Bump @babel/preset-env from 7.16.11 to 7.17.10
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.16.11 to 7.17.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.17.10/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-29 20:38:34 +00:00
dependabot[bot]
d1e8223843 Bump jest from 27.5.1 to 28.0.3
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 27.5.1 to 28.0.3.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v28.0.3/packages/jest)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-29 20:37:28 +00:00
Trevor Buckner
85e28c201f Merge pull request #2158 from naturalcrit/dependabot/npm_and_yarn/babel/plugin-transform-runtime-7.17.10
Bump @babel/plugin-transform-runtime from 7.17.0 to 7.17.10
2022-04-29 16:37:27 -04:00
dependabot[bot]
e4a429180d Bump @babel/plugin-transform-runtime from 7.17.0 to 7.17.10
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.17.0 to 7.17.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.17.10/packages/babel-plugin-transform-runtime)

---
updated-dependencies:
- dependency-name: "@babel/plugin-transform-runtime"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-29 20:36:20 +00:00
dependabot[bot]
4b953bc264 Bump express from 4.17.3 to 4.18.1
Bumps [express](https://github.com/expressjs/express) from 4.17.3 to 4.18.1.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.17.3...4.18.1)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-29 20:35:45 +00:00
Trevor Buckner
e28aaf4fd1 Merge pull request #2156 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.17.10
Bump @babel/core from 7.17.9 to 7.17.10
2022-04-29 16:34:51 -04:00
Trevor Buckner
e54f3c46b7 Merge pull request #2153 from naturalcrit/dependabot/npm_and_yarn/supertest-6.2.3
Bump supertest from 6.2.2 to 6.2.3
2022-04-29 16:31:08 -04:00
dependabot[bot]
9a62393df1 Bump @babel/core from 7.17.9 to 7.17.10
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.17.9 to 7.17.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.17.10/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-29 20:30:36 +00:00
Trevor Buckner
8f8b32e873 Merge pull request #2142 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.3.1
Bump mongoose from 6.3.0 to 6.3.1
2022-04-29 16:29:56 -04:00
Trevor Buckner
4465ecd372 Merge pull request #2154 from G-Ambatte/fixUserPageBrews-#2147
Add fields to Mongoose brew query
2022-04-29 16:25:28 -04:00
G.Ambatte
b059bf68b5 Revert change to select method 2022-04-29 10:53:03 +12:00
G.Ambatte
c46c4a9320 Switch to use select method 2022-04-28 20:19:01 +12:00
G.Ambatte
cffe08b785 Add fields to Mongoose query 2022-04-28 11:09:32 +12:00
dependabot[bot]
bac8b53984 Bump supertest from 6.2.2 to 6.2.3
Bumps [supertest](https://github.com/visionmedia/supertest) from 6.2.2 to 6.2.3.
- [Release notes](https://github.com/visionmedia/supertest/releases)
- [Commits](https://github.com/visionmedia/supertest/compare/v6.2.2...v6.2.3)

---
updated-dependencies:
- dependency-name: supertest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-27 03:02:24 +00:00
dependabot[bot]
ee10b10c2d Bump mongoose from 6.3.0 to 6.3.1
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.3.0 to 6.3.1.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.3.0...6.3.1)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-25 12:53:03 +00:00
Trevor Buckner
3fb4c5bdd9 Merge pull request #2139 from naturalcrit/dependabot/npm_and_yarn/nanoid-3.3.3
Bump nanoid from 3.3.2 to 3.3.3
2022-04-25 08:52:29 -04:00
dependabot[bot]
08ca061af8 Bump nanoid from 3.3.2 to 3.3.3
Bumps [nanoid](https://github.com/ai/nanoid) from 3.3.2 to 3.3.3.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.3.2...3.3.3)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-25 12:26:01 +00:00
Trevor Buckner
fbb092562d Merge pull request #2140 from naturalcrit/dependabot/npm_and_yarn/codemirror-5.65.3
Bump codemirror from 5.65.2 to 5.65.3
2022-04-25 08:25:28 -04:00
Trevor Buckner
1e47f896fe Merge pull request #2148 from naturalcrit/dependabot/npm_and_yarn/eslint-8.14.0
Bump eslint from 8.13.0 to 8.14.0
2022-04-25 08:25:12 -04:00
Trevor Buckner
5d5bf9586e Merge pull request #2138 from naturalcrit/dependabot/npm_and_yarn/fs-extra-10.1.0
Bump fs-extra from 10.0.1 to 10.1.0
2022-04-25 08:24:54 -04:00
Trevor Buckner
f836277f4f Merge pull request #2137 from naturalcrit/dependabot/npm_and_yarn/moment-2.29.3
Bump moment from 2.29.2 to 2.29.3
2022-04-25 08:24:45 -04:00
Trevor Buckner
09e1702dd2 Merge pull request #2133 from naturalcrit/dependabot/npm_and_yarn/nconf-0.12.0
Bump nconf from 0.11.4 to 0.12.0
2022-04-25 08:24:37 -04:00
dependabot[bot]
ac18acc2f4 Bump eslint from 8.13.0 to 8.14.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.13.0 to 8.14.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.13.0...v8.14.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-25 03:17:04 +00:00
dependabot[bot]
3dbc90b3b8 Bump codemirror from 5.65.2 to 5.65.3
Bumps [codemirror](https://github.com/codemirror/CodeMirror) from 5.65.2 to 5.65.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.65.2...5.65.3)

---
updated-dependencies:
- dependency-name: codemirror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-21 03:01:13 +00:00
dependabot[bot]
504628f59c Bump fs-extra from 10.0.1 to 10.1.0
Bumps [fs-extra](https://github.com/jprichardson/node-fs-extra) from 10.0.1 to 10.1.0.
- [Release notes](https://github.com/jprichardson/node-fs-extra/releases)
- [Changelog](https://github.com/jprichardson/node-fs-extra/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jprichardson/node-fs-extra/compare/10.0.1...10.1.0)

---
updated-dependencies:
- dependency-name: fs-extra
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-18 03:01:19 +00:00
dependabot[bot]
752430bb59 Bump moment from 2.29.2 to 2.29.3
Bumps [moment](https://github.com/moment/moment) from 2.29.2 to 2.29.3.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/2.29.3/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.29.2...2.29.3)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-18 03:01:07 +00:00
dependabot[bot]
8e0e1c5946 Bump nconf from 0.11.4 to 0.12.0
Bumps [nconf](https://github.com/flatiron/nconf) from 0.11.4 to 0.12.0.
- [Release notes](https://github.com/flatiron/nconf/releases)
- [Changelog](https://github.com/indexzero/nconf/blob/master/CHANGELOG.md)
- [Commits](https://github.com/flatiron/nconf/compare/v0.11.4...v0.12.0)

---
updated-dependencies:
- dependency-name: nconf
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-15 16:15:51 +00:00
Trevor Buckner
156abe3b9e Merge pull request #2134 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.3.0
Bump mongoose from 6.2.11 to 6.3.0
2022-04-15 12:14:54 -04:00
dependabot[bot]
0393fcd5c4 Bump mongoose from 6.2.11 to 6.3.0
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.2.11 to 6.3.0.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.2.11...6.3.0)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-15 03:01:04 +00:00
Trevor Buckner
784c0ec8f8 Merge pull request #2131 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.2.11
Bump mongoose from 6.2.10 to 6.2.11
2022-04-13 23:56:42 -04:00
Trevor Buckner
e86c24943f Merge pull request #2130 from G-Ambatte/userPublicUrlForLinkGen-#2128
User public url for link gen #2128
2022-04-13 23:56:26 -04:00
Trevor Buckner
2bc3aaf796 Merge pull request #2129 from G-Ambatte/fixMetaTags
Fix meta tags
2022-04-13 23:53:56 -04:00
dependabot[bot]
56d3d38cad Bump mongoose from 6.2.10 to 6.2.11
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.2.10 to 6.2.11.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.2.10...6.2.11)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-14 03:01:21 +00:00
G.Ambatte
b2bcc9ef95 Shift to logical OR operator
(cherry picked from commit 0fb0f4b6b0)
2022-04-14 13:59:42 +12:00
G.Ambatte
0fb0f4b6b0 Shift to logical OR operator 2022-04-14 13:58:51 +12:00
G.Ambatte
a73b3648ae Update editPage links to use publicUrl 2022-04-13 19:40:33 +12:00
G.Ambatte
0e25793f0a Add publicUrl to global.config & update template 2022-04-13 19:35:51 +12:00
G.Ambatte
3ad6f1d794 Switch from nullish coalescing operator to ternary operator to correct unexpected behaviour
Change meta type from website to article based on feedback
2022-04-13 17:19:45 +12:00
G.Ambatte
5f734096d6 Merge branch 'naturalcrit:master' into master 2022-04-13 15:23:37 +12:00
Trevor Buckner
7dbac5d848 Merge pull request #2061 from Gazook89/Nodesto-Caps
Add Nodesto font files to 5e, v3
2022-04-12 23:04:41 -04:00
Trevor Buckner
eac4d4ed94 Merge pull request #2052 from G-Ambatte/addLocalLogin-#269
[LOCAL ONLY] Add passwordless login
2022-04-12 23:04:08 -04:00
G.Ambatte
de977b3b94 Make local login route conditional and rename 2022-04-13 14:49:16 +12:00
G.Ambatte
3787cdf11c Update server/app.js
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2022-04-13 14:39:27 +12:00
G.Ambatte
84bc3d0be2 Update server/app.js
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2022-04-13 14:37:11 +12:00
G.Ambatte
6fdd415fcb Update server/app.js
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2022-04-13 14:37:06 +12:00
G.Ambatte
0999125678 Update client/homebrew/navbar/account.navitem.jsx
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2022-04-13 14:30:49 +12:00
G.Ambatte
ad8d5bd8a0 Merge branch 'master' into addLocalLogin-#269 2022-04-13 14:30:02 +12:00
G.Ambatte
5d3fe719b3 Remove errant semicolon
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2022-04-13 14:26:25 +12:00
Trevor Buckner
b11fe0e760 Merge pull request #2080 from G-Ambatte/addMetadata-#820
Add social metadata tags
2022-04-12 22:23:02 -04:00
G.Ambatte
85312859d2 Change props.publicUrl fallback behavior 2022-04-13 14:15:26 +12:00
G.Ambatte
f8086a098b Add publicUrl to default.json 2022-04-13 14:14:09 +12:00
G.Ambatte
811d1347ea Reduce calls to config.get 2022-04-13 12:57:04 +12:00
G.Ambatte
1bdd08f878 Shift JWT generation to app.js 2022-04-13 12:40:16 +12:00
G.Ambatte
0023e87d54 Whitespace fix 2022-04-13 12:37:50 +12:00
G.Ambatte
42878ea99d Merge branch 'master' into addMetadata-#820 2022-04-13 09:13:37 +12:00
G.Ambatte
16ae32b881 Move default URL check to app.js 2022-04-13 09:12:48 +12:00
G.Ambatte
f3ee95f9db Update client/template.js
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2022-04-13 08:24:33 +12:00
G.Ambatte
af950159e0 Update client/template.js
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2022-04-13 08:24:25 +12:00
G.Ambatte
46eaad1226 Update client/template.js
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2022-04-13 08:24:19 +12:00
G.Ambatte
4600624edf Merge branch 'naturalcrit:master' into master 2022-04-13 08:20:57 +12:00
Trevor Buckner
daa0832740 Merge pull request #2125 from naturalcrit/dependabot/npm_and_yarn/nconf-0.11.4
Bump nconf from 0.11.3 to 0.11.4
2022-04-11 14:23:08 -04:00
Trevor Buckner
c9353c06da Merge pull request #2126 from naturalcrit/dependabot/npm_and_yarn/marked-4.0.14
Bump marked from 4.0.12 to 4.0.14
2022-04-11 14:22:57 -04:00
Trevor Buckner
2a88d143fd Merge pull request #2124 from naturalcrit/dependabot/npm_and_yarn/eslint-8.13.0
Bump eslint from 8.12.0 to 8.13.0
2022-04-11 14:22:46 -04:00
dependabot[bot]
153802cd5b Bump marked from 4.0.12 to 4.0.14
Bumps [marked](https://github.com/markedjs/marked) from 4.0.12 to 4.0.14.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v4.0.12...v4.0.14)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-11 03:01:28 +00:00
dependabot[bot]
b0b39e638a Bump nconf from 0.11.3 to 0.11.4
Bumps [nconf](https://github.com/flatiron/nconf) from 0.11.3 to 0.11.4.
- [Release notes](https://github.com/flatiron/nconf/releases)
- [Changelog](https://github.com/indexzero/nconf/blob/master/CHANGELOG.md)
- [Commits](https://github.com/flatiron/nconf/compare/v0.11.3...v0.11.4)

---
updated-dependencies:
- dependency-name: nconf
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-11 03:01:16 +00:00
dependabot[bot]
39e5f4aaf4 Bump eslint from 8.12.0 to 8.13.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.12.0 to 8.13.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.12.0...v8.13.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-11 03:00:58 +00:00
Trevor Buckner
2860b8d50a Merge pull request #2120 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.17.9
Bump @babel/core from 7.17.8 to 7.17.9
2022-04-07 09:04:36 -04:00
Trevor Buckner
a9b2e098ac Merge pull request #2118 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.2.10
Bump mongoose from 6.2.9 to 6.2.10
2022-04-07 09:04:28 -04:00
dependabot[bot]
394171ebb7 Bump @babel/core from 7.17.8 to 7.17.9
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.17.8 to 7.17.9.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.17.9/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-07 03:01:31 +00:00
Trevor Buckner
0a05f37774 Merge pull request #2119 from jeddai/google-transfer-api
fix deletion request
2022-04-06 12:18:04 -04:00
Charlie Humphreys
9f69763572 fix deletion request 2022-04-06 11:14:34 -05:00
dependabot[bot]
9565f1d0ba Bump mongoose from 6.2.9 to 6.2.10
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.2.9 to 6.2.10.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.2.9...6.2.10)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-05 03:01:28 +00:00
Trevor Buckner
172d2a8bd6 Fixed font spacings/corrupted outlines 2022-04-04 15:47:30 -04:00
Trevor Buckner
c70857af6f Merge pull request #2117 from naturalcrit/dependabot/npm_and_yarn/moment-2.29.2
Bump moment from 2.29.1 to 2.29.2
2022-04-04 04:17:03 -04:00
Trevor Buckner
a98b23411c Merge pull request #2116 from naturalcrit/dependabot/npm_and_yarn/body-parser-1.20.0
Bump body-parser from 1.19.2 to 1.20.0
2022-04-04 04:16:34 -04:00
dependabot[bot]
a734a7da25 Bump moment from 2.29.1 to 2.29.2
Bumps [moment](https://github.com/moment/moment) from 2.29.1 to 2.29.2.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.29.1...2.29.2)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-04 03:00:50 +00:00
dependabot[bot]
6672ec0149 Bump body-parser from 1.19.2 to 1.20.0
Bumps [body-parser](https://github.com/expressjs/body-parser) from 1.19.2 to 1.20.0.
- [Release notes](https://github.com/expressjs/body-parser/releases)
- [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/body-parser/compare/1.19.2...1.20.0)

---
updated-dependencies:
- dependency-name: body-parser
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-04 03:00:40 +00:00
G.Ambatte
6c7eb339f4 Revert "Initial pass at redirecting / to a landing page"
This reverts commit 468ccd748d.
2022-04-02 10:11:59 +13:00
G.Ambatte
468ccd748d Initial pass at redirecting / to a landing page 2022-04-02 10:10:40 +13:00
Trevor Buckner
613b9c4405 Merge pull request #2101 from naturalcrit/dependabot/npm_and_yarn/nanoid-3.3.2
Bump nanoid from 3.3.1 to 3.3.2
2022-03-31 23:09:59 -04:00
Trevor Buckner
6318b1f84c Merge pull request #2115 from naturalcrit/dependabot/npm_and_yarn/googleapis-100.0.0
Bump googleapis from 99.0.0 to 100.0.0
2022-03-31 23:09:44 -04:00
dependabot[bot]
8800808925 Bump googleapis from 99.0.0 to 100.0.0
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 99.0.0 to 100.0.0.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/googleapis-v99.0.0...googleapis-v100.0.0)

---
updated-dependencies:
- dependency-name: googleapis
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-01 03:01:36 +00:00
Trevor Buckner
12670d4d9b Merge pull request #2090 from G-Ambatte/addQueryToUserPageUrl
Add UserPage filtering to/from URL
2022-03-31 22:24:48 -04:00
Trevor Buckner
41c0b7fef9 Formatting 2022-03-31 22:21:58 -04:00
dependabot[bot]
9a4c7da375 Bump nanoid from 3.3.1 to 3.3.2
Bumps [nanoid](https://github.com/ai/nanoid) from 3.3.1 to 3.3.2.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.3.1...3.3.2)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-01 01:43:02 +00:00
Trevor Buckner
34b4556e5c Merge pull request #2088 from naturalcrit/dependabot/npm_and_yarn/minimist-1.2.6
Bump minimist from 1.2.5 to 1.2.6
2022-03-31 21:42:47 -04:00
Trevor Buckner
bb935f4727 Merge pull request #2097 from naturalcrit/dependabot/npm_and_yarn/ansi-regex-4.1.1
Bump ansi-regex from 4.1.0 to 4.1.1
2022-03-31 21:42:35 -04:00
Trevor Buckner
2719bb8280 Merge pull request #2096 from naturalcrit/dependabot/npm_and_yarn/eslint-8.12.0
Bump eslint from 8.11.0 to 8.12.0
2022-03-31 21:42:17 -04:00
Trevor Buckner
ebfb0d8fcf Merge pull request #2098 from naturalcrit/dependabot/npm_and_yarn/googleapis-99.0.0
Bump googleapis from 98.0.0 to 99.0.0
2022-03-31 21:42:03 -04:00
Trevor Buckner
8a0d74d323 Merge pull request #2102 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.2.9
Bump mongoose from 6.2.8 to 6.2.9
2022-03-31 21:41:48 -04:00
Trevor Buckner
84d0010702 Merge pull request #2111 from jeddai/logout-fix
update logout logic
2022-03-30 12:58:04 -04:00
Charlie Humphreys
e610c12b2a update logout logic 2022-03-30 10:24:25 -05:00
Trevor Buckner
eeef9dcc1b Merge pull request #2105 from jeddai/add-async-handler
add asyncHandler to async methods in routes
2022-03-29 16:43:00 -04:00
Charlie Humphreys
c17db043ba remove extra slash in regex 2022-03-29 11:54:15 -05:00
Charlie Humphreys
89dbd19556 update response handling for saving google brews 2022-03-29 11:46:50 -05:00
Charlie Humphreys
e9cf7be488 add asyncHandler to async methods in routes 2022-03-28 20:43:45 -05:00
dependabot[bot]
48c05081a4 Bump mongoose from 6.2.8 to 6.2.9
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.2.8 to 6.2.9.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.2.8...6.2.9)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-28 17:37:06 +00:00
Trevor Buckner
36fcce7f1e Merge pull request #2100 from naturalcrit/v3.0.8
Update version to v3.0.8
2022-03-28 13:35:20 -04:00
Trevor Buckner
6c85d0f35a Update version to v3.0.8 2022-03-27 23:16:37 -04:00
Trevor Buckner
331fcf0714 Merge pull request #2085 from Gazook89/Drop-Cap-Snippet-Update
Unset `:first-line` small-caps rule with *Remove Drop Cap* snippet
2022-03-27 01:14:07 -04:00
Trevor Buckner
0ec9e8932e Merge pull request #2089 from jeddai/google-transfer-api
Update app to use a single endpoint for google and non-google stored brews
2022-03-27 00:54:28 -04:00
Trevor Buckner
67eb7fdbd4 Merge branch 'master' into pr/2089 2022-03-27 00:41:50 -04:00
G.Ambatte
c0b2fb8ed9 Merge branch 'master' into addLocalLogin-#269 2022-03-27 17:15:41 +13:00
G.Ambatte
c8f6dea1e1 Conflict fix for homebrew.jsx 2022-03-27 17:12:15 +13:00
G.Ambatte
a0a02f5375 Merge branch 'master' into addLocalLogin-#269 2022-03-27 17:09:13 +13:00
Trevor Buckner
a1e7da8d84 Merge pull request #2091 from G-Ambatte/fixComponentWillMount
Remove calls to deprecated `componentWillMount`
2022-03-26 23:49:36 -04:00
dependabot[bot]
396a49a16d Bump googleapis from 98.0.0 to 99.0.0
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 98.0.0 to 99.0.0.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/googleapis-v98.0.0...googleapis-v99.0.0)

---
updated-dependencies:
- dependency-name: googleapis
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-27 03:47:37 +00:00
dependabot[bot]
3628fb690a Bump ansi-regex from 4.1.0 to 4.1.1
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v4.1.0...v4.1.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-27 03:46:44 +00:00
dependabot[bot]
58428fbcc2 Bump eslint from 8.11.0 to 8.12.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.11.0 to 8.12.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.11.0...v8.12.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-27 03:46:44 +00:00
Trevor Buckner
f53b0ec9af Merge pull request #2094 from G-Ambatte/experimentalCircleCIConfig
Increase test time out and update CircleCI testing configuration
2022-03-26 23:46:08 -04:00
G.Ambatte
b6933406ed Remove test timeout increase 2022-03-26 21:27:48 +13:00
G.Ambatte
57d0e8eea3 Test standard Docker MongoDB image 2022-03-26 21:13:06 +13:00
G.Ambatte
7403ef60c1 Increase test timeout via Jest config 2022-03-26 20:56:04 +13:00
G.Ambatte
42ee461f56 Remove commented out delay 2022-03-26 20:55:50 +13:00
G.Ambatte
47a4c8829c Move publicUrl to local.conf from default.conf 2022-03-25 17:40:53 +13:00
G.Ambatte
4b6fb9f595 Add publicUrl as configuration item 2022-03-25 17:05:35 +13:00
G.Ambatte
77e8952e8a Shift componentWillMount call to getInitialState 2022-03-25 16:40:41 +13:00
G.Ambatte
2be365c839 Shift global declarations to componentDidMount 2022-03-25 16:12:33 +13:00
G.Ambatte
c0c08b3354 Fix new Node image location 2022-03-25 15:08:37 +13:00
G.Ambatte
b0d8462a60 Remove MongoDB from testing, update Node image 2022-03-25 15:06:26 +13:00
G.Ambatte
f246c96b28 Remove 10s delay for diagnostics 2022-03-25 15:00:33 +13:00
G.Ambatte
aa7b3d985f Move test setup to BEFORE delay 2022-03-25 14:50:30 +13:00
G.Ambatte
5ed6e9842c Add 10s delay to route test start 2022-03-25 14:39:14 +13:00
G.Ambatte
eaf8b02aa9 Update circleCi config to use new tests 2022-03-25 14:38:50 +13:00
G.Ambatte
7aa0aed7c9 Add individual tests to package.json 2022-03-25 14:38:19 +13:00
G.Ambatte
17dd738ac1 Shift to history.replaceState 2022-03-25 12:23:01 +13:00
G.Ambatte
32a5e71015 Change verbiage of filter placeholder text 2022-03-25 11:28:30 +13:00
G.Ambatte
1c641e3aff Initial pass at UserPage filtering to/from URL 2022-03-25 11:20:16 +13:00
Charlie Humphreys
562ba42b1b add the transfer if statement back in after erroneously removing it 2022-03-24 13:50:26 -05:00
Charlie Humphreys
c081234021 update package-lock.json 2022-03-24 13:47:57 -05:00
Charlie Humphreys
bba0208361 update based on feedback 2022-03-24 13:46:23 -05:00
Charlie Humphreys
b19efcebb9 update package-lock.json 2022-03-24 08:18:24 -05:00
Charlie Humphreys
4d6ce6b917 Merge branch 'master' into google-transfer-api
# Conflicts:
#	package-lock.json
2022-03-24 08:17:56 -05:00
Charlie Humphreys
92d8027640 update app to use a single endpoint for google and non-google stored brews 2022-03-24 08:13:34 -05:00
dependabot[bot]
9c511a6c64 Bump minimist from 1.2.5 to 1.2.6
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-24 04:22:56 +00:00
Trevor Buckner
c9935fa45c Merge pull request #2087 from naturalcrit/dependabot/npm_and_yarn/googleapis-98.0.0
Bump googleapis from 97.0.0 to 98.0.0
2022-03-24 00:08:23 -04:00
dependabot[bot]
a140deae54 Bump googleapis from 97.0.0 to 98.0.0
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 97.0.0 to 98.0.0.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/googleapis-v97.0.0...googleapis-v98.0.0)

---
updated-dependencies:
- dependency-name: googleapis
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-24 03:03:48 +00:00
Trevor Buckner
9e5cc57441 Merge pull request #2055 from G-Ambatte/addDividerResetOnWindowResize-#2053
Add divider reset on window resize #2053
2022-03-23 21:08:18 -04:00
Trevor Buckner
8bab346cbb Change var names, simplify resize logic, limit on page refresh 2022-03-23 16:21:37 -04:00
Trevor Buckner
0a52cafefe Merge pull request #2050 from lucastucious/Fix-#1749---ToC-linking-in-pdf
Fix #1749 - ToC linking in pdf
2022-03-23 12:48:45 -04:00
Trevor Buckner
83b3fdff21 Merge pull request #2084 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.17.8
Bump @babel/core from 7.17.7 to 7.17.8
2022-03-23 12:47:45 -04:00
Trevor Buckner
97dfbe9e35 Merge pull request #2086 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.2.8
Bump mongoose from 6.2.7 to 6.2.8
2022-03-23 12:46:07 -04:00
dependabot[bot]
e4e6b5426e Bump mongoose from 6.2.7 to 6.2.8
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.2.7 to 6.2.8.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.2.7...6.2.8)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-23 03:01:23 +00:00
Gazook89
58815a3910 add descriptive css comment 2022-03-21 22:09:45 -05:00
Gazook89
b17f173e03 Unset :first-line small-caps rule with drop-cap 2022-03-21 22:02:44 -05:00
G.Ambatte
9535fea964 Revert change to verbose 2022-03-22 12:03:26 +13:00
G.Ambatte
4134e43f6e Change test to verbose mode 2022-03-22 11:58:19 +13:00
G.Ambatte
274b3bcb7e Add parallelism parameter 2022-03-22 11:34:32 +13:00
G.Ambatte
8800397ba4 Working directory changes 2022-03-22 11:31:26 +13:00
G.Ambatte
0a90218d2a Fix for missing package.json 2022-03-22 11:27:08 +13:00
G.Ambatte
06598e0665 Fix typo 2022-03-22 11:21:51 +13:00
G.Ambatte
03e5d86b73 Add NPM settings 2022-03-22 11:20:49 +13:00
G.Ambatte
8533240407 Add executor to config 2022-03-22 11:18:59 +13:00
G.Ambatte
2753005386 Add orb to CircleCI config 2022-03-22 11:16:16 +13:00
G.Ambatte
9178d061ff Fix config 2022-03-22 11:14:41 +13:00
G.Ambatte
934c77cee9 Test CircleCI config changes 2022-03-22 11:12:52 +13:00
G.Ambatte
0d8ad50e2a Increase home page test timeout (5s -> 30s) 2022-03-22 10:53:33 +13:00
G.Ambatte
2ec2239124 Merge branch 'master' into addDividerResetOnWindowResize-#2053 2022-03-22 10:31:03 +13:00
G.Ambatte
257262e3cc Allow divider to grow back to original position 2022-03-22 10:26:29 +13:00
G.Ambatte
57c5f28938 Merge branch 'master' into addLocalLogin-#269 2022-03-22 09:39:41 +13:00
dependabot[bot]
e85975308f Bump @babel/core from 7.17.7 to 7.17.8
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.17.7 to 7.17.8.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.17.8/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-21 03:02:20 +00:00
Trevor Buckner
323ccf3b25 Merge pull request #2082 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.2.7
Bump mongoose from 6.2.6 to 6.2.7
2022-03-17 13:35:15 -04:00
dependabot[bot]
be892516d5 Bump mongoose from 6.2.6 to 6.2.7
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.2.6 to 6.2.7.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.2.6...6.2.7)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-17 03:01:21 +00:00
LUCASTUCIOUS
a6e956472f Fix #1749 - ToC linking in pdf 2022-03-16 11:45:44 +01:00
Trevor Buckner
392ce35efa Merge pull request #2079 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.17.7
Bump @babel/core from 7.17.5 to 7.17.7
2022-03-15 21:41:00 -04:00
G.Ambatte
a11e93ef54 Initial pass at social metadata tags 2022-03-15 18:47:46 +13:00
Trevor Buckner
a163e611be Fix Bold Font outlines (union multi-path characters) 2022-03-14 22:23:34 -04:00
dependabot[bot]
ef35991a8c Bump @babel/core from 7.17.5 to 7.17.7
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.17.5 to 7.17.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.17.7/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-15 01:26:44 +00:00
Trevor Buckner
1c2992c887 Merge pull request #2073 from naturalcrit/dependabot/npm_and_yarn/eslint-8.11.0
Bump eslint from 8.10.0 to 8.11.0
2022-03-14 21:25:46 -04:00
Trevor Buckner
1eaeebf2fe Merge pull request #2078 from naturalcrit/dependabot/npm_and_yarn/googleapis-97.0.0
Bump googleapis from 96.0.0 to 97.0.0
2022-03-14 21:25:37 -04:00
Trevor Buckner
ffc027a309 Merge pull request #2072 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.2.6
Bump mongoose from 6.2.5 to 6.2.6
2022-03-14 21:25:25 -04:00
dependabot[bot]
6821d84f9b Bump eslint from 8.10.0 to 8.11.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.10.0 to 8.11.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.10.0...v8.11.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-15 01:03:42 +00:00
dependabot[bot]
dcb25d8a40 Bump googleapis from 96.0.0 to 97.0.0
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 96.0.0 to 97.0.0.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/googleapis-v96.0.0...googleapis-v97.0.0)

---
updated-dependencies:
- dependency-name: googleapis
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-15 01:03:29 +00:00
Trevor Buckner
2f20eeb016 Merge pull request #2074 from naturalcrit/dependabot/npm_and_yarn/eslint-plugin-react-7.29.4
Bump eslint-plugin-react from 7.29.3 to 7.29.4
2022-03-14 21:02:55 -04:00
dependabot[bot]
98e40e2b49 Bump eslint-plugin-react from 7.29.3 to 7.29.4
Bumps [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) from 7.29.3 to 7.29.4.
- [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.29.3...v7.29.4)

---
updated-dependencies:
- dependency-name: eslint-plugin-react
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-14 03:02:12 +00:00
dependabot[bot]
2d10394690 Bump mongoose from 6.2.5 to 6.2.6
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.2.5 to 6.2.6.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.2.5...6.2.6)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-14 03:01:17 +00:00
Trevor Buckner
222ad3e73e Fixed font files. 2022-03-13 03:32:05 -04:00
Trevor Buckner
ebe76aacf3 Merge pull request #2062 from Gazook89/Remove-Reddit-Post-Issue-Title
Remove post title when opening issue on Reddit; add leading questions
2022-03-13 01:52:49 -05:00
Trevor Buckner
b144f0c1d7 Bold text 2022-03-13 01:51:24 -05:00
Trevor Buckner
8ec8b2c66d Merge pull request #2063 from Gazook89/Fix-classTable-Decoration
Set `.classTable.decoration` to display below text
2022-03-13 01:44:40 -05:00
Trevor Buckner
5bb5af2b5e Merge pull request #2064 from Gazook89/Changelog-3.0.6-MacOS-Typo
Small change to 3.0.6 changelog for MacOS
2022-03-13 01:41:03 -05:00
Trevor Buckner
2229686057 Merge pull request #2066 from craigelloyd/doc-fixes
Fixed typos and some grammar things in README.md
2022-03-13 00:31:54 -05:00
craigelloyd
1a419f7e28 Fixed typos and some grammar things in README.md 2022-03-12 20:09:19 -08:00
Gazook89
b8973d63c0 Small change to search/replace update
add correct instruction for MacOS
2022-03-10 22:20:43 -06:00
Gazook89
b1932dc8e4 Utilize dedent in URL paremeters 2022-03-10 22:08:19 -06:00
Gazook89
de54bd4817 add z-index and position to .decoration 2022-03-10 21:56:49 -06:00
Gazook89
424bc9fa6e remove post title. add post text 2022-03-10 21:42:00 -06:00
Gazook89
5d5d0633ab Add Nodesto font files to 5e, v3. Update fonts.less 2022-03-10 21:12:20 -06:00
Trevor Buckner
9282bdc09d Merge pull request #2056 from G-Ambatte/addDividerResetOnLogout-#2054
Reset divider position on log out
2022-03-10 19:46:51 -05:00
Trevor Buckner
2cb34c6535 Merge pull request #2060 from naturalcrit/dependabot/npm_and_yarn/googleapis-96.0.0
Bump googleapis from 95.0.0 to 96.0.0
2022-03-10 19:45:42 -05:00
Trevor Buckner
5329f21896 Merge pull request #2059 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.2.5
Bump mongoose from 6.2.4 to 6.2.5
2022-03-10 14:34:45 -05:00
dependabot[bot]
6d73f2eb9f Bump googleapis from 95.0.0 to 96.0.0
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 95.0.0 to 96.0.0.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/googleapis-v95.0.0...googleapis-v96.0.0)

---
updated-dependencies:
- dependency-name: googleapis
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-10 03:01:57 +00:00
dependabot[bot]
52a777aae6 Bump mongoose from 6.2.4 to 6.2.5
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.2.4 to 6.2.5.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.2.4...6.2.5)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-10 03:01:28 +00:00
G.Ambatte
e44bbae07a Use percentage based positioning, not reset 2022-03-09 17:55:24 +13:00
G.Ambatte
f8abca6053 Formatting change - space out functions correctly 2022-03-09 16:45:21 +13:00
G.Ambatte
156e697042 Initial pass: reset divider position on log out 2022-03-09 14:17:12 +13:00
G.Ambatte
39d338e5bf Reset position in local storage on divider reset 2022-03-09 13:19:07 +13:00
G.Ambatte
8fb25646bd Initial pass: reset pane width on browser resize 2022-03-09 13:13:03 +13:00
G.Ambatte
535291a91a Add local_environments to configuration files
Add `local` parameter to global `config` object to avoid repeating tests
JWT key `secret` only added to global object `config` when local installation detected
2022-03-07 14:14:32 +13:00
G.Ambatte
7c2663fa56 Add passwordless login for local installs 2022-03-07 13:26:54 +13:00
Trevor Buckner
04cd53397a Merge pull request #2051 from naturalcrit/dependabot/npm_and_yarn/eslint-plugin-react-7.29.3
Bump eslint-plugin-react from 7.29.2 to 7.29.3
2022-03-04 22:49:39 -05:00
dependabot[bot]
c16588578b Bump eslint-plugin-react from 7.29.2 to 7.29.3
Bumps [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) from 7.29.2 to 7.29.3.
- [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.29.2...v7.29.3)

---
updated-dependencies:
- dependency-name: eslint-plugin-react
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-04 03:01:08 +00:00
Trevor Buckner
fc000af68c Merge pull request #2044 from naturalcrit/dependabot/npm_and_yarn/eslint-plugin-react-7.29.2
Bump eslint-plugin-react from 7.28.0 to 7.29.2
2022-03-01 15:02:32 -05:00
dependabot[bot]
b3414b23ce Bump eslint-plugin-react from 7.28.0 to 7.29.2
Bumps [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) from 7.28.0 to 7.29.2.
- [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.28.0...v7.29.2)

---
updated-dependencies:
- dependency-name: eslint-plugin-react
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-01 18:11:20 +00:00
Trevor Buckner
3143c4e51c Merge pull request #2046 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.2.4
Bump mongoose from 6.2.3 to 6.2.4
2022-03-01 13:10:13 -05:00
Trevor Buckner
bf7d43768b Merge pull request #2045 from naturalcrit/dependabot/npm_and_yarn/eslint-8.10.0
Bump eslint from 8.9.0 to 8.10.0
2022-03-01 13:09:55 -05:00
dependabot[bot]
ea5a96f87f Bump mongoose from 6.2.3 to 6.2.4
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.2.3 to 6.2.4.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.2.3...6.2.4)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-01 03:01:01 +00:00
dependabot[bot]
50f7dec026 Bump eslint from 8.9.0 to 8.10.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.9.0 to 8.10.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.9.0...v8.10.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-28 03:01:33 +00:00
Trevor Buckner
98de9f1d7f Merge pull request #2042 from naturalcrit/dependabot/npm_and_yarn/fs-extra-10.0.1
Bump fs-extra from 10.0.0 to 10.0.1
2022-02-22 23:46:05 -05:00
Trevor Buckner
4dc3d5dcf7 Merge pull request #2041 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.2.3
Bump mongoose from 6.2.2 to 6.2.3
2022-02-22 23:45:54 -05:00
Trevor Buckner
49566756cd Merge pull request #2040 from naturalcrit/dependabot/npm_and_yarn/codemirror-5.65.2
Bump codemirror from 5.65.1 to 5.65.2
2022-02-22 23:45:42 -05:00
dependabot[bot]
5de89949b3 Bump fs-extra from 10.0.0 to 10.0.1
Bumps [fs-extra](https://github.com/jprichardson/node-fs-extra) from 10.0.0 to 10.0.1.
- [Release notes](https://github.com/jprichardson/node-fs-extra/releases)
- [Changelog](https://github.com/jprichardson/node-fs-extra/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jprichardson/node-fs-extra/compare/10.0.0...10.0.1)

---
updated-dependencies:
- dependency-name: fs-extra
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-23 03:01:22 +00:00
dependabot[bot]
7b49f66ab7 Bump mongoose from 6.2.2 to 6.2.3
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.2.2 to 6.2.3.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.2.2...6.2.3)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-22 03:01:28 +00:00
dependabot[bot]
412193f1d7 Bump codemirror from 5.65.1 to 5.65.2
Bumps [codemirror](https://github.com/codemirror/CodeMirror) from 5.65.1 to 5.65.2.
- [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.65.1...5.65.2)

---
updated-dependencies:
- dependency-name: codemirror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-22 03:00:55 +00:00
Trevor Buckner
4c52c1b188 Merge pull request #2035 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.17.5
Bump @babel/core from 7.17.4 to 7.17.5
2022-02-18 17:12:54 -05:00
dependabot[bot]
66152c52ca Bump @babel/core from 7.17.4 to 7.17.5
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.17.4 to 7.17.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.17.5/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-18 03:00:52 +00:00
Trevor Buckner
ca7b758dd4 Merge pull request #2026 from jeddai/google-service-auth
Update Google interactions to prefer the service account where viable
2022-02-16 23:17:25 -05:00
Charlie Humphreys
8ea2780a44 add log line to explain what to do when the service account cannot be found 2022-02-16 22:03:01 -06:00
Trevor Buckner
a679c615ed Merge pull request #2015 from G-Ambatte/addLogout-#303
Add logout button
2022-02-16 22:52:45 -05:00
Charlie Humphreys
7cc7bd4786 update readFileMetadata to be getGoogleBrew 2022-02-16 21:51:14 -06:00
Trevor Buckner
99761f0a93 Merge pull request #2032 from naturalcrit/dependabot/npm_and_yarn/nanoid-3.3.1
Bump nanoid from 3.3.0 to 3.3.1
2022-02-16 22:19:14 -05:00
Trevor Buckner
b87f57cd25 Merge pull request #2031 from naturalcrit/dependabot/npm_and_yarn/express-4.17.3
Bump express from 4.17.2 to 4.17.3
2022-02-16 22:19:04 -05:00
Trevor Buckner
14ff9aeae5 Merge pull request #2028 from naturalcrit/dependabot/npm_and_yarn/express-static-gzip-2.1.5
Bump express-static-gzip from 2.1.4 to 2.1.5
2022-02-16 22:18:56 -05:00
dependabot[bot]
6ce37db3dc Bump express from 4.17.2 to 4.17.3
Bumps [express](https://github.com/expressjs/express) from 4.17.2 to 4.17.3.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.17.2...4.17.3)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-17 03:17:36 +00:00
dependabot[bot]
90dcbdfd02 Bump nanoid from 3.3.0 to 3.3.1
Bumps [nanoid](https://github.com/ai/nanoid) from 3.3.0 to 3.3.1.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.3.0...3.3.1)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-17 03:16:56 +00:00
Trevor Buckner
ba7976c5c6 Merge pull request #2030 from naturalcrit/dependabot/npm_and_yarn/body-parser-1.19.2
Bump body-parser from 1.19.1 to 1.19.2
2022-02-16 22:16:29 -05:00
Trevor Buckner
6520d3fd76 Merge pull request #2033 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.2.2
Bump mongoose from 6.2.1 to 6.2.2
2022-02-16 22:15:27 -05:00
Trevor Buckner
aafe9724d4 Merge pull request #2027 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.17.4
Bump @babel/core from 7.17.2 to 7.17.4
2022-02-16 22:14:41 -05:00
dependabot[bot]
72207f9222 Bump mongoose from 6.2.1 to 6.2.2
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.2.1 to 6.2.2.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.2.1...6.2.2)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-17 03:01:39 +00:00
dependabot[bot]
f1be8c88f2 Bump body-parser from 1.19.1 to 1.19.2
Bumps [body-parser](https://github.com/expressjs/body-parser) from 1.19.1 to 1.19.2.
- [Release notes](https://github.com/expressjs/body-parser/releases)
- [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/body-parser/compare/1.19.1...1.19.2)

---
updated-dependencies:
- dependency-name: body-parser
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-17 03:00:44 +00:00
Charlie Humphreys
927345b131 update app, googleActions, and homebrew api based on PR feedback 2022-02-16 16:53:34 -06:00
dependabot[bot]
bb68421474 Bump express-static-gzip from 2.1.4 to 2.1.5
Bumps [express-static-gzip](https://github.com/tkoenig89/express-static-gzip) from 2.1.4 to 2.1.5.
- [Release notes](https://github.com/tkoenig89/express-static-gzip/releases)
- [Commits](https://github.com/tkoenig89/express-static-gzip/compare/v2.1.4...v2.1.5)

---
updated-dependencies:
- dependency-name: express-static-gzip
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-16 03:01:27 +00:00
dependabot[bot]
7699e1e79a Bump @babel/core from 7.17.2 to 7.17.4
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.17.2 to 7.17.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.17.4/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-16 03:01:15 +00:00
Charlie Humphreys
59d08a7414 update googleActions and related files to use service-level auth where viable 2022-02-14 22:21:58 -06:00
Trevor Buckner
41c2d2a3d7 Merge pull request #2025 from naturalcrit/dependabot/npm_and_yarn/nanoid-3.3.0
Bump nanoid from 3.2.0 to 3.3.0
2022-02-14 23:14:08 -05:00
dependabot[bot]
0c0be58e65 Bump nanoid from 3.2.0 to 3.3.0
Bumps [nanoid](https://github.com/ai/nanoid) from 3.2.0 to 3.3.0.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.2.0...3.3.0)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-15 03:00:49 +00:00
Trevor Buckner
42afbd3e70 Merge pull request #2024 from naturalcrit/dependabot/npm_and_yarn/path-parse-1.0.7
Bump path-parse from 1.0.6 to 1.0.7
2022-02-14 10:00:14 -05:00
dependabot[bot]
da9c0712a8 Bump path-parse from 1.0.6 to 1.0.7
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-14 14:57:34 +00:00
Trevor Buckner
143d0f294a Merge pull request #2022 from naturalcrit/dependabot/npm_and_yarn/express-static-gzip-2.1.4
Bump express-static-gzip from 2.1.3 to 2.1.4
2022-02-14 09:57:06 -05:00
Trevor Buckner
e197ab7bc3 Merge pull request #2021 from naturalcrit/dependabot/npm_and_yarn/eslint-8.9.0
Bump eslint from 8.8.0 to 8.9.0
2022-02-14 09:56:56 -05:00
dependabot[bot]
d3bb075c47 Bump express-static-gzip from 2.1.3 to 2.1.4
Bumps [express-static-gzip](https://github.com/tkoenig89/express-static-gzip) from 2.1.3 to 2.1.4.
- [Release notes](https://github.com/tkoenig89/express-static-gzip/releases)
- [Commits](https://github.com/tkoenig89/express-static-gzip/compare/v2.1.3...v2.1.4)

---
updated-dependencies:
- dependency-name: express-static-gzip
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-14 03:01:20 +00:00
dependabot[bot]
afeb797c78 Bump eslint from 8.8.0 to 8.9.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.8.0 to 8.9.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.8.0...v8.9.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-14 03:00:58 +00:00
Trevor Buckner
9ab14a9fd8 Merge pull request #2018 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.17.2
Bump @babel/core from 7.17.0 to 7.17.2
2022-02-09 08:34:39 -05:00
Trevor Buckner
55a5546f25 Merge pull request #2017 from naturalcrit/dependabot/npm_and_yarn/jest-27.5.1
Bump jest from 27.5.0 to 27.5.1
2022-02-09 08:34:30 -05:00
dependabot[bot]
938f0a028b Bump @babel/core from 7.17.0 to 7.17.2
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.17.0 to 7.17.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.17.2/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-09 03:01:54 +00:00
dependabot[bot]
c2b9a19c12 Bump jest from 27.5.0 to 27.5.1
Bumps [jest](https://github.com/facebook/jest) from 27.5.0 to 27.5.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v27.5.0...v27.5.1)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-09 03:01:42 +00:00
Trevor Buckner
29c32f03ae Merge pull request #2013 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.2.1
Bump mongoose from 6.2.0 to 6.2.1
2022-02-08 11:08:30 -05:00
Trevor Buckner
950e03e321 Merge pull request #2014 from naturalcrit/dependabot/npm_and_yarn/express-static-gzip-2.1.3
Bump express-static-gzip from 2.1.2 to 2.1.3
2022-02-08 11:08:21 -05:00
G.Ambatte
a1876f16da Change icon for Brews page 2022-02-08 18:19:17 +13:00
G.Ambatte
c4b0dd5aa6 Initial pass of Account dropdown + LogOut 2022-02-08 18:05:02 +13:00
dependabot[bot]
fa60258edc Bump express-static-gzip from 2.1.2 to 2.1.3
Bumps [express-static-gzip](https://github.com/tkoenig89/express-static-gzip) from 2.1.2 to 2.1.3.
- [Release notes](https://github.com/tkoenig89/express-static-gzip/releases)
- [Commits](https://github.com/tkoenig89/express-static-gzip/compare/v2.1.2...v2.1.3)

---
updated-dependencies:
- dependency-name: express-static-gzip
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-08 03:00:59 +00:00
dependabot[bot]
6846d5c6f0 Bump mongoose from 6.2.0 to 6.2.1
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.2.0 to 6.2.1.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.2.0...6.2.1)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-08 03:00:44 +00:00
Trevor Buckner
30867960ce Merge pull request #2007 from naturalcrit/TweakUserpageBrewItemStyle
Make brewItems stand out a bit.
2022-02-07 12:43:08 -05:00
Trevor Buckner
ee201ae6d8 Merge pull request #2011 from naturalcrit/dependabot/npm_and_yarn/query-string-7.1.1
Bump query-string from 7.1.0 to 7.1.1
2022-02-06 23:19:40 -05:00
Trevor Buckner
6e5b4ca6e0 Merge pull request #2010 from naturalcrit/dependabot/npm_and_yarn/jest-27.5.0
Bump jest from 27.4.7 to 27.5.0
2022-02-06 23:19:25 -05:00
Trevor Buckner
cbc3c36dc3 Merge pull request #2009 from naturalcrit/dependabot/npm_and_yarn/googleapis-95.0.0
Bump googleapis from 94.0.0 to 95.0.0
2022-02-06 23:19:15 -05:00
Trevor Buckner
9675b1cf0b Merge pull request #2008 from naturalcrit/dependabot/npm_and_yarn/express-static-gzip-2.1.2
Bump express-static-gzip from 2.1.1 to 2.1.2
2022-02-06 23:19:03 -05:00
dependabot[bot]
31967428ca Bump query-string from 7.1.0 to 7.1.1
Bumps [query-string](https://github.com/sindresorhus/query-string) from 7.1.0 to 7.1.1.
- [Release notes](https://github.com/sindresorhus/query-string/releases)
- [Commits](https://github.com/sindresorhus/query-string/compare/v7.1.0...v7.1.1)

---
updated-dependencies:
- dependency-name: query-string
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-07 03:02:31 +00:00
dependabot[bot]
9f60fe49ab Bump jest from 27.4.7 to 27.5.0
Bumps [jest](https://github.com/facebook/jest) from 27.4.7 to 27.5.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v27.4.7...v27.5.0)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-07 03:02:21 +00:00
dependabot[bot]
d51340649b Bump googleapis from 94.0.0 to 95.0.0
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 94.0.0 to 95.0.0.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/googleapis-v94.0.0...googleapis-v95.0.0)

---
updated-dependencies:
- dependency-name: googleapis
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-07 03:01:39 +00:00
dependabot[bot]
6907ec3a2e Bump express-static-gzip from 2.1.1 to 2.1.2
Bumps [express-static-gzip](https://github.com/tkoenig89/express-static-gzip) from 2.1.1 to 2.1.2.
- [Release notes](https://github.com/tkoenig89/express-static-gzip/releases)
- [Commits](https://github.com/tkoenig89/express-static-gzip/compare/v2.1.1...v2.1.2)

---
updated-dependencies:
- dependency-name: express-static-gzip
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-07 03:01:03 +00:00
Trevor Buckner
30b1aef8ba Make brewItems stand out a bit. 2022-02-06 18:54:09 -05:00
Trevor Buckner
e1bbd76208 Merge pull request #1799 from G-Ambatte/createBasePages
Create Base Page structure - ListPage
2022-02-06 18:07:05 -05:00
Trevor Buckner
d38bf3b450 Clean up. 2022-02-06 17:17:59 -05:00
Trevor Buckner
63e1849854 Merge branch 'master' into pr/1799 2022-02-06 15:31:24 -05:00
G.Ambatte
0b7fee0cc5 Add displayName properties 2022-02-05 19:10:18 +13:00
G.Ambatte
402301f201 Restore BrewItem action classNames 2022-02-05 19:04:53 +13:00
G.Ambatte
c41141fe10 Add missing Help navItem file 2022-02-05 17:32:34 +13:00
G.Ambatte
eccf5e15b1 Change ReportIssue navItem to Help navItem 2022-02-05 17:29:41 +13:00
G.Ambatte
6299e87569 Filtering now functional on ListPage 2022-02-05 17:14:41 +13:00
G.Ambatte
0611db1bdf Move Nav items to UserPage 2022-02-05 17:01:52 +13:00
G.Ambatte
660004e348 Remove UserPage BrewItem files 2022-02-05 15:19:12 +13:00
Trevor Buckner
ac5ce90eba Merge pull request #2005 from jeddai/update-icon-links
remove text under social links, adjust spacing
2022-02-03 23:11:16 -05:00
Trevor Buckner
0a41e7a4af Make "Discord of Many Things" a link in homepage 2022-02-03 23:07:04 -05:00
Trevor Buckner
5170b991b4 Move v3 icons to end of page 2022-02-03 21:43:42 -05:00
Charlie Humphreys
cd27933f98 add width:auto to div 2022-02-03 11:37:32 -06:00
Charlie Humphreys
6985f69caa update height to use style syntax 2022-02-03 10:09:20 -06:00
Charlie Humphreys
aaf36a29a7 remove text under social links, adjust spacing 2022-02-03 09:56:45 -06:00
Trevor Buckner
790420b320 Merge pull request #2004 from naturalcrit/v3.0.7
Update to Version 3.0.7
2022-02-02 23:07:27 -05:00
Trevor Buckner
2f011ebb24 Merge pull request #2002 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.17.0
Bump @babel/core from 7.16.12 to 7.17.0
2022-02-02 23:07:08 -05:00
Trevor Buckner
191adf0a7c Update to Version 3.0.7 2022-02-02 23:05:32 -05:00
dependabot[bot]
2ab95d908b Bump @babel/core from 7.16.12 to 7.17.0
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.16.12 to 7.17.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.17.0/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-03 03:06:17 +00:00
Trevor Buckner
62f505f982 Merge pull request #2003 from naturalcrit/dependabot/npm_and_yarn/babel/plugin-transform-runtime-7.17.0
Bump @babel/plugin-transform-runtime from 7.16.10 to 7.17.0
2022-02-02 22:05:37 -05:00
Trevor Buckner
eaafce0517 Merge pull request #2001 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.2.0
Bump mongoose from 6.1.10 to 6.2.0
2022-02-02 22:05:22 -05:00
dependabot[bot]
10f529c6b6 Bump @babel/plugin-transform-runtime from 7.16.10 to 7.17.0
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.16.10 to 7.17.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.17.0/packages/babel-plugin-transform-runtime)

---
updated-dependencies:
- dependency-name: "@babel/plugin-transform-runtime"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-03 03:01:47 +00:00
dependabot[bot]
8424e51592 Bump mongoose from 6.1.10 to 6.2.0
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.1.10 to 6.2.0.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.1.10...6.2.0)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-03 03:01:09 +00:00
Trevor Buckner
45e391b273 Merge pull request #2000 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.1.10
Bump mongoose from 6.1.9 to 6.1.10
2022-02-02 09:21:59 -05:00
Trevor Buckner
78e042cb9a Remove unused functions in userPage.jsx 2022-02-01 22:40:06 -05:00
dependabot[bot]
0c41fdee6f Bump mongoose from 6.1.9 to 6.1.10
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.1.9 to 6.1.10.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.1.9...6.1.10)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-02 03:01:14 +00:00
Trevor Buckner
11bbf1b8fa Merge pull request #1999 from naturalcrit/dependabot/npm_and_yarn/googleapis-94.0.0
Bump googleapis from 92.0.0 to 94.0.0
2022-02-01 00:08:10 -05:00
Trevor Buckner
f89f686097 Merge pull request #1998 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.1.9
Bump mongoose from 6.1.8 to 6.1.9
2022-02-01 00:07:58 -05:00
Trevor Buckner
d93e4c7458 Merge pull request #1897 from jeddai/migration-guide
Legacy -> v3 Migration guide
2022-02-01 00:05:01 -05:00
Trevor Buckner
6bf4fc6cf8 Help dropdown uses existing dropdown class. Small tweaks. 2022-02-01 00:02:46 -05:00
dependabot[bot]
35a8f7dd98 Bump googleapis from 92.0.0 to 94.0.0
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 92.0.0 to 94.0.0.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/googleapis-v92.0.0...googleapis-v94.0.0)

---
updated-dependencies:
- dependency-name: googleapis
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-01 03:01:35 +00:00
dependabot[bot]
d0ec8ba22f Bump mongoose from 6.1.8 to 6.1.9
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.1.8 to 6.1.9.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.1.8...6.1.9)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-01 03:01:08 +00:00
Charlie Humphreys
57d3db5322 Merge branch 'master' into migration-guide
# Conflicts:
#	server/app.js
2022-01-31 17:13:36 -06:00
Trevor Buckner
e43ee7ddba Merge pull request #1997 from naturalcrit/dependabot/npm_and_yarn/eslint-8.8.0
Bump eslint from 8.7.0 to 8.8.0
2022-01-31 11:20:14 -05:00
dependabot[bot]
7a7bffab24 Bump eslint from 8.7.0 to 8.8.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.7.0 to 8.8.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.7.0...v8.8.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-31 03:00:57 +00:00
Trevor Buckner
1001e57249 Merge pull request #1981 from AlexeySachkov/private/asachkov/refactor-config-initialization
[NFC] Outline config creation into a separate module
2022-01-30 16:30:21 -05:00
Trevor Buckner
ccbeca2cad Move process.chdir up so it occurs before config.js is ever called.
app.js should be required before config to make sure process.cwd is updated first
2022-01-30 00:13:35 -05:00
Trevor Buckner
d7aa4afa60 process.chdir in app.js.
Everything works, no need for path.resolve. All tests pass.
2022-01-29 23:53:30 -05:00
Trevor Buckner
e4c2ce6a8c Merge branch 'private/asachkov/refactor-config-initialization' of https://github.com/AlexeySachkov/homebrewery into pr/1981 2022-01-29 21:36:10 -05:00
Trevor Buckner
de115c5113 Merge branch 'master' into pr/1981 2022-01-29 21:34:38 -05:00
Alexey Sachkov
4e0ab4b393 Adjust paths to config files 2022-01-28 21:40:40 +03:00
Trevor Buckner
050bc472d0 Merge pull request #1990 from naturalcrit/dependabot/npm_and_yarn/cached-path-relative-1.1.0
Bump cached-path-relative from 1.0.2 to 1.1.0
2022-01-28 11:52:19 -05:00
Trevor Buckner
48da1da5ee Merge pull request #1946 from naturalcrit/dependabot/npm_and_yarn/prop-types-15.8.1
Bump prop-types from 15.8.0 to 15.8.1
2022-01-28 11:51:52 -05:00
Trevor Buckner
1b5f408bef Merge pull request #1989 from naturalcrit/dependabot/npm_and_yarn/node-fetch-2.6.7
Bump node-fetch from 2.6.1 to 2.6.7
2022-01-28 11:51:37 -05:00
dependabot[bot]
b1869a33f9 Bump prop-types from 15.8.0 to 15.8.1
Bumps [prop-types](https://github.com/facebook/prop-types) from 15.8.0 to 15.8.1.
- [Release notes](https://github.com/facebook/prop-types/releases)
- [Changelog](https://github.com/facebook/prop-types/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/prop-types/compare/v15.8.0...v15.8.1)

---
updated-dependencies:
- dependency-name: prop-types
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-28 16:50:48 +00:00
Trevor Buckner
bb07cdaa9f Merge pull request #1992 from naturalcrit/RemovePropTypes
Remove prop-types dependency
2022-01-28 11:49:16 -05:00
Trevor Buckner
db0e4fcc0c Remove prop-types dependency 2022-01-28 11:47:24 -05:00
Trevor Buckner
ba8a2af87d Merge pull request #1929 from jeddai/links-in-home-document
Add discord, github, and reddit links to home page document
2022-01-28 10:29:26 -05:00
Trevor Buckner
85e7071d6c Merge pull request #1991 from naturalcrit/dependabot/npm_and_yarn/marked-4.0.12
Bump marked from 4.0.11 to 4.0.12
2022-01-28 10:27:28 -05:00
Trevor Buckner
ece6df023a Restore custom CSS styling on v3 preview 2022-01-28 09:59:29 -05:00
Trevor Buckner
4c08f4a6e1 Condense v3_preview to fit on two pages again. 2022-01-28 09:44:43 -05:00
Trevor Buckner
039e4dd4e5 Revert extraneous Config changes
Looks like these were part of something else? In any case it conflicts with #1981 so just undoing these changes.
2022-01-28 00:38:00 -05:00
dependabot[bot]
041abf1220 Bump marked from 4.0.11 to 4.0.12
Bumps [marked](https://github.com/markedjs/marked) from 4.0.11 to 4.0.12.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v4.0.11...v4.0.12)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-28 03:00:41 +00:00
dependabot[bot]
56fc23f23a Bump cached-path-relative from 1.0.2 to 1.1.0
Bumps [cached-path-relative](https://github.com/ashaffer/cached-path-relative) from 1.0.2 to 1.1.0.
- [Release notes](https://github.com/ashaffer/cached-path-relative/releases)
- [Commits](https://github.com/ashaffer/cached-path-relative/commits)

---
updated-dependencies:
- dependency-name: cached-path-relative
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-27 14:36:29 +00:00
Trevor Buckner
87c28c76f3 Merge pull request #1979 from AlexeySachkov/private/asachkov/testing-with-supertest
Add very basic infrastructure for HTTP testing
2022-01-26 23:42:36 -05:00
dependabot[bot]
235f878dba Bump node-fetch from 2.6.1 to 2.6.7
Bumps [node-fetch](https://github.com/node-fetch/node-fetch) from 2.6.1 to 2.6.7.
- [Release notes](https://github.com/node-fetch/node-fetch/releases)
- [Commits](https://github.com/node-fetch/node-fetch/compare/v2.6.1...v2.6.7)

---
updated-dependencies:
- dependency-name: node-fetch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-27 03:59:52 +00:00
Trevor Buckner
b2ec0d4a0c Merge pull request #1986 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.1.8
Bump mongoose from 6.1.7 to 6.1.8
2022-01-26 22:59:29 -05:00
Trevor Buckner
02560d82ab Merge pull request #1988 from naturalcrit/dependabot/npm_and_yarn/marked-4.0.11
Bump marked from 4.0.10 to 4.0.11
2022-01-26 22:59:18 -05:00
Charlie Humphreys
22b80ffbb2 update app templates for welcome messages, add new images 2022-01-26 21:56:12 -06:00
dependabot[bot]
2db127d805 Bump marked from 4.0.10 to 4.0.11
Bumps [marked](https://github.com/markedjs/marked) from 4.0.10 to 4.0.11.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v4.0.10...v4.0.11)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-27 03:01:08 +00:00
Charlie Humphreys
c2ca9f8f10 Merge branch 'master' into links-in-home-document
# Conflicts:
#	server.js
2022-01-26 13:59:47 -06:00
Charlie Humphreys
e614fbc5a1 Update app.js from master 2022-01-26 08:46:45 -06:00
Charlie Humphreys
7f001ee391 Merge branch 'master' into migration-guide
# Conflicts:
#	server.js
2022-01-26 08:44:28 -06:00
Charlie Humphreys
9432304be5 Merge branch 'master' into migration-guide
# Conflicts:
#	package-lock.json
2022-01-26 08:43:17 -06:00
Charlie Humphreys
38c0527d35 Add color mixins, help dropdown, and remove unused nav items 2022-01-26 08:40:33 -06:00
dependabot[bot]
6fc176e616 Bump mongoose from 6.1.7 to 6.1.8
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.1.7 to 6.1.8.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.1.7...6.1.8)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-25 03:01:18 +00:00
Alexey Sachkov
588bcebc87 [NFC] Outline config creation into a separate module
This is done in order to have config creation rules
unified in one place to avoid modifying them multiple times
if they change.

We already had 3 duplicated pieces of code initializing the
config and there will be more config uses in future tests.

This resolves #1960
2022-01-23 20:06:52 +03:00
Alexey Sachkov
4fd085b684 Update package-lock.json 2022-01-23 20:00:16 +03:00
Alexey Sachkov
d2250cdabb Merge remote-tracking branch 'origin/master' into private/asachkov/testing-with-supertest 2022-01-23 19:58:56 +03:00
Trevor Buckner
179d5e6312 Merge pull request #1980 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.16.12
Bump @babel/core from 7.16.7 to 7.16.12
2022-01-22 22:04:36 -05:00
dependabot[bot]
12d0f69e9c Bump @babel/core from 7.16.7 to 7.16.12
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.16.7 to 7.16.12.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.16.12/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-22 18:23:01 +00:00
Trevor Buckner
788ff65283 Merge pull request #1973 from naturalcrit/dependabot/npm_and_yarn/babel/plugin-transform-runtime-7.16.10
Bump @babel/plugin-transform-runtime from 7.16.8 to 7.16.10
2022-01-22 13:22:02 -05:00
dependabot[bot]
d7d93c8975 Bump @babel/plugin-transform-runtime from 7.16.8 to 7.16.10
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.16.8 to 7.16.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.16.10/packages/babel-plugin-transform-runtime)

---
updated-dependencies:
- dependency-name: "@babel/plugin-transform-runtime"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-22 16:36:20 +00:00
Trevor Buckner
eb07fd7c38 Merge pull request #1966 from naturalcrit/dependabot/npm_and_yarn/nanoid-3.2.0
Bump nanoid from 3.1.30 to 3.2.0
2022-01-22 11:35:49 -05:00
Trevor Buckner
c09b87482a Merge pull request #1977 from naturalcrit/dependabot/npm_and_yarn/babel/preset-env-7.16.11
Bump @babel/preset-env from 7.16.8 to 7.16.11
2022-01-22 11:35:17 -05:00
Trevor Buckner
19562a2445 Merge pull request #1978 from naturalcrit/dependabot/npm_and_yarn/codemirror-5.65.1
Bump codemirror from 5.65.0 to 5.65.1
2022-01-22 11:34:51 -05:00
Alexey Sachkov
543d65f43f Add very first HTTP tests
Added tests for "static" pages like Home, Changelog, FAQ, etc.
2022-01-22 00:36:54 +03:00
Alexey Sachkov
fc1af353f3 Install and configure required packages for HTTP testing
Two new dev dependencies were added:
- supertest package to perform HTTP testing
- @babel/plugin-transform-runtime

Configured jest to so it is able load files from server directory
2022-01-22 00:36:10 +03:00
Alexey Sachkov
9c57450330 [NFC] Explicitly define variables before using them
Fixed two errors which were discovered by trying to run the code in "strict" mode,
which is automatically done by Jest testing framework.
2022-01-22 00:18:13 +03:00
Trevor Buckner
0573084ffd Merge pull request #1959 from AlexeySachkov/private/asachkov/refactor-server-js
[NFC] Outline an express app into a separate module
2022-01-21 00:22:58 -05:00
dependabot[bot]
6cb39709c4 Bump codemirror from 5.65.0 to 5.65.1
Bumps [codemirror](https://github.com/codemirror/CodeMirror) from 5.65.0 to 5.65.1.
- [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.65.0...5.65.1)

---
updated-dependencies:
- dependency-name: codemirror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-21 03:01:49 +00:00
dependabot[bot]
4ea2fc34f0 Bump @babel/preset-env from 7.16.8 to 7.16.11
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.16.8 to 7.16.11.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.16.11/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-21 03:01:12 +00:00
dependabot[bot]
a0e2bcb8e4 Bump nanoid from 3.1.30 to 3.2.0
Bumps [nanoid](https://github.com/ai/nanoid) from 3.1.30 to 3.2.0.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.1.30...3.2.0)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-18 22:01:45 +00:00
Trevor Buckner
015644453b Merge pull request #1967 from naturalcrit/dependabot/npm_and_yarn/eslint-8.7.0
Bump eslint from 8.6.0 to 8.7.0
2022-01-18 17:00:45 -05:00
Trevor Buckner
199c7d4e02 Merge pull request #1969 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.1.7
Bump mongoose from 6.1.6 to 6.1.7
2022-01-18 17:00:38 -05:00
Trevor Buckner
1d71e96421 Merge pull request #1964 from naturalcrit/dependabot/npm_and_yarn/marked-4.0.10
Bump marked from 4.0.9 to 4.0.10
2022-01-18 17:00:32 -05:00
dependabot[bot]
8d0dbac882 Bump mongoose from 6.1.6 to 6.1.7
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.1.6 to 6.1.7.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.1.6...6.1.7)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-18 03:01:19 +00:00
dependabot[bot]
6c1b4b1839 Bump eslint from 8.6.0 to 8.7.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.6.0 to 8.7.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.6.0...v8.7.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-17 03:01:30 +00:00
dependabot[bot]
d4a4e7d139 Bump marked from 4.0.9 to 4.0.10
Bumps [marked](https://github.com/markedjs/marked) from 4.0.9 to 4.0.10.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v4.0.9...v4.0.10)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-13 03:01:44 +00:00
Alexey Sachkov
0dfe18cd18 Fix liner errors 2022-01-11 23:24:50 +03:00
Alexey Sachkov
8895b44be9 [NFC] Outline an express app into a separate module
This is done in order to be able to re-use that app in API unit tests later
2022-01-11 22:24:23 +03:00
Trevor Buckner
279352377b Merge pull request #1957 from naturalcrit/dependabot/npm_and_yarn/babel/preset-env-7.16.8
Bump @babel/preset-env from 7.16.7 to 7.16.8
2022-01-11 11:32:59 -05:00
dependabot[bot]
51cf363c84 Bump @babel/preset-env from 7.16.7 to 7.16.8
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.16.7 to 7.16.8.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.16.8/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-11 16:25:18 +00:00
Trevor Buckner
bdd554851d Merge pull request #1956 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.1.6
Bump mongoose from 6.1.5 to 6.1.6
2022-01-11 11:24:06 -05:00
Trevor Buckner
f611a36089 Merge pull request #1955 from naturalcrit/dependabot/npm_and_yarn/babel/plugin-transform-runtime-7.16.8
Bump @babel/plugin-transform-runtime from 7.16.7 to 7.16.8
2022-01-11 11:23:59 -05:00
dependabot[bot]
0861e1ed29 Bump mongoose from 6.1.5 to 6.1.6
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.1.5 to 6.1.6.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.1.5...6.1.6)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-11 03:01:23 +00:00
dependabot[bot]
4070c53112 Bump @babel/plugin-transform-runtime from 7.16.7 to 7.16.8
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.16.7 to 7.16.8.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.16.8/packages/babel-plugin-transform-runtime)

---
updated-dependencies:
- dependency-name: "@babel/plugin-transform-runtime"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-11 03:01:11 +00:00
Trevor Buckner
ac8ad98939 Merge pull request #1937 from AlexeySachkov/private/asachkov/v3-markdown-tests
Add tests for our markdown parser/renderer
2022-01-10 13:58:04 -05:00
Trevor Buckner
e315c29620 Merge pull request #1931 from AlexeySachkov/private/asachkov/outline-db-connection
[NFC] Outline database connection into a separate file
2022-01-10 13:55:55 -05:00
Alexey Sachkov
e84cd4fe8b Apply review comments
Switched from raw promises to async/await.
Outlined error handling function to reduce amount of nested code.
Added comment about the new file intent.
2022-01-10 19:25:36 +03:00
Alexey Sachkov
2d85638d7d Update package-lock.json after merge 2022-01-10 18:56:23 +03:00
Alexey Sachkov
1daa700a1a Merge remote-tracking branch 'origin/master' into private/asachkov/v3-markdown-tests 2022-01-10 18:54:53 +03:00
Trevor Buckner
c06176b3bf Merge pull request #1950 from naturalcrit/dependabot/npm_and_yarn/marked-4.0.9
Bump marked from 4.0.8 to 4.0.9
2022-01-06 23:18:59 -05:00
Trevor Buckner
85f93c7861 Merge pull request #1949 from naturalcrit/dependabot/npm_and_yarn/query-string-7.1.0
Bump query-string from 7.0.1 to 7.1.0
2022-01-06 23:18:35 -05:00
dependabot[bot]
e1457b5308 Bump marked from 4.0.8 to 4.0.9
Bumps [marked](https://github.com/markedjs/marked) from 4.0.8 to 4.0.9.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v4.0.8...v4.0.9)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-07 03:01:25 +00:00
dependabot[bot]
fc6fd00fe9 Bump query-string from 7.0.1 to 7.1.0
Bumps [query-string](https://github.com/sindresorhus/query-string) from 7.0.1 to 7.1.0.
- [Release notes](https://github.com/sindresorhus/query-string/releases)
- [Commits](https://github.com/sindresorhus/query-string/compare/v7.0.1...v7.1.0)

---
updated-dependencies:
- dependency-name: query-string
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-07 03:00:55 +00:00
Trevor Buckner
3ccc36f87a Merge pull request #1945 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.1.5
Bump mongoose from 6.1.4 to 6.1.5
2022-01-05 13:14:03 -05:00
Trevor Buckner
ceae540aa0 Merge pull request #1944 from G-Ambatte/increaseGooglePageSize-#1943
Increase Google pageSize to 1000
2022-01-05 13:13:53 -05:00
dependabot[bot]
a5cab7005e Bump mongoose from 6.1.4 to 6.1.5
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.1.4 to 6.1.5.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.1.4...6.1.5)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-05 03:00:44 +00:00
G.Ambatte
e48e8cd05b Increase pageSize to 1000 2022-01-05 13:17:56 +13:00
Trevor Buckner
e74800916e Merge pull request #1941 from naturalcrit/dependabot/npm_and_yarn/babel/preset-env-7.16.7
Bump @babel/preset-env from 7.16.5 to 7.16.7
2022-01-04 15:29:30 -05:00
Trevor Buckner
34f154d09d Merge pull request #1940 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.16.7
Bump @babel/core from 7.16.5 to 7.16.7
2022-01-04 15:29:22 -05:00
dependabot[bot]
1bcdd6bc38 Bump @babel/core from 7.16.5 to 7.16.7
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.16.5 to 7.16.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.16.7/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-04 20:25:26 +00:00
dependabot[bot]
dd82ee68f0 Bump @babel/preset-env from 7.16.5 to 7.16.7
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.16.5 to 7.16.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.16.7/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-04 20:24:50 +00:00
Trevor Buckner
564486f6d0 Merge pull request #1942 from naturalcrit/dependabot/npm_and_yarn/eslint-8.6.0
Bump eslint from 8.5.0 to 8.6.0
2022-01-04 15:23:35 -05:00
Trevor Buckner
bf632a8584 Merge pull request #1939 from naturalcrit/dependabot/npm_and_yarn/babel/plugin-transform-runtime-7.16.7
Bump @babel/plugin-transform-runtime from 7.16.5 to 7.16.7
2022-01-04 15:23:25 -05:00
Trevor Buckner
506cf78dac Merge pull request #1938 from naturalcrit/dependabot/npm_and_yarn/babel/preset-react-7.16.7
Bump @babel/preset-react from 7.16.5 to 7.16.7
2022-01-04 15:23:18 -05:00
dependabot[bot]
0dbb5f18ba Bump eslint from 8.5.0 to 8.6.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.5.0 to 8.6.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.5.0...v8.6.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-03 03:01:02 +00:00
dependabot[bot]
85e9c57ee2 Bump @babel/plugin-transform-runtime from 7.16.5 to 7.16.7
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.16.5 to 7.16.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.16.7/packages/babel-plugin-transform-runtime)

---
updated-dependencies:
- dependency-name: "@babel/plugin-transform-runtime"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-31 03:01:07 +00:00
dependabot[bot]
257c266a2e Bump @babel/preset-react from 7.16.5 to 7.16.7
Bumps [@babel/preset-react](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-react) from 7.16.5 to 7.16.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.16.7/packages/babel-preset-react)

---
updated-dependencies:
- dependency-name: "@babel/preset-react"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-31 03:00:54 +00:00
G.Ambatte
605ea2aa62 Revert New & EditPage to master status 2021-12-31 13:42:24 +13:00
G.Ambatte
896d9ae2c7 Lint fixes 2021-12-31 13:35:50 +13:00
G.Ambatte
0beabc6c0c Fix New & EditPage issues after rebase 2021-12-31 13:30:07 +13:00
G.Ambatte
834a4c13a7 Merge branch 'createBasePages' of https://github.com/G-Ambatte/homebrewery into createBasePages
# Conflicts:
#	client/homebrew/pages/userPage/userPage.jsx
2021-12-31 13:11:50 +13:00
G.Ambatte
eca12aae82 Rebase on master 2021-12-31 13:06:21 +13:00
G.Ambatte
00158c1894 Rebase on new master 2021-12-31 13:01:29 +13:00
G.Ambatte
77f5e3e835 Remove unnecessary userPage.less 2021-12-31 13:00:59 +13:00
G.Ambatte
48a5c12ab7 Rebase on new master 2021-12-31 12:59:48 +13:00
Alexey Sachkov
28793e06fc Fix linter errors 2021-12-30 23:40:58 +03:00
Alexey Sachkov
ba74b5aa13 Update package-lock.json 2021-12-30 23:24:38 +03:00
Alexey Sachkov
01bceca7df Add some tests for mustache span syntax
Also refactored test files a bit
2021-12-30 23:23:44 +03:00
Alexey Sachkov
ccca313a15 Initial commit with jest enabling
Removed dependency on pico-check and existing tests.
Added jest as dev dependency, introduced minimal configuration for it.
Added a very first couple of tests for our markdown parser/renderer.
2021-12-30 22:41:01 +03:00
Trevor Buckner
c463eedc50 Merge pull request #1933 from AlexeySachkov/private/asachkov/add-display-name-to-react-components
[NFC] Add display name for custom React components
2021-12-29 17:21:31 -05:00
Trevor Buckner
7f49d6f08b Merge pull request #1927 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.1.4
Bump mongoose from 6.1.3 to 6.1.4
2021-12-29 16:33:08 -05:00
Alexey Sachkov
78d4487c58 Fix linter errors 2021-12-29 21:30:03 +03:00
Alexey Sachkov
8a3f52b704 [NFC] Add display name for custom React components
This improves readability of "Components" tab from React Development Tools extension for Chrome
2021-12-29 21:18:54 +03:00
Alexey Sachkov
6e04535eff [NFC] Outline database connection into a separate file 2021-12-29 19:04:17 +03:00
Charlie Humphreys
5bb580147a Add discord, github, and reddit links to home page document 2021-12-28 21:59:02 -06:00
dependabot[bot]
1adaa9f5c4 Bump mongoose from 6.1.3 to 6.1.4
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.1.3 to 6.1.4.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.1.3...6.1.4)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-28 03:01:01 +00:00
Trevor Buckner
7b19bbb1a7 Merge pull request #1922 from naturalcrit/dependabot/npm_and_yarn/prop-types-15.8.0
Bump prop-types from 15.7.2 to 15.8.0
2021-12-23 22:41:44 -05:00
Trevor Buckner
e3d4165fa4 Merge pull request #1921 from naturalcrit/dependabot/npm_and_yarn/eslint-plugin-react-7.28.0
Bump eslint-plugin-react from 7.27.1 to 7.28.0
2021-12-23 22:41:35 -05:00
dependabot[bot]
ec54434427 Bump prop-types from 15.7.2 to 15.8.0
Bumps [prop-types](https://github.com/facebook/prop-types) from 15.7.2 to 15.8.0.
- [Release notes](https://github.com/facebook/prop-types/releases)
- [Changelog](https://github.com/facebook/prop-types/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/prop-types/compare/v15.7.2...v15.8.0)

---
updated-dependencies:
- dependency-name: prop-types
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-23 03:01:28 +00:00
dependabot[bot]
67bf69fc21 Bump eslint-plugin-react from 7.27.1 to 7.28.0
Bumps [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) from 7.27.1 to 7.28.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.27.1...v7.28.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-react
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-23 03:01:10 +00:00
Trevor Buckner
c60e287cbe Merge pull request #1901 from G-Ambatte/addInstallDocs-#1896
Add Install Instructions - Ubuntu
2021-12-21 23:50:01 -05:00
Trevor Buckner
de4b2861b6 Merge pull request #1911 from naturalcrit/dependabot/npm_and_yarn/express-4.17.2
Bump express from 4.17.1 to 4.17.2
2021-12-21 23:19:02 -05:00
Trevor Buckner
eb4234d814 Merge pull request #1912 from naturalcrit/dependabot/npm_and_yarn/marked-4.0.8
Bump marked from 4.0.7 to 4.0.8
2021-12-21 23:18:52 -05:00
Trevor Buckner
4da7b8bd17 Merge pull request #1919 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.1.3
Bump mongoose from 6.1.2 to 6.1.3
2021-12-21 23:18:39 -05:00
Trevor Buckner
c0f5f224bf Merge pull request #1917 from naturalcrit/dependabot/npm_and_yarn/codemirror-5.65.0
Bump codemirror from 5.64.0 to 5.65.0
2021-12-21 23:18:29 -05:00
Trevor Buckner
9b89814056 Merge pull request #1910 from naturalcrit/dependabot/npm_and_yarn/eslint-8.5.0
Bump eslint from 8.4.1 to 8.5.0
2021-12-21 23:18:14 -05:00
Trevor Buckner
12d0baf5d3 Merge pull request #1913 from jeddai/codemirror-tweak-updates
Revert some codemirror tweaks, disable code folding in style tab
2021-12-21 22:48:37 -05:00
dependabot[bot]
8a695c14d7 Bump mongoose from 6.1.2 to 6.1.3
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.1.2 to 6.1.3.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.1.2...6.1.3)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-22 03:00:58 +00:00
dependabot[bot]
f253bdf954 Bump codemirror from 5.64.0 to 5.65.0
Bumps [codemirror](https://github.com/codemirror/CodeMirror) from 5.64.0 to 5.65.0.
- [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.64.0...5.65.0)

---
updated-dependencies:
- dependency-name: codemirror
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-21 03:00:47 +00:00
Charlie Humphreys
38d8764f15 Disable code folding in style tab, disable active line highlight and whitespace visibility 2021-12-20 00:42:53 -06:00
dependabot[bot]
01f6d106a2 Bump marked from 4.0.7 to 4.0.8
Bumps [marked](https://github.com/markedjs/marked) from 4.0.7 to 4.0.8.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v4.0.7...v4.0.8)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-20 03:01:12 +00:00
dependabot[bot]
9119860012 Bump express from 4.17.1 to 4.17.2
Bumps [express](https://github.com/expressjs/express) from 4.17.1 to 4.17.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.17.1...4.17.2)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-20 03:01:01 +00:00
dependabot[bot]
eeaaa0e6c9 Bump eslint from 8.4.1 to 8.5.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.4.1 to 8.5.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.4.1...v8.5.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-20 03:00:51 +00:00
G.Ambatte
db5987a466 Shift install instruction READMEs into install directory 2021-12-19 19:26:12 +13:00
G.Ambatte
b5d5cb085b Merge branch 'addInstallDocs-#1896' of https://github.com/G-Ambatte/homebrewery into addInstallDocs-#1896 2021-12-19 19:22:55 +13:00
G.Ambatte
dcf17e3b72 Add README.UBUNTU.md 2021-12-19 19:22:33 +13:00
G.Ambatte
5b746c0d9c Merge branch 'naturalcrit:master' into addInstallDocs-#1896 2021-12-19 18:51:59 +13:00
G.Ambatte
41bc6ca444 Add HB service file
Update install.sh to create service and set to start automatically
2021-12-19 18:50:35 +13:00
Trevor Buckner
aba2f58fc4 Merge pull request #1898 from naturalcrit/v3.0.6
3.0.6
2021-12-18 23:02:43 -05:00
Trevor Buckner
fb1d947e97 Update changelog.md 2021-12-18 22:56:18 -05:00
Trevor Buckner
f02bda2c52 3.0.6 2021-12-17 00:00:00 -05:00
Sean Robertson
aa4de67e90 Ensure curl is installed
Fix mongodb package name
Use apt satisfy instead of apt install
2021-12-17 16:06:34 +13:00
Sean Robertson
b1a9fbe3ca Update location of FreeBSD install instructions 2021-12-17 15:21:52 +13:00
Charlie Humphreys
603cf2c0ab Adjust migrate document text 2021-12-16 00:03:23 -06:00
Charlie Humphreys
0bc27e83ed Fix reference to old function 2021-12-16 00:01:16 -06:00
Charlie Humphreys
25c1d03cca Update package-lock.json 2021-12-15 23:59:36 -06:00
Charlie Humphreys
e2b4151ab4 Merge branch 'master' into migration-guide
# Conflicts:
#	shared/naturalcrit/markdown.js
2021-12-15 23:59:10 -06:00
Charlie Humphreys
889d307372 Lint change double quotes into single quotes 2021-12-15 23:58:49 -06:00
Charlie Humphreys
fd23396b95 Add migrate nav item to pages and update migrate document 2021-12-15 23:57:52 -06:00
Trevor Buckner
fa5266626a Merge pull request #1895 from naturalcrit/dependabot/npm_and_yarn/pico-check-2.2.0
Bump pico-check from 2.1.3 to 2.2.0
2021-12-15 23:45:22 -05:00
dependabot[bot]
cfe9bcdfe6 Bump pico-check from 2.1.3 to 2.2.0
Bumps [pico-check](https://github.com/stolksdorf/pico-check) from 2.1.3 to 2.2.0.
- [Release notes](https://github.com/stolksdorf/pico-check/releases)
- [Commits](https://github.com/stolksdorf/pico-check/commits)

---
updated-dependencies:
- dependency-name: pico-check
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-16 03:01:09 +00:00
Trevor Buckner
0555427805 Merge pull request #1863 from jeddai/random-fixes
Cover page v3 CSS and table of contents snippet fixes
2021-12-15 21:48:46 -05:00
Trevor Buckner
cebc74009d Couple more tweaks to spacings in the TOC 2021-12-15 21:48:13 -05:00
Trevor Buckner
61af0842e6 Merge pull request #1867 from G-Ambatte/addClassNameToUserPageLinks-#1866
Add classes to User Page sort options + brew links
2021-12-15 21:25:03 -05:00
Charlie Humphreys
7d58ce6e00 Merge remote-tracking branch 'origin/random-fixes' into random-fixes 2021-12-15 20:14:17 -06:00
Charlie Humphreys
d4c5ac8110 Change div syntax in snippet to curly-brace v3 syntax 2021-12-15 20:14:07 -06:00
Trevor Buckner
2dbfd1cc67 Merge branch 'master' into pr/1867 2021-12-15 21:13:41 -05:00
Trevor Buckner
6d461155e8 Merge pull request #1894 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.1.2
Bump mongoose from 6.1.1 to 6.1.2
2021-12-15 21:05:44 -05:00
Trevor Buckner
e198a8931a Merge branch 'master' into pr/1863 2021-12-15 01:07:25 -05:00
dependabot[bot]
e981fe04f9 Bump mongoose from 6.1.1 to 6.1.2
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.1.1 to 6.1.2.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.1.1...6.1.2)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-15 03:00:47 +00:00
Trevor Buckner
6233a72b8a Merge pull request #1891 from naturalcrit/dependabot/npm_and_yarn/babel/plugin-transform-runtime-7.16.5
Bump @babel/plugin-transform-runtime from 7.16.4 to 7.16.5
2021-12-13 23:41:28 -05:00
Trevor Buckner
4e013d218f Merge pull request #1892 from naturalcrit/dependabot/npm_and_yarn/babel/preset-react-7.16.5
Bump @babel/preset-react from 7.16.0 to 7.16.5
2021-12-13 23:41:18 -05:00
Trevor Buckner
31b95db10b Merge pull request #1857 from Gazook89/process-googleID-for-Print-hotkey
Process GoogleId for Print Hotkey
2021-12-13 23:41:08 -05:00
Trevor Buckner
90708c3ca9 Merge branch 'master' into pr/1857 2021-12-13 23:21:19 -05:00
dependabot[bot]
ef1074d169 Bump @babel/plugin-transform-runtime from 7.16.4 to 7.16.5
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.16.4 to 7.16.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.16.5/packages/babel-plugin-transform-runtime)

---
updated-dependencies:
- dependency-name: "@babel/plugin-transform-runtime"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-14 04:17:46 +00:00
dependabot[bot]
63fa174814 Bump @babel/preset-react from 7.16.0 to 7.16.5
Bumps [@babel/preset-react](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-react) from 7.16.0 to 7.16.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.16.5/packages/babel-preset-react)

---
updated-dependencies:
- dependency-name: "@babel/preset-react"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-14 04:17:41 +00:00
Trevor Buckner
7942f05961 Merge pull request #1893 from naturalcrit/dependabot/npm_and_yarn/marked-extended-tables-1.0.3
Bump marked-extended-tables from 1.0.2 to 1.0.3
2021-12-13 23:16:13 -05:00
Trevor Buckner
5456290692 Merge pull request #1890 from naturalcrit/dependabot/npm_and_yarn/babel/preset-env-7.16.5
Bump @babel/preset-env from 7.16.4 to 7.16.5
2021-12-13 23:15:54 -05:00
Trevor Buckner
7ead0d02db Merge pull request #1889 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.16.5
Bump @babel/core from 7.16.0 to 7.16.5
2021-12-13 23:15:45 -05:00
dependabot[bot]
9c5f0e5140 Bump marked-extended-tables from 1.0.2 to 1.0.3
Bumps [marked-extended-tables](https://github.com/calculuschild/marked-extended-tables) from 1.0.2 to 1.0.3.
- [Release notes](https://github.com/calculuschild/marked-extended-tables/releases)
- [Changelog](https://github.com/calculuschild/marked-extended-tables/blob/main/release.config.cjs)
- [Commits](https://github.com/calculuschild/marked-extended-tables/commits/v1.0.3)

---
updated-dependencies:
- dependency-name: marked-extended-tables
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-14 03:01:57 +00:00
dependabot[bot]
91735b3e19 Bump @babel/preset-env from 7.16.4 to 7.16.5
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.16.4 to 7.16.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.16.5/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-14 03:01:14 +00:00
dependabot[bot]
ad5fb5ee56 Bump @babel/core from 7.16.0 to 7.16.5
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.16.0 to 7.16.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.16.5/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-14 03:00:55 +00:00
Trevor Buckner
b9040226e4 Merge pull request #1819 from jeddai/codemirror-tweaks
Codemirror tweaks
2021-12-13 21:58:26 -05:00
Charlie Humphreys
2c2579ae2b Update usage of trailing space to include special chars for spaces 2021-12-13 20:49:32 -06:00
Charlie Humphreys
53fcdd8d7a Prevent activeline class from being removed 2021-12-13 20:29:28 -06:00
Trevor Buckner
87bf6301dc Merge pull request #1887 from naturalcrit/dependabot/npm_and_yarn/body-parser-1.19.1
Bump body-parser from 1.19.0 to 1.19.1
2021-12-13 15:30:15 -05:00
Trevor Buckner
98f6ba6045 Update Marked to v4.0.7, use Extended-Tables extension 2021-12-13 15:21:53 -05:00
dependabot[bot]
0ea40499e9 Bump body-parser from 1.19.0 to 1.19.1
Bumps [body-parser](https://github.com/expressjs/body-parser) from 1.19.0 to 1.19.1.
- [Release notes](https://github.com/expressjs/body-parser/releases)
- [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/body-parser/compare/1.19.0...1.19.1)

---
updated-dependencies:
- dependency-name: body-parser
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-13 03:01:13 +00:00
Charlie Humphreys
84f3519dbe Remove unnecessary findPersistent method 2021-12-10 23:39:26 -06:00
Charlie Humphreys
61cfef445b Update trailing space background and remove tab background when it is inside a trailing space 2021-12-10 23:07:21 -06:00
Charlie Humphreys
b60bc2996b Update search/replace shortcuts and add 'Enter'-based shortcut for navigating backwards 2021-12-10 23:05:16 -06:00
Charlie Humphreys
65c9a2cba0 Update CodeMirror library import order and add comments explaining each file 2021-12-10 23:04:22 -06:00
Charlie Humphreys
f1c4910993 Add to migrate document and update colon-replacement for the markdown renderer 2021-12-10 20:25:31 -06:00
Trevor Buckner
cd18692a53 Merge pull request #1886 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.1.1
Bump mongoose from 6.0.15 to 6.1.1
2021-12-09 23:01:08 -05:00
Trevor Buckner
220316ec7e Merge branch 'master' into pr/1819 2021-12-09 22:30:23 -05:00
Trevor Buckner
bbf6f7fb06 Merge pull request #1759 from G-Ambatte/fixCodeWrapping-#1736
Fix text wrapping in code blocks
2021-12-09 22:20:27 -05:00
Trevor Buckner
82fc581125 Change to overflow-wrap : break-word 2021-12-09 22:19:53 -05:00
Trevor Buckner
6be4fcefdb Merge branch 'master' into pr/1759 2021-12-09 22:16:56 -05:00
Trevor Buckner
f6eab47ab8 Merge pull request #1758 from naturalcrit/dependabot/npm_and_yarn/express-async-handler-1.2.0
Bump express-async-handler from 1.1.4 to 1.2.0
2021-12-09 22:14:42 -05:00
dependabot[bot]
dd887e9a4f Bump mongoose from 6.0.15 to 6.1.1
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.0.15 to 6.1.1.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.0.15...6.1.1)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-10 03:01:21 +00:00
Trevor Buckner
a8f5f71b32 Send 500 error if Google doesn't send an error
Fixes crash where error did not contain the expected `response` field from Google.
2021-12-09 13:57:43 -05:00
Trevor Buckner
dd93c4cdd4 Merge pull request #1841 from jeddai/metadata-document-block
Adding metadata block to brew text for Google brews
2021-12-07 23:19:29 -05:00
Charlie Humphreys
7eded57d79 Update package-lock.json after fixing my npm version 2021-12-07 22:11:16 -06:00
Charlie Humphreys
3de1d3afb0 Merge branch 'master' into metadata-document-block
# Conflicts:
#	package-lock.json
2021-12-07 22:09:44 -06:00
Charlie Humphreys
b817148d1c Initial page for migrating from GMB to HB 2021-12-07 22:09:01 -06:00
Trevor Buckner
902f91e25f Merge pull request #1880 from naturalcrit/v3.0.5
Up to Version 3.0.5
2021-12-07 23:02:01 -05:00
Trevor Buckner
12cb457c60 Up to Version 3.0.5 2021-12-07 23:01:42 -05:00
Trevor Buckner
cb3cfd44ee Merge pull request #1849 from Gazook89/better-google-errors
Change conditions for Google error
2021-12-06 22:42:11 -05:00
Trevor Buckner
0a335cefbf Update newPage.jsx 2021-12-06 22:41:11 -05:00
Trevor Buckner
fe9998c6e4 Update editPage.jsx 2021-12-06 22:40:42 -05:00
Trevor Buckner
634a98c2cb Update newPage.jsx 2021-12-06 22:39:48 -05:00
Trevor Buckner
d8b7e299fd Update newPage.jsx 2021-12-06 22:39:12 -05:00
Trevor Buckner
53ad7ecd57 Update editPage.jsx 2021-12-06 22:37:55 -05:00
Trevor Buckner
69a3e283f8 Merge pull request #1874 from naturalcrit/BatchCodeMirrorHighlighting
Tell CodeMirror to batch custom highlights before updating the browser
2021-12-06 22:32:28 -05:00
Trevor Buckner
58bb33cdcc Merge pull request #1876 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.0.15
Bump mongoose from 6.0.14 to 6.0.15
2021-12-06 22:31:57 -05:00
Trevor Buckner
1bbacc974b lint 2021-12-06 22:31:25 -05:00
Trevor Buckner
b6e29c8a61 Change to callback style 2021-12-06 22:30:58 -05:00
Trevor Buckner
f56d576a1e Merge pull request #1875 from naturalcrit/dependabot/npm_and_yarn/eslint-8.4.1
Bump eslint from 8.4.0 to 8.4.1
2021-12-06 22:15:35 -05:00
dependabot[bot]
da4dc9eb7e Bump mongoose from 6.0.14 to 6.0.15
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.0.14 to 6.0.15.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.0.14...6.0.15)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-07 03:01:19 +00:00
dependabot[bot]
e2b2b38e5b Bump eslint from 8.4.0 to 8.4.1
Bumps [eslint](https://github.com/eslint/eslint) from 8.4.0 to 8.4.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.4.0...v8.4.1)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-07 03:00:52 +00:00
Trevor Buckner
09f64e018e Tell CodeMirror to batch custom highlights before updating the browser 2021-12-06 16:23:18 -05:00
Trevor Buckner
3762c278c4 Merge pull request #1809 from Gazook89/page-numbers-via-JS
Page numbers via js
2021-12-06 15:51:58 -05:00
Trevor Buckner
8acd42fcbe Small cleanup. Reduce redundant code. 2021-12-06 15:36:41 -05:00
Trevor Buckner
23deef7a9a Merge branch 'master' into pr/1809 2021-12-06 14:57:55 -05:00
Trevor Buckner
782e8dc495 Merge pull request #1873 from naturalcrit/dependabot/npm_and_yarn/eslint-8.4.0
Bump eslint from 8.3.0 to 8.4.0
2021-12-06 11:47:12 -05:00
dependabot[bot]
0049137932 Bump eslint from 8.3.0 to 8.4.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.3.0 to 8.4.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.3.0...v8.4.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-06 03:00:58 +00:00
Gazook89
dcf4fe10cd lint 2021-12-03 20:25:04 -06:00
Gazook89
5cd45a1413 remove "in viewport" requirement for markdown highlight/pg numbers 2021-12-03 20:20:40 -06:00
Trevor Buckner
65bac929ca Merge pull request #1719 from Gazook89/Hotkey-for-Lists
Hotkey for Lists
2021-12-03 15:24:02 -05:00
Trevor Buckner
d4b26cc4c4 Merge branch 'master' into pr/1719 2021-12-03 15:16:19 -05:00
Trevor Buckner
a88443563e Merge pull request #1707 from RKuerten/header-functions
Added heading shortcuts (H1 to H6)
2021-12-02 23:45:55 -05:00
Trevor Buckner
1865e56b04 lint 2021-12-02 23:44:48 -05:00
Trevor Buckner
4fefc1e4d2 Merge branch 'master' into pr/1707 2021-12-02 23:29:47 -05:00
Trevor Buckner
8092192210 Merge pull request #1645 from Gazook89/Hotkey-Mania
Add Hotkeys for Underline and makeDiv
2021-12-02 15:52:54 -05:00
Trevor Buckner
a30e150ade Disable max lines to satisfy lint
Eventually we should move the hotkey scripts into a separate file. They are becoming a beast of their own.
2021-12-02 15:47:18 -05:00
Trevor Buckner
9da1bfc606 Finish Merge with Master 2021-12-02 12:18:22 -05:00
Trevor Buckner
28f29ac49e Merge branch 'master' into pr/1645 2021-12-02 12:17:41 -05:00
Trevor Buckner
97f079311d Merge pull request #1568 from Gazook89/Hotkey-for-Links
Hotkey for hyperlinks (`Ctrl`/`Cmd` + `K`)
2021-12-02 11:50:17 -05:00
Trevor Buckner
2586a871e1 Use capture groups, add default "alt text" if none selected
Also allow whitespace at end and start of selection, so you don't have to be perfect.
2021-12-02 11:45:10 -05:00
Charlie Humphreys
6a73136176 Update object parsing to use _.pick 2021-12-01 19:20:16 -06:00
Trevor Buckner
76553d1e65 Merge branch 'master' into pr/1568 2021-12-01 16:56:10 -05:00
Charlie Humphreys
20e1fb406f Update package-lock.json 2021-12-01 10:48:05 -06:00
Charlie Humphreys
fadfe7d091 Merge branch 'master' into metadata-document-block
# Conflicts:
#	package-lock.json
#	package.json
2021-12-01 10:37:03 -06:00
Charlie Humphreys
db3980a716 Add yaml require back in 2021-11-30 23:32:16 -06:00
Charlie Humphreys
25c36425be Update code based on feedback 2021-11-30 23:05:08 -06:00
G.Ambatte
806a60e356 Add classes to User Page sort options + brew links 2021-11-30 21:57:42 +13:00
dependabot[bot]
06def81b0a Bump express-async-handler from 1.1.4 to 1.2.0
Bumps [express-async-handler](https://github.com/Abazhenov/express-async-handler) from 1.1.4 to 1.2.0.
- [Release notes](https://github.com/Abazhenov/express-async-handler/releases)
- [Commits](https://github.com/Abazhenov/express-async-handler/commits)

---
updated-dependencies:
- dependency-name: express-async-handler
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-30 04:19:03 +00:00
Trevor Buckner
ce5058538d Merge pull request #1865 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.0.14
Bump mongoose from 6.0.13 to 6.0.14
2021-11-29 23:17:04 -05:00
Trevor Buckner
b5b6eba5da Merge pull request #1864 from naturalcrit/dependabot/npm_and_yarn/googleapis-92.0.0
Bump googleapis from 91.0.0 to 92.0.0
2021-11-29 23:16:53 -05:00
dependabot[bot]
e4162f3716 Bump mongoose from 6.0.13 to 6.0.14
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.0.13 to 6.0.14.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.0.13...6.0.14)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-30 03:01:37 +00:00
dependabot[bot]
4000ec546a Bump googleapis from 91.0.0 to 92.0.0
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 91.0.0 to 92.0.0.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/googleapis-v91.0.0...googleapis-v92.0.0)

---
updated-dependencies:
- dependency-name: googleapis
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-30 03:00:57 +00:00
Charlie Humphreys
46b64b8001 Update package-lock.json for addition of js-yaml 2021-11-28 23:32:05 -06:00
Charlie Humphreys
49bc2cb32a Merge branch 'master' into metadata-document-block
# Conflicts:
#	package-lock.json
2021-11-28 23:31:14 -06:00
Charlie Humphreys
85c221e9bd Change counter usage in cover page snippet to no longer increment the counter on the cover page 2021-11-28 23:02:44 -06:00
Charlie Humphreys
9e7239cfef Fix table of contents CSS so the first items in both columns start at the same vertical position 2021-11-28 22:37:51 -06:00
Charlie Humphreys
640bc33719 Fix cover page snippet styles and formatting for v3 2021-11-28 22:17:02 -06:00
Charlie Humphreys
5ffdd022c2 Changed uses of the 'raw' brew access type to 'view' and update uses of mergeBrewText as a result
#1838
2021-11-25 22:44:59 -06:00
Gazook89
9618e802d1 Update client/homebrew/pages/editPage/editPage.jsx
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2021-11-24 14:35:36 -06:00
Gazook89
2e5d1b3b55 Update client/homebrew/pages/newPage/newPage.jsx
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2021-11-24 07:48:44 -06:00
Gazook89
fe15ae07a1 Update client/homebrew/pages/sharePage/sharePage.jsx
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2021-11-24 07:45:51 -06:00
Charlie Humphreys
ef433bbbe2 Update brew content merging functionality and add it to downloads/page source views
#1838
2021-11-23 23:53:02 -06:00
Trevor Buckner
1bc68a9e85 Merge pull request #1847 from Gazook89/note-interparagraph-spacing
remove p + p padding in .note & .descriptive
2021-11-23 23:31:02 -05:00
Gazook89
be75019afd Update sharePage.jsx 2021-11-22 14:26:32 -06:00
Trevor Buckner
be88a0fde8 Merge pull request #1831 from naturalcrit/dependabot/npm_and_yarn/babel/preset-env-7.16.4
Bump @babel/preset-env from 7.16.0 to 7.16.4
2021-11-22 00:30:15 -05:00
Trevor Buckner
a1f9459ee9 Merge pull request #1854 from naturalcrit/dependabot/npm_and_yarn/eslint-plugin-react-7.27.1
Bump eslint-plugin-react from 7.27.0 to 7.27.1
2021-11-21 23:41:02 -05:00
Trevor Buckner
77089719c0 Merge pull request #1852 from naturalcrit/dependabot/npm_and_yarn/codemirror-5.64.0
Bump codemirror from 5.63.3 to 5.64.0
2021-11-21 23:30:19 -05:00
dependabot[bot]
161db209e6 Bump eslint-plugin-react from 7.27.0 to 7.27.1
Bumps [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) from 7.27.0 to 7.27.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.27.0...v7.27.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-react
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-22 04:28:28 +00:00
Trevor Buckner
04d285164a Merge pull request #1853 from naturalcrit/dependabot/npm_and_yarn/eslint-8.3.0
Bump eslint from 8.2.0 to 8.3.0
2021-11-21 23:24:17 -05:00
dependabot[bot]
7cda37c5e2 Bump eslint from 8.2.0 to 8.3.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.2.0 to 8.3.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.2.0...v8.3.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-22 03:01:35 +00:00
dependabot[bot]
63259ef8f4 Bump codemirror from 5.63.3 to 5.64.0
Bumps [codemirror](https://github.com/codemirror/CodeMirror) from 5.63.3 to 5.64.0.
- [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.63.3...5.64.0)

---
updated-dependencies:
- dependency-name: codemirror
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-22 03:01:12 +00:00
Gazook89
372d33271d Change widgets to bookmarks for page counters 2021-11-21 15:17:23 -06:00
Gazook89
7997698bcd change conditions for google error 2021-11-21 10:58:41 -06:00
Gazook89
833f08d245 remove p + p padding in .note & .descriptive 2021-11-20 10:48:16 -06:00
Gazook89
09f9e1d398 Merge branch 'master' into page-numbers-via-JS 2021-11-20 10:07:07 -06:00
Charlie Humphreys
f40b4b2f30 Update brew text merge and split functions to include metadata
#1838
2021-11-18 23:23:05 -06:00
Gazook89
f72d8f0ef0 merge pageNumber() into customHighlight() 2021-11-17 10:47:16 -06:00
Gazook89
f0608441fc fix circleCI errors 2021-11-17 09:58:31 -06:00
Gazook89
8b13528661 add check for change to current viewport 2021-11-17 09:47:51 -06:00
dependabot[bot]
2b2c4c15f5 Bump @babel/preset-env from 7.16.0 to 7.16.4
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.16.0 to 7.16.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.16.4/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-17 06:14:20 +00:00
Trevor Buckner
0d685acfca Merge pull request #1835 from naturalcrit/v3.0.4
Up version to v3.0.4
2021-11-17 01:13:40 -05:00
Trevor Buckner
6471ee0577 Merge pull request #1830 from naturalcrit/dependabot/npm_and_yarn/babel/plugin-transform-runtime-7.16.4
Bump @babel/plugin-transform-runtime from 7.16.0 to 7.16.4
2021-11-17 01:13:02 -05:00
Trevor Buckner
a890e25e3f Merge pull request #1832 from naturalcrit/dependabot/npm_and_yarn/cookie-parser-1.4.6
Bump cookie-parser from 1.4.5 to 1.4.6
2021-11-17 01:12:37 -05:00
Trevor Buckner
acfd0a2a6b Merge pull request #1833 from jeddai/chrome-96-fix-v3
Chrome 96 Style Tweaks for v3 PHB Theme
2021-11-17 01:10:22 -05:00
Trevor Buckner
c945984d88 Slight nudges. Comments that header line-height is just to fix bad font baseline 2021-11-17 01:09:52 -05:00
Trevor Buckner
de8f15d726 Up version to v3.0.4 2021-11-17 00:43:31 -05:00
Charlie Humphreys
1c648e5c2d Update less for line-height em changes due to renderer changes in Chrome 96
#1828
2021-11-16 23:34:48 -06:00
Trevor Buckner
aa009f8854 Merge pull request #1829 from jeddai/chrome-96-fix
Chrome 96 Style Tweaks for Legacy PHB Theme
2021-11-17 00:18:45 -05:00
Trevor Buckner
ebe76cbb0e Nudge values to line up with live site on Chrome 95 2021-11-17 00:14:15 -05:00
dependabot[bot]
9319b887c2 Bump cookie-parser from 1.4.5 to 1.4.6
Bumps [cookie-parser](https://github.com/expressjs/cookie-parser) from 1.4.5 to 1.4.6.
- [Release notes](https://github.com/expressjs/cookie-parser/releases)
- [Changelog](https://github.com/expressjs/cookie-parser/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/cookie-parser/compare/1.4.5...1.4.6)

---
updated-dependencies:
- dependency-name: cookie-parser
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-17 03:01:26 +00:00
dependabot[bot]
11aa6cccb8 Bump @babel/plugin-transform-runtime from 7.16.0 to 7.16.4
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.16.0 to 7.16.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.16.4/packages/babel-plugin-transform-runtime)

---
updated-dependencies:
- dependency-name: "@babel/plugin-transform-runtime"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-17 03:00:49 +00:00
Charlie Humphreys
ecfda87262 Update legacy less for font-size and line-height em cases due to renderer changes in Chrome 96
#1828
2021-11-16 17:16:55 -06:00
Trevor Buckner
c8fab7f1d2 Merge pull request #1827 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.0.13
Bump mongoose from 6.0.12 to 6.0.13
2021-11-15 22:51:25 -05:00
Trevor Buckner
920c8846c8 Merge pull request #1821 from naturalcrit/dependabot/npm_and_yarn/eslint-plugin-react-7.27.0
Bump eslint-plugin-react from 7.26.1 to 7.27.0
2021-11-15 22:49:25 -05:00
dependabot[bot]
fc324babf0 Bump mongoose from 6.0.12 to 6.0.13
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.0.12 to 6.0.13.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.0.12...6.0.13)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-16 03:00:50 +00:00
Trevor Buckner
258dca8569 Merge pull request #1792 from jeddai/code-folding
Add code folding feature for all content within a single page
2021-11-14 21:35:46 -05:00
Charlie Humphreys
2ea6610c57 Merge branch 'code-folding' into codemirror-tweaks
# Conflicts:
#	shared/naturalcrit/codeEditor/codeEditor.jsx
2021-11-14 14:46:26 -06:00
Charlie Humphreys
1ec1ddc80c Remove code fold toggling shortcut
#629
2021-11-14 09:58:41 -06:00
Trevor Buckner
b67dc1621b More simplification to fold-code script 2021-11-13 20:57:33 -05:00
Charlie Humphreys
602ff67f3c Add style for tabs to show tabs differently from spaces in the code editor
#1622
2021-11-11 22:38:27 -06:00
Charlie Humphreys
278a4d35c7 Adjust calling of removeLineClass to limit the classes it removes
#1201 #1202
2021-11-11 21:47:15 -06:00
Charlie Humphreys
ea68e4778e Merge branch 'code-folding' into codemirror-tweaks 2021-11-11 21:16:40 -06:00
Charlie Humphreys
2d30ac21a7 Update code based on PR feedback
#692
2021-11-11 17:08:05 -06:00
dependabot[bot]
5fbae3271f Bump eslint-plugin-react from 7.26.1 to 7.27.0
Bumps [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) from 7.26.1 to 7.27.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.26.1...v7.27.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-react
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-11 03:00:58 +00:00
Charlie Humphreys
da6b00918d Add addons for code search, auto-closing code, active line highlight, and trailing whitespace
#1201 #1202
2021-11-10 17:11:00 -06:00
Charlie Humphreys
52d7e6892b Adjust comment to better describe the require section
#629
2021-11-10 11:37:18 -06:00
Gazook89
9f05aae876 remove left property entirely and set height to cm.defaultTextHeight 2021-11-10 11:17:45 -06:00
Charlie Humphreys
cac9e208df Update editor.jsx to only clear marks that are not folds
#629
2021-11-10 10:27:32 -06:00
Charlie Humphreys
c86e8c51cb Remove code added for debugging purposes
#629
2021-11-10 10:26:55 -06:00
Charlie Humphreys
3abb399045 Update homebrewery fold helper to allow folding the last page to the end of the document
#629
2021-11-09 10:08:48 -06:00
Trevor Buckner
fb52618ce9 Merge pull request #1794 from G-Ambatte/fixViewCountOrdering-#1793
Fix UserPage ordering of Google Brews
2021-11-09 10:49:41 -05:00
Trevor Buckner
f8a2ffa4fa Merge pull request #1811 from naturalcrit/dependabot/npm_and_yarn/eslint-8.2.0
Bump eslint from 8.1.0 to 8.2.0
2021-11-08 22:02:14 -05:00
Trevor Buckner
ff521f64a6 Merge pull request #1812 from naturalcrit/dependabot/npm_and_yarn/googleapis-91.0.0
Bump googleapis from 89.0.0 to 91.0.0
2021-11-08 22:01:44 -05:00
dependabot[bot]
edb8f28098 Bump googleapis from 89.0.0 to 91.0.0
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 89.0.0 to 91.0.0.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/googleapis-v89.0.0...googleapis-v91.0.0)

---
updated-dependencies:
- dependency-name: googleapis
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-09 03:00:55 +00:00
Charlie Humphreys
b06dedfa4a Fix linting issues
#629
2021-11-08 17:24:33 -06:00
Charlie Humphreys
f3d0d3e2c9 Add new library files to the browserify lib array
#629
2021-11-08 17:24:22 -06:00
Gazook89
3e54f6e6e1 remove collection array from _.forEach() function
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2021-11-08 10:49:41 -06:00
Gazook89
796bd22000 circleCI update 2021-11-08 09:07:59 -06:00
Gazook89
403e5050e8 adjust position from right to accommodate scrollbar 2021-11-08 09:05:08 -06:00
Gazook89
c3e24ef4c5 replace _.reduce() with _.forEach() 2021-11-08 08:59:30 -06:00
Charlie Humphreys
eec6e66543 Replace copied code with require methods to import the CodeMirror helpers
Put back the correct require notation for importing the foldcode and foldgutter helpers

#629
2021-11-07 21:35:35 -06:00
dependabot[bot]
b17c2dc341 Bump eslint from 8.1.0 to 8.2.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.1.0 to 8.2.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.1.0...v8.2.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-08 03:01:22 +00:00
Gazook89
9141b93a6b fix pageCountWidgets to get elements by correct class name 2021-11-07 16:47:54 -06:00
Gazook89
1fb63f8be3 initial commit to add programmatic page counts in editor
update element classname to be more descriptive, remove some commented code.
2021-11-07 16:33:50 -06:00
Trevor Buckner
34bc242b76 Merge pull request #1802 from naturalcrit/revert-1777-experimentalAddMetadata-#820
Revert "Add `<meta>` tags to template"
2021-11-03 22:09:28 -04:00
Trevor Buckner
f4529594a2 Revert "Add <meta> tags to template" 2021-11-03 22:07:58 -04:00
Trevor Buckner
3a4cf4f2dd Merge pull request #1777 from G-Ambatte/experimentalAddMetadata-#820
Add `<meta>` tags to template
2021-11-03 21:59:21 -04:00
G.Ambatte
f422b22af1 Revert "Initial pass at editorPage.jsx."
This reverts commit 6cd56dfd62.
2021-11-04 14:07:11 +13:00
G.Ambatte
6cd56dfd62 Initial pass at editorPage.jsx. 2021-11-04 14:03:57 +13:00
Trevor Buckner
fbcd4036f5 Merge pull request #1788 from naturalcrit/dependabot/npm_and_yarn/babel/preset-env-7.16.0
Bump @babel/preset-env from 7.15.8 to 7.16.0
2021-11-03 21:03:24 -04:00
G.Ambatte
fe708e0a0b Remove line rather than comment it out 2021-11-04 11:44:41 +13:00
G.Ambatte
4fc0bbc9d7 Remove unnecessary userPage.less 2021-11-04 11:44:05 +13:00
G.Ambatte
fd0eb4ca7d Add & implement ListPage 2021-11-04 10:42:27 +13:00
dependabot[bot]
3528503604 Bump @babel/preset-env from 7.15.8 to 7.16.0
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.15.8 to 7.16.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.16.0/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-03 14:16:58 +00:00
Trevor Buckner
954fb6064e Merge pull request #1787 from naturalcrit/dependabot/npm_and_yarn/babel/plugin-transform-runtime-7.16.0
Bump @babel/plugin-transform-runtime from 7.15.8 to 7.16.0
2021-11-03 10:16:09 -04:00
G.Ambatte
2948a9ffc3 Update listGoogleBrews to ensure pageCount and views are integers 2021-11-03 21:39:20 +13:00
dependabot[bot]
e54649bf66 Bump @babel/plugin-transform-runtime from 7.15.8 to 7.16.0
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.15.8 to 7.16.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.16.0/packages/babel-plugin-transform-runtime)

---
updated-dependencies:
- dependency-name: "@babel/plugin-transform-runtime"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-03 03:46:38 +00:00
Trevor Buckner
dcb99fff80 Merge pull request #1786 from naturalcrit/dependabot/npm_and_yarn/babel/preset-react-7.16.0
Bump @babel/preset-react from 7.14.5 to 7.16.0
2021-11-02 23:45:42 -04:00
Trevor Buckner
a851469ae1 Merge pull request #1785 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.16.0
Bump @babel/core from 7.15.8 to 7.16.0
2021-11-02 23:45:34 -04:00
Charlie Humphreys
c0b9f4488f Add code folding feature for all content within a single page
Added the gutter definitions and css for code folding. Enabling code folding in the editor was
tricky due to how CodeMirror loads its files. At the moment, the CodeMirror code-folding code has
been copied into the fold-code.js file. Additionally, that file contains the helper registration
for the Homebrewery-specific code folding function.

#629
2021-11-02 22:40:17 -05:00
dependabot[bot]
594aebaf8f Bump @babel/preset-react from 7.14.5 to 7.16.0
Bumps [@babel/preset-react](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-react) from 7.14.5 to 7.16.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.16.0/packages/babel-preset-react)

---
updated-dependencies:
- dependency-name: "@babel/preset-react"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-01 03:01:27 +00:00
dependabot[bot]
34c8646477 Bump @babel/core from 7.15.8 to 7.16.0
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.15.8 to 7.16.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.16.0/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-01 03:01:02 +00:00
G.Ambatte
5bc3de1e0a Added Prod check to template function for meta URL 2021-10-31 00:21:42 +13:00
G.Ambatte
bd5f3c74e7 Add public URL in template.js 2021-10-31 00:07:25 +13:00
G.Ambatte
68341bf6a5 Use PUBLIC_ENV variable and localhost thumbnail 2021-10-30 19:00:44 +13:00
G.Ambatte
95f1561f0d Change to locally hosted thumbnail image 2021-10-30 18:57:53 +13:00
G.Ambatte
056024372b Fix button arrow size. 2021-10-30 18:25:51 +13:00
G.Ambatte
cd8962f68b Nudge Metadata Editor elements 2021-10-30 18:14:46 +13:00
G.Ambatte
bade8ad32f Remove showThumbnail from MetadataEditor props 2021-10-30 18:14:21 +13:00
G.Ambatte
4714074b12 Remove unnecessary thumbnail default prop 2021-10-30 18:13:04 +13:00
G.Ambatte
785b859d63 Changed label from thumbnail URL to thumbnail 2021-10-30 14:03:01 +13:00
G.Ambatte
de39ef938a Added placeholder to text input 2021-10-30 14:02:09 +13:00
G.Ambatte
6295b7561e Modularize default icon location 2021-10-30 13:51:59 +13:00
G.Ambatte
defae3cc3a Add overflow control to URL textbox 2021-10-30 13:51:28 +13:00
G.Ambatte
47c2b4bbde Add max-height to thumbnail preview 2021-10-30 13:38:41 +13:00
G.Ambatte
029077b92b Default thumbnail to visible rather than hidden 2021-10-30 13:26:08 +13:00
G.Ambatte
ed042a66a4 Fix label line height 2021-10-29 12:03:13 +13:00
G.Ambatte
7499a0d9ab Add thumbnail preview to Metadata Editor 2021-10-29 11:54:56 +13:00
Trevor Buckner
09ca2a4fd9 Merge pull request #1779 from naturalcrit/v3.0.3
Update Changelog to v3.0.3
2021-10-27 21:53:42 -04:00
Trevor Buckner
a4b2fe2b91 Update Changelog 2021-10-27 21:52:52 -04:00
Trevor Buckner
8b219ba38a Merge pull request #1773 from naturalcrit/dependabot/npm_and_yarn/marked-3.0.8
Bump marked from 3.0.7 to 3.0.8
2021-10-27 21:41:22 -04:00
G.Ambatte
6160d3ddd1 Correct thumbnail type in model
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2021-10-28 09:08:54 +13:00
G.Ambatte
20d7193fb2 Add thumbnail to metadata and saving functions 2021-10-28 00:29:42 +13:00
G.Ambatte
3ce1ea610d Update template.js to add <meta> tags 2021-10-27 19:51:52 +13:00
Trevor Buckner
8722791419 Merge pull request #1772 from naturalcrit/dependabot/npm_and_yarn/eslint-8.1.0
Bump eslint from 8.0.1 to 8.1.0
2021-10-26 23:11:45 -04:00
Trevor Buckner
55c175d9dd Merge pull request #1775 from G-Ambatte/fixDockerNodeConfig-#1767
[Docker] Shift to Alpine base image
2021-10-26 23:10:25 -04:00
G.Ambatte
da2dfd3736 Shift from 16.11 to 16.11-alpine with git added 2021-10-26 19:15:58 +13:00
dependabot[bot]
bf489513dc Bump marked from 3.0.7 to 3.0.8
Bumps [marked](https://github.com/markedjs/marked) from 3.0.7 to 3.0.8.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/release.config.js)
- [Commits](https://github.com/markedjs/marked/compare/v3.0.7...v3.0.8)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-25 03:00:59 +00:00
dependabot[bot]
56054e2607 Bump eslint from 8.0.1 to 8.1.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.0.1 to 8.1.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.0.1...v8.1.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-25 03:00:36 +00:00
Trevor Buckner
732021f5a5 Merge pull request #1769 from naturalcrit/FixStartingUndoOnNewPage
Fix starting undo on new page
2021-10-24 19:10:58 -04:00
Trevor Buckner
34293bcc1d Merge pull request #1763 from naturalcrit/keepHistoryOnTabSwitch
use CodeMirror Documents
2021-10-24 19:04:14 -04:00
Trevor Buckner
ddb12ffbe2 Make sure initial tab loads with language for code highlighting 2021-10-24 18:03:10 -04:00
Trevor Buckner
47b99a24fb Clear out unneeded style when editor is hidden in Metadata panel 2021-10-24 16:46:46 -04:00
Trevor Buckner
a4e0768105 Move Localstorage load to GetInitialState
Prevents the extra change to the CodeMirror document which was creating a starting "undo" history point that would blank out the page.
2021-10-24 16:42:39 -04:00
Trevor Buckner
11f7e3b8fc Merge pull request #1768 from G-Ambatte/fixDockerNodeConfig-#1767
Up Dockerfile Node version
2021-10-24 11:26:22 -04:00
G.Ambatte
e42c346ebc Up Dockerfile Node version 2021-10-23 14:21:06 +13:00
Trevor Buckner
23799b8d41 Merge pull request #1765 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.0.12
Bump mongoose from 6.0.11 to 6.0.12
2021-10-21 23:47:14 -04:00
dependabot[bot]
9515e13ce5 Bump mongoose from 6.0.11 to 6.0.12
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.0.11 to 6.0.12.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.0.11...6.0.12)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-22 03:01:17 +00:00
Trevor Buckner
e1d7a363ef Merge pull request #1760 from G-Ambatte/fixDivider-#1674
Limit divider position
2021-10-20 10:55:28 -04:00
Trevor Buckner
63d659ff49 use CodeMirror Documents
Instead of re-building the whole editor box with every tab switch, we just swap in and out CodeMirror "documents".

Maintains undo history, scroll position, highlight coloring, etc.
2021-10-19 23:49:11 -04:00
G.Ambatte
dbf6020194 Darken divider on hover 2021-10-19 23:19:26 +13:00
Trevor Buckner
b5ad75bcf2 Merge pull request #1761 from naturalcrit/dependabot/npm_and_yarn/googleapis-89.0.0
Bump googleapis from 88.2.0 to 89.0.0
2021-10-18 23:33:17 -04:00
dependabot[bot]
67d3c44017 Bump googleapis from 88.2.0 to 89.0.0
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 88.2.0 to 89.0.0.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/googleapis-v88.2.0...googleapis-v89.0.0)

---
updated-dependencies:
- dependency-name: googleapis
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-19 03:00:46 +00:00
G.Ambatte
3b37cacea2 Limit position to min/max window limits 2021-10-19 15:04:53 +13:00
G.Ambatte
a2a6a3d3f6 Add limits to central divider position 2021-10-19 14:39:51 +13:00
Trevor Buckner
e9b9c87188 Merge pull request #1701 from G-Ambatte/addEditorBar
Editor Toolbar - Undo and Redo.
2021-10-18 15:18:20 -04:00
G.Ambatte
fec6aacee5 Add word-break: break-word to fix code wrapping 2021-10-18 22:51:17 +13:00
G.Ambatte
941159425b Merge branch 'addEditorBar' of https://github.com/G-Ambatte/homebrewery into addEditorBar 2021-10-18 22:30:55 +13:00
G.Ambatte
f33cd39300 Add conditional highlighting to Undo/Redo 2021-10-18 22:29:27 +13:00
G.Ambatte
8983960ca8 Add divider and tool active class 2021-10-18 22:29:27 +13:00
G.Ambatte
9dd885e7eb Move Undo/Redo to SnippetBar 2021-10-18 22:29:26 +13:00
G.Ambatte
ab2900cadf Expose CodeMirror functions in codeEditor.jsx 2021-10-18 22:29:25 +13:00
Sean Robertson
bfcb29ff9c Reduce CodeMirror codeEditor historyEventDelay to 250 2021-10-18 22:29:25 +13:00
G.Ambatte
9bc52b412c Initial pass at Editor Toolbar - Undo and Redo. 2021-10-18 22:29:25 +13:00
G.Ambatte
606a3c843d Add conditional highlighting to Undo/Redo 2021-10-18 22:26:34 +13:00
G.Ambatte
5b3953094e Add divider and tool active class 2021-10-18 21:39:01 +13:00
Trevor Buckner
aec8133046 Merge pull request #1755 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.0.11
Bump mongoose from 6.0.10 to 6.0.11
2021-10-14 23:06:52 -04:00
dependabot[bot]
97cad9f52c Bump mongoose from 6.0.10 to 6.0.11
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.0.10 to 6.0.11.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.0.10...6.0.11)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-15 03:01:06 +00:00
Trevor Buckner
44d4198f69 Merge pull request #1754 from naturalcrit/dependabot/npm_and_yarn/eslint-8.0.1
Bump eslint from 8.0.0 to 8.0.1
2021-10-14 00:46:14 -04:00
Trevor Buckner
432cce4ccf Merge pull request #1753 from naturalcrit/dependabot/npm_and_yarn/nanoid-3.1.30
Bump nanoid from 3.1.29 to 3.1.30
2021-10-14 00:45:59 -04:00
Trevor Buckner
7eb43b7c61 Merge pull request #1752 from naturalcrit/DropdownButtonComponent
Working dropdown component
2021-10-14 00:45:42 -04:00
Trevor Buckner
feb8fcadd6 Animate dropdown 2021-10-14 00:40:51 -04:00
Trevor Buckner
872125515e Apply to Edit page 2021-10-14 00:03:22 -04:00
dependabot[bot]
cb9bb37234 Bump eslint from 8.0.0 to 8.0.1
Bumps [eslint](https://github.com/eslint/eslint) from 8.0.0 to 8.0.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.0.0...v8.0.1)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-14 03:01:26 +00:00
dependabot[bot]
d223f5e21d Bump nanoid from 3.1.29 to 3.1.30
Bumps [nanoid](https://github.com/ai/nanoid) from 3.1.29 to 3.1.30.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.1.29...3.1.30)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-14 03:00:50 +00:00
Trevor Buckner
b9891d1c08 Merge pull request #1751 from naturalcrit/dependabot/npm_and_yarn/codemirror-5.63.3
Bump codemirror from 5.63.1 to 5.63.3
2021-10-13 11:58:33 -04:00
Trevor Buckner
a695540f60 Working dropdown component on the Share Page 2021-10-13 11:53:01 -04:00
dependabot[bot]
414ae1b7e9 Bump codemirror from 5.63.1 to 5.63.3
Bumps [codemirror](https://github.com/codemirror/CodeMirror) from 5.63.1 to 5.63.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.63.1...5.63.3)

---
updated-dependencies:
- dependency-name: codemirror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-13 03:00:41 +00:00
Trevor Buckner
2b2869dc47 Merge pull request #1750 from naturalcrit/Make-V3-Welcome-use-all-V3-syntax
Make V3 Welcome page use all V3 syntax
2021-10-12 22:40:49 -04:00
Trevor Buckner
8244b59b57 Update welcome_msg_v3.md 2021-10-12 22:38:16 -04:00
Trevor Buckner
e1a3d8c303 Merge pull request #1676 from Gazook89/FAQ-Page
Update the FAQ
2021-10-12 22:27:46 -04:00
Trevor Buckner
9add142edf Tweak v3 welcome to fit in page 2021-10-12 22:25:38 -04:00
Gazook89
1ff8308647 add link to FAQ in welcome pages 2021-10-11 20:31:13 -05:00
Gazook89
b6739483ee update faq.md with revisions from calculuschild. 2021-10-11 18:26:10 -05:00
Gazook89
2d0569ed22 Create a FAQ.md doc for use within HB
Just the document for this commit.
2021-10-11 18:25:41 -05:00
Trevor Buckner
7cba892778 Merge pull request #1747 from naturalcrit/dependabot/npm_and_yarn/eslint-8.0.0
Bump eslint from 7.32.0 to 8.0.0
2021-10-11 14:52:12 -04:00
dependabot[bot]
b2814947df Bump eslint from 7.32.0 to 8.0.0
Bumps [eslint](https://github.com/eslint/eslint) from 7.32.0 to 8.0.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.32.0...v8.0.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-11 17:12:15 +00:00
Trevor Buckner
b65295b1df Merge pull request #1748 from naturalcrit/Update-CircleCi-to-Node16+Mongo4.4
Update Circleci config to node16 and mongo4.4
2021-10-11 13:10:25 -04:00
Trevor Buckner
a31ad79eec 16.11 not available yet in circleci. Back to 16.10 2021-10-11 13:09:38 -04:00
Trevor Buckner
8fffdc83cf Update config.yml 2021-10-11 13:07:25 -04:00
Trevor Buckner
0a41f72d37 Update to Node v16 2021-10-11 12:44:05 -04:00
Trevor Buckner
7086524cf3 Merge pull request #1745 from G-Ambatte/updateWelcomePageLink-#1744
Update Unearthed Arcana links
2021-10-10 23:03:51 -04:00
Trevor Buckner
9f1f7f272a Merge pull request #1746 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.0.10
Bump mongoose from 6.0.9 to 6.0.10
2021-10-10 23:02:40 -04:00
dependabot[bot]
9900e3194e Bump mongoose from 6.0.9 to 6.0.10
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.0.9 to 6.0.10.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.0.9...6.0.10)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-11 03:00:44 +00:00
G.Ambatte
c1d0bdbf03 Update links 2021-10-10 16:13:36 +13:00
Trevor Buckner
f90f956364 Merge pull request #1743 from naturalcrit/dependabot/npm_and_yarn/marked-3.0.7
Bump marked from 3.0.4 to 3.0.7
2021-10-08 09:28:50 -04:00
dependabot[bot]
088702f4d6 Bump marked from 3.0.4 to 3.0.7
Bumps [marked](https://github.com/markedjs/marked) from 3.0.4 to 3.0.7.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/release.config.js)
- [Commits](https://github.com/markedjs/marked/compare/v3.0.4...v3.0.7)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-08 03:00:34 +00:00
Trevor Buckner
d4fedf62de Merge pull request #1726 from G-Ambatte/fixPrintPageRenderer-#1702
Get renderer information from localStorage when printing from `/new`
2021-10-07 22:32:49 -04:00
Trevor Buckner
1f4ffa6785 Use same brew object throughout
Rather than using separate `brewText` and `styleText` state variables when printing from /new, just load the files into the same `brew` object the rest of the page uses.

Also load localstorage in the same way as on `/new` via BREWKEY and STYLEKEY for consistency, rather than passing it in as a separate `brew` item in localstorage
2021-10-07 22:01:53 -04:00
Trevor Buckner
749f4ca6aa Merge pull request #1732 from Gazook89/Share-to-Reddit-and-Copy-Share-URL-to-Clipboard
Add Share to Reddit and Copy Share URL to Share Menu
2021-10-07 16:49:28 -04:00
Trevor Buckner
2511b1d832 Merge pull request #1740 from naturalcrit/dependabot/npm_and_yarn/babel/plugin-transform-runtime-7.15.8
Bump @babel/plugin-transform-runtime from 7.15.0 to 7.15.8
2021-10-07 09:49:50 -04:00
dependabot[bot]
f3c29f4c24 Bump @babel/plugin-transform-runtime from 7.15.0 to 7.15.8
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.15.0 to 7.15.8.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.15.8/packages/babel-plugin-transform-runtime)

---
updated-dependencies:
- dependency-name: "@babel/plugin-transform-runtime"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-07 03:09:46 +00:00
Trevor Buckner
950c78fda2 Merge pull request #1741 from naturalcrit/dependabot/npm_and_yarn/babel/preset-env-7.15.8
Bump @babel/preset-env from 7.15.6 to 7.15.8
2021-10-06 23:08:36 -04:00
Trevor Buckner
6910a2b2ad Merge pull request #1739 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.15.8
Bump @babel/core from 7.15.5 to 7.15.8
2021-10-06 23:08:22 -04:00
dependabot[bot]
bcea9875d5 Bump @babel/preset-env from 7.15.6 to 7.15.8
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.15.6 to 7.15.8.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.15.8/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-07 03:01:30 +00:00
dependabot[bot]
9d839a037c Bump @babel/core from 7.15.5 to 7.15.8
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.15.5 to 7.15.8.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.15.8/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-07 03:00:52 +00:00
Trevor Buckner
063f71037d Merge pull request #1738 from naturalcrit/v3.0.2
Up version to v3.0.2
2021-10-06 12:17:00 -04:00
Trevor Buckner
56037a2dca Up version to v3.0.2 2021-10-06 12:16:39 -04:00
Trevor Buckner
0cf3d3c883 Merge pull request #1733 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.0.9
Bump mongoose from 6.0.8 to 6.0.9
2021-10-06 11:39:08 -04:00
dependabot[bot]
3f21e40e62 Bump mongoose from 6.0.8 to 6.0.9
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.0.8 to 6.0.9.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.0.8...6.0.9)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-06 14:06:19 +00:00
Trevor Buckner
64cb0ba146 Merge pull request #1737 from naturalcrit/dependabot/npm_and_yarn/nanoid-3.1.29
Bump nanoid from 3.1.28 to 3.1.29
2021-10-06 10:05:40 -04:00
dependabot[bot]
67931dfcf9 Bump nanoid from 3.1.28 to 3.1.29
Bumps [nanoid](https://github.com/ai/nanoid) from 3.1.28 to 3.1.29.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.1.28...3.1.29)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-06 03:01:17 +00:00
Trevor Buckner
c8e27d209c Merge pull request #1592 from Gazook89/changelog-link
Move Change Log link to Version Number, add Report Issue to User Page
2021-10-05 22:43:39 -04:00
G.Ambatte
96af13b71f Move Undo/Redo to SnippetBar 2021-10-05 20:25:24 +13:00
G.Ambatte
fbabae8793 Expose CodeMirror functions in codeEditor.jsx 2021-10-05 20:24:45 +13:00
Gazook89
99d2648901 small change to changelog header 2021-10-04 18:52:58 -05:00
Gazook89
700f84adec add import issue.navitem.jsx to user page 2021-10-04 18:50:52 -05:00
Sean Robertson
09b1543660 Reduce CodeMirror codeEditor historyEventDelay to 250 2021-10-05 10:50:13 +13:00
Sean Robertson
213a469dd0 Correct stringify to parse 2021-10-05 10:40:38 +13:00
Gazook89
45101b7c09 Add Share to Reddit and Copy Share URL to Share Menu 2021-10-04 16:34:40 -05:00
Trevor Buckner
c9f9b87a6d Merge branch 'master' into pr/1592 2021-10-01 14:51:49 -04:00
Trevor Buckner
dd09aab191 Merge pull request #1728 from naturalcrit/dependabot/npm_and_yarn/eslint-plugin-react-7.26.1
Bump eslint-plugin-react from 7.26.0 to 7.26.1
2021-10-01 14:43:46 -04:00
Trevor Buckner
7bab65c138 Merge pull request #1727 from naturalcrit/dependabot/npm_and_yarn/googleapis-88.2.0
Bump googleapis from 87.0.0 to 88.2.0
2021-10-01 14:43:39 -04:00
dependabot[bot]
3da56f28f8 Bump eslint-plugin-react from 7.26.0 to 7.26.1
Bumps [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) from 7.26.0 to 7.26.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.26.0...v7.26.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-react
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-01 03:01:05 +00:00
dependabot[bot]
83630e1fde Bump googleapis from 87.0.0 to 88.2.0
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 87.0.0 to 88.2.0.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/googleapis-v87.0.0...googleapis-v88.2.0)

---
updated-dependencies:
- dependency-name: googleapis
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-01 03:00:44 +00:00
Trevor Buckner
4a222ad16d Merge pull request #1724 from G-Ambatte/fixQRCodeOnNew-#1710
Fix QR code snippet when `brew.shareId` doesn't exist
2021-09-30 21:07:51 -04:00
Trevor Buckner
d9893e29ff Update client/homebrew/editor/snippetbar/snippets/snippets.js 2021-09-30 21:06:25 -04:00
Trevor Buckner
bdfc6bc1fa Merge pull request #1721 from naturalcrit/dependabot/npm_and_yarn/codemirror-5.63.1
Bump codemirror from 5.63.0 to 5.63.1
2021-09-30 21:04:19 -04:00
Sean Robertson
41c1b04f0e Get renderer information from localStorage when printing from /new
Default to `legacy`.
2021-10-01 13:31:09 +13:00
Sean Robertson
f69f73fcda Revert "Update to use dedent in the same manner as other snippets"
This reverts commit b24c3527ca.
2021-10-01 13:03:08 +13:00
Sean Robertson
b24c3527ca Update to use dedent in the same manner as other snippets 2021-10-01 12:44:28 +13:00
Gazook89
3bf5d7a2db change makeComment function to adapt to gfm or css editor 2021-09-30 17:59:45 -05:00
Sean Robertson
68f9b0d8ff Fix QR code snippet when brew.shareId doesn't exist 2021-10-01 11:39:00 +13:00
Gazook89
e14c5442e0 Merge remote-tracking branch 'upstream/master' into Hotkey-Mania 2021-09-30 09:20:35 -05:00
dependabot[bot]
643eb5a5c7 Bump codemirror from 5.63.0 to 5.63.1
Bumps [codemirror](https://github.com/codemirror/CodeMirror) from 5.63.0 to 5.63.1.
- [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.63.0...5.63.1)

---
updated-dependencies:
- dependency-name: codemirror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-30 03:00:54 +00:00
Trevor Buckner
2401993018 Merge pull request #1586 from Gazook89/CodeMirror-Page-Break-Style-Tweak
Update editor.less for .pageLine
2021-09-29 21:00:00 -04:00
Trevor Buckner
9e61bab336 Merge pull request #1714 from naturalcrit/dependabot/npm_and_yarn/nanoid-3.1.28
Bump nanoid from 3.1.25 to 3.1.28
2021-09-29 15:31:18 -04:00
dependabot[bot]
fc60ac3fb0 Bump nanoid from 3.1.25 to 3.1.28
Bumps [nanoid](https://github.com/ai/nanoid) from 3.1.25 to 3.1.28.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.1.25...3.1.28)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-29 19:30:41 +00:00
Trevor Buckner
9e99c1729d Merge pull request #1717 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.0.8
Bump mongoose from 6.0.7 to 6.0.8
2021-09-29 15:29:21 -04:00
Gazook89
39f745639f remove gradient, set counter to start at '2' 2021-09-28 20:06:29 -05:00
Gazook89
40a75b9b27 increment ordered list numbering 2021-09-28 16:09:00 -05:00
Gazook89
63c59a223a refine removal of lists regardless if UL or OL
Next step after this is to get numbered lists to increase
2021-09-28 14:34:31 -05:00
Gazook89
6717692187 finish UL creation/removal function 2021-09-28 11:19:02 -05:00
dependabot[bot]
f78a9f9112 Bump mongoose from 6.0.7 to 6.0.8
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.0.7 to 6.0.8.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.0.7...6.0.8)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-28 03:00:56 +00:00
Gazook89
41609f90ea update to detect if an unordered list or not. 2021-09-27 21:34:09 -05:00
Gazook89
cb0f5217fe get and set selection to cover entire lines 2021-09-27 21:23:05 -05:00
Gazook89
ba9413eae5 initial commit, add hotkey definitions 2021-09-27 09:31:59 -05:00
Gazook89
b3e37dd2c1 add comment about trying capture groups in future. 2021-09-23 01:01:02 -05:00
Gazook89
beb3c7ec89 make undo behavior work regardless of url text 2021-09-23 00:22:40 -05:00
Rodrigo Kuerten
c10bdabee0 Added h1 and h2 & cmd version 2021-09-22 18:21:34 -03:00
Trevor Buckner
4e24f0dd4b Merge branch 'master' into pr/1586 2021-09-21 23:37:21 -04:00
Trevor Buckner
723232659f Merge pull request #1572 from Gazook89/Style-Editor-Menu-and-comments
CSS Commenting + New "Style Editor" snippet menu
2021-09-21 23:34:53 -04:00
Trevor Buckner
eb7340434e Revert dropcap background to background-image
Changing to just `background` undoes `background-clip` as well. This is more explicit.
2021-09-21 23:31:08 -04:00
Trevor Buckner
3c1ecf1292 Fix merge 2021-09-21 22:59:25 -04:00
Trevor Buckner
5f11607358 Merge branch 'master' into pr/1572 2021-09-21 22:53:49 -04:00
Trevor Buckner
7e727ada94 Merge branch 'master' into pr/1568 2021-09-21 22:41:37 -04:00
Rodrigo Kuerten
bbad4b9e8a Removed H1 and H2 options and updated cursor after added hashtags 2021-09-21 17:25:37 -03:00
Rodrigo Kuerten
ec2c74f093 Created base make header functions 2021-09-21 17:11:07 -03:00
Trevor Buckner
c20fa90c3f Merge pull request #1706 from naturalcrit/dependabot/npm_and_yarn/codemirror-5.63.0
Bump codemirror from 5.62.3 to 5.63.0
2021-09-21 07:55:50 -04:00
Trevor Buckner
8135ee53ba Merge pull request #1705 from naturalcrit/dependabot/npm_and_yarn/eslint-plugin-react-7.26.0
Bump eslint-plugin-react from 7.25.3 to 7.26.0
2021-09-21 07:55:02 -04:00
Trevor Buckner
61d4b7fcec Merge pull request #1704 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.0.7
Bump mongoose from 6.0.6 to 6.0.7
2021-09-21 07:54:53 -04:00
dependabot[bot]
2ea5148c4a Bump codemirror from 5.62.3 to 5.63.0
Bumps [codemirror](https://github.com/codemirror/CodeMirror) from 5.62.3 to 5.63.0.
- [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.3...5.63.0)

---
updated-dependencies:
- dependency-name: codemirror
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-21 03:01:53 +00:00
dependabot[bot]
8084786718 Bump eslint-plugin-react from 7.25.3 to 7.26.0
Bumps [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) from 7.25.3 to 7.26.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.25.3...v7.26.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-react
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-21 03:01:28 +00:00
dependabot[bot]
2ab010acad Bump mongoose from 6.0.6 to 6.0.7
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.0.6 to 6.0.7.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.0.6...6.0.7)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-21 03:01:04 +00:00
Trevor Buckner
b10bd6ac12 Merge pull request #1703 from naturalcrit/dependabot/npm_and_yarn/eslint-plugin-react-7.25.3
Bump eslint-plugin-react from 7.25.1 to 7.25.3
2021-09-19 23:09:34 -04:00
dependabot[bot]
b4a658cac5 Bump eslint-plugin-react from 7.25.1 to 7.25.3
Bumps [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) from 7.25.1 to 7.25.3.
- [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.1...v7.25.3)

---
updated-dependencies:
- dependency-name: eslint-plugin-react
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-20 03:00:37 +00:00
G.Ambatte
508eee3f95 Initial pass at Editor Toolbar - Undo and Redo. 2021-09-19 19:26:44 +12:00
Trevor Buckner
6e38b673ac Merge pull request #1698 from naturalcrit/v3.0.1
Update changelog and version to 3.0.1
2021-09-18 00:37:44 -04:00
Trevor Buckner
f168bf94e1 Merge pull request #1693 from Gazook89/fix-print-page-footer-issue
Add `.pages` container div to printPage.jsx
2021-09-17 21:52:14 -04:00
Trevor Buckner
875e8b59a6 Update changelog and version to 3.0.1 2021-09-17 13:57:07 -04:00
Trevor Buckner
f25d8e13c2 Merge pull request #1697 from naturalcrit/dependabot/npm_and_yarn/googleapis-87.0.0
Bump googleapis from 86.1.0 to 87.0.0
2021-09-17 12:17:11 -04:00
dependabot[bot]
356c062ce5 Bump googleapis from 86.1.0 to 87.0.0
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 86.1.0 to 87.0.0.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/googleapis-v86.1.0...googleapis-v87.0.0)

---
updated-dependencies:
- dependency-name: googleapis
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-17 03:01:16 +00:00
Gazook89
80ea598ec2 match brewRenderer.jsx output to printPage.jsx output 2021-09-16 19:59:54 -05:00
Gazook89
837cacc992 add .page container div to printPage.jsx 2021-09-16 09:51:16 -05:00
Gazook89
1c88eb80c0 update v3 ink friendly again to remove .pages from css selector
having `.pages` included in the selector did not match the selectivity in the base .less sheet.  Oddly, it was working in the Edit Page, but not in the Print Page.
2021-09-15 16:30:30 -05:00
Gazook89
0de0c22e61 Update v3 ink-friendly snippet to reset drop-shadow rather than box-shadow 2021-09-15 16:14:14 -05:00
Gazook89
b8df5d083f update v3 drop cap snippets to .page 2021-09-15 15:45:58 -05:00
Trevor Buckner
3eee00bea7 Merge pull request #1689 from naturalcrit/dependabot/npm_and_yarn/mongoose-6.0.6
Bump mongoose from 6.0.5 to 6.0.6
2021-09-15 15:16:34 -04:00
Trevor Buckner
a39a2898bb Merge pull request #1688 from naturalcrit/dependabot/npm_and_yarn/googleapis-86.1.0
Bump googleapis from 85.0.0 to 86.1.0
2021-09-15 15:01:42 -04:00
Trevor Buckner
c73a2184a0 Merge pull request #1690 from naturalcrit/AllowMonsterParagraphIndents
Fix typo in snippet
2021-09-15 14:57:28 -04:00
Trevor Buckner
aff764d91c Fix typo in snippet 2021-09-15 14:56:58 -04:00
Trevor Buckner
8e7fc47e2b Merge pull request #1687 from naturalcrit/dependabot/npm_and_yarn/dedent-tabs-0.10.1
Bump dedent-tabs from 0.10.0 to 0.10.1
2021-09-15 14:41:12 -04:00
dependabot[bot]
1f2809a913 Bump mongoose from 6.0.5 to 6.0.6
Bumps [mongoose](https://github.com/Automattic/mongoose) from 6.0.5 to 6.0.6.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/6.0.5...6.0.6)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-15 18:40:48 +00:00
dependabot[bot]
f7b5cfc623 Bump googleapis from 85.0.0 to 86.1.0
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 85.0.0 to 86.1.0.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/googleapis-v85.0.0...googleapis-v86.1.0)

---
updated-dependencies:
- dependency-name: googleapis
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-15 18:40:37 +00:00
dependabot[bot]
74e746ace9 Bump dedent-tabs from 0.10.0 to 0.10.1
Bumps [dedent-tabs](https://github.com/adrianjost/dedent-tabs) from 0.10.0 to 0.10.1.
- [Release notes](https://github.com/adrianjost/dedent-tabs/releases)
- [Commits](https://github.com/adrianjost/dedent-tabs/compare/v0.10.0...v0.10.1)

---
updated-dependencies:
- dependency-name: dedent-tabs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-15 18:40:18 +00:00
Trevor Buckner
3b64cb43c1 Merge pull request #1684 from G-Ambatte/addFAQ-#810
Add FAQ page, using current FAQ from the subreddit
2021-09-15 14:37:23 -04:00
Trevor Buckner
ca491067f1 linting 2021-09-15 14:36:34 -04:00
Trevor Buckner
0ff5af5e0b Merge pull request #1583 from G-Ambatte/fixMarkdownTags-#432
Fix incorrect detection of unclosed <a> tag
2021-09-15 14:34:16 -04:00
Trevor Buckner
85650cdfb3 Merge pull request #1686 from naturalcrit/updateMongooseTov6
Migrate Mongoose to v6
2021-09-15 14:16:08 -04:00
Trevor Buckner
0e4c830435 Migrate Mongoose to v6 2021-09-15 14:15:44 -04:00
Trevor Buckner
570c1a9b5f Merge pull request #1680 from naturalcrit/AllowMonsterParagraphIndents
[v3] Better Paragraph formatting in Monster blocks
2021-09-15 14:02:51 -04:00
Trevor Buckner
22e54636d4 Fix partial page rendering on v3
"dummy pages" on v3 were unstyled, giving them very small height which led to a cycle of pages changing size, which shifted other pages into view, which changed their sizes, etc.
2021-09-15 14:02:19 -04:00
Trevor Buckner
3e8f9b18d0 Merge pull request #1683 from naturalcrit/dependabot/npm_and_yarn/marked-3.0.4
Bump marked from 3.0.3 to 3.0.4
2021-09-15 09:14:19 -04:00
G.Ambatte
8f0b3ff569 Add FAQ page, using current FAQ from the subreddit 2021-09-15 18:46:32 +12:00
dependabot[bot]
c1dadff525 Bump marked from 3.0.3 to 3.0.4
Bumps [marked](https://github.com/markedjs/marked) from 3.0.3 to 3.0.4.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/release.config.js)
- [Commits](https://github.com/markedjs/marked/compare/v3.0.3...v3.0.4)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-15 03:00:58 +00:00
G.Ambatte
bb87281057 Apply changes to markdownLegacy.js 2021-09-15 13:21:34 +12:00
Trevor Buckner
1690c3b977 Merge pull request #1605 from G-Ambatte/addToolTipToTimeSinceUpdate
Add tooltip to the Time Since Last Update `info <span>`
2021-09-14 15:13:55 -04:00
Trevor Buckner
470de383bd Merge pull request #1606 from G-Ambatte/rearrangeBrewItemMetaData
Rearrange BrewItem metadata items - put `authors` first on it's own line
2021-09-14 15:11:01 -04:00
Trevor Buckner
239a384281 Merge pull request #1681 from naturalcrit/Clean_Legacy_Snippet_SplitTable
Remove backticks from splitTable
2021-09-14 13:11:12 -04:00
Trevor Buckner
ed6a0ef29b Remove backticks from splitTable 2021-09-14 13:09:53 -04:00
Trevor Buckner
d1ffab5487 Update Monster styles and snippets. 2021-09-14 12:17:28 -04:00
Trevor Buckner
d0cddcfb91 Merge pull request #1640 from naturalcrit/dependabot/npm_and_yarn/dedent-tabs-0.10.0
Bump dedent-tabs from 0.9.0 to 0.10.0
2021-09-13 23:56:58 -04:00
Trevor Buckner
07729a7529 Merge pull request #1617 from blitzher/master
Moved server start log to `app.listen` callback
2021-09-13 22:44:15 -04:00
Trevor Buckner
d002485636 Merge pull request #1678 from naturalcrit/changeMinWidthToWidth
Change .block min-width to width
2021-09-13 22:43:19 -04:00
Trevor Buckner
2192c91acb Change .block min-width to width so users can resize position:absolute elements easier. 2021-09-13 22:40:36 -04:00
Trevor Buckner
2ea8d8e152 Merge pull request #1659 from naturalcrit/dependabot/npm_and_yarn/babel/preset-env-7.15.6
Bump @babel/preset-env from 7.15.4 to 7.15.6
2021-09-11 23:33:01 -04:00
dependabot[bot]
7a176c494f Bump @babel/preset-env from 7.15.4 to 7.15.6
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.15.4 to 7.15.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.15.6/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-12 03:24:16 +00:00
Trevor Buckner
0541b5baad Merge pull request #1639 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.15.5
Bump @babel/core from 7.15.0 to 7.15.5
2021-09-11 23:23:27 -04:00
Trevor Buckner
5b0e3d9cdb Reorder changelog to fit on Firefox 2021-09-11 23:14:08 -04:00
Trevor Buckner
a3b50efe78 Add padding to pre code 2021-09-11 23:13:41 -04:00
Trevor Buckner
82b9f825d5 Update class Features snippet to v3
Puts adjacent `term :: definition` s into the same `dl` block for easier spacing of sets of terms.
2021-09-11 21:52:37 -04:00
Gazook89
eee343c197 change tack, keep border on bottom but add page counter 2021-09-11 16:12:47 -05:00
Gazook89
bec2a7c77a add hotkeys for new \page and \column 2021-09-11 00:12:58 -05:00
Trevor Buckner
cd0b659653 Merge pull request #1666 from naturalcrit/v3.0.0
Update v3 welcome page to fit on Firefox
2021-09-11 00:57:08 -04:00
Trevor Buckner
da02622547 Update v3 welcome page to fit on Firefox 2021-09-11 00:56:35 -04:00
Trevor Buckner
61b851fd3e Merge pull request #1665 from naturalcrit/v3.0.0
Update version number
2021-09-11 00:46:31 -04:00
Trevor Buckner
d821baee4d Update version number 2021-09-11 00:45:36 -04:00
Trevor Buckner
4606c50f75 Merge pull request #1664 from naturalcrit/v3.0.0
V3.0.0
2021-09-11 00:40:17 -04:00
Trevor Buckner
39eae73978 Give inter-block margins for spacing priority over margins for borders 2021-09-11 00:34:33 -04:00
Gazook89
389ad1cf17 add hotkeys for &nbsp; and empty <spans>
makeNbsp, makeSpace, removeSpace
2021-09-10 23:18:23 -05:00
Trevor Buckner
6237df953e Update changelog and welcome pages 2021-09-10 23:34:20 -04:00
Trevor Buckner
2497fbbc74 Tweaks to popup notification. 2021-09-10 23:22:52 -04:00
Trevor Buckner
79c1563b01 Merge branch 'master' into v3.0.0 2021-09-10 22:39:59 -04:00
Trevor Buckner
2badd39968 Merge pull request #1662 from G-Ambatte/addPageCountToUpdateGoogleBrew
Add Page Count to the Google brew update function
2021-09-10 22:20:17 -04:00
Trevor Buckner
ccd30f7e80 Merge pull request #1663 from naturalcrit/FixWideDescriptiveonLegacy
Fix accidental style change on Legacy Descriptive blocks
2021-09-10 22:19:21 -04:00
Trevor Buckner
673dc58051 Update 5ePhbLegacy.style.less 2021-09-10 22:18:33 -04:00
G.Ambatte
fbf1bbbf99 Add Page Count to the Google brew update function 2021-09-11 09:41:23 +12:00
Trevor Buckner
494311aee3 Popup notification
Update the popup notification on the home page.
2021-09-10 00:13:48 -04:00
Trevor Buckner
e070601b28 Make Changelog split text and style 2021-09-09 23:17:46 -04:00
Trevor Buckner
bb65739886 Merge pull request #1658 from naturalcrit/v2.13.5
Update to v2.13.5
2021-09-09 23:08:57 -04:00
Trevor Buckner
56aa2a9104 Up version number and changelog 2021-09-09 22:40:05 -04:00
Trevor Buckner
3891531d1c Merge pull request #1651 from naturalcrit/FixV3MiscStylesBeforeLaunch
Fix v3 misc styles before launch
2021-09-09 10:36:08 -04:00
Trevor Buckner
0aaa400a87 Merge pull request #1652 from naturalcrit/dependabot/npm_and_yarn/marked-3.0.3
Bump marked from 3.0.2 to 3.0.3
2021-09-09 10:35:37 -04:00
Trevor Buckner
f435d65db7 Fix block-curly injector leaving behind an empty <p></p> 2021-09-09 10:35:08 -04:00
Trevor Buckner
d4ff87395f Fix all images having drop shadows 2021-09-09 10:31:04 -04:00
Trevor Buckner
5d42196297 Give spellList "wide" class for consistency 2021-09-09 09:14:16 -04:00
Trevor Buckner
4fae5332fc Change margin spacings between blocks from em to cm 2021-09-09 00:25:52 -04:00
dependabot[bot]
f118e94257 Bump marked from 3.0.2 to 3.0.3
Bumps [marked](https://github.com/markedjs/marked) from 3.0.2 to 3.0.3.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/release.config.js)
- [Commits](https://github.com/markedjs/marked/compare/v3.0.2...v3.0.3)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-09 03:00:51 +00:00
Trevor Buckner
7a44e37970 Fix "block"s to be inline-block, width 100%
* Use border-image-width to allow border to encroach into text area without using ::before element for the border.
* Rearrange things so .wide is last; makes sure wide is always displayed as `block` with priority over mustache divs default `inline-block`
* Fix main page column-gap
* adjust font size inside .note and .descriptive
2021-09-07 23:52:38 -04:00
Trevor Buckner
57df6aa321 Clarify in Intro that Legacy cannot directly transfer to V3 2021-09-07 15:43:52 -04:00
Trevor Buckner
3f3aa6edd1 Remove Old Styles 2021-09-07 00:21:45 -04:00
Gazook89
7dcd335630 add makeDiv hotkey - V3 Curly Divs
Shift-Cmd/Ctrl-M  makes a curly div.
2021-09-06 21:12:48 -05:00
Gazook89
08c845ff00 add underline hotkey and change italic hotkey to *
Using `*` rather than `_` characters for italics is more inline with existing snippets.
2021-09-06 20:35:55 -05:00
blitzher
5445f950c5 Merge branch 'naturalcrit:master' into master 2021-09-06 10:00:38 +02:00
dependabot[bot]
85447e0b6a Bump @babel/core from 7.15.0 to 7.15.5
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.15.0 to 7.15.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.15.5/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-06 04:41:08 +00:00
Trevor Buckner
16076d1481 Merge pull request #1634 from naturalcrit/dependabot/npm_and_yarn/babel/preset-env-7.15.4
Bump @babel/preset-env from 7.15.0 to 7.15.4
2021-09-06 00:39:59 -04:00
Trevor Buckner
7313e326a0 Merge pull request #1641 from naturalcrit/dependabot/npm_and_yarn/react-router-dom-5.3.0
Bump react-router-dom from 5.2.1 to 5.3.0
2021-09-06 00:39:18 -04:00
dependabot[bot]
aa9f07e0b9 Bump react-router-dom from 5.2.1 to 5.3.0
Bumps [react-router-dom](https://github.com/ReactTraining/react-router) from 5.2.1 to 5.3.0.
- [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.1...v5.3.0)

---
updated-dependencies:
- dependency-name: react-router-dom
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-06 03:01:20 +00:00
dependabot[bot]
6d6beb23b1 Bump dedent-tabs from 0.9.0 to 0.10.0
Bumps [dedent-tabs](https://github.com/adrianjost/dedent-tabs) from 0.9.0 to 0.10.0.
- [Release notes](https://github.com/adrianjost/dedent-tabs/releases)
- [Commits](https://github.com/adrianjost/dedent-tabs/compare/v0.9.0...v0.10.0)

---
updated-dependencies:
- dependency-name: dedent-tabs
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-06 03:01:02 +00:00
Gazook89
ae75eb07b7 matched functionality of link hotkey in github 2021-09-05 20:33:51 -05:00
Gazook89
ad5d7d2097 added dedents 2021-09-05 16:21:23 -05:00
Gazook89
3063337eb2 update v3 drop cap tweak to match new styling
and change v3 drop cap to use only `background` rather than `background-image` so that the tweak snippet can easily change between gradient and just a regular color.

and re-order table menu so that the regular table snippet is at top.
2021-09-05 15:40:08 -05:00
Gazook89
cf5a1cee24 Merge remote-tracking branch 'upstream/master' into Style-Editor-Menu-and-comments 2021-09-05 15:11:58 -05:00
dependabot[bot]
36845c021c Bump @babel/preset-env from 7.15.0 to 7.15.4
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.15.0 to 7.15.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.15.4/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-03 03:01:01 +00:00
Trevor Buckner
f0d82b2751 Merge pull request #1549 from Gazook89/Images-Snippet-Menu
New Snippet Menu for Images, +3 new snippets
2021-09-01 14:56:32 -04:00
Trevor Buckner
0610c9fe98 fix injecting images putting the cursor midway into the next line of text. 2021-09-01 14:54:52 -04:00
Trevor Buckner
1320f5c6c6 remove uncompressed watercolor splatters 2021-09-01 14:37:39 -04:00
Trevor Buckner
8e1706532b Fix classTable border dimensions 2021-09-01 14:19:01 -04:00
Trevor Buckner
1770323690 Remove standalone snippet; include in classTable snippets 2021-09-01 13:37:07 -04:00
Trevor Buckner
177173d599 Moved classTableDecoration to local file and use decoration class. 2021-09-01 13:19:53 -04:00
Trevor Buckner
a15ef8489c Merge pull request #1630 from naturalcrit/dependabot/npm_and_yarn/googleapis-85.0.0
Bump googleapis from 84.0.0 to 85.0.0
2021-09-01 00:02:37 -04:00
Trevor Buckner
59fd2454a4 Make images local, change snippet to allow color instead of hue-rotate 2021-08-31 23:57:08 -04:00
dependabot[bot]
bf146a8c0b Bump googleapis from 84.0.0 to 85.0.0
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 84.0.0 to 85.0.0.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/googleapis-v84.0.0...googleapis-v85.0.0)

---
updated-dependencies:
- dependency-name: googleapis
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-01 03:01:15 +00:00
Trevor Buckner
c178d189c9 Update default.json 2021-08-31 22:08:19 -04:00
Trevor Buckner
1abd151c67 Merge branch 'master' into pr/1549 2021-08-31 16:45:14 -04:00
Trevor Buckner
2f9c08ac49 Merge pull request #1544 from Gazook89/ClassTable-Revisions
Class table revisions - 1/3 Table, minor fixes
2021-08-31 16:42:28 -04:00
Trevor Buckner
f5057119da Shrink tables width 2021-08-31 16:39:13 -04:00
Trevor Buckner
44172dc5b1 Merge pull request #1627 from naturalcrit/Marked.jsToV3.02
Make Markdown extensions work with Marked.js 3
2021-08-31 13:51:08 -04:00
Trevor Buckner
1096c80b17 Make Markdown extensions work with Marked.js 3 2021-08-31 13:50:45 -04:00
blitzher
7f0029d8a4 Merge branch 'naturalcrit:master' into master 2021-08-31 19:41:10 +02:00
Trevor Buckner
43d18191f9 Merge pull request #1626 from naturalcrit/V3ChangelogPrep
\page alone on line, fix snippets crashing empty brew
2021-08-31 12:45:37 -04:00
Trevor Buckner
1a71ba0eb2 Force \page on V3 to be alone on line. 2021-08-31 12:08:31 -04:00
Trevor Buckner
e14c8c5e91 Lint 2021-08-31 12:03:59 -04:00
Trevor Buckner
13ba5ebcc8 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.
2021-08-31 11:56:48 -04:00
Trevor Buckner
800c714b9e Merge pull request #1625 from naturalcrit/V3ChangelogPrep
Fixing drop caps inside `columnWrap`
2021-08-31 08:56:34 -04:00
Trevor Buckner
493c31b244 Merge pull request #1623 from naturalcrit/dependabot/npm_and_yarn/eslint-plugin-react-7.25.1
Bump eslint-plugin-react from 7.25.0 to 7.25.1
2021-08-30 23:11:49 -04:00
dependabot[bot]
ec49429810 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] <support@github.com>
2021-08-31 03:00:48 +00:00
Trevor Buckner
21dfaf6a5a Merge pull request #1621 from naturalcrit/FixMonsterHangingIndentColor
Allows DL hanging indents in the mosnter stat block that are not red.
2021-08-30 13:41:45 -04:00
Trevor Buckner
03eef94232 Allows DL hanging indents in the mosnter stat block that are not red. 2021-08-30 13:40:43 -04:00
Trevor Buckner
0e5ed35b6c Fixing drop caps inside columnWrap 2021-08-30 13:34:12 -04:00
Trevor Buckner
ac8ef4608a Merge pull request #1618 from naturalcrit/dependabot/npm_and_yarn/react-router-dom-5.2.1
Bump react-router-dom from 5.2.0 to 5.2.1
2021-08-29 23:04:52 -04:00
Trevor Buckner
a669cd5d86 Merge pull request #1619 from naturalcrit/dependabot/npm_and_yarn/eslint-plugin-react-7.25.0
Bump eslint-plugin-react from 7.24.0 to 7.25.0
2021-08-29 23:04:33 -04:00
dependabot[bot]
d41a868f07 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] <support@github.com>
2021-08-30 03:00:59 +00:00
dependabot[bot]
56be8931bb 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] <support@github.com>
2021-08-30 03:00:46 +00:00
blitzher
c541fd551e Removed spaces before and after arrow in callback function 2021-08-29 00:54:51 +02:00
blitzher
2b89efc923 Moved server start log to app.listen callback 2021-08-29 00:49:13 +02:00
Trevor Buckner
0d9981b3c6 Merge pull request #1543 from G-Ambatte/fixViewCountDuringEdit-#406
Stop view count being reduced by an open Edit page
2021-08-27 23:04:30 -04:00
Trevor Buckner
2b9362f7bf Merge pull request #1573 from G-Ambatte/addFilteringToUserPage
User Page filtering
2021-08-27 23:03:10 -04:00
Trevor Buckner
6b1b9bdce2 Merge branch 'master' into addFilteringToUserPage 2021-08-27 23:00:01 -04:00
G.Ambatte
22fb84ca32 Update client/homebrew/pages/userPage/userPage.jsx
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2021-08-28 12:12:35 +12:00
Trevor Buckner
539b52ecbd Merge pull request #1594 from G-Ambatte/fixHandleInject-#1593
Handle `brew.style` being `undefined` when injecting snippets.
2021-08-27 19:35:05 -04:00
G.Ambatte
5f837f7b3c Update client/homebrew/pages/userPage/userPage.jsx
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2021-08-28 11:09:33 +12:00
G.Ambatte
04b2421793 Update client/homebrew/editor/editor.jsx
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2021-08-28 11:03:47 +12:00
Trevor Buckner
e5cfa98bbd Shorten Features column to match shorter names 2021-08-27 12:30:57 -04:00
Trevor Buckner
9d5130154b Remixed Feature names to be shorter. 2021-08-27 12:29:11 -04:00
Gazook89
b4825e085e fix table snippet spacing in editor 2021-08-27 10:40:40 -05:00
Trevor Buckner
4ce915100b Merge pull request #1591 from Gazook89/fix-ink-friendly-snippet
minor fix for ink-friendly legacy snippet
2021-08-27 09:36:47 -04:00
Trevor Buckner
9b180a1c50 Merge pull request #1574 from Gazook89/metadata-panel-css-tweak
[very minor] Update metadataEditor.less "small" text
2021-08-27 09:35:28 -04:00
Trevor Buckner
1e8c285eef Just renaming/rearranging variables 2021-08-26 23:09:56 -04:00
Trevor Buckner
c09d0940d4 Merge pull request #1613 from naturalcrit/WrapperColsDiv
Fix column-wrapper on print page
2021-08-26 22:53:36 -04:00
Trevor Buckner
a7005d779a Fix /print, make .page outer element for consistency with legacy 2021-08-26 22:43:57 -04:00
Gazook89
dc65980dcb pull drawSlots out of individual functions 2021-08-26 12:51:36 -05:00
Gazook89
50a8468995 Update legacy and v3 styles
- removed wrap from legacy
- add :not([rowspan]) qualifier to wrap on v3.
2021-08-26 12:00:56 -05:00
G.Ambatte
1ed5c219ec Merge branch 'fixViewCountDuringEdit-#406' of https://github.com/G-Ambatte/homebrewery into fixViewCountDuringEdit-#406 2021-08-26 18:46:40 +12:00
G.Ambatte
4971c40e23 Remove undesired properties from brews prior to updating
Clean up tab/spacing in `googleActions.js`
2021-08-26 18:45:13 +12:00
G.Ambatte
ceb4667193 Unwind changes to EditPage 2021-08-26 18:44:13 +12:00
G.Ambatte
a1df68ed20 Remove brew.views for EditPage brew object 2021-08-26 18:44:13 +12:00
G.Ambatte
941bb94190 Remove undesired properties from brews prior to updating
Clean up tab/spacing in `googleActions.js`
2021-08-26 17:21:45 +12:00
G.Ambatte
8e841c6825 Unwind changes to EditPage 2021-08-26 17:20:03 +12:00
Trevor Buckner
85841d22f5 Merge pull request #1596 from naturalcrit/dependabot/npm_and_yarn/codemirror-5.62.3
Bump codemirror from 5.62.2 to 5.62.3
2021-08-25 21:48:01 -04:00
Trevor Buckner
2403d0a18a Merge pull request #1577 from Gazook89/Turn-Box-Shadows-to-Drop-Shadows
Turn box shadows to drop shadows
2021-08-25 21:47:33 -04:00
Trevor Buckner
a3354e9614 Move .note shadow to main box, not ::before element. 2021-08-25 21:46:59 -04:00
G.Ambatte
755d8591aa Add small gap to keep Google Drive icon clear of characters in brew author's name.
Remove unnecessary/incorrect `display` line.
2021-08-26 12:48:02 +12:00
G.Ambatte
ea493ac1a5 Rearrange BrewItem metadata items - put authors first on it's own line 2021-08-26 11:49:21 +12:00
Trevor Buckner
9af41b2dc4 rename dedent-tabs to dedent to match usage elsewhere in HB 2021-08-25 13:34:16 -04:00
G.Ambatte
57940bc994 Add tooltip to the Time Since Last Update info <span> 2021-08-25 18:14:13 +12:00
Trevor Buckner
9673a9a0f6 Merge pull request #1542 from G-Ambatte/fixGoogleModifiedTime-#1506
Set modifiedTime during view count update of Google brews
2021-08-24 23:55:57 -04:00
Trevor Buckner
e9939e7a0d Fix alignment 2021-08-24 23:55:03 -04:00
Trevor Buckner
7a74fc03fe Merge pull request #1277 from jsocol/column-fill-mode
Parametrize fillMode for .useColumns
2021-08-24 23:47:58 -04:00
Trevor Buckner
050a1d45fd Move to new theme file, make balance default 2021-08-24 23:47:31 -04:00
Trevor Buckner
b61f4e935a Merge branch 'column-fill-mode' of https://github.com/jsocol/homebrewery into pr/1277 2021-08-24 23:44:30 -04:00
Trevor Buckner
3233b7c23a Merge pull request #1597 from naturalcrit/WrapperColsDiv
Add wrapper to .page to improve `wide` behavior with columns
2021-08-23 23:04:47 -04:00
Trevor Buckner
039db01b31 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.
2021-08-23 23:03:57 -04:00
dependabot[bot]
3de95a4f95 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] <support@github.com>
2021-08-23 03:01:02 +00:00
Trevor Buckner
9c6d875524 Add wrapper to .page to improve wide behavior with columns 2021-08-22 23:00:43 -04:00
Trevor Buckner
653fd513ad inject newlines around \column so its DIV isn't consumed as markdown 2021-08-21 01:36:25 -04:00
Trevor Buckner
ecdf4aee50 Merge pull request #1547 from Gazook89/Fix-improper-css-values
Fix two css values throwing errors in console
2021-08-21 00:55:18 -04:00
Trevor Buckner
9cdfbc7459 Fix Table of Content spacing 2021-08-21 00:15:53 -04:00
G.Ambatte
31c348baff Handle brew.style being undefined when inject snippets. 2021-08-21 11:37:01 +12:00
Gazook89
e80e4827a8 add Report Issue to user page 2021-08-20 14:58:28 -05:00
Gazook89
b11d130393 Update changelog.md to include link to github 2021-08-20 14:57:43 -05:00
Gazook89
af8ac832fd Move ChangeLog link to Version Number 2021-08-20 14:31:56 -05:00
Gazook89
043ade6e34 minor fix for ink-friendly legacy snippet 2021-08-20 10:36:28 -05:00
Trevor Buckner
519d102a6e Throw errors in listGoogleBrews() and getGoogleFolder() 2021-08-20 01:45:50 -04:00
Trevor Buckner
5f388ed41f Merge pull request #1491 from G-Ambatte/addPageCountToUserPage
Display Brew page count on User Page
2021-08-18 10:52:42 -04:00
G.Ambatte
a834c79b49 Fix BrewItem locations and overlapping. 2021-08-18 18:07:17 +12:00
G.Ambatte
cb8c3a016a BETTER property alignment in googleActions 2021-08-18 16:25:08 +12:00
G.Ambatte
7a081e1147 Property alignment in googleActions.js 2021-08-18 16:20:27 +12:00
Trevor Buckner
72360be3e9 up version to 2.13.4 2021-08-17 23:58:16 -04:00
G.Ambatte
a97fd4f47f Check brew.title exists before sorting by it 2021-08-17 23:29:41 -04:00
Gazook89
0db37bc204 Update editor.less for .pageLine
Change the .pageLine (page break) border from bottom to top, since any text on the same line is part of the following page rather than the preceding page.
2021-08-17 19:47:23 -05:00
Gazook89
bc7911b0bc Add Watermark snippet 2021-08-17 16:04:59 -05:00
Gazook89
c33083814e Merge branch 'master' into Images-Snippet-Menu 2021-08-17 15:49:40 -05:00
Gazook89
ff3320c8dc reveal v3 2021-08-17 15:49:16 -05:00
Gazook89
bd368c4c64 add 'view' property
[minor fix] fix missing apostrophe
2021-08-17 12:46:22 -05:00
G.Ambatte
c051ec19f2 Add voidTags whitelist and functionality 2021-08-17 20:50:41 +12:00
G.Ambatte
2be0d82a35 Fix typo. 2021-08-17 20:37:07 +12:00
G.Ambatte
bdfcde7661 Fix issue with <a>/<aside> 2021-08-17 20:23:26 +12:00
G.Ambatte
f609962d44 Merge branch 'addPageCountToUserPage' of https://github.com/G-Ambatte/homebrewery into addPageCountToUserPage 2021-08-17 19:31:54 +12:00
G.Ambatte
15f4aef7ef Eliminate duplicate section 2021-08-17 19:30:20 +12:00
G.Ambatte
4218078502 Eliminate hanging comma 2021-08-17 19:30:20 +12:00
G.Ambatte
18cd851674 Eliminate spacer div in BrewItem 2021-08-17 19:30:20 +12:00
G.Ambatte
2c6c148da8 Push pageCount to NewPage and EditPage 2021-08-17 19:30:19 +12:00
G.Ambatte
42da4b4c43 Add a page count to User page 2021-08-17 19:30:17 +12:00
G.Ambatte
ee006b6b16 Eliminate spacer div in BrewItem 2021-08-17 19:30:01 +12:00
G.Ambatte
cfb98986cd Push pageCount to NewPage and EditPage 2021-08-17 19:30:01 +12:00
G.Ambatte
0fd7921a50 Lint fix. 2021-08-17 19:30:01 +12:00
G.Ambatte
e0e86dff7c Update server/googleActions.js
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2021-08-17 19:29:25 +12:00
G.Ambatte
7e30fb19d4 Update server/googleActions.js
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2021-08-17 19:29:25 +12:00
G.Ambatte
df07e0401a Add support for Google Brews. 2021-08-17 19:27:56 +12:00
G.Ambatte
a908c5f5d5 Add a page count to User page 2021-08-17 19:27:54 +12:00
G.Ambatte
cdaa0b3ac2 Eliminate duplicate section 2021-08-17 19:26:03 +12:00
G.Ambatte
6573ada881 Eliminate hanging comma 2021-08-17 19:25:39 +12:00
G.Ambatte
2a7bde7e44 Eliminate spacer div in BrewItem 2021-08-17 19:05:30 +12:00
G.Ambatte
eca58bb27e Push pageCount to NewPage and EditPage 2021-08-17 19:05:30 +12:00
G.Ambatte
2e68cd77fa Add a page count to User page 2021-08-17 19:03:23 +12:00
G.Ambatte
f1d19d2d63 Eliminate spacer div in BrewItem 2021-08-17 18:01:07 +12:00
G.Ambatte
a13759130d Push pageCount to NewPage and EditPage 2021-08-17 17:36:26 +12:00
G.Ambatte
a99cf75b2e Lint fix. 2021-08-17 17:07:19 +12:00
G.Ambatte
3b7a52a60f Update client/homebrew/pages/userPage/brewItem/brewItem.jsx
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2021-08-17 16:02:50 +12:00
G.Ambatte
6489a29436 Update server/googleActions.js
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2021-08-17 15:51:05 +12:00
G.Ambatte
c907d32779 Update server/googleActions.js
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2021-08-17 15:50:40 +12:00
Trevor Buckner
1885a8d0cc Merge pull request #1541 from G-Ambatte/updateBrewTooltips
Update BrewItem tooltips
2021-08-16 23:26:01 -04:00
Gazook89
5c46ecbebd Merge branch 'master' into ClassTable-Revisions 2021-08-16 13:35:07 -05:00
Gazook89
f993a7022c Merge branch 'master' into Images-Snippet-Menu 2021-08-16 13:30:28 -05:00
Gazook89
0d2624bf3b Merge branch 'master' into metadata-panel-css-tweak 2021-08-16 13:30:07 -05:00
Gazook89
801703a7a5 Merge branch 'master' into Turn-Box-Shadows-to-Drop-Shadows 2021-08-16 13:29:47 -05:00
Trevor Buckner
64b62c5e98 Merge pull request #1575 from naturalcrit/v3WelcomePage
V3 welcome page
2021-08-16 10:17:45 -04:00
Trevor Buckner
425d03f6b5 Link in metadata panel 2021-08-16 10:16:25 -04:00
Trevor Buckner
7977e869c3 Small tweaks. Move "Create your own" button slightly. 2021-08-16 00:52:34 -04:00
Gazook89
1b7729ca01 reverting change to .note:before
setting back to what it was.  apparently :before is necessary due to border-image spacing.
2021-08-15 20:17:15 -05:00
Gazook89
0773dd24ab change box-shadows to drop-shadows
monster blocks, descriptive notes, regular notes.
2021-08-15 19:57:20 -05:00
Gazook89
76a6c9c2d3 Remove :before on .note
Move all properties from :before to the base .note....don't see a need to add a superfluous pseudo element.
2021-08-15 19:52:12 -05:00
G.Ambatte
3a2477949b Resolve merge conflict 2021-08-15 21:19:09 +12:00
G.Ambatte
1edc62d023 Hide pageCount on User Page if the brew only has one page 2021-08-15 21:02:56 +12:00
G.Ambatte
7b0f5cec97 Add support for Google Brews. 2021-08-15 21:02:46 +12:00
G.Ambatte
f0a0c0c11d Add a page count to User page 2021-08-15 21:00:17 +12:00
G.Ambatte
3489a76a1d Hide pageCount on User Page if the brew only has one page 2021-08-15 20:32:23 +12:00
G.Ambatte
3cf05e551f Add support for Google Brews. 2021-08-15 20:17:50 +12:00
G.Ambatte
501b356344 Updates based on Gitter feedback 2021-08-15 19:15:43 +12:00
Trevor Buckner
3f395ad4f3 Lint 2021-08-15 00:51:22 -04:00
Trevor Buckner
ec92a0307b Merge pull request #1562 from Gazook89/Page-Snippet-Menu
Editor-Specific Snippet Groups, and Print Snippet Menu Changes
2021-08-15 00:45:47 -04:00
Trevor Buckner
edce4e5bbc Refactoring switching logic, formatting LESS 2021-08-15 00:45:01 -04:00
Gazook89
a7e6d0a513 Update metadataEditor.less "small" text 2021-08-14 23:34:12 -05:00
Gazook89
2874bcc5f7 Merge branch 'master' into Images-Snippet-Menu 2021-08-14 22:51:40 -05:00
G.Ambatte
521c393b74 Add title filtering to User Page. 2021-08-15 15:51:24 +12:00
Trevor Buckner
d853643874 Inherit colors 2021-08-14 23:40:38 -04:00
Trevor Buckner
28884d6774 Merge pull request #1509 from Gazook89/v3-Artist-Snippet
Add Artist Credit Snippet
2021-08-14 23:22:23 -04:00
Trevor Buckner
8f7d6a3eb5 Update color, snippet positioning, added into v3 Image and BackgroundImage 2021-08-14 23:21:13 -04:00
Gazook89
4653fcd782 Remove reference to hotkeys in Style Comments
Removed reference to hotkeys for commenting in the Style Editor since that is not implemented yet.  can be added back to match the Text Editor commenting snippet once implemented.
2021-08-14 20:24:51 -05:00
Gazook89
84698aa68f Match changes in commit 143d390 to Legacy
Matching legacy to v3 (adds another menu to style editor, etc).
2021-08-14 20:18:11 -05:00
Gazook89
143d390895 Add "Style Editor" menu to Style pane
And other tweaks:
- Move drop caps snippets to Style Editor menu
- retitle Editor menu to either Text Editor or Style Editor
- minor:  removed old unnecessary comments in code from earlier (my own).
- Removed leading spaces on drop cap comment
- added drop cap comment on "remove drop caps" snippet.
2021-08-14 20:16:33 -05:00
Trevor Buckner
58568468f6 Fix font in v3. Clean up LESS formatting. 2021-08-14 00:52:35 -04:00
Trevor Buckner
53de59940f Merge pull request #1561 from naturalcrit/dependabot/npm_and_yarn/mongoose-5.13.7
Bump mongoose from 5.13.6 to 5.13.7
2021-08-13 20:34:56 -04:00
dependabot[bot]
4588e02faf Bump mongoose from 5.13.6 to 5.13.7
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.13.6 to 5.13.7.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/commits/5.13.7)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-13 19:03:49 +00:00
Trevor Buckner
bd5b3fa6e9 Merge pull request #1567 from naturalcrit/dependabot/npm_and_yarn/nanoid-3.1.25
Bump nanoid from 3.1.23 to 3.1.25
2021-08-13 15:02:46 -04:00
Trevor Buckner
9dc6d2532a Drastic simplification of SpanTables via better regex
Thanks @ericscheid for finding a good regex!
2021-08-13 14:38:43 -04:00
Gazook89
8c03b453b2 circleCI fix 2021-08-13 08:31:41 -05:00
Gazook89
727a58f56d Fixed cursor finish position
- tested on single words and multi word strings
- tested removal of hyperlink
- tested with highlighting selection from left to right, and right to left.
- tested on empty strings
2021-08-13 08:28:02 -05:00
Gazook89
b89c10a298 Change cursor finish position
Change cursor finish position
2021-08-12 23:09:06 -05:00
Gazook89
5258e9f0e6 Add Hotkey Ctrl/Cmd + K to create Link 2021-08-12 22:41:34 -05:00
dependabot[bot]
6c68502d03 Bump nanoid from 3.1.23 to 3.1.25
Bumps [nanoid](https://github.com/ai/nanoid) from 3.1.23 to 3.1.25.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.1.23...3.1.25)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-13 03:00:59 +00:00
Gazook89
88c485ffe5 circleCI fix
hopefully last one..

circleCI fixes

circleCI fixes
2021-08-12 21:23:21 -05:00
Gazook89
562bf6d4ac Fix to snippets.js both legacy and v3 for CircleCI 2021-08-12 07:45:00 -05:00
Gazook89
807f865d8b Match Legacy snippets to v3, remove <style> from style snippets
- Matched the Legacy snippets to v3, with appropriate syntax.
- Small adjustments to Ink Friendly snippet (retains images, reduces drop shadows, sets more backgrounds to White)
- Adds commented snippet 'titles' for Page snippets
2021-08-12 07:42:08 -05:00
Gazook89
50c07a5c8e Change 'print' to 'page' on Legacy snippet.js
Tiny fix to change "Print" menu to "Page" menu on Legacy.
2021-08-12 07:00:51 -05:00
Gazook89
3545bdc586 Update snippetbar.jsx with filter for editor/view specific menus
Add logic to filter available snippet menus based on the view/editor that is open ("text" vs "style") for both Legacy and v3.
2021-08-12 06:59:55 -05:00
Gazook89
3d9f8ea142 Update snippet.js 'editor' to 'view'
Change new property 'editor' to 'view'  on  @calculuschild 's recommendation.
2021-08-12 06:01:48 -05:00
Trevor Buckner
9726fb5666 Merge pull request #1558 from naturalcrit/GoogleExpiredNotification
Popup error when gDrive credentials are expired on both /edit and /new
2021-08-12 00:08:59 -04:00
Trevor Buckner
db22725687 New fix to table regex. Avoids ReDOS issues. 2021-08-12 00:06:56 -04:00
Gazook89
69a69bbb82 Add 'editor' property to snippets.js
Add another property to the snippet groups, "editor", with values either "text" or "style".
2021-08-11 21:44:39 -05:00
Trevor Buckner
0075b0836a Popup error when gDrive credentials are expired on both /edit and /new 2021-08-11 15:36:57 -04:00
Trevor Buckner
77d447c0a3 Fix redundant Codemirror hotkeys 2021-08-11 12:54:18 -04:00
Trevor Buckner
af8ca7141d Update welcome_msg_v3.md 2021-08-11 01:01:04 -04:00
Trevor Buckner
a48c74b2e7 Replace Regex Lookbehind with obnoxious workaround so Safari doesn't break 2021-08-10 23:42:46 -04:00
Gazook89
a63949636e Update Ink Friendly snippet for v3
updated the ink friendly snippet so that it points to elements like .monster rather than hr+blockquote.

Goes further than original snippet by setting white background for monster, note, descriptive blocks.

Did not update Legacy.
2021-08-10 22:02:46 -05:00
Gazook89
9a44cc04b1 Add Square Page snippet
Add a snippet to Print menu (renamed to "Page") for a square page.  Reduces padding and removes columns as well.
2021-08-10 21:46:47 -05:00
Gazook89
cefa3147fc Fixes for CircleCI 2021-08-10 21:16:12 -05:00
Gazook89
51116efba7 Add Blended Watercolor Background Image
Add a snippet to create a nice watercolor background for use behind other images.  Includes injection syntax which includes absolute position, hue-rotate, mix-blend-mode, and opacity.

Chooses an image randomly from an Imgur album.  All images created by me (and open to creating more/making adjustments).

v3 only.

Could be improved by cycling through images rather than choosing randomly.
2021-08-10 20:56:28 -05:00
Gazook89
21058331cf Add Class Table Circle Decoration Snippet
Adding a background image snippet that includes the fancy circular decoration found behind class tables in the source material.

*Could arguably replace the normal "Background Image" snippet and hit two bases with one stone*
2021-08-10 20:24:43 -05:00
Gazook89
4b001d9890 Move Image Snippets to New Menu
Separating image related snippets to a new drop down snippet menu.
2021-08-10 20:22:36 -05:00
Gazook89
c9e1d7ba5c Fixed closing curly brackets on half class table 2021-08-10 16:35:21 -05:00
Gazook89
c8997cee68 Fix two css values throwing errors 2021-08-10 14:35:28 -05:00
Gazook89
ee343ad06f Merge branch 'master' into ClassTable-Revisions 2021-08-10 13:47:55 -05:00
Gazook89
79fa0dbe77 Fix font-family values for legacy/v3 2021-08-10 13:45:30 -05:00
Gazook89
9120c1d0eb Merge branch 'master' into v3-Artist-Snippet 2021-08-10 13:34:26 -05:00
Gazook89
a46370b81e Merge branch 'master' into v3-Artist-Snippet 2021-08-10 13:32:35 -05:00
Gazook89
2a428100c5 fix some indentation issues for circleCI 2021-08-10 09:11:14 -05:00
Gazook89
9f519b469d Change classTable Icons 2021-08-10 08:44:25 -05:00
Gazook89
927cc2e9b5 Fix "Spell Slots per Spell Level"
Update current "--- Spells Slots per Level ---"  to more accurate "--- Spells Slots per Spell Level ---" to match source material.
2021-08-10 08:33:05 -05:00
Gazook89
8bda68d684 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.
2021-08-10 08:31:08 -05:00
G.Ambatte
e108e30821 Remove brew.views for EditPage brew object 2021-08-10 22:51:52 +12:00
G.Ambatte
779426dbb1 Set modifiedTime during view count update 2021-08-10 21:43:41 +12:00
G.Ambatte
a6aaa93389 Revert "Add modifiedTime to properties to apply during view count increase update."
This reverts commit 72b18e4266.
2021-08-10 21:37:03 +12:00
G.Ambatte
72b18e4266 Add modifiedTime to properties to apply during view count increase update. 2021-08-10 21:35:27 +12:00
G.Ambatte
479f9af08c Wrap Last Viewed tooltip with Moment 2021-08-10 21:31:02 +12:00
G.Ambatte
0ddfb6e4e7 Update following Gitter conversation 2021-08-10 20:47:49 +12:00
G.Ambatte
120e99959a Update BrewItem tooltips 2021-08-10 18:54:16 +12:00
Trevor Buckner
3cf5dc74bb update Patreon link in homepage 2021-08-10 00:53:48 -04:00
Trevor Buckner
7021715543 /v3_preview page will show a v3 version of the homepage 2021-08-10 00:51:30 -04:00
Trevor Buckner
a351e2a118 Merge pull request #1540 from naturalcrit/dependabot/npm_and_yarn/mongoose-5.13.6
Bump mongoose from 5.13.5 to 5.13.6
2021-08-09 23:11:15 -04:00
dependabot[bot]
4a2b9bd662 Bump mongoose from 5.13.5 to 5.13.6
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.13.5 to 5.13.6.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/commits)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-10 03:00:42 +00:00
Trevor Buckner
82355f0175 Merge pull request #1539 from naturalcrit/v2.13.3
up version to 2.13.3
2021-08-09 22:48:45 -04:00
Trevor Buckner
965645f1e6 up version to 2.13.3 2021-08-09 22:47:19 -04:00
Gazook89
5d4bc23c84 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
2021-08-09 21:14:40 -05:00
Trevor Buckner
79e05b1665 Merge pull request #1534 from G-Ambatte/addMetaToLocalStorage-#1498
Save Renderer data in LocalStorage and GoogleDrive
2021-08-09 22:08:52 -04:00
Gazook89
e3285b5ca4 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.
2021-08-09 21:06:29 -05:00
G.Ambatte
2c954c398c Add renderer metadata to Google Drive file properties 2021-08-09 19:21:25 +12:00
G.Ambatte
33b8f2002b Save renderer settings to localStorage 2021-08-09 19:20:54 +12:00
Trevor Buckner
e3da09cb0e Merge pull request #1531 from G-Ambatte/hidePrivateBrews
Hide Private brew `<div>` if UserPage is not for logged in User
2021-08-09 00:56:30 -04:00
Trevor Buckner
cba3282541 Merge branch 'master' of https://github.com/naturalcrit/homebrewery 2021-08-09 00:52:57 -04:00
Trevor Buckner
621d34954a Allow paragraphs to break across columns 2021-08-09 00:52:49 -04:00
Trevor Buckner
5fc45ad22f Merge pull request #1530 from Gazook89/v3-style-tweaks
Make Minor Tweaks to v3 Style
2021-08-09 00:40:45 -04:00
Trevor Buckner
9ca8afb3ba optional chaining not needed on props 2021-08-09 00:40:25 -04:00
Trevor Buckner
175b2f8664 Further tweaking, use cm instead of px, top-margin when possible 2021-08-09 00:31:08 -04:00
Trevor Buckner
d6fbfe75bc Merge pull request #1533 from naturalcrit/dependabot/npm_and_yarn/googleapis-84.0.0
Bump googleapis from 83.0.0 to 84.0.0
2021-08-08 23:19:38 -04:00
dependabot[bot]
bddc670eea Bump googleapis from 83.0.0 to 84.0.0
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 83.0.0 to 84.0.0.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/googleapis-v83.0.0...googleapis-v84.0.0)

---
updated-dependencies:
- dependency-name: googleapis
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-09 03:00:38 +00:00
Trevor Buckner
08cf83de2a Merge pull request #1529 from Gazook89/Commenting-Hotkeys
Add HTML Comment Hotkeys
2021-08-08 22:16:32 -04:00
Trevor Buckner
86184f8595 Changed shortcut to CTRL + /, fixed icon 2021-08-08 22:13:23 -04:00
G.Ambatte
6775960241 Hide Private brew <div> if UserPage is not for logged in User 2021-08-09 13:26:10 +12:00
Trevor Buckner
2119d755ee Merge pull request #1526 from G-Ambatte/addTooltipToRecent-#1525
Add title tooltip to Recent NavBar dropdown
2021-08-08 19:33:39 -04:00
Trevor Buckner
ed9ca74b4f Merge pull request #1524 from G-Ambatte/fixIncorrectOrdering-#1506
Fix incorrect ordering on UserPage
2021-08-08 17:26:36 -04:00
Gazook89
e2280dca39 Make Minor Tweaks to v3 Style
Resubmission of  #1497  due to deletion of old repo.
2021-08-07 23:01:29 -05:00
Trevor Buckner
deeaa90667 Merge pull request #1523 from G-Ambatte/addClassNameToUserPageDivs-#1511
Add tooltip and classNames to UserPage and BrewItem
2021-08-08 00:00:16 -04:00
Trevor Buckner
7d79d29e7e Merge pull request #1500 from Gazook89/Legacy-SpellList-Update
Legacy spell list update
2021-08-07 23:50:31 -04:00
Gazook89
37d11ec303 Add spaces to satisfy circleCI 2021-08-07 22:49:51 -05:00
Trevor Buckner
4ed1a4bddb Merge pull request #1510 from G-Ambatte/fixAdmin-#1508
Modify buildAdmin.js for Node compatibility
2021-08-07 23:48:31 -04:00
Trevor Buckner
1324bc05e8 Remove commented line 2021-08-07 23:47:04 -04:00
Gazook89
ca9a8173bd Add HTML Comment Hotkey
Resubmission of #1492  from new clone (old clone was deleted).
2021-08-07 22:43:15 -05:00
Trevor Buckner
b98daed19c Merge pull request #1507 from G-Ambatte/ignoreDockerConfig
Ignore Docker config files
2021-08-07 22:42:21 -04:00
Trevor Buckner
64e5444c06 Merge pull request #1519 from naturalcrit/dependabot/npm_and_yarn/babel/plugin-transform-runtime-7.15.0
Bump @babel/plugin-transform-runtime from 7.14.5 to 7.15.0
2021-08-07 22:41:32 -04:00
Trevor Buckner
dc1a77ee38 Merge pull request #1527 from naturalcrit/tableColSpan
Fix catastrophic backtracking in Spannable Tables and trim starting pipes
2021-08-07 00:52:39 -04:00
Trevor Buckner
9ea068bf64 Fix catastrophic backtracking and trim starting pipes 2021-08-07 00:48:59 -04:00
G.Ambatte
4940d8523c Add title tooltip to Recent NavBar dropdown 2021-08-07 14:56:06 +12:00
G.Ambatte
a1e78f1d17 Add createdTime to G-Drive fields to retrieve
Add Moment to UserPage sorting
2021-08-07 14:47:25 +12:00
G.Ambatte
fd8020dcc4 Add tooltip and classNames to UserPage and BrewItem 2021-08-07 14:41:11 +12:00
Trevor Buckner
e31e8dec98 Merge pull request #1522 from naturalcrit/tableColSpan
Tables now support row spans
2021-08-06 16:59:25 -04:00
Trevor Buckner
8103d7d31f Update Classtable snippet 2021-08-06 16:58:10 -04:00
Trevor Buckner
f23b661a4b Lint 2021-08-06 16:49:53 -04:00
Trevor Buckner
20691f8ab5 Update markdown.js 2021-08-06 16:45:22 -04:00
Trevor Buckner
e1bd40dea3 Change DL to display inline, not float. 2021-08-06 12:34:59 -04:00
Trevor Buckner
17926775e7 Fix ScalySans Font for Mac? 2021-08-06 00:49:42 -04:00
dependabot[bot]
79fac17bf7 Bump @babel/plugin-transform-runtime from 7.14.5 to 7.15.0
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.14.5 to 7.15.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.15.0/packages/babel-plugin-transform-runtime)

---
updated-dependencies:
- dependency-name: "@babel/plugin-transform-runtime"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-05 03:34:15 +00:00
Trevor Buckner
303de4ae8a Merge pull request #1502 from naturalcrit/dependabot/npm_and_yarn/googleapis-83.0.0
Bump googleapis from 82.0.0 to 83.0.0
2021-08-04 23:34:07 -04:00
Trevor Buckner
5caeafe2c3 Merge pull request #1501 from naturalcrit/dependabot/npm_and_yarn/eslint-7.32.0
Bump eslint from 7.31.0 to 7.32.0
2021-08-04 23:33:50 -04:00
Trevor Buckner
481919bc03 Merge pull request #1503 from naturalcrit/dependabot/npm_and_yarn/mongoose-5.13.5
Bump mongoose from 5.13.4 to 5.13.5
2021-08-04 23:33:39 -04:00
Trevor Buckner
558664760b Merge pull request #1518 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.15.0
Bump @babel/core from 7.14.8 to 7.15.0
2021-08-04 23:33:20 -04:00
Trevor Buckner
f4e8c6ca51 Merge pull request #1517 from naturalcrit/dependabot/npm_and_yarn/babel/preset-env-7.15.0
Bump @babel/preset-env from 7.14.8 to 7.15.0
2021-08-04 23:33:12 -04:00
dependabot[bot]
01c5d50957 Bump @babel/core from 7.14.8 to 7.15.0
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.14.8 to 7.15.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.15.0/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-05 03:00:58 +00:00
dependabot[bot]
36c9c2616e Bump @babel/preset-env from 7.14.8 to 7.15.0
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.14.8 to 7.15.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.15.0/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-05 03:00:46 +00:00
Gazook89
2ab0c9cbeb update font name in 5e styles 2021-08-04 15:53:21 -05:00
Gazook89
d763f2de2f Update fonts.less 2021-08-04 15:50:31 -05:00
Gazook89
152f387939 Merge branch 'naturalcrit:master' into v3-Artist-Snippet 2021-08-04 09:39:02 -05:00
Gazook89
9e5451b940 Add Artist Snippet
Add Artist Snippet
2021-08-04 09:37:27 -05:00
Trevor Buckner
e1e7264bfc Merge pull request #1514 from naturalcrit/tableColSpan
Multi-header and column-span tables
2021-08-04 01:29:01 -04:00
Trevor Buckner
afb26fdb6f Multi-header and column-span tables 2021-08-04 01:27:47 -04:00
Trevor Buckner
0a742e8c2f Merge pull request #1513 from G-Ambatte/fix#1512
Confirm `Brew.Title` exists before ordering by it
2021-08-03 23:49:38 -04:00
G.Ambatte
e14c42761d Check brew.title exists before sorting by it 2021-08-04 12:24:29 +12:00
G.Ambatte
b6f7dc048f Modify buildAdmin.js for Node compatibility 2021-08-03 19:12:51 +12:00
G.Ambatte
4efd89627d Add config/docker.* to gitIgnore 2021-08-03 13:54:45 +12:00
Trevor Buckner
6f6c4acf7e Merge pull request #1505 from naturalcrit/fixMonsterMac
Fix monster blocks breaking on Mac
2021-08-01 23:09:08 -04:00
Trevor Buckner
30745c2be3 Update 5ePhb.style.less 2021-08-01 23:07:45 -04:00
dependabot[bot]
e257776852 Bump mongoose from 5.13.4 to 5.13.5
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.13.4 to 5.13.5.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/compare/5.13.4...5.13.5)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-02 03:01:08 +00:00
dependabot[bot]
502b0c4cc5 Bump googleapis from 82.0.0 to 83.0.0
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 82.0.0 to 83.0.0.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/googleapis-v82.0.0...googleapis-v83.0.0)

---
updated-dependencies:
- dependency-name: googleapis
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-02 03:00:49 +00:00
dependabot[bot]
0d8c3a1e60 Bump eslint from 7.31.0 to 7.32.0
Bumps [eslint](https://github.com/eslint/eslint) from 7.31.0 to 7.32.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.31.0...v7.32.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-02 03:00:39 +00:00
Gazook89
7254fbcd74 Merge branch 'naturalcrit:master' into Legacy-SpellList-Update 2021-08-01 11:07:16 -05:00
Trevor Buckner
4d087f4aa9 Fix spaces not working in mustache divs / spans 2021-08-01 00:20:58 -04:00
Trevor Buckner
874c8a9fd1 Merge pull request #1494 from naturalcrit/v2.13.2
up version to 2.13.2
2021-07-31 12:17:32 -04:00
Gazook89
4d61670f38 add 1st Level spell to spell list - legacy 2021-07-31 07:19:42 -05:00
G.Ambatte
00f90d1084 Add a page count to User page 2021-07-31 17:21:25 +12:00
Trevor Buckner
3cb50bc7fc up version to 2.13.2 2021-07-30 23:30:34 -04:00
Trevor Buckner
213ef9d94b Fix cursor getting stuck on divider in Meta panel view 2021-07-30 22:44:00 -04:00
Trevor Buckner
046b6266b3 Merge pull request #1483 from Gazook89/pageNumber-v3
v3 Snippets: Page Numbers
2021-07-30 22:35:58 -04:00
Trevor Buckner
8a03062e3d Fix indent and vertical spacing 2021-07-30 22:32:17 -04:00
Trevor Buckner
2a40f05e90 Revert "Update css for classTables v3"
This reverts commit 3c2feeb2aa.
2021-07-30 20:33:34 -04:00
Trevor Buckner
ce73e9293d Revert "Update to v3 moustache syntax"
This reverts commit fdb294bad9.
2021-07-30 20:33:24 -04:00
Gazook89
f469a7e360 Update page number snippet in snippet.js 2021-07-30 20:28:48 -04:00
Gazook89
3c2feeb2aa Update css for classTables v3
- add "- spell slots per spell level -" header to full class tables
- add rules for `.classTables.full` which is similar to `wide` but adds the previously mentioned header as well.
- add css variable `--row-color` so the odd row colors can be set in the inline moustache syntax easily.
2021-07-30 20:28:48 -04:00
Gazook89
fdb294bad9 Update to v3 moustache syntax
- Added moustache syntax
- replaced class `wide` with `full` so that new styling is applied, including adding a "spell slots per spell level" header for only full class tables.
- included a quick-change css variable to the snippet to control row color.  **can be updated to use hex code or whichever is preferred for the snippet**
2021-07-30 20:28:48 -04:00
Gazook89
56975f9375 Delete userPage3D.css 2021-07-30 20:28:48 -04:00
Gazook89
cb74c0d389 Update userPage3D.css 2021-07-30 20:28:48 -04:00
Gazook89
33abe05737 Create userPage3D.css 2021-07-30 20:28:48 -04:00
Trevor Buckner
61ca7fd0f6 Merge pull request #1457 from G-Ambatte/fixUndefinedCSS
Fix issue with undefined Style tab data
2021-07-30 18:53:16 -04:00
Trevor Buckner
21223cbcd4 Merge branch 'master' into fixUndefinedCSS 2021-07-30 18:05:02 -04:00
Trevor Buckner
d02d51717d Merge pull request #1480 from Gazook89/Gazook89-HB-Meta-Editor-Tweaks
Update metadataEditor.less for CSS adjustments
2021-07-30 17:56:14 -04:00
Trevor Buckner
004f3f184f Merge pull request #1455 from G-Ambatte/reduceWelcomeTextUsage
Make WelcomeText and ChangeLogText conditional
2021-07-30 17:50:26 -04:00
Trevor Buckner
99d2f6d48d avoid sending two copies of welcome text in the same brew 2021-07-30 17:47:11 -04:00
Trevor Buckner
11d1f5c00e Merge pull request #1453 from G-Ambatte/modifyTitleOfClonedBrew
Prepend 'CLONE:- ' to title of cloned brew
2021-07-30 17:30:26 -04:00
Trevor Buckner
ebd28f41a2 replace :- with just - 2021-07-30 17:29:36 -04:00
Trevor Buckner
2397fcaa21 Merge pull request #1485 from naturalcrit/MustacheSyntaxUsesColons
Mustache syntax to use colons
2021-07-30 12:32:28 -04:00
Trevor Buckner
5b039b82a3 Update snippets 2021-07-30 12:31:30 -04:00
Trevor Buckner
264f5d5068 Merge pull request #1475 from naturalcrit/dependabot/npm_and_yarn/mongoose-5.13.4
Bump mongoose from 5.13.3 to 5.13.4
2021-07-30 03:17:54 -04:00
Trevor Buckner
eff5660f12 Merge pull request #1484 from naturalcrit/FixMustacheInjectConflicts
Fix conflicts with Mustache divs and injected style tags
2021-07-30 02:12:07 -04:00
Trevor Buckner
98915e158d Fix editor highlighting 2021-07-30 02:11:26 -04:00
Trevor Buckner
9be71a5159 Mustache syntax now uses : instead of =. Single words don't need quotes 2021-07-30 02:08:08 -04:00
Trevor Buckner
6b61bb05c0 Update markdown.js
- Fix "start" function for Divs and BlockInject, which were being generated mid-line (must start only after a newline)
- Fix Divs consuming part of Spans above them.
- Add % and # as valid characters for inline-styles
2021-07-30 01:27:05 -04:00
Gazook89
4c389a4077 Delete userPage3D.css 2021-07-29 19:15:09 -05:00
Gazook89
e6ebdd5be3 Update userPage3D.css 2021-07-29 17:59:55 -05:00
Gazook89
22eb7de7ea Create userPage3D.css 2021-07-29 17:47:29 -05:00
Gazook89
c4c5e21ce0 Vertically center button labels
Set labels as inline-flex containers and vertically align children to center.
2021-07-29 12:28:02 -05:00
Gazook89
0c0ba0b6ca Update metadataEditor.less
- Fix Publish button and following small text so there is no overlap
- set `nowrap` on checkbox inputs/labels so that the labels do not wrap to the next line from their input.
- set min-width on values so that text boxes shrink to the same width; and can flex to any larger size.
2021-07-29 11:26:41 -05:00
Gazook89
295a4cd1cd Update magic.gen.js
Add "1st Level" to levels in spell list.  convert spell list to moustache syntax.
2021-07-29 10:13:31 -05:00
G.Ambatte
db3bec9e2b Combine setState calls in componentDidMount 2021-07-29 21:05:55 +12:00
G.Ambatte
577a434e17 Slight change to isMounted logic 2021-07-29 19:24:36 +12:00
G.Ambatte
cac5aa2475 Combine renderStyle and renderPages logic 2021-07-29 19:23:27 +12:00
G.Ambatte
85fa73b9bf Remove welcomText+changelogText from default props 2021-07-29 19:02:48 +12:00
G.Ambatte
fdfea36614 Shift HomePage to use a minimal brew 2021-07-29 19:00:26 +12:00
Trevor Buckner
2f663e0ea7 Merge pull request #1468 from G-Ambatte/fixSharePage-#1467
Fix issue 1467 - Source on Change Log doesn't work
2021-07-29 00:11:20 -04:00
Trevor Buckner
5d05af089b Merge pull request #1476 from naturalcrit/InjectMustacheStyle
Inject mustache style
2021-07-28 23:58:58 -04:00
Trevor Buckner
e237cd8be4 Remove artificial spacing between mustache divs. 2021-07-28 23:55:56 -04:00
Trevor Buckner
8bd09e58cb Smartypants setting to show left and right quote marks. 2021-07-28 23:55:22 -04:00
Trevor Buckner
4e2a3cc5be Update image snippets to be pure markdown 2021-07-28 23:42:51 -04:00
Trevor Buckner
d9c83379fe Add "inject style" syntax, for use with images, headers, etc. 2021-07-28 23:26:12 -04:00
dependabot[bot]
0818a3485a Bump mongoose from 5.13.3 to 5.13.4
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.13.3 to 5.13.4.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/compare/5.13.3...5.13.4)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-29 03:00:58 +00:00
G.Ambatte
7fa1e16b5a Create minimal Changelog brew 2021-07-28 17:51:35 +12:00
G.Ambatte
acb750c18a Fix logic for enabling Source and Get PDF 2021-07-28 17:15:38 +12:00
G.Ambatte
72d8b5ea16 Linter fixes; correction of condtional JSX element 2021-07-28 17:10:53 +12:00
Sean Robertson
6238ed6b77 Further simplification of code. 2021-07-28 16:04:28 +12:00
Sean Robertson
fa5bd92406 Shift check to presence of this.props.brew.shareId. Revert changes to Homebrew.jsx. 2021-07-28 15:37:36 +12:00
Sean Robertson
189fdb4555 Missed a vital comma. 2021-07-28 15:29:04 +12:00
Sean Robertson
caf151a0dd Initial code pass to not display "Source" and "Get PDF" NavBar buttons on the /changelog page. 2021-07-28 15:25:17 +12:00
Trevor Buckner
d35769dceb Merge pull request #1459 from G-Ambatte/sortUserBrews
Add options for ordering brews on User page
2021-07-27 18:12:32 -04:00
G.Ambatte
1031e8a55a Changed from Radios to Buttons 2021-07-27 23:14:05 +12:00
Trevor Buckner
a71dca1487 Merge pull request #1456 from G-Ambatte/cleanTemplate
Clean up template.js
2021-07-26 17:47:24 -04:00
G.Ambatte
b80a249cf7 Reduce code duplication in sorting radio options 2021-07-26 22:40:01 +12:00
G.Ambatte
54d0e2c483 Add Lodash deburr to sorting by title 2021-07-26 22:08:54 +12:00
G.Ambatte
c91e5784ac Change to Unicode characters for asc/desc arrows 2021-07-26 21:38:22 +12:00
G.Ambatte
48e80803f7 Ignore case when ordering by title ( a > B ) 2021-07-26 21:33:20 +12:00
G.Ambatte
495a68893d Initial pass at sorting User brews 2021-07-26 20:52:23 +12:00
G.Ambatte
41e1ed7bd1 Fix issue with undefined Style tab data 2021-07-26 10:29:31 +12:00
G.Ambatte
7eb63db502 Clean up link validation in template 2021-07-26 10:05:43 +12:00
G.Ambatte
c6d0a2e2ad Make WelcomeText and ChangeLogText conditional 2021-07-26 09:55:04 +12:00
Trevor Buckner
1a2da712ed Merge pull request #1452 from G-Ambatte/fixIssue1438
Fix for Issue #1438 - style data not cloning to `/new`
2021-07-25 17:05:36 -04:00
Trevor Buckner
36627bc188 code block style 2021-07-25 16:48:59 -04:00
G.Ambatte
f31fe6cbf0 Prepend 'CLONE:- ' to title of cloned brew 2021-07-25 16:54:24 +12:00
G.Ambatte
9f8a857cef Fix for Issue #1438 - style data not cloning to /new 2021-07-25 16:39:29 +12:00
Trevor Buckner
fbf053ac2b Merge pull request #1450 from naturalcrit/dependabot/npm_and_yarn/codemirror-5.62.2
Bump codemirror from 5.62.1 to 5.62.2
2021-07-22 00:40:56 -04:00
dependabot[bot]
c77338c65e Bump codemirror from 5.62.1 to 5.62.2
Bumps [codemirror](https://github.com/codemirror/CodeMirror) from 5.62.1 to 5.62.2.
- [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.1...5.62.2)

---
updated-dependencies:
- dependency-name: codemirror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-22 03:00:58 +00:00
Trevor Buckner
42b0ea173d Make toc two-columns 2021-07-21 16:05:29 -04:00
Trevor Buckner
7c9defb85c Put theme in user page. 2021-07-21 15:09:37 -04:00
Trevor Buckner
6e5d183bf6 Merge pull request #1448 from naturalcrit/dependabot/npm_and_yarn/babel/preset-env-7.14.8
Bump @babel/preset-env from 7.14.7 to 7.14.8
2021-07-21 00:02:42 -04:00
Trevor Buckner
0ab00c24c5 Merge pull request #1447 from naturalcrit/dependabot/npm_and_yarn/codemirror-5.62.1
Bump codemirror from 5.62.0 to 5.62.1
2021-07-20 23:54:20 -04:00
dependabot[bot]
c23763a2cf Bump @babel/preset-env from 7.14.7 to 7.14.8
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.14.7 to 7.14.8.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.14.8/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-21 03:45:53 +00:00
Trevor Buckner
84b2d86054 Merge pull request #1446 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.14.8
Bump @babel/core from 7.14.6 to 7.14.8
2021-07-20 23:44:27 -04:00
Trevor Buckner
ba766254f8 typo 2021-07-20 23:39:34 -04:00
Trevor Buckner
a02e36e13f Merge pull request #1449 from naturalcrit/DefinitionListsToMarkedExtension
Definition lists to marked extension
2021-07-20 23:34:19 -04:00
Trevor Buckner
8f34e8bb2d Change note block to div, restyle notes and descript boxes 2021-07-20 23:32:49 -04:00
dependabot[bot]
38cca54b7f Bump codemirror from 5.62.0 to 5.62.1
Bumps [codemirror](https://github.com/codemirror/CodeMirror) from 5.62.0 to 5.62.1.
- [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.0...5.62.1)

---
updated-dependencies:
- dependency-name: codemirror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-21 03:01:03 +00:00
dependabot[bot]
7b44b5b7db Bump @babel/core from 7.14.6 to 7.14.8
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.14.6 to 7.14.8.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.14.8/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-21 03:00:52 +00:00
Trevor Buckner
3ed4ceb7a3 Fix description box snippet 2021-07-20 19:50:23 -04:00
Trevor Buckner
76e4023b37 Add theme CSS file to print page 2021-07-20 15:44:42 -04:00
Trevor Buckner
7ff6d9e825 Fix TOC generation for level 3 entries not inside level 2 2021-07-20 15:40:32 -04:00
Trevor Buckner
64d133f8f6 Definition List to Markdown Extension. New syntax. 2021-07-19 20:04:25 -04:00
Trevor Buckner
324d0e265e Merge pull request #1443 from naturalcrit/dependabot/npm_and_yarn/eslint-7.31.0
Bump eslint from 7.30.0 to 7.31.0
2021-07-18 23:33:06 -04:00
Trevor Buckner
cec4addcad Merge pull request #1442 from naturalcrit/dependabot/npm_and_yarn/googleapis-82.0.0
Bump googleapis from 81.0.0 to 82.0.0
2021-07-18 23:32:54 -04:00
Trevor Buckner
43605df266 Merge pull request #1441 from naturalcrit/dependabot/npm_and_yarn/mongoose-5.13.3
Bump mongoose from 5.13.2 to 5.13.3
2021-07-18 23:32:44 -04:00
dependabot[bot]
4f03df097c Bump eslint from 7.30.0 to 7.31.0
Bumps [eslint](https://github.com/eslint/eslint) from 7.30.0 to 7.31.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.30.0...v7.31.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-19 03:01:34 +00:00
dependabot[bot]
72dc62e5dd Bump googleapis from 81.0.0 to 82.0.0
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 81.0.0 to 82.0.0.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/googleapis-v81.0.0...googleapis-v82.0.0)

---
updated-dependencies:
- dependency-name: googleapis
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-19 03:01:17 +00:00
dependabot[bot]
3520c03797 Bump mongoose from 5.13.2 to 5.13.3
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.13.2 to 5.13.3.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/compare/5.13.2...5.13.3)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-19 03:01:07 +00:00
Trevor Buckner
fcbbe46861 Merge pull request #1432 from naturalcrit/dependabot/npm_and_yarn/googleapis-81.0.0
Bump googleapis from 79.0.0 to 81.0.0
2021-07-13 22:46:41 -04:00
Trevor Buckner
4a398143e3 Merge pull request #1428 from naturalcrit/dependabot/npm_and_yarn/mongoose-5.13.2
Bump mongoose from 5.13.0 to 5.13.2
2021-07-13 22:45:46 -04:00
Trevor Buckner
bbaaf74302 Merge pull request #1434 from naturalcrit/SplitThemeCSSOut
Themes are now compiled into separate css files
2021-07-13 00:35:05 -04:00
Trevor Buckner
d3dd3c3d5d Merge pull request #1427 from naturalcrit/dependabot/npm_and_yarn/eslint-7.30.0
Bump eslint from 7.29.0 to 7.30.0
2021-07-12 21:49:05 -04:00
Trevor Buckner
4f2ddfa020 Themes are now compiled into separate css files and can be hot-swapped in the renderer as needed 2021-07-12 19:37:10 -04:00
Trevor Buckner
428ec8412f Merge pull request #1433 from naturalcrit/moreV3Snippets
More v3 snippets
2021-07-11 16:59:13 -04:00
Trevor Buckner
50991dfe92 MustacheDivs to Marked.js extension 2021-07-11 00:33:47 -04:00
Trevor Buckner
63ba9f4fb9 Change {{ span to Marked.js extension 2021-07-10 19:01:27 -04:00
Trevor Buckner
efd0fd1f4a Table of Contents CSS and snippet 2021-07-10 19:01:12 -04:00
dependabot[bot]
5a7767cf0e Bump googleapis from 79.0.0 to 81.0.0
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 79.0.0 to 81.0.0.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/googleapis-v79.0.0...googleapis-v81.0.0)

---
updated-dependencies:
- dependency-name: googleapis
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-09 03:00:35 +00:00
Trevor Buckner
3948e17da2 Merge pull request #1424 from G-Ambatte/fixRecentNavItem
Fix crash caused by Recent Brews NavItem
2021-07-07 12:32:01 -04:00
dependabot[bot]
4e1e6bd69a Bump mongoose from 5.13.0 to 5.13.2
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.13.0 to 5.13.2.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/compare/5.13.0...5.13.2)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-05 03:00:51 +00:00
dependabot[bot]
9333bc73ea Bump eslint from 7.29.0 to 7.30.0
Bumps [eslint](https://github.com/eslint/eslint) from 7.29.0 to 7.30.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.29.0...v7.30.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-05 03:00:42 +00:00
G.Ambatte
3540a35a6c Fix for white screen issue when transferring Brews between Storage options. 2021-07-04 20:54:31 +12:00
Trevor Buckner
ee67ba729a V & H spacing, wide block, image snippets 2021-07-01 23:43:01 -04:00
Trevor Buckner
8414961b15 Merge pull request #1419 from naturalcrit/dependabot/npm_and_yarn/googleapis-79.0.0
Bump googleapis from 78.0.0 to 79.0.0
2021-06-30 00:59:08 -04:00
Trevor Buckner
f8de983e2b Merge pull request #1418 from naturalcrit/dependabot/npm_and_yarn/mongoose-5.13.0
Bump mongoose from 5.12.15 to 5.13.0
2021-06-30 00:58:54 -04:00
dependabot[bot]
d40afa619b Bump googleapis from 78.0.0 to 79.0.0
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 78.0.0 to 79.0.0.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/googleapis-v78.0.0...googleapis-v79.0.0)

---
updated-dependencies:
- dependency-name: googleapis
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-30 03:00:35 +00:00
dependabot[bot]
55e1d0fb6e Bump mongoose from 5.12.15 to 5.13.0
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.12.15 to 5.13.0.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/commits/5.13.0)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-29 03:00:41 +00:00
Trevor Buckner
2661e2cfa0 Update all naturalcrit links to https 2021-06-28 20:58:00 -04:00
Trevor Buckner
d4cb5c73aa Merge pull request #1417 from naturalcrit/2.13.1
up version to v2.13.1
2021-06-28 12:11:08 -04:00
Trevor Buckner
9a2d7d1a19 Merge pull request #1416 from G-Ambatte/fixGoogleBrews_v2_13
Attempt to fix issue with saving Google brews.
2021-06-28 12:10:43 -04:00
Trevor Buckner
017bccc937 replace trailing slash 2021-06-28 12:07:56 -04:00
Trevor Buckner
dea683da7c up version to v2.13.1 2021-06-28 11:59:59 -04:00
Trevor Buckner
496ab26972 Use let instead of const 2021-06-28 11:50:12 -04:00
G.Ambatte
c18eb948b4 Accidentally was overzealous with replacing brew with saveBrew. 2021-06-28 19:43:15 +12:00
G.Ambatte
0cd4b730d7 Attempt to fix issue with saving Google brews. 2021-06-28 19:37:06 +12:00
Trevor Buckner
63ea5a3e5f up version to 2.13.0 2021-06-26 12:16:27 -04:00
Trevor Buckner
33f5e8838b Revert react-frame-component to 4.1.3
5.0.0 has issues with the iFrame not mounting if you refresh the page.
2021-06-25 23:59:53 -04:00
Trevor Buckner
3660f3827f Merge pull request #1408 from G-Ambatte/addShareDropDown
Add dropdown to `/share` for `source` to unify options:
2021-06-25 23:30:25 -04:00
Trevor Buckner
ac4cce1f9b update more dependencies 2021-06-25 23:04:27 -04:00
Trevor Buckner
532d2428b7 dependency updates 2021-06-25 22:45:37 -04:00
G.Ambatte
205ed8e30e Padding fix for dropdown items. 2021-06-25 20:50:40 +12:00
G.Ambatte
4119626cb7 Merge branch 'addShareDropDown' of https://github.com/G-Ambatte/homebrewery into addShareDropDown 2021-06-25 20:46:13 +12:00
G.Ambatte
94fdca084a Horizontal and vertical alignment adjustments. 2021-06-25 20:45:47 +12:00
Trevor Buckner
599c69c9bb Merge pull request #1410 from G-Ambatte/fixStyleInPrintFromNew
Style data not applied at Print from New Page
2021-06-25 00:55:20 -04:00
Trevor Buckner
7843691c4b add "page" class to print page
With the style panel we added a `page` css class alongside the `phb` and `phb3` classes so users can write CSS that targets all pages no matter the base CSS loaded. This wasn't applied to the print page.

Funnily enough, the rest of the site uses `.page` just to display the website, and I didn't realize there was a conflict until now because otherwise, the brew is usually hidden in an iFrame.
2021-06-25 00:53:25 -04:00
Trevor Buckner
d9effacb20 Merge branch 'master' into pr/1410 2021-06-25 00:37:53 -04:00
Trevor Buckner
3efb0bf189 Merge branch 'master' into pr/1408 2021-06-25 00:18:27 -04:00
Trevor Buckner
00eb927538 Merge pull request #1401 from G-Ambatte/addStyleToLocalStorage
Add local storage key for Brew Style data
2021-06-25 00:17:11 -04:00
Trevor Buckner
0616ce62eb Rearrange so loading from one doesn't override the other 2021-06-25 00:15:49 -04:00
Trevor Buckner
a171de32d8 Merge branch 'master' into pr/1401 2021-06-25 00:03:49 -04:00
Trevor Buckner
cf7680bc86 Merge pull request #1397 from G-Ambatte/splitCSSatNewSave
Split codefenced CSS from in New Brews from Content to Style tab
2021-06-24 23:35:26 -04:00
Trevor Buckner
e07bb1b3c2 Don't save style tab if user never put anything in it 2021-06-24 23:29:01 -04:00
G.Ambatte
1f830b96b5 Inital pass at getting brew.style to apply when accessing /print from /new without saving. 2021-06-24 21:05:32 +12:00
G.Ambatte
ff7585b69d Clean up unnecessary code. 2021-06-23 21:16:33 +12:00
G.Ambatte
715ee88f38 Add dropdown to /share for source to unify options:
* "view" - View Source
* "download" - Download Source
* "clone to new" - Create New Brew from this Brew
2021-06-23 18:20:02 +12:00
G.Ambatte
142c9ad3b7 Fix loading Style data from local storage, and add fix for Linter. 2021-06-21 20:14:58 +12:00
G.Ambatte
e2280197b9 Unwinding hanging new line accidentally left after removing other code changes. 2021-06-21 19:49:35 +12:00
G.Ambatte
a74916d593 Removed CSS splitting from homebrew.api.js and back to newPage.jsx. 2021-06-21 19:46:54 +12:00
G.Ambatte
ad0e4a2099 Lint fixes. 2021-06-21 19:39:30 +12:00
G.Ambatte
2613d43f3c Shift CSS processing from newPage.jsx/save to homebrew.api.js/newBrew, as this function is only called when saving new Brews. 2021-06-21 19:38:02 +12:00
Sean Robertson
09c7f45c69 Clear data from new key when appropriate 2021-06-21 16:27:18 +12:00
Sean Robertson
0eaeb748f4 Add local storage key to store Brew Style data
Add local storage key for storing Brew Style data.
2021-06-21 16:15:37 +12:00
Sean Robertson
b72191ae68 Increase Linter max lines for newPage.jsx
Increase the maximum number of lines permitted by the Linter for the newPage.jsx file to 300 (was 200).
2021-06-21 13:04:29 +12:00
Sean Robertson
cf4bfc35ea Add new line before appending style data
Add a new line between the existing style data and the appended codefenced style data.
2021-06-21 13:00:12 +12:00
Sean Robertson
69231ba57a Initial pass at appending codefenced CSS to Style data at save time, only on /new brews (so only once per brew). 2021-06-21 12:34:51 +12:00
Trevor Buckner
d61fda9cff Fix regression with saving. 2021-06-20 16:05:36 -04:00
Trevor Buckner
6ecf546baf Fix github link in Edit Page error popup. 2021-06-20 15:04:23 -04:00
Trevor Buckner
ea8aa84009 Merge pull request #1392 from naturalcrit/dependabot/npm_and_yarn/marked-2.1.1
Bump marked from 2.0.6 to 2.1.1
2021-06-20 14:34:51 -04:00
Trevor Buckner
353f1ca42c Merge pull request #1370 from naturalcrit/dependabot/npm_and_yarn/eslint-plugin-react-7.24.0
Bump eslint-plugin-react from 7.23.2 to 7.24.0
2021-06-20 14:34:29 -04:00
Trevor Buckner
20053ad548 Merge pull request #1393 from G-Ambatte/updateSourcePage
Incorporate Brew.Style into Source + Download pages
2021-06-20 14:33:29 -04:00
Trevor Buckner
9b97e0dd87 redundant variable 2021-06-20 14:32:23 -04:00
Trevor Buckner
8e304fa483 tab 2021-06-20 14:30:00 -04:00
Trevor Buckner
0f5e2e5a60 Merge pull request #1353 from G-Ambatte/fixRedditLink
Fix 'Share to Reddit' link for Google brews
2021-06-20 14:21:28 -04:00
Trevor Buckner
f5bd7db388 Merge branch 'master' into pr/1353 2021-06-20 14:19:51 -04:00
Trevor Buckner
70832be810 Fix brews failing to sanitize on user page 2021-06-20 13:53:26 -04:00
G.Ambatte
68ed6019f6 Add new access type (raw) and simplify adding other types in the future. Add functionality for raw access to skip splitting Style data from Brew Content. 2021-06-19 15:50:48 +12:00
Sean Robertson
4638c3e1d9 Update server.js
Initial commit of incorporating `brew.style` into /source and /download pages
2021-06-18 11:24:20 +12:00
dependabot[bot]
53cb9a35ee Bump marked from 2.0.6 to 2.1.1
Bumps [marked](https://github.com/markedjs/marked) from 2.0.6 to 2.1.1.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/release.config.js)
- [Commits](https://github.com/markedjs/marked/compare/v2.0.6...v2.1.1)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-17 03:00:59 +00:00
Trevor Buckner
9d80f21ae7 Fix empty Google Brews crashing user page 2021-06-11 13:46:03 -04:00
Trevor Buckner
4d5653854a fix version number 2021-06-10 15:48:29 -04:00
Trevor Buckner
70cc8577e8 Fixing Heroku to work with NPM 7 2021-06-10 15:31:26 -04:00
Trevor Buckner
f80d5e6b52 Fix sanitizing brews in user page, hide own G brews on other profiles 2021-06-10 14:22:12 -04:00
Trevor Buckner
19456e8be0 Merge pull request #1384 from naturalcrit/StylePanel
Style panel
2021-06-10 10:41:19 -04:00
Trevor Buckner
c98cedc20f Merge branch 'master' into StylePanel 2021-06-10 10:39:39 -04:00
Trevor Buckner
2b1063c34d v2.12.0 bump version number 2021-06-10 10:38:03 -04:00
Trevor Buckner
fc8be9c8fb Babel to support ES6 Javascript in older browsers 2021-06-10 00:09:29 -04:00
G.Ambatte
70bdb07c1e Update client/homebrew/editor/metadataEditor/metadataEditor.jsx
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2021-06-09 21:42:12 +12:00
Trevor Buckner
51aba937f5 Fix CSS highlighting 2021-06-07 11:51:02 -04:00
Trevor Buckner
9363a15daa Merge pull request #1376 from naturalcrit/StylePanel
Separate "style" and "metadata" panels
2021-06-05 16:09:37 -04:00
Trevor Buckner
1ef5bfed94 Remove default text 2021-06-05 16:09:23 -04:00
Trevor Buckner
e67fadef02 Separate "style" and "metadata" panels 2021-06-05 15:58:31 -04:00
Trevor Buckner
99825d10c4 Merge pull request #1373 from earlng/contribution
Update Dockerfile
2021-06-03 13:31:49 -04:00
Trevor Buckner
a7b52f9a96 Merge pull request #1375 from naturalcrit/dependabot/npm_and_yarn/googleapis-75.0.0
Bump googleapis from 74.2.0 to 75.0.0
2021-06-03 13:30:32 -04:00
dependabot[bot]
ef9d4d8525 Bump googleapis from 74.2.0 to 75.0.0
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 74.2.0 to 75.0.0.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/googleapis-v74.2.0...googleapis-v75.0.0)

---
updated-dependencies:
- dependency-name: googleapis
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-03 05:03:03 +00:00
dependabot[bot]
2f751285ed Bump eslint-plugin-react from 7.23.2 to 7.24.0
Bumps [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) from 7.23.2 to 7.24.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.23.2...v7.24.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-02 03:49:23 +00:00
Trevor Buckner
4504a25272 Merge pull request #1368 from naturalcrit/dependabot/npm_and_yarn/mongoose-5.12.12
Bump mongoose from 5.12.11 to 5.12.12
2021-06-01 23:47:44 -04:00
Trevor Buckner
aefc4698ab Merge pull request #1369 from naturalcrit/dependabot/npm_and_yarn/babel/preset-env-7.14.4
Bump @babel/preset-env from 7.14.2 to 7.14.4
2021-06-01 23:47:36 -04:00
Trevor Buckner
28af7353ea Merge pull request #1372 from naturalcrit/dependabot/npm_and_yarn/pico-check-2.1.3
Bump pico-check from 2.0.3 to 2.1.3
2021-06-01 23:47:17 -04:00
dependabot[bot]
22a078b628 Bump pico-check from 2.0.3 to 2.1.3
Bumps [pico-check](https://github.com/stolksdorf/pico-check) from 2.0.3 to 2.1.3.
- [Release notes](https://github.com/stolksdorf/pico-check/releases)
- [Commits](https://github.com/stolksdorf/pico-check/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-01 05:06:37 +00:00
Earl Ng
d8a8275723 Update Dockerfile
Updated the version of node.js that needs to be pulled to match the package.json file.
2021-06-01 12:02:01 +08:00
dependabot[bot]
d13b478c56 Bump @babel/preset-env from 7.14.2 to 7.14.4
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.14.2 to 7.14.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.14.4/packages/babel-preset-env)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-31 05:05:16 +00:00
dependabot[bot]
5ee146b6be Bump mongoose from 5.12.11 to 5.12.12
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.12.11 to 5.12.12.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/compare/5.12.11...5.12.12)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-31 05:04:25 +00:00
Trevor Buckner
d666bacf1f Merge pull request #1361 from naturalcrit/dependabot/npm_and_yarn/browserslist-4.16.6
Bump browserslist from 4.16.3 to 4.16.6
2021-05-28 13:14:50 -04:00
Trevor Buckner
81662bf86b Merge pull request #1349 from naturalcrit/dependabot/npm_and_yarn/nanoid-3.1.23
Bump nanoid from 3.1.22 to 3.1.23
2021-05-28 13:14:41 -04:00
Trevor Buckner
99901ed0ea Merge pull request #1351 from naturalcrit/dependabot/npm_and_yarn/babel/preset-env-7.14.2
Bump @babel/preset-env from 7.14.0 to 7.14.2
2021-05-28 13:14:33 -04:00
dependabot[bot]
18a96890ee Bump nanoid from 3.1.22 to 3.1.23
Bumps [nanoid](https://github.com/ai/nanoid) from 3.1.22 to 3.1.23.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.1.22...3.1.23)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-28 16:58:27 +00:00
dependabot[bot]
3a4c72f1b8 Bump @babel/preset-env from 7.14.0 to 7.14.2
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.14.0 to 7.14.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.14.2/packages/babel-preset-env)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-28 16:57:52 +00:00
dependabot[bot]
19866010df Bump browserslist from 4.16.3 to 4.16.6
Bumps [browserslist](https://github.com/browserslist/browserslist) from 4.16.3 to 4.16.6.
- [Release notes](https://github.com/browserslist/browserslist/releases)
- [Changelog](https://github.com/browserslist/browserslist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/browserslist/browserslist/compare/4.16.3...4.16.6)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-28 16:57:25 +00:00
Trevor Buckner
e3e00bbd7c Merge pull request #1367 from naturalcrit/dependabot/npm_and_yarn/marked-2.0.6
Bump marked from 2.0.3 to 2.0.6
2021-05-28 12:56:34 -04:00
Trevor Buckner
c4e3bfee6c Merge pull request #1362 from naturalcrit/dependabot/npm_and_yarn/mongoose-5.12.11
Bump mongoose from 5.12.7 to 5.12.11
2021-05-28 12:56:20 -04:00
Trevor Buckner
d1c9f6f5dd Merge pull request #1365 from naturalcrit/dependabot/npm_and_yarn/googleapis-74.2.0
Bump googleapis from 73.0.0 to 74.2.0
2021-05-28 12:56:04 -04:00
Trevor Buckner
58ccec1b46 Merge pull request #1360 from naturalcrit/dependabot/npm_and_yarn/eslint-7.27.0
Bump eslint from 7.26.0 to 7.27.0
2021-05-28 12:55:42 -04:00
Trevor Buckner
8faa45b19f Merge pull request #1358 from naturalcrit/dependabot/npm_and_yarn/codemirror-5.61.1
Bump codemirror from 5.61.0 to 5.61.1
2021-05-28 12:55:29 -04:00
Trevor Buckner
b2595e55cc Merge pull request #1355 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.14.3
Bump @babel/core from 7.14.0 to 7.14.3
2021-05-28 12:55:16 -04:00
dependabot[bot]
f309df5971 Bump marked from 2.0.3 to 2.0.6
Bumps [marked](https://github.com/markedjs/marked) from 2.0.3 to 2.0.6.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/release.config.js)
- [Commits](https://github.com/markedjs/marked/compare/v2.0.3...v2.0.6)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-28 05:03:18 +00:00
dependabot[bot]
7cdd90973b Bump googleapis from 73.0.0 to 74.2.0
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 73.0.0 to 74.2.0.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/googleapis-v73.0.0...googleapis-v74.2.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-27 05:03:22 +00:00
dependabot[bot]
ccdbffb376 Bump mongoose from 5.12.7 to 5.12.11
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.12.7 to 5.12.11.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/compare/5.12.7...5.12.11)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-25 05:02:47 +00:00
dependabot[bot]
2eeb2a4454 Bump eslint from 7.26.0 to 7.27.0
Bumps [eslint](https://github.com/eslint/eslint) from 7.26.0 to 7.27.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.26.0...v7.27.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-24 05:09:01 +00:00
dependabot[bot]
1f894094c7 Bump codemirror from 5.61.0 to 5.61.1
Bumps [codemirror](https://github.com/codemirror/CodeMirror) from 5.61.0 to 5.61.1.
- [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.61.0...5.61.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-21 05:05:42 +00:00
dependabot[bot]
5f06de03a9 Bump @babel/core from 7.14.0 to 7.14.3
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.14.0 to 7.14.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.14.3/packages/babel-core)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-18 05:02:48 +00:00
G.Ambatte
23e773ce64 Update client/homebrew/editor/metadataEditor/metadataEditor.jsx
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2021-05-18 16:37:13 +12:00
G.Ambatte
3b34fe72b9 Lint fix. 2021-05-17 19:23:35 +12:00
Sean Robertson
34f620c59b Fix 'Share to Reddit' link for Google brews
Fix 'Share to Reddit' generating incorrect links for brews stored on Google Drive
2021-05-17 12:16:22 +12:00
Trevor Buckner
a5a5127088 Merge pull request #1345 from naturalcrit/dependabot/npm_and_yarn/babel/preset-env-7.14.1
Bump @babel/preset-env from 7.14.0 to 7.14.1
2021-05-13 01:07:20 -04:00
Trevor Buckner
b939d936e9 Merge pull request #1347 from naturalcrit/dependabot/npm_and_yarn/eslint-7.26.0
Bump eslint from 7.25.0 to 7.26.0
2021-05-13 01:07:07 -04:00
dependabot[bot]
1b5e27a9b4 Bump eslint from 7.25.0 to 7.26.0
Bumps [eslint](https://github.com/eslint/eslint) from 7.25.0 to 7.26.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.25.0...v7.26.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-10 05:10:13 +00:00
dependabot[bot]
789c18307a Bump @babel/preset-env from 7.14.0 to 7.14.1
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.14.0 to 7.14.1.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.14.1/packages/babel-preset-env)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-04 05:05:44 +00:00
Trevor Buckner
1bc0964aff Merge pull request #1341 from naturalcrit/v2.11.2
Up version to 2.11.2
2021-05-02 22:11:04 -04:00
Trevor Buckner
ce663155c4 Merge pull request #1340 from naturalcrit/dependabot/npm_and_yarn/babel/preset-env-7.14.0
Bump @babel/preset-env from 7.13.15 to 7.14.0
2021-05-02 22:08:48 -04:00
Trevor Buckner
1ad46c1ba9 Update changelog, update v3 snippets for tables 2021-05-02 22:08:25 -04:00
dependabot[bot]
9901c8c3f5 Bump @babel/preset-env from 7.13.15 to 7.14.0
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.13.15 to 7.14.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.14.0/packages/babel-preset-env)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-03 00:50:00 +00:00
Trevor Buckner
b20b981a01 Merge pull request #1338 from G-Ambatte/includeTitleInNew
Update to include brew title, description, systems, etc. on the new page
2021-05-02 20:12:33 -04:00
Trevor Buckner
ff860df5c3 Merge pull request #1332 from naturalcrit/dependabot/npm_and_yarn/googleapis-73.0.0
Bump googleapis from 72.0.0 to 73.0.0
2021-05-02 20:10:55 -04:00
Trevor Buckner
69072f8e50 Merge pull request #1336 from naturalcrit/dependabot/npm_and_yarn/mongoose-5.12.7
Bump mongoose from 5.12.5 to 5.12.7
2021-05-02 20:09:40 -04:00
Trevor Buckner
53bf47f7cb Merge pull request #1337 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.14.0
Bump @babel/core from 7.13.16 to 7.14.0
2021-05-02 20:09:07 -04:00
Trevor Buckner
61032710e8 Merge pull request #1333 from naturalcrit/dependabot/add-v2-config-file
Upgrade to GitHub-native Dependabot
2021-05-02 20:08:39 -04:00
Trevor Buckner
00527e7cf3 Merge pull request #1329 from naturalcrit/v3Tables
V3 Tables & Headers
2021-05-02 19:29:54 -04:00
Trevor Buckner
0423a43650 Tweak h1 2021-05-02 19:24:37 -04:00
G.Ambatte
2ba10655a8 Update to include brew title, description, systems, etc. on the new page 2021-05-01 14:38:54 +12:00
dependabot-preview[bot]
c5989ea95d Bump @babel/core from 7.13.16 to 7.14.0
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.13.16 to 7.14.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.14.0/packages/babel-core)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-30 06:56:09 +00:00
dependabot-preview[bot]
3f6c7a9c25 Bump mongoose from 5.12.5 to 5.12.7
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.12.5 to 5.12.7.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/compare/5.12.5...5.12.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-30 06:55:27 +00:00
Trevor Buckner
a95e3552ff All headers updated 2021-04-29 22:18:04 -04:00
dependabot-preview[bot]
ef707a9b30 Upgrade to GitHub-native Dependabot 2021-04-29 15:31:20 +00:00
dependabot-preview[bot]
be51ab52fb Bump googleapis from 72.0.0 to 73.0.0
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 72.0.0 to 73.0.0.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/googleapis-v72.0.0...googleapis-v73.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-29 06:52:43 +00:00
Trevor Buckner
e0a25ea918 Merge pull request #1317 from naturalcrit/dependabot/npm_and_yarn/eslint-plugin-react-7.23.2
Bump eslint-plugin-react from 7.23.1 to 7.23.2
2021-04-27 15:36:51 -04:00
dependabot-preview[bot]
72ae258fa5 Bump eslint-plugin-react from 7.23.1 to 7.23.2
Bumps [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) from 7.23.1 to 7.23.2.
- [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.23.1...v7.23.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-27 19:33:43 +00:00
Trevor Buckner
33d124e3f3 Merge pull request #1323 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.13.16
Bump @babel/core from 7.13.14 to 7.13.16
2021-04-27 15:24:47 -04:00
dependabot-preview[bot]
bc87f61bdc Bump @babel/core from 7.13.14 to 7.13.16
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.13.14 to 7.13.16.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.16/packages/babel-core)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-27 19:22:13 +00:00
Trevor Buckner
fe03cca72b Update Booksanity Bold Italic font
The "Remake" version of BoldItalic font by /u/Barkalot was only Semibold, so updated the font to be thicker by simply using a slanted version (12 deg) of the Bold font.
2021-04-26 12:11:48 -04:00
Trevor Buckner
2007113ed8 Change spacing and padding for table cells 2021-04-26 12:10:04 -04:00
Trevor Buckner
f89b08a577 Merge pull request #1328 from naturalcrit/dependabot/npm_and_yarn/eslint-7.25.0
Bump eslint from 7.23.0 to 7.25.0
2021-04-26 09:31:54 -04:00
Trevor Buckner
288705950c Merge pull request #1325 from naturalcrit/dependabot/npm_and_yarn/googleapis-72.0.0
Bump googleapis from 70.0.0 to 72.0.0
2021-04-26 09:31:40 -04:00
Trevor Buckner
3240e0c348 Merge pull request #1326 from naturalcrit/dependabot/npm_and_yarn/codemirror-5.61.0
Bump codemirror from 5.60.0 to 5.61.0
2021-04-26 09:30:46 -04:00
Trevor Buckner
185c02f4ac Merge pull request #1319 from naturalcrit/dependabot/npm_and_yarn/marked-2.0.3
Bump marked from 2.0.1 to 2.0.3
2021-04-26 09:30:08 -04:00
Trevor Buckner
f382aaf73c Merge pull request #1316 from naturalcrit/dependabot/npm_and_yarn/babel/preset-env-7.13.15
Bump @babel/preset-env from 7.13.12 to 7.13.15
2021-04-26 09:27:50 -04:00
dependabot-preview[bot]
be88c992fa Bump eslint from 7.23.0 to 7.25.0
Bumps [eslint](https://github.com/eslint/eslint) from 7.23.0 to 7.25.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.23.0...v7.25.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-26 03:45:37 +00:00
dependabot-preview[bot]
85ff25a63b Bump codemirror from 5.60.0 to 5.61.0
Bumps [codemirror](https://github.com/codemirror/CodeMirror) from 5.60.0 to 5.61.0.
- [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.60.0...5.61.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-26 03:45:37 +00:00
dependabot-preview[bot]
4e65c62881 Bump marked from 2.0.1 to 2.0.3
Bumps [marked](https://github.com/markedjs/marked) from 2.0.1 to 2.0.3.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/release.config.js)
- [Commits](https://github.com/markedjs/marked/compare/v2.0.1...v2.0.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-26 03:45:33 +00:00
dependabot-preview[bot]
6d035f2a2d Bump @babel/preset-env from 7.13.12 to 7.13.15
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.13.12 to 7.13.15.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.15/packages/babel-preset-env)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-26 03:45:31 +00:00
dependabot-preview[bot]
7a35f6bb24 Bump googleapis from 70.0.0 to 72.0.0
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 70.0.0 to 72.0.0.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/googleapis-v70.0.0...googleapis-v72.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-26 03:45:26 +00:00
Trevor Buckner
c00e956909 Merge pull request #1322 from naturalcrit/dependabot/npm_and_yarn/mongoose-5.12.5
Bump mongoose from 5.12.3 to 5.12.5
2021-04-25 23:43:41 -04:00
Trevor Buckner
cf3bf459f4 Merge pull request #1318 from Jc-L/typo-fixes
Fix minor typo
2021-04-25 23:41:45 -04:00
Trevor Buckner
e82d109840 Merge pull request #1327 from naturalcrit/FixAccidentalGoogleToHBTransfers
Fix accidental google to hb transfers
2021-04-25 23:40:50 -04:00
Trevor Buckner
c9a84a1813 Prevent accidental transfers from google to HB when not signed in 2021-04-25 23:38:44 -04:00
Trevor Buckner
7186a94c27 Do not force brew back to Homebrew if a Google save fails 2021-04-23 22:10:56 -04:00
dependabot-preview[bot]
45e4e98cb5 Bump mongoose from 5.12.3 to 5.12.5
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.12.3 to 5.12.5.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/compare/5.12.3...5.12.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-22 12:21:43 +00:00
Jean-Charles Longuet
9fc31e7f39 Fix minor typo 2021-04-09 13:42:09 +02:00
Trevor Buckner
983a37c77f Make cursor move to end of snippet after insertion 2021-04-06 11:43:34 -04:00
Trevor Buckner
a3b6a90fde Delete MonsterBorderFancy.png 2021-04-05 01:12:23 -04:00
Trevor Buckner
b771d82100 fix image file name 2021-04-05 01:11:55 -04:00
Trevor Buckner
9fa179ed9c Merge pull request #1310 from naturalcrit/Use-DataUri
Move base64 images out to files
2021-04-05 01:05:09 -04:00
Trevor Buckner
14d83d4263 Move base64 images out to files 2021-04-05 01:01:18 -04:00
Trevor Buckner
73ccad8a76 Remove unused images. 2021-04-04 23:28:44 -04:00
Trevor Buckner
488dbbb336 Make heroku happy with vitreum installation? 2021-04-04 23:04:22 -04:00
Trevor Buckner
08c8b69f4d Merge pull request #1309 from naturalcrit/dependabot/npm_and_yarn/classnames-2.3.1
Bump classnames from 2.2.6 to 2.3.1
2021-04-04 17:23:44 -04:00
dependabot-preview[bot]
cabb9b6c3b Bump classnames from 2.2.6 to 2.3.1
Bumps [classnames](https://github.com/JedWatson/classnames) from 2.2.6 to 2.3.1.
- [Release notes](https://github.com/JedWatson/classnames/releases)
- [Changelog](https://github.com/JedWatson/classnames/blob/master/HISTORY.md)
- [Commits](https://github.com/JedWatson/classnames/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-04 21:09:56 +00:00
Trevor Buckner
6697aa096a Merge pull request #1308 from naturalcrit/updateDependencies
update dependencies as of 4-4-21
2021-04-04 17:08:29 -04:00
Trevor Buckner
582725e7d7 Merge pull request #1307 from naturalcrit/V3MonsterBlockSnippets
V3 monster block snippets
2021-04-04 17:07:40 -04:00
Trevor Buckner
476d618286 update dependencies as of 4-4-21 2021-04-04 17:06:52 -04:00
Trevor Buckner
c186b6677b Clean up duplicate code in snippet generator 2021-04-04 16:22:50 -04:00
Trevor Buckner
ea9ba84dc2 Snippet for unframed monster block. 2021-04-04 12:50:12 -04:00
Trevor Buckner
bf616494f1 Fix padding so margin-top is not needed 2021-04-04 12:28:36 -04:00
Trevor Buckner
0b54bc046d Update wide monster snippet to use {{ 2021-04-04 00:16:29 -04:00
Trevor Buckner
c8c1966b8a Fix top margin 2021-04-04 00:11:14 -04:00
Trevor Buckner
9ad1c91472 Add wide monster blocks 2021-04-03 01:54:24 -04:00
Trevor Buckner
d8525f0eba .frame class to enable/remove the border 2021-04-02 14:01:27 -04:00
Trevor Buckner
7ae419716a Monster snippet added 2021-04-02 11:02:19 -04:00
Trevor Buckner
b0185a9ae4 Base Monster block style complete. 2021-04-01 23:57:13 -04:00
Trevor Buckner
d2cdb18a57 Cleaning up phb.style.less 2021-03-31 12:21:01 -04:00
Trevor Buckner
f04df5e297 Delete old fonts 2021-03-31 11:40:38 -04:00
Trevor Buckner
b90caaba85 Fix numbers on ScalySans fonts
In the latest version of fonts found online, numbers got restyled and misaligned. Copied numbers from old font version.
2021-03-31 11:39:21 -04:00
Trevor Buckner
d15bec08a3 Merge pull request #1282 from naturalcrit/ReduceRedundancyInServerJS
[WIP] Move common Server.js logic into functions
2021-03-27 23:43:11 -04:00
Trevor Buckner
ab473b12da Apply asyncHandler to getBrewFromId 2021-03-26 22:55:46 -04:00
Trevor Buckner
83c444ce11 Central Error Handling 2021-03-26 22:50:03 -04:00
Trevor Buckner
3ade40f2d9 Merge pull request #1291 from naturalcrit/BumpToV2.11.1
Update changelog
2021-03-20 23:58:27 -04:00
Trevor Buckner
0debd2bbf0 Update changelog 2021-03-20 23:57:27 -04:00
Trevor Buckner
1a3afc9661 Merge pull request #1286 from G-Ambatte/simplifyFancyFirstLetter
Add snippet for removing drop cap (aka fancy first letter).
2021-03-20 23:50:12 -04:00
Trevor Buckner
ac4ebbe548 Merge pull request #1290 from naturalcrit/NotifyTrashedGoogleBrew
Popup warning when opening a trashed google brew
2021-03-20 23:49:45 -04:00
Trevor Buckner
089414c9ff Fix v3 snippet 2021-03-20 23:48:55 -04:00
Trevor Buckner
a1dbf0f2e5 Popup warning when opening a trashed google brew 2021-03-20 23:33:22 -04:00
G.Ambatte
712824d8a6 Add 'Tweak Drop Cap' with default settings to allow users to tweak the drop cap as desired 2021-03-19 17:44:07 +13:00
G.Ambatte
7491f463b4 Lint fixes. 2021-03-19 17:32:27 +13:00
G.Ambatte
8f08591ab9 Add snippet for removing drop cap (aka fancy first letter). 2021-03-19 17:28:49 +13:00
Trevor Buckner
b98586150f Condense Download and Source paths also 2021-03-17 12:35:50 -04:00
Trevor Buckner
2f094801ca Move "get brew" logic to common function
Also add centralized error handling middleware
2021-03-16 00:06:01 -04:00
Trevor Buckner
dd35f101fe Add note about the "Download" button 2021-03-12 22:39:00 -05:00
Trevor Buckner
8a7513afd0 Merge pull request #1273 from naturalcrit/dependabot/npm_and_yarn/elliptic-6.5.4
[Security] Bump elliptic from 6.5.3 to 6.5.4
2021-03-12 22:34:23 -05:00
Trevor Buckner
2628ec00dc Merge pull request #1275 from naturalcrit/dependabot/npm_and_yarn/babel/preset-env-7.13.10
Bump @babel/preset-env from 7.13.9 to 7.13.10
2021-03-12 22:33:59 -05:00
dependabot-preview[bot]
778e27a374 Bump @babel/preset-env from 7.13.9 to 7.13.10
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.13.9 to 7.13.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.10/packages/babel-preset-env)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-13 03:33:21 +00:00
Trevor Buckner
dd41eddd72 Merge pull request #1278 from naturalcrit/dependabot/npm_and_yarn/nanoid-3.1.21
Bump nanoid from 3.1.20 to 3.1.21
2021-03-12 22:33:01 -05:00
Trevor Buckner
5872452a6a Merge branch 'master' into dependabot/npm_and_yarn/nanoid-3.1.21 2021-03-12 22:32:52 -05:00
Trevor Buckner
af05403846 Merge pull request #1276 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.13.10
Bump @babel/core from 7.13.8 to 7.13.10
2021-03-12 22:31:28 -05:00
Trevor Buckner
3a55755721 Merge pull request #1279 from naturalcrit/dependabot/npm_and_yarn/mongoose-5.12.0
Bump mongoose from 5.11.18 to 5.12.0
2021-03-12 22:31:01 -05:00
Trevor Buckner
24957c653d Merge pull request #1198 from G-Ambatte/sourceDL
Download Brew Source as Text File
2021-03-12 22:29:55 -05:00
Trevor Buckner
6a12518ac1 Hardcode prefix 2021-03-12 22:24:36 -05:00
dependabot-preview[bot]
318e2924ca Bump mongoose from 5.11.18 to 5.12.0
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.11.18 to 5.12.0.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/compare/5.11.18...5.12.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-12 06:55:20 +00:00
dependabot-preview[bot]
0da5d00f9c Bump nanoid from 3.1.20 to 3.1.21
Bumps [nanoid](https://github.com/ai/nanoid) from 3.1.20 to 3.1.21.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.1.20...3.1.21)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-12 06:54:13 +00:00
dependabot-preview[bot]
7612702d73 Bump @babel/core from 7.13.8 to 7.13.10
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.13.8 to 7.13.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.10/packages/babel-core)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-09 07:08:03 +00:00
dependabot-preview[bot]
9ba91b2dcc [Security] Bump elliptic from 6.5.3 to 6.5.4
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.3 to 6.5.4. **This update includes a security fix.**
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.3...v6.5.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-08 16:31:00 +00:00
Trevor Buckner
c4db94e86f Tweaks to work with current Master 2021-03-07 00:34:47 -05:00
Trevor Buckner
08492b943b Merge branch 'master' into pr/1198 2021-03-06 22:42:15 -05:00
Trevor Buckner
a1bf8ca945 Small bugs 2021-03-06 01:49:07 -05:00
Trevor Buckner
6d97eb308e Merge pull request #1271 from naturalcrit/Bump-version-to-2.11.0
Bump version number to 2.11.0
2021-03-06 01:24:33 -05:00
Trevor Buckner
64fe595b5f Bump version number. 2021-03-06 00:19:23 -05:00
Trevor Buckner
d82b385904 Merge pull request #1268 from naturalcrit/dependabot/npm_and_yarn/babel/preset-env-7.13.9
Bump @babel/preset-env from 7.13.5 to 7.13.9
2021-03-05 23:18:40 -05:00
Trevor Buckner
95201eb757 Merge branch 'master' into dependabot/npm_and_yarn/babel/preset-env-7.13.9 2021-03-05 23:17:47 -05:00
dependabot-preview[bot]
a387907604 Bump @babel/preset-env from 7.13.5 to 7.13.9
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.13.5 to 7.13.9.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.9/packages/babel-preset-env)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-06 04:10:49 +00:00
Trevor Buckner
f16eba4855 Merge pull request #1269 from naturalcrit/dependabot/npm_and_yarn/googleapis-67.1.1
Bump googleapis from 67.1.0 to 67.1.1
2021-03-05 23:10:15 -05:00
Trevor Buckner
efdd68c2b8 Merge pull request #1264 from naturalcrit/dependabot/npm_and_yarn/query-string-6.14.1
Bump query-string from 6.14.0 to 6.14.1
2021-03-05 23:09:53 -05:00
Trevor Buckner
e927b675a4 Merge pull request #1263 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.13.8
Bump @babel/core from 7.13.1 to 7.13.8
2021-03-05 23:09:42 -05:00
Trevor Buckner
5d9373026b Merge pull request #1262 from naturalcrit/dependabot/npm_and_yarn/marked-2.0.1
Bump marked from 2.0.0 to 2.0.1
2021-03-05 23:09:09 -05:00
Trevor Buckner
48922e5293 Merge pull request #1261 from naturalcrit/dependabot/npm_and_yarn/eslint-7.21.0
Bump eslint from 7.20.0 to 7.21.0
2021-03-05 23:08:55 -05:00
Trevor Buckner
a55548d471 Merge pull request #1208 from G-Ambatte/addNewToNavBar
Adds a `New` button to the Nav bar
2021-03-05 22:33:07 -05:00
Trevor Buckner
f5d5f8cf67 Simplify Nav Item 2021-03-05 22:31:59 -05:00
Trevor Buckner
0060691b50 Merge pull request #1242 from G-Ambatte/importPage
Import from Share ID
2021-03-04 22:59:52 -05:00
Trevor Buckner
5b242989da Handle cached text
The NEW page saves to the browser LocalStorage the current text in case the user goes to a different page before saving. The new "import" function wasn't working since it was being overwritten by any cached values if they existed from an earlier "new" page.
2021-03-04 22:58:40 -05:00
G.Ambatte
3358094319 Fix issues arising post-merge 2021-03-04 22:01:37 -05:00
G.Ambatte
2f9bd00d70 Merge importPage functions into newPage. 2021-03-04 22:01:11 -05:00
G.Ambatte
ed23578dcf Lint fixes. 2021-03-04 21:57:33 -05:00
G.Ambatte
41ecbb62a2 Redirect new to import. 2021-03-04 21:57:32 -05:00
G.Ambatte
32ef36d7f7 Initial commit: Import from Share ID appears to be functioning correctly. 2021-03-04 21:57:32 -05:00
Trevor Buckner
50936253de Merge pull request #1267 from naturalcrit/UpdateSolberaImitationFont
Update Fonts
2021-03-04 21:46:45 -05:00
Trevor Buckner
3c7b6eb5c3 Merge branch 'master' into UpdateSolberaImitationFont 2021-03-04 21:44:46 -05:00
Trevor Buckner
c28fed0893 Use .woff2 files instead of base64 encoding 2021-03-04 21:39:37 -05:00
dependabot-preview[bot]
36910a0a8e Bump googleapis from 67.1.0 to 67.1.1
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 67.1.0 to 67.1.1.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/v67.1.0...v67.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-02 06:53:03 +00:00
Trevor Buckner
5824ab6eb5 Merge branch 'PRODUCTION' into master 2021-03-01 15:17:40 -05:00
dependabot-preview[bot]
e6ae1ddec6 Bump query-string from 6.14.0 to 6.14.1
Bumps [query-string](https://github.com/sindresorhus/query-string) from 6.14.0 to 6.14.1.
- [Release notes](https://github.com/sindresorhus/query-string/releases)
- [Commits](https://github.com/sindresorhus/query-string/compare/v6.14.0...v6.14.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-01 08:59:22 +00:00
dependabot-preview[bot]
2213d23115 Bump @babel/core from 7.13.1 to 7.13.8
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.13.1 to 7.13.8.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.8/packages/babel-core)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-01 08:58:22 +00:00
dependabot-preview[bot]
6393cdec9b Bump marked from 2.0.0 to 2.0.1
Bumps [marked](https://github.com/markedjs/marked) from 2.0.0 to 2.0.1.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/release.config.js)
- [Commits](https://github.com/markedjs/marked/compare/v2.0.0...v2.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-01 08:57:28 +00:00
dependabot-preview[bot]
a10f573a30 Bump eslint from 7.20.0 to 7.21.0
Bumps [eslint](https://github.com/eslint/eslint) from 7.20.0 to 7.21.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.20.0...v7.21.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-01 08:56:43 +00:00
Rodrigo Kuerten
9dcce15790 Updated extraKeys (bold and italic) and added new shortcut (for span tags) (#1191)
* Updated extraKeys (bold and italic) and added new shortcut (for span)

* Updated makeSpan shortcut to Ctrl/Cmd-M

* ESLint

* Space after {{ so text appears

Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2021-02-28 23:03:50 -05:00
G.Ambatte
481c9f067c Fix title issue (#1251)
* Maximum title length set to 100 characters.

* Reverse unnecessary change that was incorrectly included in previous commit.

* Reduced code change to one addition on a single line.

* Revert "Reduced code change to one addition on a single line."

This reverts commit 2a355cf115.

* Use newer syntax to shorten

Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2021-02-26 17:47:29 -05:00
dependabot-preview[bot]
1e64e49dc3 Bump nconf from 0.11.1 to 0.11.2 (#1216)
Bumps [nconf](https://github.com/flatiron/nconf) from 0.11.1 to 0.11.2.
- [Release notes](https://github.com/flatiron/nconf/releases)
- [Changelog](https://github.com/indexzero/nconf/blob/master/CHANGELOG.md)
- [Commits](https://github.com/flatiron/nconf/compare/v0.11.1...v0.11.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2021-02-25 19:09:34 -05:00
dependabot-preview[bot]
19a2ecd281 Bump @babel/core from 7.12.10 to 7.13.1 (#1254)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.12.10 to 7.13.1.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.1/packages/babel-core)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2021-02-25 19:08:46 -05:00
dependabot-preview[bot]
03b02669a4 Bump @babel/preset-react from 7.12.10 to 7.12.13 (#1225)
Bumps [@babel/preset-react](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-react) from 7.12.10 to 7.12.13.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.13/packages/babel-preset-react)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2021-02-25 19:05:13 -05:00
Trevor Buckner
c979f02ce4 Update Marked.js version 2021-02-25 19:03:00 -05:00
dependabot-preview[bot]
bc86c1b8fc Bump eslint from 7.18.0 to 7.20.0 (#1244)
Bumps [eslint](https://github.com/eslint/eslint) from 7.18.0 to 7.20.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.18.0...v7.20.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2021-02-25 15:45:47 -05:00
dependabot-preview[bot]
37d0a4aad2 Bump googleapis from 67.0.0 to 67.1.0 (#1245)
Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 67.0.0 to 67.1.0.
- [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases)
- [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/v67.0.0...v67.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2021-02-25 15:45:36 -05:00
dependabot-preview[bot]
ff70b5c546 Bump mongoose from 5.11.13 to 5.11.18 (#1256)
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.11.13 to 5.11.18.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/compare/5.11.13...5.11.18)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2021-02-25 15:44:27 -05:00
dependabot-preview[bot]
7daec673ba Bump lodash from 4.17.20 to 4.17.21 (#1252)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2021-02-25 15:44:12 -05:00
dependabot-preview[bot]
f2d07a699a Bump @babel/preset-env from 7.12.11 to 7.13.5 (#1257)
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.12.11 to 7.13.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.5/packages/babel-preset-env)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2021-02-25 15:44:00 -05:00
dependabot-preview[bot]
721511e484 Bump query-string from 6.13.8 to 6.14.0 (#1236)
Bumps [query-string](https://github.com/sindresorhus/query-string) from 6.13.8 to 6.14.0.
- [Release notes](https://github.com/sindresorhus/query-string/releases)
- [Commits](https://github.com/sindresorhus/query-string/compare/v6.13.8...v6.14.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2021-02-25 15:19:33 -05:00
dependabot-preview[bot]
2942660201 Bump codemirror from 5.59.2 to 5.59.4 (#1258)
Bumps [codemirror](https://github.com/codemirror/CodeMirror) from 5.59.2 to 5.59.4.
- [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.59.2...5.59.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2021-02-25 15:17:27 -05:00
Christian Brickhouse
68811eb3fc Implementing magic item snippet from Issue 671. (#842)
* Implementing magic item snippet from Issue 671.

* Fixes syntax errors. Function moved into existing magic module.

* Implementing magic item snippet from Issue 671.

* Fixes syntax errors. Function moved into existing magic module.

* Magic Item Snippet, <dl>, `:` for blank line

Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2021-02-24 21:58:11 -05:00
Trevor Buckner
468b7319d1 Unify brew structure in all pages 2021-02-20 21:59:18 -05:00
James Socol
5c4da77357 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.
2021-02-20 14:04:54 -05:00
Rasmus Bækgaard
009a11a9f5 Add QR-Code as snippet under Editor (#539)
* Add snippet for QR-code

* Add snippet for QR-code

* Refactor to expose metadata to snippets

* Lint

Co-authored-by: Rasmus Bækgaard <git@bakgaard.net>
Co-authored-by: Trevor Buckner <calculuschild@gmail.com>
2021-02-19 23:39:29 -05:00
Alexey Sachkov
7057422077 Enable caching of static assets (#1217)
* Enable caching of static assets

* Remove dependency on mime package

Since we only care about two file extensions at the moment,
there is no need to grab the whole package just to avoid
calling 'endsWith' twice.
2021-02-19 17:58:02 -05:00
G.Ambatte
ecae16b5d4 Update robots.txt (#1239) 2021-02-19 17:54:00 -05:00
Trevor Buckner
d57df84a59 Update Production (#1249)
* Legacy renderer (#1184)

* Include two versions of Marked.js

* Include two versions of Marked.js

* Working two different render pipelines

Adds stylesheet "styleLegacy.less"
Adds markdownHandler "markdownLegacy.js"
The BrewRenderer will switch between these and the new pipeline dependent on the "version" prop passed in.

* Mustache-style div blocks

* Legacy snippets & columnbreak

* Codemirror styling for Div Blocks

* Lint

* Codemirror highlights for inline Divs as well

These will turn red `{{class Content}}`

Multi-line divs will turn purple

```
{{class,class2
content
}}
```

No real need for these to be different colors. Just for testing.

* More lint

* Update dependencies.

* Adding Button to switch render pipelines

* Update Marked.js

* Popup alert to refresh page when renderer changed

* Don't compress files in Development (very slow)

* Block DIV or inline Span depending on {{ placement

* \column emits a Div instead of Span

* Allow share page to use new renderer

* {{ divs no longer need empty lines. Spans work in lists.

* Typo

* Typo

* Enforce \page must be at start of line. Code cleanup.

* Inject newlines after/before {{/}} to avoid needing blank lines

* Fixes issues with tables.

* Remove console.log

* Fix spacing issue for Spans

* Move things from Brewrenderer to Markdown

Try to keep all custom text fiddling in one spot.

* Rename variables

* Update Font-Awesome to v5.15. Fix style issues on popups.

* Update {{ Divs/Spans, Fix nested hilighting

* Fixed Spans/divs with no tags or just commas

* Use blacklist for {{ to allow more characters

* Update package-lock.json

* Update all icons to Font-awesome 5

* V3 hidden behind config variable

Add "globalThis.enable_v3 = true" in the console to enable.

* lint

* Legacy renderer (#1229)

* Include two versions of Marked.js

* Include two versions of Marked.js

* Working two different render pipelines

Adds stylesheet "styleLegacy.less"
Adds markdownHandler "markdownLegacy.js"
The BrewRenderer will switch between these and the new pipeline dependent on the "version" prop passed in.

* Mustache-style div blocks

* Legacy snippets & columnbreak

* Codemirror styling for Div Blocks

* Lint

* Codemirror highlights for inline Divs as well

These will turn red `{{class Content}}`

Multi-line divs will turn purple

```
{{class,class2
content
}}
```

No real need for these to be different colors. Just for testing.

* More lint

* Update dependencies.

* Adding Button to switch render pipelines

* Update Marked.js

* Popup alert to refresh page when renderer changed

* Don't compress files in Development (very slow)

* Block DIV or inline Span depending on {{ placement

* \column emits a Div instead of Span

* Allow share page to use new renderer

* {{ divs no longer need empty lines. Spans work in lists.

* Typo

* Typo

* Enforce \page must be at start of line. Code cleanup.

* Inject newlines after/before {{/}} to avoid needing blank lines

* Fixes issues with tables.

* Remove console.log

* Fix spacing issue for Spans

* Move things from Brewrenderer to Markdown

Try to keep all custom text fiddling in one spot.

* Rename variables

* Update Font-Awesome to v5.15. Fix style issues on popups.

* Update {{ Divs/Spans, Fix nested hilighting

* Fixed Spans/divs with no tags or just commas

* Use blacklist for {{ to allow more characters

* Update package-lock.json

* Update all icons to Font-awesome 5

* V3 hidden behind config variable

Add "globalThis.enable_v3 = true" in the console to enable.

* lint

* Give user styles higher priority to still allow overrides

* Apply style priority to *all* user styles

* Change .legacy .v3 to .phb, .phb3

* Revert accidental color change

* Fix brew styles overwriting each other. (#1230)

* Fix /page not working in legacy mode. (#1233)

* Fix brew styles overwriting each other.

* Word wrapping, start fixing spacing on Title letter

* Fix \page in legacy brews when not at line start

* Default 'legacy' if not set. Auto-change styles.

* Fix brew styles overwriting each other.

* Word wrapping, start fixing spacing on Title letter

* Fix \page in legacy brews when not at line start

* Fix Page Padding

* Set 'legacy' as default value if not set in brew saved file.

* Apply Legacy\v3 renderer to print page (#1235)
2021-02-19 17:47:56 -05:00
Trevor Buckner
146da57ba3 Apply Legacy\v3 renderer to print page (#1235) 2021-02-08 22:06:53 -05:00
Trevor Buckner
fd94d162ea Padding & margins 2021-02-08 16:06:54 -05:00
Trevor Buckner
b5abd472b0 Merge branch 'master' into UpdateSolberaImitationFont 2021-02-08 15:56:45 -05:00
Trevor Buckner
ee4ecc0b41 Default 'legacy' if not set. Auto-change styles.
* Fix brew styles overwriting each other.

* Word wrapping, start fixing spacing on Title letter

* Fix \page in legacy brews when not at line start

* Fix Page Padding

* Set 'legacy' as default value if not set in brew saved file.
2021-02-08 15:09:09 -05:00
Trevor Buckner
04fb1f243d Update Font 2021-02-08 14:03:33 -05:00
Trevor Buckner
e5ccfa3a50 Fix /page not working in legacy mode. (#1233)
* Fix brew styles overwriting each other.

* Word wrapping, start fixing spacing on Title letter

* Fix \page in legacy brews when not at line start
2021-02-08 13:58:24 -05:00
Trevor Buckner
c642a35fb3 Fix brew styles overwriting each other. (#1230) 2021-02-05 14:58:41 -05:00
Trevor Buckner
2fe353377b Revert accidental color change 2021-02-05 09:38:20 -05:00
Trevor Buckner
de1017a20a Legacy renderer (#1229)
* Include two versions of Marked.js

* Include two versions of Marked.js

* Working two different render pipelines

Adds stylesheet "styleLegacy.less"
Adds markdownHandler "markdownLegacy.js"
The BrewRenderer will switch between these and the new pipeline dependent on the "version" prop passed in.

* Mustache-style div blocks

* Legacy snippets & columnbreak

* Codemirror styling for Div Blocks

* Lint

* Codemirror highlights for inline Divs as well

These will turn red `{{class Content}}`

Multi-line divs will turn purple

```
{{class,class2
content
}}
```

No real need for these to be different colors. Just for testing.

* More lint

* Update dependencies.

* Adding Button to switch render pipelines

* Update Marked.js

* Popup alert to refresh page when renderer changed

* Don't compress files in Development (very slow)

* Block DIV or inline Span depending on {{ placement

* \column emits a Div instead of Span

* Allow share page to use new renderer

* {{ divs no longer need empty lines. Spans work in lists.

* Typo

* Typo

* Enforce \page must be at start of line. Code cleanup.

* Inject newlines after/before {{/}} to avoid needing blank lines

* Fixes issues with tables.

* Remove console.log

* Fix spacing issue for Spans

* Move things from Brewrenderer to Markdown

Try to keep all custom text fiddling in one spot.

* Rename variables

* Update Font-Awesome to v5.15. Fix style issues on popups.

* Update {{ Divs/Spans, Fix nested hilighting

* Fixed Spans/divs with no tags or just commas

* Use blacklist for {{ to allow more characters

* Update package-lock.json

* Update all icons to Font-awesome 5

* V3 hidden behind config variable

Add "globalThis.enable_v3 = true" in the console to enable.

* lint

* Give user styles higher priority to still allow overrides

* Apply style priority to *all* user styles

* Change .legacy .v3 to .phb, .phb3
2021-02-04 23:31:37 -05:00
Trevor Buckner
e2cd7d9f07 Legacy renderer (#1184)
* Include two versions of Marked.js

* Include two versions of Marked.js

* Working two different render pipelines

Adds stylesheet "styleLegacy.less"
Adds markdownHandler "markdownLegacy.js"
The BrewRenderer will switch between these and the new pipeline dependent on the "version" prop passed in.

* Mustache-style div blocks

* Legacy snippets & columnbreak

* Codemirror styling for Div Blocks

* Lint

* Codemirror highlights for inline Divs as well

These will turn red `{{class Content}}`

Multi-line divs will turn purple

```
{{class,class2
content
}}
```

No real need for these to be different colors. Just for testing.

* More lint

* Update dependencies.

* Adding Button to switch render pipelines

* Update Marked.js

* Popup alert to refresh page when renderer changed

* Don't compress files in Development (very slow)

* Block DIV or inline Span depending on {{ placement

* \column emits a Div instead of Span

* Allow share page to use new renderer

* {{ divs no longer need empty lines. Spans work in lists.

* Typo

* Typo

* Enforce \page must be at start of line. Code cleanup.

* Inject newlines after/before {{/}} to avoid needing blank lines

* Fixes issues with tables.

* Remove console.log

* Fix spacing issue for Spans

* Move things from Brewrenderer to Markdown

Try to keep all custom text fiddling in one spot.

* Rename variables

* Update Font-Awesome to v5.15. Fix style issues on popups.

* Update {{ Divs/Spans, Fix nested hilighting

* Fixed Spans/divs with no tags or just commas

* Use blacklist for {{ to allow more characters

* Update package-lock.json

* Update all icons to Font-awesome 5

* V3 hidden behind config variable

Add "globalThis.enable_v3 = true" in the console to enable.

* lint
2021-02-02 20:38:25 -05:00
G.Ambatte
c3bfd1e8bf Prefix loading successfully from config/local.json for both Homebrewery and Google brews.
Concats switched to string literals to make Linter happy.
2021-01-29 22:53:58 +13:00
G.Ambatte
051773a084 Move filename prefix to configurable item in config/default.json 2021-01-28 23:13:01 +13:00
G.Ambatte
e367cb2152 Initial commit - adds a New button to the Nav bar on the Home, User, and Edit pages. 2021-01-23 00:36:10 +13:00
G.Ambatte
bcbf596aa8 Increase minimum height of brewItem in CSS so all four items are always visible.
Adjust eslint line in `server.js` to re-enable the test with a slightly higher maximum value.
2021-01-22 21:24:22 +13:00
G.Ambatte
d88b04783d Lint corrections 2021-01-22 17:31:01 +13:00
G.Ambatte
6d219aa701 Unwinding refactored code + corrections. 2021-01-22 17:29:26 +13:00
G.Ambatte
da32845dd1 (WIP) Unwinding refactoring to improve clarity and readability of new functions 2021-01-22 16:44:34 +13:00
Sean Robertson
4073536d96 (WIP) Remove target=_blank and rel=noopener noreferrer from brewItem.jsx to eliminate white flash on User page when clicking link to download source of a brew. 2021-01-22 13:59:15 +13:00
Sean Robertson
21f08c97a1 Expand source text escaping/processing for improved readability 2021-01-22 13:56:29 +13:00
G.Ambatte
06223d576d Fixes from Linter 2021-01-21 20:32:23 +13:00
G.Ambatte
5c7a9c92d1 Integrated download function into server.js
Remove new function from `Homebrew.Model.js`
Remove `sourceFunctions.jsx` module
2021-01-21 20:27:46 +13:00
G.Ambatte
0e8348f360 Catch zero length filenames 2021-01-21 07:39:08 +13:00
G.Ambatte
8060ed5f8e Rename sanitizeHtml function to escapeTextForHtmlDisplay which better describes it's actual function 2021-01-21 07:37:50 +13:00
G.Ambatte
e8135fcbb4 Added sanitizeHtml function to Homebrew model to generate HTML from the brew for the source page.
Moved `source` page generation function to a new function module. Added option to function to create plain text download with a sanitized filename and made it accessible from a new page: `download`.
Added the `download` item to the BrewItem so it appears on each brew on the User page.
Added `sanitize-filename` dependency to `package.json`.
2021-01-21 00:02:15 +13:00
G.Ambatte
7fccb7e03e Shift functionality to new file in attempt to reduce code duplication in server.js 2021-01-17 22:07:26 +13:00
G.Ambatte
715ddf2b8c Initial commit 2021-01-17 18:52:56 +13:00
G.Ambatte
717a5886cf Merge branch 'master' of https://github.com/G-Ambatte/homebrewery 2021-01-17 17:23:18 +13:00
G.Ambatte
407232c708 Fix for MongoDB package update breaking install script
Change to enable use of rcvars for NODE_ENV and PORT
2021-01-17 17:19:24 +13:00
G.Ambatte
edd902397e Remove hanging comma in config.json
Change default port assignment from 8000 to 8001 in config.json and FreeBSD service config
2021-01-17 17:19:24 +13:00
G.Ambatte
24f5fcb5a0 Move NODE_ENV to service file; remove from server.js and config/default.json 2021-01-17 17:19:24 +13:00
G.Ambatte
8f6270723e Update server.js
Lint is happy, now attempting to pacify CircleCI
2021-01-17 17:19:24 +13:00
G.Ambatte
9cccd2d74e Update server.js
Eliminating unnecessary debugging code, reducing line count and making lint happy :)
2021-01-17 17:19:24 +13:00
G.Ambatte
ed34b65dbd Update homebrewery
Add `dev_mode` to the HomeBrewery service, which starts the HomeBrewery project in live rebuild mode.
2021-01-17 17:19:23 +13:00
G.Ambatte
4484cc7d16 Change install directory
Change of install directory to `/usr/local/homebrewery`
2021-01-17 17:19:23 +13:00
G.Ambatte
8677994fb7 Update install.sh
Change to main project repo, on assumption that the PR will be merged at some point
2021-01-17 17:19:23 +13:00
G.Ambatte
ea555eb410 Remove --force option
Remove --force option from `npm audit fix`. While this has not caused any issues to date, there is no guarantee that it will continue to be the case.
2021-01-17 17:19:23 +13:00
G.Ambatte
e140b656a6 Update server.js
Change to setting NODE_ENV; default to 'local' if not set via environment variable or in the config file.
2021-01-17 17:19:23 +13:00
G.Ambatte
6423d909d7 Remove environment variables from rc.d
Remove environment variables from rc.d as they are now in config/default.json.
2021-01-17 17:19:23 +13:00
G.Ambatte
8887961d09 Add config items
Add config items and default values:
- web_port (8001)
- environment (local)
2021-01-17 17:19:17 +13:00
G.Ambatte
4ee891a3ba Update install.sh
Switch to latest version of MongoDB
2021-01-17 17:19:11 +13:00
G.Ambatte
96b976fd4a Update install.sh 2021-01-17 17:19:11 +13:00
G.Ambatte
1b9d46f834 Create install.sh 2021-01-17 17:19:10 +13:00
G.Ambatte
03e74afe80 Fix for MongoDB package update breaking install script
Change to enable use of rcvars for NODE_ENV and PORT
2021-01-10 17:23:14 +13:00
G.Ambatte
b0c1a5a6b1 Add link to FreeBSD install documenation in the main README.md file 2021-01-10 15:27:04 +13:00
G.Ambatte
3af43164f4 Remove hanging comma in config.json
Change default port assignment from 8000 to 8001 in config.json and FreeBSD service config
2021-01-09 23:03:39 +13:00
G.Ambatte
e394539742 Move NODE_ENV to service file; remove from server.js and config/default.json 2021-01-03 23:57:43 +13:00
G.Ambatte
bd416233eb Update server.js
Lint is happy, now attempting to pacify CircleCI
2020-12-29 17:57:33 +13:00
G.Ambatte
7ca9d601a0 Update server.js
Eliminating unnecessary debugging code, reducing line count and making lint happy :)
2020-12-29 17:55:15 +13:00
G.Ambatte
ac8988ad41 Update homebrewery
Add `dev_mode` to the HomeBrewery service, which starts the HomeBrewery project in live rebuild mode.
2020-12-28 21:31:00 +13:00
G.Ambatte
90fdc71279 Change install directory
Change of install directory to `/usr/local/homebrewery`
2020-12-28 15:24:29 +13:00
G.Ambatte
5d126ff14d Update install.sh
Change to main project repo, on assumption that the PR will be merged at some point
2020-12-28 15:12:51 +13:00
G.Ambatte
38e098f6c4 Create README.FREEBSD.md
Initial write up of install instructions. Includes instruction to `wget` from the `naturalcrit/homebrewery` project rather than the FreeBSD fork, on the assumption that the PR will be merged at some point.
2020-12-28 14:28:49 +13:00
G.Ambatte
d3fa8a54ae Remove --force option
Remove --force option from `npm audit fix`. While this has not caused any issues to date, there is no guarantee that it will continue to be the case.
2020-12-28 12:56:17 +13:00
G.Ambatte
443094d282 Update server.js
Change to setting NODE_ENV; default to 'local' if not set via environment variable or in the config file.
2020-12-06 21:54:20 +13:00
G.Ambatte
e727f1749f Remove environment variables from rc.d
Remove environment variables from rc.d as they are now in config/default.json.
2020-12-06 20:41:48 +13:00
G.Ambatte
1224a54884 Add config items
Add config items and default values:
- web_port (8001)
- environment (local)
2020-12-06 20:39:43 +13:00
G.Ambatte
897e7dccc6 Update install.sh
Switch to latest version of MongoDB
2020-12-06 18:43:01 +13:00
G.Ambatte
88631ed7a8 Update install.sh 2020-12-06 18:35:24 +13:00
G.Ambatte
65f4094b5a Create install.sh 2020-12-06 18:06:23 +13:00
G.Ambatte
99656357b1 Add rc.d daemon script
Adds a RC.d daemon script to control the HomeBrewery status. Based on Andrew Pearson's Node-RED script for the same purpose.
2020-12-06 18:01:39 +13:00
G.Ambatte
d33ae2a50a Update server.js
Eliminate requirement to CD into project directory prior to running `npm start` or `node server.js`.
2020-12-06 17:51:18 +13:00
G.Ambatte
f419430c6b Merge pull request #1 from naturalcrit/master
Add detailed MongoDB Install instructions
2020-11-30 19:30:23 +13:00
177 changed files with 25321 additions and 3976 deletions

View File

@@ -2,17 +2,23 @@
#
# Check https://circleci.com/docs/2.0/language-javascript/ for more details
#
version: 2
version: 2.1
orbs:
node: circleci/node@3.0.0
jobs:
build:
docker:
- image: circleci/node:12.16.3
- image: circleci/mongo:3.4-jessie
- image: cimg/node:16.11.0
- image: mongo:4.4
working_directory: ~/repo
working_directory: ~/homebrewery
executor: node/default
steps:
- checkout
- checkout:
path: ~/homebrewery
# Download and cache dependencies
- restore_cache:
@@ -21,12 +27,48 @@ jobs:
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- run: npm install
- node/install-npm
- node/install-packages:
app-dir: ~/homebrewery
cache-path: node_modules
override-ci-command: npm i
- save_cache:
paths:
- node_modules
key: v1-dependencies-{{ checksum "package.json" }}
- persist_to_workspace:
root: .
paths:
- .
test:
docker:
- image: cimg/node:16.11.0
working_directory: ~/homebrewery
parallelism: 4
steps:
- attach_workspace:
at: .
# run tests!
- run: npm run circleci
- run:
name: Test - Basic
command: npm run test:basic
- run:
name: Test - Mustache Spans
command: npm run test:mustache-span
- run:
name: Test - Routes
command: npm run test:route
workflows:
build_and_test:
jobs:
- build
- test:
requires:
- build

View File

@@ -1,7 +1,7 @@
module.exports = {
root : true,
parserOptions : {
ecmaVersion : 9,
ecmaVersion : 2021,
sourceType : 'module',
ecmaFeatures : {
jsx : true
@@ -32,7 +32,7 @@ module.exports = {
skipBlankLines : true,
}],
'max-depth' : ['warn', { max: 4 }],
'max-params' : ['warn', { max: 4 }],
'max-params' : ['warn', { max: 5 }],
'no-restricted-syntax' : ['warn', 'ClassDeclaration', 'SwitchStatement'],
'no-unused-vars' : ['warn', {
vars : 'all',

69
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,69 @@
version: 2
updates:
- package-ecosystem: npm
directory: "/"
schedule:
interval: daily
open-pull-requests-limit: 99
ignore:
- dependency-name: eslint
versions:
- 7.19.0
- 7.22.0
- 7.23.0
- 7.24.0
- dependency-name: "@babel/core"
versions:
- 7.12.13
- 7.12.16
- 7.12.17
- 7.13.13
- 7.13.14
- 7.13.15
- dependency-name: googleapis
versions:
- 68.0.0
- 70.0.0
- 71.0.0
- dependency-name: "@babel/preset-env"
versions:
- 7.12.13
- 7.12.16
- 7.12.17
- 7.13.0
- 7.13.12
- 7.13.8
- dependency-name: mongoose
versions:
- 5.11.14
- 5.11.15
- 5.11.16
- 5.11.17
- 5.11.18
- 5.11.19
- 5.12.1
- 5.12.2
- 5.12.3
- dependency-name: eslint-plugin-react
versions:
- 7.23.0
- 7.23.1
- dependency-name: query-string
versions:
- 7.0.0
- dependency-name: nanoid
versions:
- 3.1.22
- dependency-name: "@babel/preset-react"
versions:
- 7.13.13
- dependency-name: codemirror
versions:
- 5.59.3
- 5.60.0
- dependency-name: classnames
versions:
- 2.3.0
- dependency-name: marked
versions:
- 1.2.8

7
.gitignore vendored
View File

@@ -6,7 +6,8 @@ storage
*.log
build/*
config/local.*
config/docker.*
todo.md
startDB.bat
startMViewer.bat
todo.md
startDB.bat
startMViewer.bat

View File

@@ -1,4 +1,5 @@
FROM node:8
FROM node:16.11-alpine
RUN apk --no-cache add git
ENV NODE_ENV=docker

View File

@@ -9,37 +9,37 @@ using [Markdown][markdown-url]. It is distributed under the terms of the [MIT Li
[markdown-url]: https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet
## Quick Start
The easiest way to get started using the Homebrewery is to use it
The easiest way to get started using The Homebrewery is to use it
[on our website][homebrewery-url]. The code is open source, so feel free to
clone it, tinker with it. If you want to make changes to the code, you can run
clone it and tinker with it. If you want to make changes to the code, you can run
your own local version for testing by following the installation instructions
below.
[homebrewery-url]: https://homebrewery.naturalcrit.com
### Installation
First, install three programs that the Homebrewery requires to run and retrieve
First, install three programs that The Homebrewery requires to run and retrieve
updates:
1. install [node](https://nodejs.org/en/)
1. install [mongodb](https://www.mongodb.com/try/download/community) (Community version)
For easiest installation, follow these steps:
1. In the installer, uncheck the option to run as a service
1. You can install MongoDB Compass if you want a GUI to view your database documents
1. Go to the C drive and create a folder called "data"
1. Inside the "data" folder, create a new folder called "db"
1. Open a command prompt or other terminal and navigate to your mongodb install folder (c:program files\mongo\server\4.4\bin)
1. In the command prompt, run "mongod", which will start up your local database server
1. While MongoD is running, open a second command prompt and navigate to the mongodb install folder
1. In the second command prompt, run "mongo", which allows you to edit the database
1. Type `use homebrewery` to create the homebrewery database. You should see `switched to db homebrewery`
1. Type `db.brews.insert({"title":"test"})` to create a blank document. You should see `WriteResult({ "nInserted" : 1 })`
1. Search in Windows for "Advanced system settings" and open it
1. Click "Environment variables", find the "path" variable, and double-click to open it
1. Click "New" and paste in the path to the mongodb "bin" folder
1. Click "OK", "OK", "OK" to close all the windows
1. install [git](https://git-scm.com/downloads) (select the option that allows Git to run from the command prompt)
For the easiest installation, follow these steps:
1. In the installer, uncheck the option to run as a service.
1. You can install MongoDB Compass if you want a GUI to view your database documents.
1. Go to the C:\ drive and create a folder called "data".
1. Inside the "data" folder, create a new folder called "db".
1. Open a command prompt or other terminal and navigate to your MongoDB install folder (C:\Program Files\Mongo\Server\4.4\bin).
1. In the command prompt, run "mongod", which will start up your local database server.
1. While MongoD is running, open a second command prompt and navigate to the MongoDB install folder.
1. In the second command prompt, run "mongo", which allows you to edit the database.
1. Type `use homebrewery` to create The Homebrewery database. You should see `switched to db homebrewery`.
1. Type `db.brews.insert({"title":"test"})` to create a blank document. You should see `WriteResult({ "nInserted" : 1 })`.
1. Search in Windows for "Advanced system settings" and open it.
1. Click "Environment variables", find the "path" variable, and double-click to open it.
1. Click "New" and paste in the path to the MongoDB "bin" folder.
1. Click "OK" three times to close all the windows.
1. install [git](https://git-scm.com/downloads) (select the option that allows Git to run from the command prompt).
Checkout the repo ([documentation][github-clone-repo-docs-url]):
```
@@ -54,7 +54,7 @@ the project to run locally.
You can set this temporarily in your shell of choice:
* Windows Powershell: `$env:NODE_ENV="local"`
* Windows CMD: `set NODE_ENV=local`
* Linux / OSX: `export NODE_ENV=local`
* Linux / macOS: `export NODE_ENV=local`
Third, you will need to install the Node dependencies, compile the app, and run
it using the two commands:
@@ -63,7 +63,7 @@ it using the two commands:
1. `npm start`
You should now be able to go to [http://localhost:8000](http://localhost:8000)
in your browser and use the Homebrewery offline.
in your browser and use The Homebrewery offline.
### Running the application via Docker
@@ -95,11 +95,11 @@ You can check out the [changelog](./changelog.md).
## License
This project is licensed under the [MIT license](./license). Which means you
This project is licensed under the [MIT license](./license), which means you
are free to use The Homebrewery in any way that you want, except for claiming
that you made it yourself.
If you wish to sell or in some way gain profit for what's created on this site,
If you wish to sell, or in some way gain profit for, what's created on this site,
it's your responsibility to ensure you have the proper licenses/rights for any
images or resources used.
@@ -108,13 +108,12 @@ images or resources used.
You are welcome to contribute to the development and maintenance of the
project! There are several ways of doing that:
- At the moment, we have a huge backlog of [issues][repo-issues-url] and some
of them are outdated, duplicates or doesn't contain any useful info. In order
to help you can [mark duplicates][github-mark-duplicate-url], try to
reproduce some complex or weird issues, try with finding a workaround for a
reported bug or just mention issue managers team to let them know about
outdated issue via `@naturalcrit/issue-managers`.
of them are outdated, duplicates, or don't contain any useful info. To help, you can [mark duplicates][github-mark-duplicate-url], try to
reproduce some complex or weird issues, try finding a workaround for a
reported bug, or just mention our issue managers team to let them know about
outdated issues via `@naturalcrit/issue-managers`.
- Our [subreddit][subreddit-url] is constantly growing and there are number of
bug reports: any help with sorting them out is very welcome.
bug reports. Any help with sorting them out is very welcome.
- And of course you can contribute by fixing a bug or implementing a new
feature by yourself, we are waiting for your
[pull requests][github-pr-docs-url]!

View File

@@ -1,13 +1,586 @@
# changelog
```css
h5 {
font-size: .35cm !important;
}
.page ul ul {
margin-left: 0px;
}
.taskList li input {
list-style-type : none;
margin-left : -0.52cm;
transform: translateY(.05cm);
filter: brightness(1.1) drop-shadow(1px 2px 1px #222);
}
.taskList li input[checked] {
filter: sepia(100%) hue-rotate(60deg) saturate(3.5) contrast(4) brightness(1.1) drop-shadow(1px 2px 1px #222);
}
pre + * {
margin-top: 0.17cm;
}
pre {
margin-top: 0.17cm;
}
.page p + pre {
margin-top : 0.1cm;
}
.page .openSans {
font-family: 'Open Sans';
font-size: 0.9em;
}
```
## changelog
For a full record of development, visit our [Github Page](https://github.com/naturalcrit/homebrewery).
### Thursday 09/06/2022 - v3.1.1
{{taskList
##### Calculuschild:
* [x] Fixed class table decorations appearing on top of the table in PDF output.
Fixes issues: [#1784](https://github.com/naturalcrit/homebrewery/issues/1784)
* [x] Fix bottom decoration on half class tables disappearing when the table is too short.
Fixes issues: [#2202](https://github.com/naturalcrit/homebrewery/issues/2202)
}}
### Monday 06/06/2022 - v3.1.0
{{taskList
##### G-Ambatte:
* [x] "Jump to Preview/Editor" buttons added to the divider bar. Easily sync between the editor and preview panels!
Fixes issues: [#1756](https://github.com/naturalcrit/homebrewery/issues/1756)
* [x] Speedups to the user page for users with large and/or many brews.
Fixes issues: [#2147](https://github.com/naturalcrit/homebrewery/issues/2147)
* [x] Search text on the user page is saved to the URL for easy bookmarking in your browser
Fixes issues: [#1858](https://github.com/naturalcrit/homebrewery/issues/1858)
* [x] Added easy login system for offline installs.
Fixes issues: [#269](https://github.com/naturalcrit/homebrewery/issues/269)
* [x] New **THUMBNAIL** option in the {{fa,fa-info-circle}} **Properties** menu. This image will show up in social media links.
Fixes issues: [#820](https://github.com/naturalcrit/homebrewery/issues/820)
}}
### Wednesday 27/03/2022 - v3.0.8
{{taskList
* [x] Style updates to user page.
* [x] Added a logout button (finally)! You can find it under {{openSans **USERNAME {{fa,fa-user}} → LOGOUT {{fas,fa-power-off}}**}}
Fixes issues: [#303](https://github.com/naturalcrit/homebrewery/issues/303)
* [x] Clarified the default text when submitting an issue via Reddit post.
* [x] Fixed broken Table of Contents links in PDFs. (Thanks lucastucious!)
Fixes issues: [#1749](https://github.com/naturalcrit/homebrewery/issues/1749)
* [x] Fixed window resizing causing the edit page divider to get lost off of the edge of the page.
Fixes issues: [#2053](https://github.com/naturalcrit/homebrewery/issues/2053)
* [x] Fixed Class Table decorations overlapping main text.
Fixes issues: [#1985](https://github.com/naturalcrit/homebrewery/issues/1985)
* [x] Updated {{openSans **STYLE EDITOR {{fa,fa-pencil-alt}} → REMOVE DROP CAP {{fas,fa-remove-format}}**}} snippet to also remove small-caps first line font.
* [x] Background work in preparation for brew themes.
}}
### Wednesday 02/02/2022 - v3.0.7
{{taskList
* [x] Revert active line highlighting.
Fixes issues: [#1913](https://github.com/naturalcrit/homebrewery/issues/1913)
* [x] Added install steps for Ubuntu. [HERE](https://github.com/naturalcrit/homebrewery/blob/master/install/README.UBUNTU.md)
Fixes issues: [#1900](https://github.com/naturalcrit/homebrewery/issues/1900)
* [x] Added social media links to home page.
* [x] Increase brews visible on the user page to 1,000.
Fixes issues: [#1943](https://github.com/naturalcrit/homebrewery/issues/1943)
* [x] Added a Legacy to V3 migration guide under {{openSans **NEED HELP? {{fa,fa-question-circle}} → MIGRATE {{fas,fa-file-import}}**}}
* [x] Background refactoring and unit tests.
}}
### Saturday 18/12/2021 - v3.0.6
{{taskList
* [x] Fixed text wrapping for long strings in code blocks.
Fixes issues: [#1736](https://github.com/naturalcrit/homebrewery/issues/1736)
* [x] Code search/replace PC: `CTRL F / CTRL SHIFT F` / Mac: `CMD F / OPTION CMD F`
Fixes issues: [#1201](https://github.com/naturalcrit/homebrewery/issues/1201)
* [x] Auto-closing HTML tags and curly braces `{{ }}`
* [x] Highlight current active line
Fixes issues: [#1202](https://github.com/naturalcrit/homebrewery/issues/1202)
* [x] Display tabs and trailing spaces
Fixes issues: [#1622](https://github.com/naturalcrit/homebrewery/issues/1622)
* [x] Make columns even in V3 Table of Contents.
Fixes issues: [#1671](https://github.com/naturalcrit/homebrewery/issues/1671)
* [x] Fix `CTRL P` failing to print from `/new` pages.
Fixes issues: [#1815](https://github.com/naturalcrit/homebrewery/issues/1815)
}}
\page
### Tuesday 07/12/2021 - v3.0.5
{{taskList
* [x] Fixed paragraph spacing for **note** and **descriptive** boxes in V3.
Fixes issues: [#1836](https://github.com/naturalcrit/homebrewery/issues/1836)
* [x] Added a whole bunch of hotkeys:
* Page Break `CTRL + ENTER`
* Column Break `CTRL + SHIFT + ENTER`
* Bulleted Lists `CTRL + L`
* Numbered Lists `CTRL + SHIFT + L`
* Headers `CTRL + SHIFT + (1-6)`
* Underline `CTRL + U`
* Link `CTRL + K`
* Non-breaking space (\&nbsp;) `CTRL + .`
* Add Horizontal Space `CTRL + SHIFT + .`
* Remove Horizontal Space `CTRL + SHIFT + ,`
* Curly Span `CTRL + M`
* Curly Div `CTRL + SHIFT + M`
* [x] Fixed page numbers in the editor panel getting scrambled when scrolling up and down.
* [x] Faster swapping between tabs on long brews.
* [x] Better error messages for common issue with Google Drive credentials expiring.
}}
### Wednesday 17/11/2021 - v3.0.4
{{taskList
* [x] Fixed incorrect sorting of Google brews by page count and views on the user page.
Fixes issues: [#1793](https://github.com/naturalcrit/homebrewery/issues/1793)
* [x] Added code folding! Only on a page-level for now. Hotkeys `CTRL + [` and `CTRL + ]` to fold/unfold all pages. (Thanks jeddai, new contributor!)
Fixes issues: [#629](https://github.com/naturalcrit/homebrewery/issues/629)
* [x] Fixed rendering issues due to the latest Chrome update to version 96. (Also thanks to jeddai!)
Fixes issues: [#1828](https://github.com/naturalcrit/homebrewery/issues/1828)
}}
### Wednesday 27/10/2021 - v3.0.3
{{taskList
* [x] Moved **Post To Reddit** button from {{fa,fa-info-circle}} **Properties** menu to the **SHARE** {{fa,fa-share-alt}} button as a dropdown.
* [x] Added a **Copy URL** button to the **SHARE** {{fa,fa-share-alt}} button as a dropdown.
* [x] Fixed pages being printed directly from `/new` not recognizing the V3 renderer.
Fixes issues: [#1702](https://github.com/naturalcrit/homebrewery/issues/1702)
* [x] Updated links to [r/UnearthedArcana](https://www.reddit.com/r/UnearthedArcana/) on home page.
Fixes issues: [#1744](https://github.com/naturalcrit/homebrewery/issues/1744)
* [x] Added a [FAQ page](https://homebrewery.naturalcrit.com/faq).
Fixes issues: [#810](https://github.com/naturalcrit/homebrewery/issues/810)
* [x] Added {{fa,fa-undo}} **Undo** and {{fa,fa-redo}} **Redo** buttons to the snippet bar.
}}
\column
{{taskList
* [x] Switching between the {{fa,fa-beer}} **Brew** and {{fa,fa-paint-brush}} **Style** tabs no longer loses your scroll position or undo history.
Fixes issues: [#1735](https://github.com/naturalcrit/homebrewery/issues/1735)
* [x] Divider bar between editor and preview panels can no longer be dragged off the edge of the screen.
Fixes issues: [#1674](https://github.com/naturalcrit/homebrewery/issues/1674)
}}
### Wednesday 06/10/2021 - v3.0.2
{{taskList
* [x] Fixed V3 **EDITOR → QR Code** snippet not working on `/new` (unsaved) pages.
Fixes issues: [#1710](https://github.com/naturalcrit/homebrewery/issues/1710)
* [x] Reorganized several snippets from the **Brew Editor** panel into the **Style Editor** panel.
Fixes issues: [Reported on Reddit](https://www.reddit.com/r/homebrewery/comments/pm6ki7/two_version_of_class_features_making_it_look_more/)
* [x] Added a page counter to the right of each `\page` line in V3 to help navigate your brews. Starts counting from page 2.
Fixes issues: [#846](https://github.com/naturalcrit/homebrewery/issues/846)
* [x] Moved the changelog to be accessible by clicking on the Homebrewery version number.
Fixes issues: [#1166](https://github.com/naturalcrit/homebrewery/issues/1166)
}}
### Friday, 17/09/2021 - v3.0.1
{{taskList
* [x] Updated V3 **PHB → Class Feature** snippet to use V3 syntax.
Fixes issues: [Reported on Reddit](https://www.reddit.com/r/homebrewery/comments/pm6ki7/two_version_of_class_features_making_it_look_more/)
* [x] Improved V3 **PHB → Monster Stat Block** snippet and styling to allow for easier control of paragraph indentation in the Abilities text.
Fixes issues: [#181](https://github.com/naturalcrit/homebrewery/issues/181)
* [x] Improved Legacy **TABLES → Split Table** snippet by removing unneeded column-break backticks.
Fixes issues: [#844](https://github.com/naturalcrit/homebrewery/issues/844)
* [x] Changed block elements to use CSS `width` instead of `min-width`. This should make custom styles behave more predictably when trying to resize items.
Fixes issues: [Reported on Reddit](https://www.reddit.com/r/homebrewery/comments/pohoy3/looking_for_help_with_basic_stuff_in_v3/)
* [x] Fixed Partial Page Rendering in V3 for large brews
Fixes issues: [Reported on Reddit](https://www.reddit.com/r/homebrewery/comments/pori3a/weird_behaviour_of_the_brew_after_page_50/)
* [x] Fixed HTML validation to handle tags starting with 'a', as in `<aside>`.
Fixes issues: [#230](https://github.com/naturalcrit/homebrewery/issues/230)
* [x] Fixed page footers switching side when printing.
Fixes issues: [#1612](https://github.com/naturalcrit/homebrewery/issues/1612)
}}
\page
### Saturday, 11/09/2021 - v3.0.0
We have been working on v3 for a *very* long time. We want to thank everyone for being paitent.
Some features planned for V3 have actually been released over the recent months as part of V2, and some are still on the way. But at its core, V3 provides brand new Markdown-to-Brew rendering system, which was no simple task. This has opened up access to all sorts of bugfixes, tweaks, and potential for new features that just wouldn't be possible on the old system.
***BE WARNED:*** As we continue to develop V3, expect small tweaks in the styling, fonts, and snippets; your brews may look slightly different from day-to-day; some things might break completely while we tackle any bugs in this early stage. All of your old documents will continue to work as normal. We are not touching them. If you don't want to deal With the possibility of slight formatting changes, you may choose to stick with the Legacy renderer on any of your brews for as long as you like. However, most new features added from now on will only be available for brews using the V3 renderer.
Massive changelog incoming:
#### Markdown+
With the latest major update to *The Homebrewery*, we've implemented an extended Markdown-like syntax for block and span elements, plus a few other changes, eliminating the need for HTML tags like `div`, and `span` in most cases. This should hopefully aid non-coders with readability, and also allows us a few tricks in the background to fix some old issues. No raw HTML tags should be needed in a brew, and going forward, raw HTML will no longer receive debugging support (*but can still be used if you insist*).
All brews made prior to the release of v3.0.0 will still render normally, and you may switch between the "Legacy" brew renderer and the newer "V3" renderer via the {{fa,fa-info-circle}} **Properties** button on your brew. Much of the syntax and styling has changed in V3, so code in one version may be broken in the other.
Visit [this page](/v3_preview) for brief examples of the new syntax!
#### Extended Markdown Syntax:
{{taskList
* [x] Add Divs and Spans for all your custom styling needs, via a simplified Markdown-like syntax:
```
{{myDivClass,#myId,color:red
My Div content
}}
Hello {{mySpan,color:blue World}} !
```
Fixes issues: [#348](https://github.com/naturalcrit/homebrewery/issues/348)
}}
\column
{{taskList
* [x] Add inline CSS to Markdown objects via "curly injection" syntax:
```
Hello *world*{myClass,#id,color:red}
```
Fixes issues: [#403](https://github.com/naturalcrit/homebrewery/issues/403)
* [x] Rowspan, Colspan, and multiple header rows with extended table syntax:
```
| Header 1a | Header 1b | Header 1c |
| Header 2a | Header 2b | Header 2c |
|:---------:|:----------|:---------:|
| Span 2 columns || Span 2 |
| one col | one col | rows ^|
```
Fixes issues: [#773](https://github.com/naturalcrit/homebrewery/issues/773), [#191](https://github.com/naturalcrit/homebrewery/issues/191)
* [x] Hanging indents via `<dl>` tags, as seen in the **PHB → Spell** snippet. Add via "double-colon" syntax:
```
Term :: big long definition that bleeds onto multiple lines
```
Fixes issues: [#182](https://github.com/naturalcrit/homebrewery/issues/182), [#149](https://github.com/naturalcrit/homebrewery/issues/149)
* [x] Easier vertical spacing via colons alone on a line:
```
:::
```
Fixes issues: [#374](https://github.com/naturalcrit/homebrewery/issues/374)
* [x] Avoid paragraph indendation by ending the previous paragraph with a backslash `\` or two spaces ` `
```
Paragraph one\
Paragraph two
```
Fixes issues: [#636](https://github.com/naturalcrit/homebrewery/issues/636)
* [x] Code blocks can be inserted by surrounding it with rows of three backticks ` ``` `, for demonstration purposes or to share custom styles. Inline-code can be inserted with single backticks <code>&#96;code&#96;</code>
<pre><code>&#96;&#96;&#96;
Here is some code!
&#96;&#96;&#96;
</code></pre>
Fixes issues: [#465](https://github.com/naturalcrit/homebrewery/issues/465)
#### New and Fixed Snippets
* [x] Column breaks now use `\column` instead of ` ``` ` backticks.
Fixes issues: [#607](https://github.com/naturalcrit/homebrewery/issues/607)
* [x] Page breaks using `\page` now only trigger when placed alone at the start of a line.
Fixes issues: [#1147](https://github.com/naturalcrit/homebrewery/issues/1147)
}}
\page
{{taskList
* [x] New **EDITOR → QR Code** snippet.
Fixes issues: [#538](https://github.com/naturalcrit/homebrewery/issues/538)
* [x] New **IMAGES → Watercolor Splatter** snippet, which adds one of a range of stylish stains to your brew.
* [x] New **IMAGES → Watermark** snippet, which adds transparent text diagonally across the page.
* [x] New **PHB → Magic Item** snippet.
Fixes issues: [#671](https://github.com/naturalcrit/homebrewery/issues/671)
* [x] New **TABLES → 1/3 Class Table** snippet for 1/3 casters.
Fixes issues: [#191](https://github.com/naturalcrit/homebrewery/issues/191)
* [x] Improved **EDITOR → Table of Contents** snippet to actually look like the PHB style. Will auto-generate based on the headers in your brew.
Fixes issues: [#304](https://github.com/naturalcrit/homebrewery/issues/304)
* [x] Improved **PHB → Monster Stat Block** snippet with textures, and an option to remove the frame entirely.
* [x] Improved **PHB → Spell List** snippet can now be made single-column.
Fixes issues: [#509](https://github.com/naturalcrit/homebrewery/issues/509), [#914](https://github.com/naturalcrit/homebrewery/issues/914)
* [x] Improved **TABLES → Class Table** snippet is now cleaned up, has an option to remove the frame entirely, and includes additional boundary decorations.
Fixes issues: [#773](https://github.com/naturalcrit/homebrewery/issues/773), [#302](https://github.com/naturalcrit/homebrewery/issues/302)
#### Miscellaneous Formatting Fixes
* [x] Paragraphs are now able to split across columns.
Fixes issues: [#239](https://github.com/naturalcrit/homebrewery/issues/239)
* [x] Multiple fixes for bold/italicize using asterisks `* *`
Fixes issues: [#1321](https://github.com/naturalcrit/homebrewery/issues/1321), [#852](https://github.com/naturalcrit/homebrewery/issues/852)
* [x] Multiple for list items not displaying correctly.
Fixes issues: [#1085](https://github.com/naturalcrit/homebrewery/issues/1085), [#588](https://github.com/naturalcrit/homebrewery/issues/588)
* [x] "Smart quotes", so left and right quotes are different.
Fixes issues: [#849](https://github.com/naturalcrit/homebrewery/issues/849)
* [x] Long URLs in links now wrap properly.
Fixes issues: [#1136](https://github.com/naturalcrit/homebrewery/issues/1136)
* [x] Better support for `wide` blocks that span across the whole page! No more problems with contents getting shunted off the edge, and each new wide element in a page will restart the next item back at column one. Manual `\column` breaks will help organize subsequent content between the columns as needed.
Fixes issues: [#144](https://github.com/naturalcrit/homebrewery/issues/144), [#1024](https://github.com/naturalcrit/homebrewery/issues/1024)
* [x] Fonts now support a wider range of latin characters for non-English brews, including áéíóúñ¡¿, etc...
Fixes issues: [#116](https://github.com/naturalcrit/homebrewery/issues/116)
* [x] Drop-caps (fancy first letters) have been re-styled and re-aligned to correct the ugly overlapping and cut-off on some characters like K and Y.
Fixes issues: [#848](https://github.com/naturalcrit/homebrewery/issues/848)
}}
\column
### Under-the-Hood Stuff
We had to make a whole lot of background upgrades and changes to get all of this working, and now that the framework is in place, there's a lot more planned and upcoming *"sometime"* :
{{taskList
* [ ] New Themes to style your brews. DMG, MM, a custom Homebrewery theme, and others.
* [ ] The ability to build your own custom themes using CSS, apply it to other brews, and share it with others!
* [ ] Easy control of item colors. Change your monster blocks, tables, and notes from yellow to green to red!
* [ ] New image-based snippets, including handwritten notes, title illustrations, and alternative decorations.
* [ ] New fun fonts like Elvish, Draconic, Orcish, etc.
* [ ] Better organization of personal brews using tags.
* [ ] ....a log-out button...?
* [ ] AND MORE.
}}
### Interface
::
#### Style Editor Panel
{{fa,fa-paint-brush}} Technically released prior to v3 but still new to many users, check out the new **Style Editor** located on the right side of the Snippet bar. This editor accepts CSS for styling without requiring `<style>` tags-- anything that would have gone inside style tags before can now be placed here, and snippets that insert CSS styles are now located on that tab.
\page
### Thursday, 09/09/2021 - v2.13.5
- Slightly better error logging and messages for users.
##### G-Ambatte :
- Added a search bar to the User page to help find your brews.
- Added page counts to brews in the User page; page count will be updated the next time a brew is edited.
- Fixed edge case where view counts could get reset.
- Fixed edge case where last-modified time was not accurate for Google Doc brews.
##### Gazook89 :
- Fixed typo in the **PRINT → Ink-Friendly** snippet.
### Tuesday, 17/08/2021 - v2.13.4
- Fixed User page crashing when user has an 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 :
- Tooltips hovering over brews in dropdowns / user page.
- Fixed sort-by created date on user page.
##### Gazook89 :
- Hotkey Ctrl-/ and snippets to add HTML comments; use for notes that won't appear in your brew.
### Friday, 30/07/2021 - v2.13.2
- Background work to allow new themes in the future
- Fixed cursor getting stuck when resizing divider bar
##### G-Ambatte :
- Fix Style tab not copying when Cloned To New
- Basic brew sorting on User page
- Reduced data sent on each request from server
##### Gazook89 :
- Cleaned up styling on menus
### Saturday, 28/6/2021 - v2.13.1
- Fixed the issue with new brews not saving!
### Saturday, 26/6/2021 - v2.13.0
- "Share to Reddit" button now works with Google brews
- Downloading or viewing the source of your brew will now show the contents of the Style tab at the top of the document in a backtick code fence like this:
\`\`\`css
myStyle {color: black}
\`\`\`
##### G-Ambatte :
- New **Download**, **View**, and **Clone to New** buttons in the "Source" dropdown on the Share page.
- 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.
### Thursday, 10/6/2021 - v2.12.0
- New "style" tab to better organize custom CSS in preparation for new themes and sharable styles.
- Your own Google brews will no longer show up in the list when viewing someone else's profile.
### Saturday, 02/5/2021 - v2.11.2
- Fix for edge case where brews could accidentally transfer from Google Drive back to Homebrewery.
- Move cursor to end of snippet after insertion
\page
### Saturday, 20/3/2021 - v2.11.1
- Warning when opening brew in your Google Drive trash
##### G-Ambatte :
- Snippet to remove drop caps (fancy first letter after title)
### Saturday, 13/3/2021 - v2.11.0
- Many background things for upcoming v3. Get pumped.
##### G-Ambatte :
- Fixed new brews failing to save when auto-generated file name is too long.
- "New" button added to the Nav bar.
- "Download" button to download your brew as a text file.
- Reduced download size and improved caching.
##### RKuerten :
- Bold and Italics hotkeys for Mac users (Cmd+B, Cmd+I)
### Friday, 25/1/2021 - v2.10.7
- Cover Page snippet now flips left-right page numbering.
- Added instructions for [installing on a FreeBSD Jail](https://github.com/naturalcrit/homebrewery/blob/master/README.FREEBSD.md).
- Fix for box-shadows breaking across columns. <br>(Thanks @G-Ambatte for all of these!)
- Small user interface tweaks (Thanks @Ericsheid)
- Fix for box-shadows breaking across columns. <br>(Thanks G-Ambatte for all of these!)
- Small user interface tweaks (Thanks Ericsheid)
### Friday, 02/1/2021 - v2.10.6
- Fixed punctuation for usernames ending with 's' on the user page. (Thanks @AlexeySachkov)
- Fixed punctuation for usernames ending with 's' on the user page. (Thanks AlexeySachkov)
- Fixed server crashes due to excessive long lines in brews
- Fixed "automated request" lockouts from Google
@@ -20,6 +593,8 @@
### Wednesday, 25/11/2020 - v2.10.4
- Fixed Google Drive brews not saving metadata (view count, description, etc.) Note that we are still working on making published Google brews visible to the public when viewing your profile page.
\column
### Thursday, 22/10/2020 - v2.10.3
- Fixed brews with broken code crashing the edit page when loaded (the "blue screen of death" bug).
@@ -33,9 +608,6 @@
### Wednesday, 07/10/2020 - v2.10.0
- Google Drive integration -- Sign in with your Google account to link it with your Homebrewery profile. A new button in the Edit page will let you transfer your file to your personal Google Drive storage, and Google will keep a backup of each version! No more lost work surprises!
```
```
### Friday, 28/08/2020 - v2.9.2
- Many dependency updates
- Finally fixed this changelog page to not run off the edge :P
@@ -62,8 +634,10 @@
- "Report Issue" navbar button now links to the subreddit
- Refactored background code
\page
### Sunday, 04/06/2017 - v2.7.5
- Fixed the class feature snippet duplicating the entire brew
- Fixed Class Feature snippet duplicating entire brew
- Fixed headers in tables being duplicated
- Fixed border-image being scrambled on class tables and descriptive text boxes
- Fixed pages going out of sync in large brews, causing them to be rendered off-page
@@ -79,8 +653,6 @@
### Saturday, 18/02/2017 - v2.7.2
- Adding ability to delete a brew from the user page, incase the user creates a brew that makes the edit page unrender-able. (re:309)
\page
### Thursday, 19/01/2017 - v2.7.1
- Fixed saving multiple authors and multiple systems on brew metadata (thanks u/PalaNolho re:282)
- Adding in line highlight for new pages
@@ -91,7 +663,7 @@
### Sunday, 25/12/2016 - v2.7.0
- Switching over to using Vitreum v4
- Removed gulp, all tasks are run through npm scripts
- Removed gulp, all tasks are run through npm scripts
- Updating docs for local dev
- Removing support for Docker. I have never used it, nor will I ever test for it, so I don't want to continue to explictly support it on this repo. Feel free to make a fork and make it docker-able though :)
- Changed icon for the metadata
@@ -101,6 +673,8 @@
- Removed a lot of unused files in shared
- vitreum v4 now lets me use codemirror as a pure node dependacy
\column
### Saturday, 03/12/2016 - v2.6.0
- Added report back to the edit page
- Changed metaeditor icon
@@ -121,10 +695,6 @@
- Added a hover tooltip to fully read the brew description
- Made the brew items take up only 25% allowing you to view more per row.
```
```
### Wednesday, 23/11/2016 - v2.5.0
- Metadata can now be added to brews
- Added a metadata editor onto the edit and new pages
@@ -135,7 +705,6 @@
- Added a new user page to see others published brews, as well as all of your own brews.
- Added a new nav item for accessing your profile and logging in
### Monday, 14/11/2016
- Updated snippet bar style
- You can now print from a new page without saving
@@ -145,6 +714,8 @@
- Added final touches to the html validator and updating the rest of the branch
- If anyone finds issues with the new HTML validator, please let me know. I hope this will bring a more consistent feel to Homebrewery rendering.
\page
### Friday, 09/09/2016 - v2.4.0
- Adding in a HTML validator that will display warnings whenever you save. This should stop a lot of the issues generated with pages not showing up.
@@ -171,11 +742,8 @@
- Allows adding in hyperlinks to specific pages
- Even works after you print to pdf!
\page
### Tuesday, 07/06/2016 - v2.2.2
- Fixed bug with new markdown lexer and aprser not working on print page
- Fixed bug with new markdown lexer and parser not working on print page
### Sunday, 05/06/2016 - v2.2.1
- Adding in a new Class table div block. The old Class table block used weird stacking of HTML elements, resulting is difficult to control behaviour and poor interactiosn with the rest of the page. This new block is much easier to style and work with.
@@ -183,8 +751,10 @@
- Added in a new auto-incremeting page number snippet (thakns u/Ryrok!)
- Lists in monster stat blocks should be fixed now
\column
### Saturday, 04/06/2016 - v2.2.0
- MIgrating The Homebrewery over to hombrewery.naturalcrit.com. It know runs on it's own server, with it's own repo separate from the other tools I'm working on. Makes updating and deploying much easier.
- Migrating The Homebrewery over to hombrewery.naturalcrit.com. It now runs on it's own server, with it's own repo separate from the other tools I'm working on. Makes updating and deploying much easier.
### Sunday, 29/05/2016 - v2.1.0
- Finally added a syntax for doing spell lists. A bit in-depth about why this took so long. Essentially I'm running out of syntax to use in stardard Markdown. There are too many unique elements in the PHB-style to be mapped. I solved this earlier by stacking certain elements together (eg. an `<hr>` before a `blockquote` turns it into moster state block), but those are getting unweildly. I would like to simply wrap these in `div`s with classes, but unfortunately Markdown stops processing when within HTML blocks. To get around this I wrote my own override to the Markdown parser and lexer to process Markdown within a simple div class wrapper. This should open the door for more unique syntaxes in the future. Big step!
@@ -197,13 +767,11 @@
- Updated the issue template for (hopefully) better reporting
- Added suggestion to use chrome while PDF printing
```
```
### Wednesday, 25/05/2016 -v2.0.5
- The class table generators have the proper ability score improvement progression.
\page
### Tuesday, 24/05/2016 - v2.0.4
- Fixed extra wide monster stat blocks sometimes only being one column
- The class table generators now follow the proper progression from the PHB (thakns u/IrishBandit)
@@ -214,8 +782,6 @@
- Bumped up the allowed entity size for extra-large brew (Thanks for reporting it dickboner93)
- Added a little error box when a save fails with a custom link to reporting the issue on github.
\page
### Saturday, 14/05/2016 - v2.0.0 (finally!)
I've been working on v2 for a *very* long time. I want to thank you guys for being paitent.

View File

@@ -18,7 +18,7 @@ const Admin = createClass({
<header>
<div className='container'>
<i className='fa fa-rocket' />
<i className='fas fa-rocket' />
homebrewery admin
</div>
</header>

View File

@@ -45,8 +45,8 @@ const BrewCleanup = createClass({
return <div className='removeBox'>
<button onClick={this.cleanup} className='remove'>
{this.state.pending
? <i className='fa fa-spin fa-spinner' />
: <span><i className='fa fa-times' /> Remove</span>
? <i className='fas fa-spin fa-spinner' />
: <span><i className='fas fa-times' /> Remove</span>
}
</button>
<span>Found {this.state.count} Brews that could be removed. </span>
@@ -59,7 +59,7 @@ const BrewCleanup = createClass({
<button onClick={this.prime} className='query'>
{this.state.pending
? <i className='fa fa-spin fa-spinner' />
? <i className='fas fa-spin fa-spinner' />
: 'Query Brews'
}
</button>

View File

@@ -59,8 +59,8 @@ const BrewCompress = createClass({
return <div className='removeBox'>
<button onClick={this.cleanup} className='remove'>
{this.state.pending
? <i className='fa fa-spin fa-spinner' />
: <span><i className='fa fa-compress' /> compress </span>
? <i className='fas fa-spin fa-spinner' />
: <span><i className='fas fa-compress' /> compress </span>
}
</button>
{this.state.pending
@@ -76,7 +76,7 @@ const BrewCompress = createClass({
<button onClick={this.prime} className='query'>
{this.state.pending
? <i className='fa fa-spin fa-spinner' />
? <i className='fas fa-spin fa-spinner' />
: 'Query Brews'
}
</button>

View File

@@ -61,7 +61,7 @@ const BrewLookup = createClass({
<h2>Brew Lookup</h2>
<input type='text' value={this.state.query} onChange={this.handleChange} placeholder='edit or share id' />
<button onClick={this.lookup}>
<i className={cx('fa', {
<i className={cx('fas', {
'fa-search' : !this.state.searching,
'fa-spin fa-spinner' : this.state.searching,
})} />

View File

@@ -37,7 +37,7 @@ const Stats = createClass({
</dl>
{this.state.fetching
&& <div className='pending'><i className='fa fa-spin fa-spinner' /></div>
&& <div className='pending'><i className='fas fa-spin fa-spinner' /></div>
}
</div>;
}

View File

@@ -4,6 +4,7 @@ const createClass = require('create-react-class');
const _ = require('lodash');
const cx = require('classnames');
const MarkdownLegacy = require('naturalcrit/markdownLegacy.js');
const Markdown = require('naturalcrit/markdown.js');
const ErrorBar = require('./errorBar/errorBar.jsx');
@@ -16,14 +17,22 @@ const PAGE_HEIGHT = 1056;
const PPR_THRESHOLD = 50;
const BrewRenderer = createClass({
displayName : 'BrewRenderer',
getDefaultProps : function() {
return {
text : '',
errors : []
text : '',
style : '',
renderer : 'legacy',
errors : []
};
},
getInitialState : function() {
const pages = this.props.text.split('\\page');
let pages;
if(this.props.renderer == 'legacy') {
pages = this.props.text.split('\\page');
} else {
pages = this.props.text.split(/^\\page$/gm);
}
return {
viewablePageNumber : 0,
@@ -34,7 +43,7 @@ const BrewRenderer = createClass({
usePPR : pages.length >= PPR_THRESHOLD,
visibility : 'hidden',
initialContent : `<!DOCTYPE html><html><head>
<link href="//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<link href="//use.fontawesome.com/releases/v5.15.1/css/all.css" rel="stylesheet" />
<link href="//fonts.googleapis.com/css?family=Open+Sans:400,300,600,700" rel="stylesheet" type="text/css" />
<link href='/homebrew/bundle.css' rel='stylesheet' />
<base target=_blank>
@@ -48,12 +57,19 @@ const BrewRenderer = createClass({
window.removeEventListener('resize', this.updateSize);
},
componentWillReceiveProps : function(nextProps) {
const pages = nextProps.text.split('\\page');
this.setState({
pages : pages,
usePPR : pages.length >= PPR_THRESHOLD
});
componentDidUpdate : function(prevProps) {
if(prevProps.text !== this.props.text) {
let pages;
if(this.props.renderer == 'legacy') {
pages = this.props.text.split('\\page');
} else {
pages = this.props.text.split(/^\\page$/gm);
}
this.setState({
pages : pages,
usePPR : pages.length >= PPR_THRESHOLD
});
}
},
updateSize : function() {
@@ -102,13 +118,27 @@ const BrewRenderer = createClass({
},
renderDummyPage : function(index){
return <div className='phb' id={`p${index + 1}`} key={index}>
<i className='fa fa-spinner fa-spin' />
return <div className='phb page' id={`p${index + 1}`} key={index}>
<i className='fas fa-spinner fa-spin' />
</div>;
},
renderStyle : function() {
if(!this.props.style) return;
return <div style={{ display: 'none' }} dangerouslySetInnerHTML={{ __html: `<style> ${this.props.style} </style>` }} />;
},
renderPage : function(pageText, index){
return <div className='phb' id={`p${index + 1}`} dangerouslySetInnerHTML={{ __html: Markdown.render(pageText) }} key={index} />;
if(this.props.renderer == 'legacy')
return <div className='phb page' id={`p${index + 1}`} dangerouslySetInnerHTML={{ __html: MarkdownLegacy.render(pageText) }} key={index} />;
else {
pageText += `\n\n&nbsp;\n\\column\n&nbsp;`; //Artificial column break at page end to emulate column-fill:auto (until `wide` is used, when column-fill:balance will reappear)
return (
<div className='page' id={`p${index + 1}`} key={index} >
<div className='columnWrapper' dangerouslySetInnerHTML={{ __html: Markdown.render(pageText) }} />
</div>
);
}
},
renderPages : function(){
@@ -158,8 +188,10 @@ const BrewRenderer = createClass({
</div>
: null}
<Frame initialContent={this.state.initialContent} style={{ width: '100%', height: '100%', visibility: this.state.visibility }} contentDidMount={this.frameDidMount}>
<div className='brewRenderer'
<Frame id='BrewRenderer' initialContent={this.state.initialContent}
style={{ width: '100%', height: '100%', visibility: this.state.visibility }}
contentDidMount={this.frameDidMount}>
<div className={'brewRenderer'}
onScroll={this.handleScroll}
style={{ height: this.state.height }}>
@@ -168,12 +200,17 @@ const BrewRenderer = createClass({
<RenderWarnings />
<NotificationPopup />
</div>
<div className='pages' ref='pages'>
{this.state.isMounted
? this.renderPages()
: null}
</div>
<link href={`${this.props.renderer == 'legacy' ? '/themes/5ePhbLegacy.style.css' : '/themes/5ePhb.style.css'}`} rel='stylesheet'/>
{/* Apply CSS from Style tab and render pages from Markdown tab */}
{this.state.isMounted
&&
<>
{this.renderStyle()}
<div className='pages' ref='pages'>
{this.renderPages()}
</div>
</>
}
</div>
</Frame>
{this.renderPageInfo()}

View File

@@ -1,14 +1,11 @@
@import (multiple, less) 'shared/naturalcrit/styles/reset.less';
@import (less) './client/homebrew/phbStyle/phb.style.less';
.pane{
position : relative;
}
.brewRenderer{
will-change : transform;
overflow-y : scroll;
.pages{
margin : 30px 0px;
&>.phb{
&>.page{
margin-right : auto;
margin-bottom : 30px;
margin-left : auto;
@@ -16,6 +13,9 @@
}
}
}
.pane{
position : relative;
}
.pageInfo{
position : absolute;
right : 17px;
@@ -37,4 +37,4 @@
font-size : 10px;
font-weight : 800;
color : white;
}
}

View File

@@ -5,6 +5,7 @@ const _ = require('lodash');
const cx = require('classnames');
const ErrorBar = createClass({
displayName : 'ErrorBar',
getDefaultProps : function() {
return {
errors : []
@@ -62,7 +63,7 @@ const ErrorBar = createClass({
if(!this.props.errors.length) return null;
return <div className='errorBar'>
<i className='fa fa-exclamation-triangle' />
<i className='fas fa-exclamation-triangle' />
<h3> There are HTML errors in your markup</h3>
<small>If these aren't fixed your brew will not render properly when you print it to PDF or share it</small>
{this.renderErrors()}

View File

@@ -4,9 +4,10 @@ const createClass = require('create-react-class');
const _ = require('lodash');
const cx = require('classnames'); //Unused variable
const DISMISS_KEY = 'dismiss_notification7-10-20';
const DISMISS_KEY = 'dismiss_notification09-9-21';
const NotificationPopup = createClass({
displayName : 'NotificationPopup',
getInitialState : function() {
return {
notifications : {}
@@ -22,22 +23,39 @@ const NotificationPopup = createClass({
notifications : {
psa : function(){
return <li key='psa'>
<em>Google Drive Integration!</em> <br />
We have added Google Drive integration to the Homebrewery! <a target='_blank' href='http://naturalcrit.com/login'>Sign in</a> with
your Google account to link it with your Homebrewery profile. A new button in the Edit page will let you transfer your file to your personal
Google Drive storage, and Google will keep a backup of each version! No more lost work surprises!
<em>V3.0.0 Released!</em> <br />
After a long and bumpy road, we decided it was high time we finally release version 3 of the homebrewery into the wild. You can check out a
brief overview and see how to opt-in to the new features here:&nbsp;
<a target='_blank' href='https://homebrewery.naturalcrit.com/v3_preview'>V3 Welcome Page</a> and&nbsp;
<a target='_blank' href='https://homebrewery.naturalcrit.com/changelog'>the Changelog</a>.
<br /><br />
However, we are aware that there may be uncaught bugs. We encourage you to copy your brew into a text document before transferring to Google
Drive just in case any issues arise as this update is rolled out.
<em>BE WARNED:</em> As we continue to develop V3, expect small tweaks in the styling, fonts, and snippets; your brews may look slightly
different from day-to-day. All of your old documents will continue to work as normal; we are not touching them. If you don't want to deal
with the possibility of slight formatting changes, you may choose to stick with the Legacy renderer on any of your brews for as long as you like.
<br /><br />
<b>Note:</b> Transferring an existing brew to Google Drive will change the edit and share links of your document. If you have shared your
document online, remember to update the links there as well.
With this in mind, if you still wish to try out V3, you can opt-in any of your brews to the the V3 renderer.
This will likely break much of your formatting as a lot of the Markdown code has been updated, and starting from scratch may be cleaner.
(Don't worry, you can always change the renderer back to Legacy for any brew at any time).
</li>;
},
refreshGoogle : function (){
return <li key='refreshGoogle'>
<em>Refresh your Google Drive Credentials!</em> <br />
Currently a lot of people are striking issues with their Google credentials expiring, which happens one year after the last sign in via
Google. This can cause errors when trying to save your brews. If this happens, simply visit the&nbsp;
<a target='_blank' href='https://www.naturalcrit.com/login'>
logout page
</a>
, sign out, and then sign back in "with Google" to refresh your credentials. See&nbsp;
<a target='_blank' href='https://github.com/naturalcrit/homebrewery/discussions/1580'>
this discussion on Github
</a> for more details.
</li>;
},
faq : function(){
return <li key='faq'>
<em>Protect your work! </em> <br />
If you opt not to use your Google Drive, keep in mind that we do not save a history of your projects. Please make frequent backups of your brews! &nbsp;
If you opt not to use your Google Drive, keep in mind that we do not save a history of your projects. Please make frequent backups of your brews!&nbsp;
<a target='_blank' href='https://www.reddit.com/r/homebrewery/comments/adh6lh/faqs_psas_announcements/'>
See the FAQ
</a> to learn how to avoid losing your work!
@@ -60,10 +78,12 @@ const NotificationPopup = createClass({
if(_.isEmpty(this.state.notifications)) return null;
return <div className='notificationPopup'>
<i className='fa fa-times dismiss' onClick={this.dismiss}/>
<i className='fa fa-info-circle info' />
<h3>Notice</h3>
<small>This website is always improving and we are still adding new features and squashing bugs. Keep the following in mind:</small>
<i className='fas fa-times dismiss' onClick={this.dismiss}/>
<i className='fas fa-info-circle info' />
<div className='header'>
<h3>Notice</h3>
<small>This website is always improving and we are still adding new features and squashing bugs. Keep the following in mind:</small>
</div>
<ul>{_.values(this.state.notifications)}</ul>
</div>;
}

View File

@@ -1,23 +1,22 @@
.popups{
position : fixed;
top : @navbarHeight;
top : @navbarHeight;
right : 15px;
z-index : 10001;
width : 350px;
width : 450px;
}
.notificationPopup{
position : relative;
float : right;
position : relative;
display : inline-block;
width : 350px;
width : 100%;
padding : 15px;
padding-bottom : 10px;
padding-left : 55px;
padding-left : 25px;
background-color : @blue;
color : white;
a{
color : @steel;
color : #e0e5c1;
font-weight : 800;
}
i.info{
@@ -37,6 +36,9 @@
opacity : 1;
}
}
.header {
padding-left : 50px;
}
small{
opacity : 0.7;
font-size : 0.6em;

View File

@@ -1,140 +1,337 @@
/*eslint max-lines: ["warn", {"max": 300, "skipBlankLines": true, "skipComments": true}]*/
require('./editor.less');
const React = require('react');
const createClass = require('create-react-class');
const _ = require('lodash');
const cx = require('classnames');
const dedent = require('dedent-tabs').default;
const CodeEditor = require('naturalcrit/codeEditor/codeEditor.jsx');
const SnippetBar = require('./snippetbar/snippetbar.jsx');
const MetadataEditor = require('./metadataEditor/metadataEditor.jsx');
const SNIPPETBAR_HEIGHT = 25;
const DEFAULT_STYLE_TEXT = dedent`
/*=======--- Example CSS styling ---=======*/
/* Any CSS here will apply to your document! */
.myExampleClass {
color: black;
}`;
const splice = function(str, index, inject){
return str.slice(0, index) + inject + str.slice(index);
};
const SNIPPETBAR_HEIGHT = 25;
const Editor = createClass({
displayName : 'Editor',
getDefaultProps : function() {
return {
value : '',
onChange : ()=>{},
brew : {
text : '',
style : ''
},
metadata : {},
onMetadataChange : ()=>{},
showMetaButton : true
onTextChange : ()=>{},
onStyleChange : ()=>{},
onMetaChange : ()=>{},
renderer : 'legacy'
};
},
getInitialState : function() {
return {
showMetadataEditor : false
view : 'text' //'text', 'style', 'meta'
};
},
cursorPosition : {
line : 0,
ch : 0
},
isText : function() {return this.state.view == 'text';},
isStyle : function() {return this.state.view == 'style';},
isMeta : function() {return this.state.view == 'meta';},
componentDidMount : function() {
this.updateEditorSize();
this.highlightPageLines();
this.highlightCustomMarkdown();
window.addEventListener('resize', this.updateEditorSize);
},
componentWillUnmount : function() {
window.removeEventListener('resize', this.updateEditorSize);
},
componentDidUpdate : function(prevProps, prevState, snapshot) {
this.highlightCustomMarkdown();
if(prevProps.moveBrew !== this.props.moveBrew) {
this.brewJump();
};
if(prevProps.moveSource !== this.props.moveSource) {
this.sourceJump();
};
},
updateEditorSize : function() {
let paneHeight = this.refs.main.parentNode.clientHeight;
paneHeight -= SNIPPETBAR_HEIGHT + 1;
this.refs.codeEditor.codeMirror.setSize(null, paneHeight);
if(this.refs.codeEditor) {
let paneHeight = this.refs.main.parentNode.clientHeight;
paneHeight -= SNIPPETBAR_HEIGHT + 1;
this.refs.codeEditor.codeMirror.setSize(null, paneHeight);
}
},
handleTextChange : function(text){
this.props.onChange(text);
},
handleCursorActivty : function(curpos){
this.cursorPosition = curpos;
},
handleInject : function(injectText){
const lines = this.props.value.split('\n');
lines[this.cursorPosition.line] = splice(lines[this.cursorPosition.line], this.cursorPosition.ch, injectText);
let text;
if(this.isText()) text = this.props.brew.text;
if(this.isStyle()) text = this.props.brew.style ?? DEFAULT_STYLE_TEXT;
this.handleTextChange(lines.join('\n'));
this.refs.codeEditor.setCursorPosition(this.cursorPosition.line, this.cursorPosition.ch + injectText.length);
const lines = text.split('\n');
const cursorPos = this.refs.codeEditor.getCursorPosition();
lines[cursorPos.line] = splice(lines[cursorPos.line], cursorPos.ch, injectText);
const injectLines = injectText.split('\n');
this.refs.codeEditor.setCursorPosition(cursorPos.line + injectLines.length, cursorPos.ch + injectLines[injectLines.length - 1].length);
if(this.isText()) this.props.onTextChange(lines.join('\n'));
if(this.isStyle()) this.props.onStyleChange(lines.join('\n'));
},
handgleToggle : function(){
handleViewChange : function(newView){
this.props.setMoveArrows(newView === 'text');
this.setState({
showMetadataEditor : !this.state.showMetadataEditor
});
view : newView
}, this.updateEditorSize); //TODO: not sure if updateeditorsize needed
},
getCurrentPage : function(){
const lines = this.props.value.split('\n').slice(0, this.cursorPosition.line + 1);
const lines = this.props.brew.text.split('\n').slice(0, this.refs.codeEditor.getCursorPosition().line + 1);
return _.reduce(lines, (r, line)=>{
if(line.indexOf('\\page') !== -1) r++;
if(
(this.props.renderer == 'legacy' && line.indexOf('\\page') !== -1)
||
(this.props.renderer == 'V3' && line.match(/^\\page$/))
) r++;
return r;
}, 1);
},
highlightPageLines : function(){
highlightCustomMarkdown : function(){
if(!this.refs.codeEditor) return;
const codeMirror = this.refs.codeEditor.codeMirror;
if(this.state.view === 'text') {
const codeMirror = this.refs.codeEditor.codeMirror;
const lineNumbers = _.reduce(this.props.value.split('\n'), (r, line, lineNumber)=>{
if(line.indexOf('\\page') !== -1){
codeMirror.addLineClass(lineNumber, 'background', 'pageLine');
r.push(lineNumber);
}
return r;
}, []);
return lineNumbers;
codeMirror.operation(()=>{ // Batch CodeMirror styling
//reset custom text styles
const customHighlights = codeMirror.getAllMarks().filter((mark)=>!mark.__isFold); //Don't undo code folding
for (let i=customHighlights.length - 1;i>=0;i--) customHighlights[i].clear();
let editorPageCount = 2; // start page count from page 2
_.forEach(this.props.brew.text.split('\n'), (line, lineNumber)=>{
//reset custom line styles
codeMirror.removeLineClass(lineNumber, 'background', 'pageLine');
codeMirror.removeLineClass(lineNumber, 'text');
codeMirror.removeLineClass(lineNumber, 'wrap', 'sourceMoveFlash');
// Styling for \page breaks
if((this.props.renderer == 'legacy' && line.includes('\\page')) ||
(this.props.renderer == 'V3' && line.match(/^\\page$/))) {
// add back the original class 'background' but also add the new class '.pageline'
codeMirror.addLineClass(lineNumber, 'background', 'pageLine');
const pageCountElement = Object.assign(document.createElement('span'), {
className : 'editor-page-count',
textContent : editorPageCount
});
codeMirror.setBookmark({ line: lineNumber, ch: line.length }, pageCountElement);
editorPageCount += 1;
};
// New Codemirror styling for V3 renderer
if(this.props.renderer == 'V3') {
if(line.match(/^\\column$/)){
codeMirror.addLineClass(lineNumber, 'text', 'columnSplit');
}
// Highlight inline spans {{content}}
if(line.includes('{{') && line.includes('}}')){
const regex = /{{(?::(?:"[\w,\-()#%. ]*"|[\w\,\-()#%.]*)|[^"'{}\s])*\s*|}}/g;
let match;
let blockCount = 0;
while ((match = regex.exec(line)) != null) {
if(match[0].startsWith('{')) {
blockCount += 1;
} else {
blockCount -= 1;
}
if(blockCount < 0) {
blockCount = 0;
continue;
}
codeMirror.markText({ line: lineNumber, ch: match.index }, { line: lineNumber, ch: match.index + match[0].length }, { className: 'inline-block' });
}
} else if(line.trimLeft().startsWith('{{') || line.trimLeft().startsWith('}}')){
// Highlight block divs {{\n Content \n}}
let endCh = line.length+1;
const match = line.match(/^ *{{(?::(?:"[\w,\-()#%. ]*"|[\w\,\-()#%.]*)|[^"'{}\s])* *$|^ *}}$/);
if(match)
endCh = match.index+match[0].length;
codeMirror.markText({ line: lineNumber, ch: 0 }, { line: lineNumber, ch: endCh }, { className: 'block' });
}
}
});
});
}
},
brewJump : function(targetPage=this.getCurrentPage()){
if(!window) return;
// console.log(`Scroll to: p${targetPage}`);
const brewRenderer = window.frames['BrewRenderer'].contentDocument.getElementsByClassName('brewRenderer')[0];
const currentPos = brewRenderer.scrollTop;
const targetPos = window.frames['BrewRenderer'].contentDocument.getElementById(`p${targetPage}`).getBoundingClientRect().top;
const interimPos = targetPos >= 0 ? -30 : 30;
brewJump : function(){
const currentPage = this.getCurrentPage();
window.location.hash = `p${currentPage}`;
const bounceDelay = 100;
const scrollDelay = 500;
if(!this.throttleBrewMove) {
this.throttleBrewMove = _.throttle((currentPos, interimPos, targetPos)=>{
brewRenderer.scrollTo({ top: currentPos + interimPos, behavior: 'smooth' });
setTimeout(()=>{
brewRenderer.scrollTo({ top: currentPos + targetPos, behavior: 'smooth', block: 'start' });
}, bounceDelay);
}, scrollDelay, { leading: true, trailing: false });
};
this.throttleBrewMove(currentPos, interimPos, targetPos);
// const hashPage = (page != 1) ? `p${page}` : '';
// window.location.hash = hashPage;
},
sourceJump : function(targetLine=null){
if(this.isText()) {
if(targetLine == null) {
targetLine = 0;
const pageCollection = window.frames['BrewRenderer'].contentDocument.getElementsByClassName('page');
const brewRendererHeight = window.frames['BrewRenderer'].contentDocument.getElementsByClassName('brewRenderer').item(0).getBoundingClientRect().height;
let currentPage = 1;
for (const page of pageCollection) {
if(page.getBoundingClientRect().bottom > (brewRendererHeight / 2)) {
currentPage = parseInt(page.id.slice(1)) || 1;
break;
}
}
const textSplit = this.props.renderer == 'V3' ? /^\\page$/gm : /\\page/;
const textString = this.props.brew.text.split(textSplit).slice(0, currentPage-1).join(textSplit);
const textPosition = textString.length;
const lineCount = textString.match('\n') ? textString.slice(0, textPosition).split('\n').length : 0;
targetLine = lineCount - 1; //Scroll to `\page`, which is one line back.
let currentY = this.refs.codeEditor.codeMirror.getScrollInfo().top;
let targetY = this.refs.codeEditor.codeMirror.heightAtLine(targetLine, 'local', true);
//Scroll 1/10 of the way every 10ms until 1px off.
const incrementalScroll = setInterval(()=>{
currentY += (targetY - currentY) / 10;
this.refs.codeEditor.codeMirror.scrollTo(null, currentY);
// Update target: target height is not accurate until within +-10 lines of the visible window
if(Math.abs(targetY - currentY > 100))
targetY = this.refs.codeEditor.codeMirror.heightAtLine(targetLine, 'local', true);
// End when close enough
if(Math.abs(targetY - currentY) < 1) {
this.refs.codeEditor.codeMirror.scrollTo(null, targetY); // Scroll any remaining difference
this.refs.codeEditor.setCursorPosition({ line: targetLine + 1, ch: 0 });
this.refs.codeEditor.codeMirror.addLineClass(targetLine + 1, 'wrap', 'sourceMoveFlash');
clearInterval(incrementalScroll);
}
}, 10);
}
}
},
//Called when there are changes to the editor's dimensions
update : function(){
this.refs.codeEditor.updateSize();
this.refs.codeEditor?.updateSize();
},
renderMetadataEditor : function(){
if(!this.state.showMetadataEditor) return;
return <MetadataEditor
metadata={this.props.metadata}
onChange={this.props.onMetadataChange}
/>;
//Called by CodeEditor after document switch, so Snippetbar can refresh UndoHistory
rerenderParent : function (){
this.forceUpdate();
},
renderEditor : function(){
if(this.isText()){
return <>
<CodeEditor key='codeEditor'
ref='codeEditor'
language='gfm'
view={this.state.view}
value={this.props.brew.text}
onChange={this.props.onTextChange}
rerenderParent={this.rerenderParent} />
</>;
}
if(this.isStyle()){
return <>
<CodeEditor key='codeEditor'
ref='codeEditor'
language='css'
view={this.state.view}
value={this.props.brew.style ?? DEFAULT_STYLE_TEXT}
onChange={this.props.onStyleChange}
enableFolding={false}
rerenderParent={this.rerenderParent} />
</>;
}
if(this.isMeta()){
return <>
<CodeEditor key='codeEditor'
view={this.state.view}
style={{ display: 'none' }}
rerenderParent={this.rerenderParent} />
<MetadataEditor
metadata={this.props.brew}
onChange={this.props.onMetaChange} />
</>;
}
},
redo : function(){
return this.refs.codeEditor?.redo();
},
historySize : function(){
return this.refs.codeEditor?.historySize();
},
undo : function(){
return this.refs.codeEditor?.undo();
},
render : function(){
this.highlightPageLines();
return (
<div className='editor' ref='main'>
<SnippetBar
brew={this.props.value}
brew={this.props.brew}
view={this.state.view}
onViewChange={this.handleViewChange}
onInject={this.handleInject}
onToggle={this.handgleToggle}
showmeta={this.state.showMetadataEditor}
showMetaButton={this.props.showMetaButton} />
{this.renderMetadataEditor()}
<CodeEditor
ref='codeEditor'
wrap={true}
language='gfm'
value={this.props.value}
onChange={this.handleTextChange}
onCursorActivity={this.handleCursorActivty} />
showEditButtons={this.props.showEditButtons}
renderer={this.props.renderer}
undo={this.undo}
redo={this.redo}
historySize={this.historySize()} />
{/*
<div className='brewJump' onClick={this.brewJump}>
<i className='fa fa-arrow-right' />
</div>
*/}
{this.renderEditor()}
</div>
);
}

View File

@@ -4,26 +4,58 @@
width : 100%;
.codeEditor{
height : 100%;
height : 100%;
.pageLine{
background-color : fade(#333, 15%);
border-bottom : #333 solid 1px;
background : #33333328;
border-top : #339 solid 1px;
}
.editor-page-count{
color : grey;
float : right;
}
.columnSplit{
font-style : italic;
color : grey;
background-color : fade(#299, 15%);
border-bottom : #299 solid 1px;
}
.block{
color : purple;
font-weight : bold;
//font-style: italic;
}
.inline-block{
color : red;
font-weight : bold;
//font-style: italic;
}
}
.brewJump{
position: absolute;
background-color: @teal;
cursor: pointer;
width : 30px;
height : 30px;
display : flex;
align-items : center;
bottom : 20px;
right : 20px;
z-index: 1000000;
justify-content:center;
position : absolute;
background-color : @teal;
cursor : pointer;
width : 30px;
height : 30px;
display : flex;
align-items : center;
bottom : 20px;
right : 20px;
z-index : 1000000;
justify-content : center;
.tooltipLeft("Jump to brew page");
}
}
.editorToolbar{
position: absolute;
top: 5px;
left: 50%;
color: black;
font-size: 13px;
z-index: 9;
span {
padding: 2px 5px;
}
}
}

View File

@@ -7,7 +7,10 @@ const request = require('superagent');
const SYSTEMS = ['5e', '4e', '3.5e', 'Pathfinder'];
const homebreweryThumbnail = require('../../thumbnail.png');
const MetadataEditor = createClass({
displayName : 'MetadataEditor',
getDefaultProps : function() {
return {
metadata : {
@@ -17,12 +20,30 @@ const MetadataEditor = createClass({
tags : '',
published : false,
authors : [],
systems : []
systems : [],
renderer : 'legacy'
},
onChange : ()=>{}
};
},
getInitialState : function(){
return {
showThumbnail : true
};
},
toggleThumbnailDisplay : function(){
this.setState({
showThumbnail : !this.state.showThumbnail
});
},
renderThumbnail : function(){
if(!this.state.showThumbnail) return;
return <img className='thumbnail-preview' src={this.props.metadata.thumbnail || homebreweryThumbnail}></img>;
},
handleFieldChange : function(name, e){
this.props.onChange(_.merge({}, this.props.metadata, {
[name] : e.target.value
@@ -36,6 +57,12 @@ const MetadataEditor = createClass({
}
this.props.onChange(this.props.metadata);
},
handleRenderer : function(renderer, e){
if(e.target.checked){
this.props.metadata.renderer = renderer;
}
this.props.onChange(this.props.metadata);
},
handlePublish : function(val){
this.props.onChange(_.merge({}, this.props.metadata, {
published : val
@@ -43,7 +70,7 @@ const MetadataEditor = createClass({
},
handleDelete : function(){
if(this.props.metadata.authors.length <= 1){
if(this.props.metadata.authors && this.props.metadata.authors.length <= 1){
if(!confirm('Are you sure you want to delete this brew? Because you are the only owner of this brew, the document will be deleted permanently.')) return;
if(!confirm('Are you REALLY sure? You will not be able to recover the document.')) return;
} else {
@@ -51,23 +78,13 @@ const MetadataEditor = createClass({
if(!confirm('Are you REALLY sure? You will lose editor access to this document.')) return;
}
request.delete(`/api/${this.props.metadata.editId}`)
request.delete(`/api/${this.props.metadata.googleId ?? ''}${this.props.metadata.editId}`)
.send()
.end(function(err, res){
window.location.href = '/';
});
},
getRedditLink : function(){
const meta = this.props.metadata;
const title = `${meta.title} [${meta.systems.join(' ')}]`;
const text = `Hey guys! I've been working on this homebrew. I'd love your feedback. Check it out.
**[Homebrewery Link](http://homebrewery.naturalcrit.com/share/${meta.shareId})**`;
return `https://www.reddit.com/r/UnearthedArcana/submit?title=${encodeURIComponent(title)}&text=${encodeURIComponent(text)}`;
},
renderSystems : function(){
return _.map(SYSTEMS, (val)=>{
return <label key={val}>
@@ -83,11 +100,11 @@ const MetadataEditor = createClass({
renderPublish : function(){
if(this.props.metadata.published){
return <button className='unpublish' onClick={()=>this.handlePublish(false)}>
<i className='fa fa-ban' /> unpublish
<i className='fas fa-ban' /> unpublish
</button>;
} else {
return <button className='publish' onClick={()=>this.handlePublish(true)}>
<i className='fa fa-globe' /> publish
<i className='fas fa-globe' /> publish
</button>;
}
},
@@ -99,7 +116,7 @@ const MetadataEditor = createClass({
<label>delete</label>
<div className='value'>
<button className='publish' onClick={this.handleDelete}>
<i className='fa fa-trash' /> delete brew
<i className='fas fa-trash-alt' /> delete brew
</button>
</div>
</div>;
@@ -107,7 +124,7 @@ const MetadataEditor = createClass({
renderAuthors : function(){
let text = 'None.';
if(this.props.metadata.authors.length){
if(this.props.metadata.authors && this.props.metadata.authors.length){
text = this.props.metadata.authors.join(', ');
}
return <div className='field authors'>
@@ -118,16 +135,34 @@ const MetadataEditor = createClass({
</div>;
},
renderShareToReddit : function(){
if(!this.props.metadata.shareId) return;
renderRenderOptions : function(){
if(!global.enable_v3) return;
return <div className='field reddit'>
<label>reddit</label>
return <div className='field systems'>
<label>Renderer</label>
<div className='value'>
<a href={this.getRedditLink()} target='_blank' rel='noopener noreferrer'>
<button className='publish'>
<i className='fa fa-reddit-alien' /> share to reddit
</button>
<label key='legacy'>
<input
type='radio'
value = 'legacy'
name = 'renderer'
checked={this.props.metadata.renderer === 'legacy'}
onChange={(e)=>this.handleRenderer('legacy', e)} />
Legacy
</label>
<label key='V3'>
<input
type='radio'
value = 'V3'
name = 'renderer'
checked={this.props.metadata.renderer === 'V3'}
onChange={(e)=>this.handleRenderer('V3', e)} />
V3
</label>
<a href='/v3_preview' target='_blank' rel='noopener noreferrer'>
Click here for a quick intro to V3!
</a>
</div>
</div>;
@@ -146,6 +181,18 @@ const MetadataEditor = createClass({
<textarea value={this.props.metadata.description} className='value'
onChange={(e)=>this.handleFieldChange('description', e)} />
</div>
<div className='field thumbnail'>
<label>thumbnail</label>
<input type='text'
value={this.props.metadata.thumbnail}
placeholder='my.thumbnail.url'
className='value'
onChange={(e)=>this.handleFieldChange('thumbnail', e)} />
<button className='display' onClick={this.toggleThumbnailDisplay}>
<i className={`fas fa-caret-${this.state.showThumbnail ? 'right' : 'left'}`} />
</button>
{this.renderThumbnail()}
</div>
{/*}
<div className='field tags'>
<label>tags</label>
@@ -154,6 +201,8 @@ const MetadataEditor = createClass({
</div>
*/}
{this.renderAuthors()}
<div className='field systems'>
<label>systems</label>
<div className='value'>
@@ -161,7 +210,7 @@ const MetadataEditor = createClass({
</div>
</div>
{this.renderAuthors()}
{this.renderRenderOptions()}
<div className='field publish'>
<label>publish</label>
@@ -171,8 +220,6 @@ const MetadataEditor = createClass({
</div>
</div>
{this.renderShareToReddit()}
{this.renderDelete()}
</div>;

View File

@@ -18,10 +18,38 @@
font-weight : 800;
line-height : 1.8em;
text-transform : uppercase;
flex-grow : 0;
flex : 0 0 auto;
}
&>.value{
flex-grow : 1;
flex : 1 1 auto;
min-width : 200px;
}
&.thumbnail{
height : 1.4em;
label{
line-height: 2.0em;
}
.value{
overflow: hidden;
text-overflow: ellipsis;
}
button{
border: 1px solid #999;
color: white;
padding: 0px 5px;
background-color: black;
&:hover{
background-color: #777;
}
}
.thumbnail-preview{
position : relative;
width : 80px;
height : min-content;
border : 2px solid white;
margin-left : 5px;
max-height : 115px;
}
}
}
.description.field textarea.value{
@@ -38,15 +66,27 @@
font-size : 0.7em;
font-weight : 800;
user-select : none;
white-space : nowrap;
display : inline-flex;
align-items : center;
}
a {
font-size : 0.7em;
font-weight : 800;
display : inline-flex;
}
input{
vertical-align : middle;
cursor : pointer;
margin : 3px;
}
}
.publish.field .value{
position : relative;
margin-bottom: 15px;
button{
width:100%;
}
button.publish{
.button(@blueLight);
}
@@ -54,9 +94,6 @@
.button(@silver);
}
small{
position : absolute;
bottom : -15px;
left : 0px;
font-size : 0.6em;
font-style : italic;
}
@@ -67,13 +104,8 @@
.button(@red);
}
}
.reddit.field .value{
button{
.button(@purple);
}
}
.authors.field .value{
font-size: 0.8em;
line-height : 1.5em;
}
}
}

View File

@@ -5,7 +5,8 @@ const _ = require('lodash');
const cx = require('classnames');
const Snippets = require('./snippets/snippets.js');
const SnippetsLegacy = require('./snippetsLegacy/snippets.js');
const SnippetsV3 = require('./snippets/snippets.js');
const execute = function(val, brew){
if(_.isFunction(val)) return val(brew);
@@ -13,13 +14,25 @@ const execute = function(val, brew){
};
const Snippetbar = createClass({
displayName : 'SnippetBar',
getDefaultProps : function() {
return {
brew : '',
onInject : ()=>{},
onToggle : ()=>{},
showmeta : false,
showMetaButton : true
brew : {},
view : 'text',
onViewChange : ()=>{},
onInject : ()=>{},
onToggle : ()=>{},
showEditButtons : true,
renderer : 'legacy',
undo : ()=>{},
redo : ()=>{},
historySize : ()=>{}
};
},
getInitialState : function() {
return {
renderer : this.props.renderer
};
},
@@ -28,7 +41,14 @@ const Snippetbar = createClass({
},
renderSnippetGroups : function(){
return _.map(Snippets, (snippetGroup)=>{
let snippets = [];
if(this.props.renderer === 'V3')
snippets = SnippetsV3.filter((snippetGroup)=>snippetGroup.view === this.props.view);
else
snippets = SnippetsLegacy.filter((snippetGroup)=>snippetGroup.view === this.props.view);
return _.map(snippets, (snippetGroup)=>{
return <SnippetGroup
brew={this.props.brew}
groupName={snippetGroup.groupName}
@@ -40,19 +60,38 @@ const Snippetbar = createClass({
});
},
renderMetadataButton : function(){
if(!this.props.showMetaButton) return;
return <div className={cx('snippetBarButton', 'toggleMeta', { selected: this.props.showmeta })}
onClick={this.props.onToggle}>
<i className='fa fa-info-circle' />
<span className='groupName'>Properties</span>
renderEditorButtons : function(){
if(!this.props.showEditButtons) return;
return <div className='editors'>
<div className={`editorTool undo ${this.props.historySize.undo ? 'active' : ''}`}
onClick={this.props.undo} >
<i className='fas fa-undo' />
</div>
<div className={`editorTool redo ${this.props.historySize.redo ? 'active' : ''}`}
onClick={this.props.redo} >
<i className='fas fa-redo' />
</div>
<div className='divider'></div>
<div className={cx('text', { selected: this.props.view === 'text' })}
onClick={()=>this.props.onViewChange('text')}>
<i className='fa fa-beer' />
</div>
<div className={cx('style', { selected: this.props.view === 'style' })}
onClick={()=>this.props.onViewChange('style')}>
<i className='fa fa-paint-brush' />
</div>
<div className={cx('meta', { selected: this.props.view === 'meta' })}
onClick={()=>this.props.onViewChange('meta')}>
<i className='fas fa-info-circle' />
</div>
</div>;
},
render : function(){
return <div className='snippetBar'>
{this.renderSnippetGroups()}
{this.renderMetadataButton()}
{this.renderEditorButtons()}
</div>;
}
});
@@ -65,11 +104,12 @@ module.exports = Snippetbar;
const SnippetGroup = createClass({
displayName : 'SnippetGroup',
getDefaultProps : function() {
return {
brew : '',
brew : {},
groupName : '',
icon : 'fa-rocket',
icon : 'fas fa-rocket',
snippets : [],
onSnippetClick : function(){},
};
@@ -80,7 +120,7 @@ const SnippetGroup = createClass({
renderSnippets : function(){
return _.map(this.props.snippets, (snippet)=>{
return <div className='snippet' key={snippet.name} onClick={()=>this.handleSnippetClick(snippet)}>
<i className={`fa fa-fw ${snippet.icon}`} />
<i className={snippet.icon} />
{snippet.name}
</div>;
});
@@ -89,7 +129,7 @@ const SnippetGroup = createClass({
render : function(){
return <div className='snippetGroup snippetBarButton'>
<div className='text'>
<i className={`fa fa-fw ${this.props.icon}`} />
<i className={this.props.icon} />
<span className='groupName'>{this.props.groupName}</span>
</div>
<div className='dropdown'>

View File

@@ -1,12 +1,63 @@
.snippetBar{
@height : 25px;
@menuHeight : 25px;
position : relative;
height : @height;
height : @menuHeight;
background-color : #ddd;
.editors{
position : absolute;
display : flex;
top : 0px;
right : 0px;
height : @menuHeight;
width : 125px;
justify-content : space-between;
&>div{
height : @menuHeight;
width : @menuHeight;
cursor : pointer;
line-height : @menuHeight;
text-align : center;
&:hover,&.selected{
background-color : #999;
}
&.text{
.tooltipLeft('Brew Editor');
}
&.style{
.tooltipLeft('Style Editor');
}
&.meta{
.tooltipLeft('Properties');
}
&.undo{
.tooltipLeft('Undo');
font-size : 0.75em;
color : grey;
&.active{
color : black;
}
}
&.redo{
.tooltipLeft('Redo');
font-size : 0.75em;
color : grey;
&.active{
color : black;
}
}
&.divider {
background: linear-gradient(#000, #000) no-repeat center/1px 100%;
width: 5px;
&:hover{
background-color: inherit;
}
}
}
}
.snippetBarButton{
height : @height;
line-height : @height;
height : @menuHeight;
line-height : @menuHeight;
display : inline-block;
padding : 0px 5px;
font-weight : 800;

View File

@@ -1,4 +1,5 @@
const _ = require('lodash');
const dedent = require('dedent-tabs').default;
module.exports = function(classname){
@@ -10,33 +11,32 @@ module.exports = function(classname){
const hitDie = _.sample([4, 6, 8, 10, 12]);
const abilityList = ['Strength', 'Dexerity', 'Constitution', 'Wisdom', 'Charisma', 'Intelligence'];
const skillList = ['Acrobatics ', 'Animal Handling', 'Arcana', 'Athletics', 'Deception', 'History', 'Insight', 'Intimidation', 'Investigation', 'Medicine', 'Nature', 'Perception', 'Performance', 'Persuasion', 'Religion', 'Sleight of Hand', 'Stealth', 'Survival'];
const skillList = ['Acrobatics', 'Animal Handling', 'Arcana', 'Athletics', 'Deception', 'History', 'Insight', 'Intimidation', 'Investigation', 'Medicine', 'Nature', 'Perception', 'Performance', 'Persuasion', 'Religion', 'Sleight of Hand', 'Stealth', 'Survival'];
return [
'## Class Features',
`As a ${classname}, you gain the following class features`,
'#### Hit Points',
'___',
`- **Hit Dice:** 1d${hitDie} per ${classname} level`,
`- **Hit Points at 1st Level:** ${hitDie} + your Constitution modifier`,
`- **Hit Points at Higher Levels:** 1d${hitDie} (or ${hitDie/2 + 1}) + your Constitution modifier per ${classname} level after 1st`,
'',
'#### Proficiencies',
'___',
`- **Armor:** ${_.sampleSize(['Light armor', 'Medium armor', 'Heavy armor', 'Shields'], _.random(0, 3)).join(', ') || 'None'}`,
`- **Weapons:** ${_.sampleSize(['Squeegee', 'Rubber Chicken', 'Simple weapons', 'Martial weapons'], _.random(0, 2)).join(', ') || 'None'}`,
`- **Tools:** ${_.sampleSize(['Artian\'s tools', 'one musical instrument', 'Thieve\'s tools'], _.random(0, 2)).join(', ') || 'None'}`,
'',
'___',
`- **Saving Throws:** ${_.sampleSize(abilityList, 2).join(', ')}`,
`- **Skills:** Choose two from ${_.sampleSize(skillList, _.random(4, 6)).join(', ')}`,
'',
'#### Equipment',
'You start with the following equipment, in addition to the equipment granted by your background:',
'- *(a)* a martial weapon and a shield or *(b)* two martial weapons',
'- *(a)* five javelins or *(b)* any simple melee weapon',
`- ${_.sample(['10 lint fluffs', '1 button', 'a cherished lost sock'])}`,
'\n\n\n'
].join('\n');
return dedent`
## Class Features
As a ${classname}, you gain the following class features
#### Hit Points
**Hit Dice:** :: 1d${hitDie} per ${classname} level
**Hit Points at 1st Level:** :: ${hitDie} + your Constitution modifier
**Hit Points at Higher Levels:** :: 1d${hitDie} (or ${hitDie/2 + 1}) + your Constitution modifier per ${classname} level after 1st
#### Proficiencies
**Armor:** :: ${_.sampleSize(['Light armor', 'Medium armor', 'Heavy armor', 'Shields'], _.random(0, 3)).join(', ') || 'None'}
**Weapons:** :: ${_.sampleSize(['Squeegee', 'Rubber Chicken', 'Simple weapons', 'Martial weapons'], _.random(0, 2)).join(', ') || 'None'}
**Tools:** :: ${_.sampleSize(['Artian\'s tools', 'one musical instrument', 'Thieve\'s tools'], _.random(0, 2)).join(', ') || 'None'}
**Saving Throws:** :: ${_.sampleSize(abilityList, 2).join(', ')}
**Skills:** :: Choose two from ${_.sampleSize(skillList, _.random(4, 6)).join(', ')}
#### Equipment
You start with the following equipment, in addition to the equipment granted by your background:
- *(a)* a martial weapon and a shield or *(b)* two martial weapons
- *(a)* five javelins or *(b)* any simple melee weapon
- ${_.sample(['10 lint fluffs', '1 button', 'a cherished lost sock'])}
`;
};

View File

@@ -2,85 +2,77 @@ const _ = require('lodash');
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',
'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){
let slots = Number(Slots);
return _.times(rows, function(i){
const max = maxes[i];
if(slots < 1) return _.pad('—', padding);
const res = _.min([max, slots]);
slots -= res;
return _.pad(res.toString(), padding);
}).join(' | ');
};
module.exports = {
full : function(){
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;
let slots = 2;
return `<div class='classTable wide'>\n##### The ${classname}\n` +
`| Level | Proficiency Bonus | Features | Cantrips Known | Spells Known | 1st | 2nd | 3rd | 4th | 5th | 6th | 7th | 8th | 9th |\n`+
`|:---:|:---:|:---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n${
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${
_.map(levels, function(levelName, level){
const res = [
levelName,
`+${profBonus[level]}`,
getFeature(level),
cantrips,
spells,
drawSlots(slots)
_.pad(levelName, 5),
_.pad(`+${profBonus[level]}`, 2),
_.padEnd(_.sample(features), 21),
_.pad(cantrips.toString(), 8),
_.pad(spells.toString(), 6),
drawSlots(slots, 9, 2),
].join(' | ');
cantrips += _.random(0, 1);
@@ -88,27 +80,53 @@ module.exports = {
slots += _.random(0, 2);
return `| ${res} |`;
}).join('\n')}\n</div>\n\n`;
}).join('\n')}\n}}\n\n`;
},
half : function(){
half : function(classes){
const classname = _.sample(classnames);
let featureScore = 1;
return `<div class='classTable'>\n##### The ${classname}\n` +
`| Level | Proficiency Bonus | Features | ${_.sample(features)}|\n` +
`|:---:|:---:|:---|:---:|\n${
return `{{${classes}\n##### The ${classname}\n` +
`| Level | Proficiency Bonus | Features | ${_.pad(_.sample(features), 21)} |\n` +
`|:-----:|:-----------------:|:---------|:---------------------:|\n${
_.map(levels, function(levelName, level){
const res = [
levelName,
`+${profBonus[level]}`,
getFeature(level),
`+${featureScore}`
_.pad(levelName, 5),
_.pad(`+${profBonus[level]}`, 2),
_.padEnd(_.sample(features), 23),
_.pad(`+${featureScore}`, 21),
].join(' | ');
featureScore += _.random(0, 1);
return `| ${res} |`;
}).join('\n')}\n</div>\n\n`;
}).join('\n')}\n}}\n\n`;
},
third : function(classes){
const classname = _.sample(classnames);
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 = [
_.pad(levelName, 6),
_.pad(cantrips.toString(), 8),
_.pad(spells.toString(), 7),
drawSlots(slots, 4, 7),
].join(' | ');
cantrips += _.random(0, 1);
spells += _.random(0, 1);
slots += _.random(0, 1);
return `| ${res} |`;
}).join('\n')}\n}}\n\n`;
}
};

View File

@@ -100,25 +100,25 @@ const subtitles = [
module.exports = ()=>{
return `<style>
.phb#p1{ text-align:center; }
.phb#p1:after{ display:none; }
.phb#p2 { counter-reset:phb-page-numbers; }
.phb:nth-child(2n) .pageNumber { left: inherit !important; right: 2px !important; }
.phb:nth-child(2n+1) .pageNumber { right: inherit !important; left: 2px !important; }
.phb:nth-child(2n)::after { transform: scaleX(1); }
.phb:nth-child(2n+1)::after { transform: scaleX(-1); }
.phb:nth-child(2n) .footnote { left: inherit; text-align: right; }
.phb:nth-child(2n+1) .footnote { left: 80px; text-align: left; }
.page#p1{ text-align:center; counter-increment: none; }
.page#p1:after{ display:none; }
.page:nth-child(2n) .pageNumber { left: inherit !important; right: 2px !important; }
.page:nth-child(2n+1) .pageNumber { right: inherit !important; left: 2px !important; }
.page:nth-child(2n)::after { transform: scaleX(1); }
.page:nth-child(2n+1)::after { transform: scaleX(-1); }
.page:nth-child(2n) .footnote { left: inherit; text-align: right; }
.page:nth-child(2n+1) .footnote { left: 80px; text-align: left; }
</style>
<div style='margin-top:450px;'></div>
{{margin-top:225px}}
# ${_.sample(titles)}
<div style='margin-top:25px'></div>
<div class='wide'>
{{margin-top:25px}}
{{wide
##### ${_.sample(subtitles)}
</div>
}}
\\page`;
};

View File

@@ -47,20 +47,26 @@ const spellNames = [
'Ultimate Rite of the Confetti Angel',
'Ultimate Ritual of Mouthwash',
];
const itemNames = [
'Doorknob of Niceness',
'Paper Armor of Folding',
'Mixtape of Sadness',
'Staff of Endless Confetti',
];
module.exports = {
spellList : function(){
const levels = ['Cantrips (0 Level)', '2nd Level', '3rd Level', '4th Level', '5th Level', '6th Level', '7th Level', '8th Level', '9th Level'];
const levels = ['Cantrips (0 Level)', '1st Level', '2nd Level', '3rd Level', '4th Level', '5th Level', '6th Level', '7th Level', '8th Level', '9th Level'];
const content = _.map(levels, (level)=>{
const spells = _.map(_.sampleSize(spellNames, _.random(5, 15)), (spell)=>{
const spells = _.map(_.sampleSize(spellNames, _.random(4, 10)), (spell)=>{
return `- ${spell}`;
}).join('\n');
return `##### ${level} \n${spells} \n`;
}).join('\n');
return `<div class='spellList'>\n${content}\n</div>`;
return `{{spellList,wide\n${content}\n}}`;
},
spell : function(){
@@ -76,16 +82,28 @@ module.exports = {
return [
`#### ${_.sample(spellNames)}`,
`*${_.sample(level)}-level ${_.sample(spellSchools)}*`,
'___',
'- **Casting Time:** 1 action',
`- **Range:** ${_.sample(['Self', 'Touch', '30 feet', '60 feet'])}`,
`- **Components:** ${components}`,
`- **Duration:** ${_.sample(['Until dispelled', '1 round', 'Instantaneous', 'Concentration, up to 10 minutes', '1 hour'])}`,
'',
'A flame, equivalent in brightness to a torch, springs from from an object that you touch. ',
'**Casting Time:** :: 1 action',
`**Range:** :: ${_.sample(['Self', 'Touch', '30 feet', '60 feet'])}`,
`**Components:** :: ${components}`,
`**Duration:** :: ${_.sample(['Until dispelled', '1 round', 'Instantaneous', 'Concentration, up to 10 minutes', '1 hour'])}`,
'',
'A flame, equivalent in brightness to a torch, springs from an object that you touch. ',
'The effect look like a regular flame, but it creates no heat and doesn\'t use oxygen. ',
'A *continual flame* can be covered or hidden but not smothered or quenched.',
'\n\n\n'
].join('\n');
},
item : function() {
return [
`#### ${_.sample(itemNames)}`,
`*${_.sample(['Wondrous item', 'Armor', 'Weapon'])}, ${_.sample(['Common', 'Uncommon', 'Rare', 'Very Rare', 'Legendary', 'Artifact'])} (requires attunement)*`,
`:`,
`This knob is pretty nice. When attached to a door, it allows a user to`,
`open that door with the strength of the nearest animal. For example, if`,
`there is a cow nearby, the user will have the "strength of a cow" while`,
`opening this door.`
].join('\n');
}
};
};

View File

@@ -1,4 +1,5 @@
const _ = require('lodash');
const dedent = require('dedent-tabs').default;
const genList = function(list, max){
return _.sampleSize(list, _.random(0, max)).join(', ') || 'None';
@@ -86,7 +87,7 @@ const getAlignment = function(){
};
const getStats = function(){
return `>|${_.times(6, function(){
return `|${_.times(6, function(){
const num = _.random(1, 20);
const mod = Math.ceil(num/2 - 5);
return `${num} (${mod >= 0 ? `+${mod}` : mod})`;
@@ -95,12 +96,26 @@ const getStats = function(){
const genAbilities = function(){
return _.sample([
'> ***Pack Tactics.*** These guys work together. Like super well, you don\'t even know.',
'> ***Fowl Appearance.*** While the creature remains motionless, it is indistinguishable from a normal chicken.',
'> ***Onion Stench.*** Any creatures within 5 feet of this thing develops an irrational craving for onion rings.',
'> ***Enormous Nose.*** This creature gains advantage on any check involving putting things in its nose.',
'> ***Sassiness.*** When questioned, this creature will talk back instead of answering.',
'> ***Big Jerk.*** Thinks he is just *waaaay* better than you.',
'***Pack Tactics.*** These guys work together like peanut butter and jelly.',
'***Fowl Appearance.*** While the creature remains motionless, it is indistinguishable from a normal chicken.',
'***Onion Stench.*** Any creatures within 5 feet of this thing develops an irrational craving for onion rings.',
'***Enormous Nose.*** This creature gains advantage on any check involving putting things in its nose.',
'***Sassiness.*** When questioned, this creature will talk back instead of answering.',
'***Big Jerk.*** Whenever this creature makes an attack, it starts telling you how much cooler it is than you.',
]);
};
const genLongAbilities = function(){
return _.sample([
dedent`***Pack Tactics.*** These guys work together like peanut butter and jelly. Jelly and peanut butter.
When one of these guys attacks, the target is covered with, well, peanut butter and jelly.`,
dedent`***Hangriness.*** This creature is angry, and hungry. It will refuse to do anything with you until its hunger is satisfied.
When in visual contact with this creature, you must purchase an extra order of fries, even if they say they aren't hungry.`,
dedent`***Full of Detergent.*** This creature has swallowed an entire bottle of dish detergent and is actually having a pretty good time.
While walking near this creature, you must make a dexterity check or become "a soapy mess" for three hours, after which your skin will get all dry and itchy.`
]);
};
@@ -133,68 +148,37 @@ const genAction = function(){
'Turnbuckle Roll'
]);
return `> ***${name}.*** *Melee Weapon Attack:* +4 to hit, reach 5ft., one target. *Hit* 5 (1d6 + 2) `;
return `***${name}.*** *Melee Weapon Attack:* +4 to hit, reach 5ft., one target. *Hit* 5 (1d6 + 2) `;
};
module.exports = {
full : function(){
return `${[
'___',
'___',
`> ## ${getMonsterName()}`,
`>*${getType()}, ${getAlignment()}*`,
'> ___',
`> - **Armor Class** ${_.random(10, 20)}`,
`> - **Hit Points** ${_.random(1, 150)}(1d4 + 5)`,
`> - **Speed** ${_.random(0, 50)}ft.`,
'>___',
'>|STR|DEX|CON|INT|WIS|CHA|',
'>|:---:|:---:|:---:|:---:|:---:|:---:|',
getStats(),
'>___',
`> - **Condition Immunities** ${genList(['groggy', 'swagged', 'weak-kneed', 'buzzed', 'groovy', 'melancholy', 'drunk'], 3)}`,
`> - **Senses** passive Perception ${_.random(3, 20)}`,
`> - **Languages** ${genList(['Common', 'Pottymouth', 'Gibberish', 'Latin', 'Jive'], 2)}`,
`> - **Challenge** ${_.random(0, 15)} (${_.random(10, 10000)} XP)`,
'> ___',
_.times(_.random(3, 6), function(){
return genAbilities();
}).join('\n>\n'),
'> ### Actions',
_.times(_.random(4, 6), function(){
return genAction();
}).join('\n>\n'),
].join('\n')}\n\n\n`;
},
half : function(){
return `${[
'___',
`> ## ${getMonsterName()}`,
`>*${getType()}, ${getAlignment()}*`,
'> ___',
`> - **Armor Class** ${_.random(10, 20)}`,
`> - **Hit Points** ${_.random(1, 150)}(1d4 + 5)`,
`> - **Speed** ${_.random(0, 50)}ft.`,
'>___',
'>|STR|DEX|CON|INT|WIS|CHA|',
'>|:---:|:---:|:---:|:---:|:---:|:---:|',
getStats(),
'>___',
`> - **Condition Immunities** ${genList(['groggy', 'swagged', 'weak-kneed', 'buzzed', 'groovy', 'melancholy', 'drunk'], 3)}`,
`> - **Senses** passive Perception ${_.random(3, 20)}`,
`> - **Languages** ${genList(['Common', 'Pottymouth', 'Gibberish', 'Latin', 'Jive'], 2)}`,
`> - **Challenge** ${_.random(0, 15)} (${_.random(10, 10000)} XP)`,
'> ___',
_.times(_.random(2, 3), function(){
return genAbilities();
}).join('\n>\n'),
'> ### Actions',
_.times(_.random(1, 2), function(){
return genAction();
}).join('\n>\n'),
].join('\n')}\n\n\n`;
monster : function(classes, genLines){
return dedent`
{{${classes}
## ${getMonsterName()}
*${getType()}, ${getAlignment()}*
___
**Armor Class** :: ${_.random(10, 20)} (chain mail, shield)
**Hit Points** :: ${_.random(1, 150)}(1d4 + 5)
**Speed** :: ${_.random(0, 50)}ft.
___
| STR | DEX | CON | INT | WIS | CHA |
|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|
${getStats()}
___
**Condition Immunities** :: ${genList(['groggy', 'swagged', 'weak-kneed', 'buzzed', 'groovy', 'melancholy', 'drunk'], 3)}
**Senses** :: darkvision 60 ft., passive Perception ${_.random(3, 20)}
**Languages** :: ${genList(['Common', 'Pottymouth', 'Gibberish', 'Latin', 'Jive'], 2)}
**Challenge** :: ${_.random(0, 15)} (${_.random(10, 10000)} XP)
___
${_.times(_.random(genLines, genLines + 2), function(){return genAbilities();}).join('\n:\n')}
:
${genLongAbilities()}
### Actions
${_.times(_.random(genLines, genLines + 2), function(){return genAction();}).join('\n:\n')}
}}
\n`;
}
};

View File

@@ -6,79 +6,161 @@ const MonsterBlockGen = require('./monsterblock.gen.js');
const ClassFeatureGen = require('./classfeature.gen.js');
const CoverPageGen = require('./coverpage.gen.js');
const TableOfContentsGen = require('./tableOfContents.gen.js');
const dedent = require('dedent-tabs').default;
const watercolorGen = require('./watercolor.gen.js');
module.exports = [
{
groupName : 'Editor',
icon : 'fa-pencil',
groupName : 'Text Editor',
icon : 'fas fa-pencil-alt',
view : 'text',
snippets : [
{
name : 'Column Break',
icon : 'fa-columns',
gen : '```\n```\n\n'
icon : 'fas fa-columns',
gen : '\n\\column\n'
},
{
name : 'New Page',
icon : 'fa-file-text',
gen : '\\page\n\n'
icon : 'fas fa-file-alt',
gen : '\n\\page\n'
},
{
name : 'Vertical Spacing',
icon : 'fa-arrows-v',
gen : '<div style=\'margin-top:140px\'></div>\n\n'
icon : 'fas fa-arrows-alt-v',
gen : '\n::::\n'
},
{
name : 'Horizontal Spacing',
icon : 'fas fa-arrows-alt-h',
gen : ' {{width:100px}} '
},
{
name : 'Wide Block',
icon : 'fa-arrows-h',
gen : '<div class=\'wide\'>\nEverything in here will be extra wide. Tables, text, everything! Beware though, CSS columns can behave a bit weird sometimes.\n</div>\n'
icon : 'fas fa-window-maximize',
gen : dedent`\n
{{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 manually place column breaks with \`\column\` to make the
surrounding text flow with this wide block the way you want.
}}
\n`
},
{
name : 'QR Code',
icon : 'fas fa-qrcode',
gen : (brew)=>{
return `![]` +
`(https://api.qrserver.com/v1/create-qr-code/?data=` +
`https://homebrewery.naturalcrit.com${brew.shareId ? `/share/${brew.shareId}` : ''}` +
`&amp;size=100x100) {width:100px;mix-blend-mode:multiply}`;
}
},
{
name : 'Page Number',
icon : 'fas fa-bookmark',
gen : '{{pageNumber 1}}\n{{footnote PART 1 | SECTION NAME}}\n\n'
},
{
name : 'Auto-incrementing Page Number',
icon : 'fas fa-sort-numeric-down',
gen : '{{pageNumber,auto}}\n{{footnote PART 1 | SECTION NAME}}\n\n'
},
{
name : 'Link to page',
icon : 'fas fa-link',
gen : '[Click here](#p3) to go to page 3\n'
},
{
name : 'Table of Contents',
icon : 'fas fa-book',
gen : TableOfContentsGen
},
{
name : 'Add Comment',
icon : 'fas fa-code',
gen : '<!-- This is a comment that will not be rendered into your brew. Hotkey (Ctrl/Cmd + /). -->'
},
]
},
{
groupName : 'Style Editor',
icon : 'fas fa-pencil-alt',
view : 'style',
snippets : [
{
name : 'Remove Drop Cap',
icon : 'fas fa-remove-format',
gen : dedent`/* Removes Drop Caps */
.page h1+p:first-letter {
all: unset;
}\n\n
/* Removes Small-Caps in first line */
.page h1+p:first-line {
all: unset;
}`
},
{
name : 'Tweak Drop Cap',
icon : 'fas fa-sliders-h',
gen : dedent`/* Drop Cap settings */
.page h1 + p::first-letter {
font-family: SolberaImitationRemake;
font-size: 3.5cm;
background-image: linear-gradient(-45deg, #322814, #998250, #322814);
line-height: 1em;
}\n\n`
},
{
name : 'Add Comment',
icon : 'fas fa-code',
gen : '/* This is a comment that will not be rendered into your brew. */'
},
]
},
/*********************** IMAGES *******************/
{
groupName : 'Images',
icon : 'fas fa-images',
view : 'text',
snippets : [
{
name : 'Image',
icon : 'fa-image',
gen : [
'<img ',
' src=\'https://s-media-cache-ak0.pinimg.com/736x/4a/81/79/4a8179462cfdf39054a418efd4cb743e.jpg\' ',
' style=\'width:325px\' />',
'Credit: Kyounghwan Kim'
].join('\n')
icon : 'fas fa-image',
gen : dedent`
![cat warrior](https://s-media-cache-ak0.pinimg.com/736x/4a/81/79/4a8179462cfdf39054a418efd4cb743e.jpg) {width:325px,mix-blend-mode:multiply}
{{artist,position:relative,top:-230px,left:10px,margin-bottom:-30px
##### Cat Warrior
[Kyoung Hwan Kim](https://www.artstation.com/tahra)
}}`
},
{
name : 'Background Image',
icon : 'fa-tree',
gen : [
'<img ',
' src=\'http://i.imgur.com/hMna6G0.png\' ',
' style=\'position:absolute; top:50px; right:30px; width:280px\' />'
].join('\n')
},
icon : 'fas fa-tree',
gen : dedent`
![homebrew mug](http://i.imgur.com/hMna6G0.png) {position:absolute,top:50px,right:30px,width:280px}
{{artist,top:80px,right:30px
##### Homebrew Mug
[naturalcrit](https://homebrew.naturalcrit.com)
}}`
},
{
name : 'Page Number',
icon : 'fa-bookmark',
gen : '<div class=\'pageNumber\'>1</div>\n<div class=\'footnote\'>PART 1 | FANCINESS</div>\n\n'
name : 'Watercolor Splatter',
icon : 'fas fa-fill-drip',
gen : watercolorGen,
},
{
name : 'Auto-incrementing Page Number',
icon : 'fa-sort-numeric-asc',
gen : '<div class=\'pageNumber auto\'></div>\n'
name : 'Watermark',
icon : 'fas fa-id-card',
gen : dedent`
{{watermark Homebrewery}}\n`
},
{
name : 'Link to page',
icon : 'fa-link',
gen : '[Click here](#p3) to go to page 3\n'
},
{
name : 'Table of Contents',
icon : 'fa-book',
gen : TableOfContentsGen
},
]
},
@@ -87,64 +169,89 @@ module.exports = [
{
groupName : 'PHB',
icon : 'fa-book',
icon : 'fas fa-book',
view : 'text',
snippets : [
{
name : 'Spell',
icon : 'fa-magic',
icon : 'fas fa-magic',
gen : MagicGen.spell,
},
{
name : 'Spell List',
icon : 'fa-list',
icon : 'fas fa-scroll',
gen : MagicGen.spellList,
},
{
name : 'Class Feature',
icon : 'fa-trophy',
icon : 'fas fa-mask',
gen : ClassFeatureGen,
},
{
name : 'Note',
icon : 'fa-sticky-note',
icon : 'fas fa-sticky-note',
gen : function(){
return [
'> ##### Time to Drop Knowledge',
'> Use notes to point out some interesting information. ',
'> ',
'> **Tables and lists** both work within a note.'
].join('\n');
return dedent`
{{note
##### Time to Drop Knowledge
Use notes to point out some interesting information.
**Tables and lists** both work within a note.
}}
\n`;
},
},
{
name : 'Descriptive Text Box',
icon : 'fa-sticky-note-o',
icon : 'fas fa-comment-alt',
gen : function(){
return [
'<div class=\'descriptive\'>',
'##### Time to Drop Knowledge',
'Use notes to point out some interesting information. ',
'',
'**Tables and lists** both work within a note.',
'</div>'
].join('\n');
return dedent`
{{descriptive
##### Time to Drop Knowledge
Use descriptive boxes to highlight text that should be read aloud.
**Tables and lists** both work within a descriptive box.
}}
\n`;
},
},
{
name : 'Monster Stat Block (unframed)',
icon : 'fas fa-paw',
gen : MonsterBlockGen.monster('monster', 2),
},
{
name : 'Monster Stat Block',
icon : 'fa-bug',
gen : MonsterBlockGen.half,
icon : 'fas fa-spider',
gen : MonsterBlockGen.monster('monster,frame', 2),
},
{
name : 'Wide Monster Stat Block',
icon : 'fa-paw',
gen : MonsterBlockGen.full,
icon : 'fas fa-dragon',
gen : MonsterBlockGen.monster('monster,frame,wide', 4),
},
{
name : 'Cover Page',
icon : 'fa-file-word-o',
icon : 'fas fa-file-word',
gen : CoverPageGen,
},
{
name : 'Magic Item',
icon : 'fas fa-hat-wizard',
gen : MagicGen.item,
},
{
name : 'Artist Credit',
icon : 'fas fa-signature',
gen : function(){
return dedent`
{{artist,top:90px,right:30px
##### Starry Night
[Van Gogh](https://www.vangoghmuseum.nl/en)
}}
\n`;
},
},
]
},
@@ -154,79 +261,98 @@ module.exports = [
{
groupName : 'Tables',
icon : 'fa-table',
icon : 'fas fa-table',
view : 'text',
snippets : [
{
name : 'Class Table',
icon : 'fa-table',
gen : ClassTableGen.full,
},
{
name : 'Half Class Table',
icon : 'fa-list-alt',
gen : ClassTableGen.half,
},
{
name : 'Table',
icon : 'fa-th-list',
icon : 'fas fa-th-list',
gen : function(){
return [
'##### Cookie Tastiness',
'| Tastiness | Cookie Type |',
'|:----:|:-------------|',
'| -5 | Raisin |',
'| 8th | Chocolate Chip |',
'| 11th | 2 or lower |',
'| 14th | 3 or lower |',
'| 17th | 4 or lower |\n\n',
].join('\n');
},
return dedent`
##### Character Advancement
| Experience Points | Level | Proficiency Bonus |
|:------------------|:-----:|:-----------------:|
| 0 | 1 | +2 |
| 300 | 2 | +2 |
| 900 | 3 | +2 |
| 2,700 | 4 | +2 |
| 6,500 | 5 | +3 |
| 14,000 | 6 | +3 |
\n`;
}
},
{
name : 'Wide Table',
icon : 'fa-list',
icon : 'fas fa-list',
gen : function(){
return [
'<div class=\'wide\'>',
'##### Cookie Tastiness',
'| Tastiness | Cookie Type |',
'|:----:|:-------------|',
'| -5 | Raisin |',
'| 8th | Chocolate Chip |',
'| 11th | 2 or lower |',
'| 14th | 3 or lower |',
'| 17th | 4 or lower |',
'</div>\n\n'
].join('\n');
},
return dedent`
{{wide
##### Weapons
| Name | Cost | Damage | Weight | Properties |
|:------------------------|:-----:|:----------------|--------:|:-----------|
| *Simple Melee Weapons* | | | | |
| &emsp; Club | 1 sp | 1d4 bludgeoning | 2 lb. | Light |
| &emsp; Dagger | 2 gp | 1d4 piercing | 1 lb. | Finesse |
| &emsp; Spear | 1 gp | 1d6 piercing | 3 lb. | Thrown |
| *Simple Ranged Weapons* | | | | |
| &emsp; Dart | 5 cp | 1d4 piercig | 1/4 lb. | Finesse |
| &emsp; Shortbow | 25 gp | 1d6 piercing | 2 lb. | Ammunition |
| &emsp; Sling | 1 sp | 1d4 bludgeoning | &mdash; | Ammunition |
}}
\n`;
}
},
{
name : 'Split Table',
icon : 'fa-th-large',
icon : 'fas fa-th-large',
gen : function(){
return [
'<div style=\'column-count:2\'>',
'| d10 | Damage Type |',
'|:---:|:------------|',
'| 1 | Acid |',
'| 2 | Cold |',
'| 3 | Fire |',
'| 4 | Force |',
'| 5 | Lightning |',
'',
'```',
'```',
'',
'| d10 | Damage Type |',
'|:---:|:------------|',
'| 6 | Necrotic |',
'| 7 | Poison |',
'| 8 | Psychic |',
'| 9 | Radiant |',
'| 10 | Thunder |',
'</div>\n\n',
].join('\n');
},
return dedent`
##### Typical Difficulty Classes
{{column-count:2
| Task Difficulty | DC |
|:----------------|:--:|
| Very easy | 5 |
| Easy | 10 |
| Medium | 15 |
| Task Difficulty | DC |
|:------------------|:--:|
| Hard | 20 |
| Very hard | 25 |
| Nearly impossible | 30 |
}}
\n`;
}
},
{
name : 'Class Table',
icon : 'fas fa-table',
gen : ClassTableGen.full('classTable,frame,decoration,wide'),
},
{
name : 'Class Table (unframed)',
icon : 'fas fa-border-none',
gen : ClassTableGen.full('classTable,wide'),
},
{
name : '1/2 Class Table',
icon : 'fas fa-list-alt',
gen : ClassTableGen.half('classTable,decoration,frame'),
},
{
name : '1/2 Class Table (unframed)',
icon : 'fas fa-border-none',
gen : ClassTableGen.half('classTable'),
},
{
name : '1/3 Class Table',
icon : 'fas fa-border-all',
gen : ClassTableGen.third('classTable,frame'),
},
{
name : '1/3 Class Table (unframed)',
icon : 'fas fa-border-none',
gen : ClassTableGen.third('classTable'),
}
]
},
@@ -234,33 +360,46 @@ module.exports = [
/**************** PRINT *************/
/**************** PAGE *************/
{
groupName : 'Print',
icon : 'fa-print',
icon : 'fas fa-print',
view : 'style',
snippets : [
{
name : 'A4 PageSize',
icon : 'fa-file-o',
gen : ['<style>',
' .phb{',
' width : 210mm;',
' height : 296.8mm;',
' }',
'</style>'
].join('\n')
name : 'A4 Page Size',
icon : 'far fa-file',
gen : dedent`/* A4 Page Size */
.page{
width : 210mm;
height : 296.8mm;
}\n\n`
},
{
name : 'Square Page Size',
icon : 'far fa-file',
gen : dedent`/* Square Page Size */
.page {
width : 125mm;
height : 125mm;
padding : 12.5mm;
columns : unset;
}\n\n`
},
{
name : 'Ink Friendly',
icon : 'fa-tint',
gen : ['<style>',
' .phb{ background : white;}',
' .phb img{ display : none;}',
' .phb hr+blockquote{background : white;}',
'</style>',
''
].join('\n')
icon : 'fas fa-tint',
gen : dedent`
/* Ink Friendly */
*:is(.page,.monster,.note,.descriptive) {
background : white !important;
filter : drop-shadow(0px 0px 3px #888) !important;
}
.page img {
visibility : hidden;
}\n\n`
},
]
},

View File

@@ -1,4 +1,5 @@
const _ = require('lodash');
const dedent = require('dedent-tabs').default;
const getTOC = (pages)=>{
const add1 = (title, page)=>{
@@ -9,7 +10,7 @@ const getTOC = (pages)=>{
});
};
const add2 = (title, page)=>{
if(!_.last(res)) add1('', page);
if(!_.last(res)) add1(null, page);
_.last(res).children.push({
title : title,
page : page + 1,
@@ -17,8 +18,8 @@ const getTOC = (pages)=>{
});
};
const add3 = (title, page)=>{
if(!_.last(res)) add1('', page);
if(!_.last(_.last(res).children)) add2('', page);
if(!_.last(res)) add1(null, page);
if(!_.last(_.last(res).children)) add2(null, page);
_.last(_.last(res).children).children.push({
title : title,
page : page + 1,
@@ -48,16 +49,24 @@ const getTOC = (pages)=>{
};
module.exports = function(brew){
const pages = brew.split('\\page');
const pages = brew.text.split('\\page');
const TOC = getTOC(pages);
const markdown = _.reduce(TOC, (r, g1, idx1)=>{
r.push(`- **[${idx1 + 1} ${g1.title}](#p${g1.page})**`);
if(g1.title !== null) {
r.push(`- ### [{{ ${g1.title}}}{{ ${g1.page}}}](#p${g1.page})`);
}
if(g1.children.length){
_.each(g1.children, (g2, idx2)=>{
r.push(` - [${idx1 + 1}.${idx2 + 1} ${g2.title}](#p${g2.page})`);
if(g2.title !== null) {
r.push(` - #### [{{ ${g2.title}}}{{ ${g2.page}}}](#p${g2.page})`);
}
if(g2.children.length){
_.each(g2.children, (g3, idx3)=>{
r.push(` - [${idx1 + 1}.${idx2 + 1}.${idx3 + 1} ${g3.title}](#p${g3.page})`);
if(g2.title !== null) {
r.push(` - [{{ ${g3.title}}}{{ ${g3.page}}}](#p${g3.page})`);
} else { // Don't over-indent if no level-2 parent entry
r.push(` - [{{ ${g3.title}}}{{ ${g3.page}}}](#p${g3.page})`);
}
});
}
});
@@ -65,8 +74,11 @@ module.exports = function(brew){
return r;
}, []).join('\n');
return `<div class='toc'>
##### Table Of Contents
${markdown}
</div>\n`;
};
return dedent`
{{toc,wide
# Table Of Contents
${markdown}
}}
\n`;
};

View File

@@ -0,0 +1,5 @@
const _ = require('lodash');
module.exports = ()=>{
return `{{watercolor${_.random(1, 12)},top:20px,left:30px,width:300px,background-color:#BBAD82,opacity:80%}}\n\n`;
};

View File

@@ -0,0 +1,42 @@
const _ = require('lodash');
module.exports = function(classname){
classname = _.sample(['archivist', 'fancyman', 'linguist', 'fletcher',
'notary', 'berserker-typist', 'fishmongerer', 'manicurist', 'haberdasher', 'concierge']);
classname = classname.toLowerCase();
const hitDie = _.sample([4, 6, 8, 10, 12]);
const abilityList = ['Strength', 'Dexerity', 'Constitution', 'Wisdom', 'Charisma', 'Intelligence'];
const skillList = ['Acrobatics ', 'Animal Handling', 'Arcana', 'Athletics', 'Deception', 'History', 'Insight', 'Intimidation', 'Investigation', 'Medicine', 'Nature', 'Perception', 'Performance', 'Persuasion', 'Religion', 'Sleight of Hand', 'Stealth', 'Survival'];
return [
'## Class Features',
`As a ${classname}, you gain the following class features`,
'#### Hit Points',
'___',
`- **Hit Dice:** 1d${hitDie} per ${classname} level`,
`- **Hit Points at 1st Level:** ${hitDie} + your Constitution modifier`,
`- **Hit Points at Higher Levels:** 1d${hitDie} (or ${hitDie/2 + 1}) + your Constitution modifier per ${classname} level after 1st`,
'',
'#### Proficiencies',
'___',
`- **Armor:** ${_.sampleSize(['Light armor', 'Medium armor', 'Heavy armor', 'Shields'], _.random(0, 3)).join(', ') || 'None'}`,
`- **Weapons:** ${_.sampleSize(['Squeegee', 'Rubber Chicken', 'Simple weapons', 'Martial weapons'], _.random(0, 2)).join(', ') || 'None'}`,
`- **Tools:** ${_.sampleSize(['Artian\'s tools', 'one musical instrument', 'Thieve\'s tools'], _.random(0, 2)).join(', ') || 'None'}`,
'',
'___',
`- **Saving Throws:** ${_.sampleSize(abilityList, 2).join(', ')}`,
`- **Skills:** Choose two from ${_.sampleSize(skillList, _.random(4, 6)).join(', ')}`,
'',
'#### Equipment',
'You start with the following equipment, in addition to the equipment granted by your background:',
'- *(a)* a martial weapon and a shield or *(b)* two martial weapons',
'- *(a)* five javelins or *(b)* any simple melee weapon',
`- ${_.sample(['10 lint fluffs', '1 button', 'a cherished lost sock'])}`,
'\n\n\n'
].join('\n');
};

View File

@@ -0,0 +1,114 @@
const _ = require('lodash');
const features = [
'Astrological Botany',
'Astrological Chemistry',
'Biochemical Sorcery',
'Civil Alchemy',
'Consecrated Biochemistry',
'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',
'Gunpowder Torturer',
'Orbital Gravedigger',
'Phased Linguist',
'Mathematical Pharmacist',
'Plasma Outlaw',
'Malefic Chemist',
'Police Cultist'
];
const classnames = ['Archivist', 'Fancyman', 'Linguist', 'Fletcher',
'Notary', 'Berserker-Typist', 'Fishmongerer', 'Manicurist', 'Haberdasher', 'Concierge'];
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(', ');
};
module.exports = {
full : function(){
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;
let slots = 2;
return `<div class='classTable wide'>\n##### The ${classname}\n` +
`| Level | Proficiency Bonus | Features | Cantrips Known | Spells 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)
].join(' | ');
cantrips += _.random(0, 1);
spells += _.random(0, 1);
slots += _.random(0, 2);
return `| ${res} |`;
}).join('\n')}\n</div>\n\n`;
},
half : function(){
const classname = _.sample(classnames);
let featureScore = 1;
return `<div class='classTable'>\n##### The ${classname}\n` +
`| Level | Proficiency Bonus | Features | ${_.sample(features)}|\n` +
`|:---:|:---:|:---|:---:|\n${
_.map(levels, function(levelName, level){
const res = [
levelName,
`+${profBonus[level]}`,
getFeature(level),
`+${featureScore}`
].join(' | ');
featureScore += _.random(0, 1);
return `| ${res} |`;
}).join('\n')}\n</div>\n\n`;
}
};

View File

@@ -0,0 +1,117 @@
const _ = require('lodash');
const titles = [
'The Burning Gallows',
'The Ring of Nenlast',
'Below the Blind Tavern',
'Below the Hungering River',
'Before Bahamut\'s Land',
'The Cruel Grave from Within',
'The Strength of Trade Road',
'Through The Raven Queen\'s Worlds',
'Within the Settlement',
'The Crown from Within',
'The Merchant Within the Battlefield',
'Ioun\'s Fading Traveler',
'The Legion Ingredient',
'The Explorer Lure',
'Before the Charming Badlands',
'The Living Dead Above the Fearful Cage',
'Vecna\'s Hidden Sage',
'Bahamut\'s Demonspawn',
'Across Gruumsh\'s Elemental Chaos',
'The Blade of Orcus',
'Beyond Revenge',
'Brain of Insanity',
'Breed Battle!, A New Beginning',
'Evil Lake, A New Beginning',
'Invasion of the Gigantic Cat, Part II',
'Kraken War 2020',
'The Body Whisperers',
'The Diabolical Tales of the Ape-Women',
'The Doctor Immortal',
'The Doctor from Heaven',
'The Graveyard',
'Azure Core',
'Core Battle',
'Core of Heaven: The Guardian of Amazement',
'Deadly Amazement III',
'Dry Chaos IX',
'Gate Thunder',
'Guardian: Skies of the Dark Wizard',
'Lute of Eternity',
'Mercury\'s Planet: Brave Evolution',
'Ruby of Atlantis: The Quake of Peace',
'Sky of Zelda: The Thunder of Force',
'Vyse\'s Skies',
'White Greatness III',
'Yellow Divinity',
'Zidane\'s Ghost'
];
const subtitles = [
'In an ominous universe, a botanist opposes terrorism.',
'In a demon-haunted city, in an age of lies and hate, a physicist tries to find an ancient treasure and battles a mob of aliens.',
'In a land of corruption, two cyberneticists and a dungeon delver search for freedom.',
'In an evil empire of horror, two rangers battle the forces of hell.',
'In a lost city, in an age of sorcery, a librarian quests for revenge.',
'In a universe of illusions and danger, three time travellers and an adventurer search for justice.',
'In a forgotten universe of barbarism, in an era of terror and mysticism, a virtual reality programmer and a spy try to find vengance and battle crime.',
'In a universe of demons, in an era of insanity and ghosts, three bodyguards and a bodyguard try to find vengance.',
'In a kingdom of corruption and battle, seven artificial intelligences try to save the last living fertile woman.',
'In a universe of virutal reality and agony, in an age of ghosts and ghosts, a fortune-teller and a wanderer try to avert the apocalypse.',
'In a crime-infested kingdom, three martial artists quest for the truth and oppose evil.',
'In a terrifying universe of lost souls, in an era of lost souls, eight dancers fight evil.',
'In a galaxy of confusion and insanity, three martial artists and a duke battle a mob of psychics.',
'In an amazing kingdom, a wizard and a secretary hope to prevent the destruction of mankind.',
'In a kingdom of deception, a reporter searches for fame.',
'In a hellish empire, a swordswoman and a duke try to find the ultimate weapon and battle a conspiracy.',
'In an evil galaxy of illusion, in a time of technology and misery, seven psychiatrists battle crime.',
'In a dark city of confusion, three swordswomen and a singer battle lawlessness.',
'In an ominous empire, in an age of hate, two philosophers and a student try to find justice and battle a mob of mages intent on stealing the souls of the innocent.',
'In a kingdom of panic, six adventurers oppose lawlessness.',
'In a land of dreams and hopelessness, three hackers and a cyborg search for justice.',
'On a planet of mysticism, three travelers and a fire fighter quest for the ultimate weapon and oppose evil.',
'In a wicked universe, five seers fight lawlessness.',
'In a kingdom of death, in an era of illusion and blood, four colonists search for fame.',
'In an amazing kingdom, in an age of sorcery and lost souls, eight space pirates quest for freedom.',
'In a cursed empire, five inventors oppose terrorism.',
'On a crime-ridden planet of conspiracy, a watchman and an artificial intelligence try to find love and oppose lawlessness.',
'In a forgotten land, a reporter and a spy try to stop the apocalypse.',
'In a forbidden land of prophecy, a scientist and an archivist oppose a cabal of barbarians intent on stealing the souls of the innocent.',
'On an infernal world of illusion, a grave robber and a watchman try to find revenge and combat a syndicate of mages intent on stealing the source of all magic.',
'In a galaxy of dark magic, four fighters seek freedom.',
'In an empire of deception, six tomb-robbers quest for the ultimate weapon and combat an army of raiders.',
'In a kingdom of corruption and lost souls, in an age of panic, eight planetologists oppose evil.',
'In a galaxy of misery and hopelessness, in a time of agony and pain, five planetologists search for vengance.',
'In a universe of technology and insanity, in a time of sorcery, a computer techician quests for hope.',
'On a planet of dark magic and barbarism, in an age of horror and blasphemy, seven librarians search for fame.',
'In an empire of dark magic, in a time of blood and illusions, four monks try to find the ultimate weapon and combat terrorism.',
'In a forgotten empire of dark magic, six kings try to prevent the destruction of mankind.',
'In a galaxy of dark magic and horror, in an age of hopelessness, four marines and an outlaw combat evil.',
'In a mysterious city of illusion, in an age of computerization, a witch-hunter tries to find the ultimate weapon and opposes an evil corporation.',
'In a damned kingdom of technology, a virtual reality programmer and a fighter seek fame.',
'In a hellish kingdom, in an age of blasphemy and blasphemy, an astrologer searches for fame.',
'In a damned world of devils, an alien and a ranger quest for love and oppose a syndicate of demons.',
'In a cursed galaxy, in a time of pain, seven librarians hope to avert the apocalypse.',
'In a crime-infested galaxy, in an era of hopelessness and panic, three champions and a grave robber try to solve the ultimate crime.'
];
module.exports = ()=>{
return `<style>
.phb#p1{ text-align:center; }
.phb#p1:after{ display:none; }
</style>
<div style='margin-top:450px;'></div>
# ${_.sample(titles)}
<div style='margin-top:25px'></div>
<div class='wide'>
##### ${_.sample(subtitles)}
</div>
\\page`;
};

View File

@@ -0,0 +1,43 @@
const _ = require('lodash');
const ClassFeatureGen = require('./classfeature.gen.js');
const ClassTableGen = require('./classtable.gen.js');
module.exports = function(){
const classname = _.sample(['Archivist', 'Fancyman', 'Linguist', 'Fletcher',
'Notary', 'Berserker-Typist', 'Fishmongerer', 'Manicurist', 'Haberdasher', 'Concierge']);
const image = _.sample(_.map([
'http://orig01.deviantart.net/4682/f/2007/099/f/c/bard_stick_figure_by_wrpigeek.png',
'http://img07.deviantart.net/a3c9/i/2007/099/3/a/archer_stick_figure_by_wrpigeek.png',
'http://pre04.deviantart.net/d596/th/pre/f/2007/099/5/2/adventurer_stick_figure_by_wrpigeek.png',
'http://img13.deviantart.net/d501/i/2007/099/d/4/black_mage_stick_figure_by_wrpigeek.png',
'http://img09.deviantart.net/5cf3/i/2007/099/d/d/dark_knight_stick_figure_by_wrpigeek.png',
'http://pre01.deviantart.net/7a34/th/pre/f/2007/099/6/3/monk_stick_figure_by_wrpigeek.png',
'http://img11.deviantart.net/5dcc/i/2007/099/d/1/mystic_knight_stick_figure_by_wrpigeek.png',
'http://pre08.deviantart.net/ad45/th/pre/f/2007/099/a/0/thief_stick_figure_by_wrpigeek.png',
], function(url){
return `<img src = '${url}' style='max-width:8cm;max-height:25cm' />`;
}));
return `${[
image,
'',
'```',
'```',
'<div style=\'margin-top:240px\'></div>\n\n',
`## ${classname}`,
'Cool intro stuff will go here',
'\\page',
ClassTableGen(classname),
ClassFeatureGen(classname),
].join('\n')}\n\n\n`;
};

View File

@@ -0,0 +1,91 @@
const _ = require('lodash');
const spellNames = [
'Astral Rite of Acne',
'Create Acne',
'Cursed Ramen Erruption',
'Dark Chant of the Dentists',
'Erruption of Immaturity',
'Flaming Disc of Inconvenience',
'Heal Bad Hygene',
'Heavenly Transfiguration of the Cream Devil',
'Hellish Cage of Mucus',
'Irritate Peanut Butter Fairy',
'Luminous Erruption of Tea',
'Mystic Spell of the Poser',
'Sorcerous Enchantment of the Chimneysweep',
'Steak Sauce Ray',
'Talk to Groupie',
'Astonishing Chant of Chocolate',
'Astounding Pasta Puddle',
'Ball of Annoyance',
'Cage of Yarn',
'Control Noodles Elemental',
'Create Nervousness',
'Cure Baldness',
'Cursed Ritual of Bad Hair',
'Dispell Piles in Dentist',
'Eliminate Florists',
'Illusionary Transfiguration of the Babysitter',
'Necromantic Armor of Salad Dressing',
'Occult Transfiguration of Foot Fetish',
'Protection from Mucus Giant',
'Tinsel Blast',
'Alchemical Evocation of the Goths',
'Call Fangirl',
'Divine Spell of Crossdressing',
'Dominate Ramen Giant',
'Eliminate Vindictiveness in Gym Teacher',
'Extra-Planar Spell of Irritation',
'Induce Whining in Babysitter',
'Invoke Complaining',
'Magical Enchantment of Arrogance',
'Occult Globe of Salad Dressing',
'Overwhelming Enchantment of the Chocolate Fairy',
'Sorcerous Dandruff Globe',
'Spiritual Invocation of the Costumers',
'Ultimate Rite of the Confetti Angel',
'Ultimate Ritual of Mouthwash',
];
module.exports = {
spellList : function(){
const levels = ['Cantrips (0 Level)', '1st Level', '2nd Level', '3rd Level', '4th Level', '5th Level', '6th Level', '7th Level', '8th Level', '9th Level'];
const content = _.map(levels, (level)=>{
const spells = _.map(_.sampleSize(spellNames, _.random(5, 15)), (spell)=>{
return `- ${spell}`;
}).join('\n');
return `##### ${level} \n${spells} \n`;
}).join('\n');
return `<div class='spellList'>\n${content}\n</div>`;
},
spell : function(){
const level = ['1st', '2nd', '3rd', '4th', '5th', '6th', '7th', '8th', '9th'];
const spellSchools = ['abjuration', 'conjuration', 'divination', 'enchantment', 'evocation', 'illusion', 'necromancy', 'transmutation'];
let components = _.sampleSize(['V', 'S', 'M'], _.random(1, 3)).join(', ');
if(components.indexOf('M') !== -1){
components += ` (${_.sampleSize(['a small doll', 'a crushed button worth at least 1cp', 'discarded gum wrapper'], _.random(1, 3)).join(', ')})`;
}
return [
`#### ${_.sample(spellNames)}`,
`*${_.sample(level)}-level ${_.sample(spellSchools)}*`,
'___',
'- **Casting Time:** 1 action',
`- **Range:** ${_.sample(['Self', 'Touch', '30 feet', '60 feet'])}`,
`- **Components:** ${components}`,
`- **Duration:** ${_.sample(['Until dispelled', '1 round', 'Instantaneous', 'Concentration, up to 10 minutes', '1 hour'])}`,
'',
'A flame, equivalent in brightness to a torch, springs from an object that you touch. ',
'The effect look like a regular flame, but it creates no heat and doesn\'t use oxygen. ',
'A *continual flame* can be covered or hidden but not smothered or quenched.',
'\n\n\n'
].join('\n');
}
};

View File

@@ -0,0 +1,200 @@
const _ = require('lodash');
const genList = function(list, max){
return _.sampleSize(list, _.random(0, max)).join(', ') || 'None';
};
const getMonsterName = function(){
return _.sample([
'All-devouring Baseball Imp',
'All-devouring Gumdrop Wraith',
'Chocolate Hydra',
'Devouring Peacock',
'Economy-sized Colossus of the Lemonade Stand',
'Ghost Pigeon',
'Gibbering Duck',
'Sparklemuffin Peacock Spider',
'Gum Elemental',
'Illiterate Construct of the Candy Store',
'Ineffable Chihuahua',
'Irritating Death Hamster',
'Irritating Gold Mouse',
'Juggernaut Snail',
'Juggernaut of the Sock Drawer',
'Koala of the Cosmos',
'Mad Koala of the West',
'Milk Djinni of the Lemonade Stand',
'Mind Ferret',
'Mystic Salt Spider',
'Necrotic Halitosis Angel',
'Pinstriped Famine Sheep',
'Ritalin Leech',
'Shocker Kangaroo',
'Stellar Tennis Juggernaut',
'Wailing Quail of the Sun',
'Angel Pigeon',
'Anime Sphinx',
'Bored Avalanche Sheep of the Wasteland',
'Devouring Nougat Sphinx of the Sock Drawer',
'Djinni of the Footlocker',
'Ectoplasmic Jazz Devil',
'Flatuent Angel',
'Gelatinous Duck of the Dream-Lands',
'Gelatinous Mouse',
'Golem of the Footlocker',
'Lich Wombat',
'Mechanical Sloth of the Past',
'Milkshake Succubus',
'Puffy Bone Peacock of the East',
'Rainbow Manatee',
'Rune Parrot',
'Sand Cow',
'Sinister Vanilla Dragon',
'Snail of the North',
'Spider of the Sewer',
'Stellar Sawdust Leech',
'Storm Anteater of Hell',
'Stupid Spirit of the Brewery',
'Time Kangaroo',
'Tomb Poodle',
]);
};
const getType = function(){
return `${_.sample(['Tiny', 'Small', 'Medium', 'Large', 'Gargantuan', 'Stupidly vast'])} ${_.sample(['beast', 'fiend', 'annoyance', 'guy', 'cutie'])}`;
};
const getAlignment = function(){
return _.sample([
'annoying evil',
'chaotic gossipy',
'chaotic sloppy',
'depressed neutral',
'lawful bogus',
'lawful coy',
'manic-depressive evil',
'narrow-minded neutral',
'neutral annoying',
'neutral ignorant',
'oedpipal neutral',
'silly neutral',
'unoriginal neutral',
'weird neutral',
'wordy evil',
'unaligned'
]);
};
const getStats = function(){
return `>|${_.times(6, function(){
const num = _.random(1, 20);
const mod = Math.ceil(num/2 - 5);
return `${num} (${mod >= 0 ? `+${mod}` : mod})`;
}).join('|')}|`;
};
const genAbilities = function(){
return _.sample([
'> ***Pack Tactics.*** These guys work together. Like super well, you don\'t even know.',
'> ***Fowl Appearance.*** While the creature remains motionless, it is indistinguishable from a normal chicken.',
'> ***Onion Stench.*** Any creatures within 5 feet of this thing develops an irrational craving for onion rings.',
'> ***Enormous Nose.*** This creature gains advantage on any check involving putting things in its nose.',
'> ***Sassiness.*** When questioned, this creature will talk back instead of answering.',
'> ***Big Jerk.*** Thinks he is just *waaaay* better than you.',
]);
};
const genAction = function(){
const name = _.sample([
'Abdominal Drop',
'Airplane Hammer',
'Atomic Death Throw',
'Bulldog Rake',
'Corkscrew Strike',
'Crossed Splash',
'Crossface Suplex',
'DDT Powerbomb',
'Dual Cobra Wristlock',
'Dual Throw',
'Elbow Hold',
'Gory Body Sweep',
'Heel Jawbreaker',
'Jumping Driver',
'Open Chin Choke',
'Scorpion Flurry',
'Somersault Stump Fists',
'Suffering Wringer',
'Super Hip Submission',
'Super Spin',
'Team Elbow',
'Team Foot',
'Tilt-a-whirl Chin Sleeper',
'Tilt-a-whirl Eye Takedown',
'Turnbuckle Roll'
]);
return `> ***${name}.*** *Melee Weapon Attack:* +4 to hit, reach 5ft., one target. *Hit* 5 (1d6 + 2) `;
};
module.exports = {
full : function(){
return `${[
'___',
'___',
`> ## ${getMonsterName()}`,
`>*${getType()}, ${getAlignment()}*`,
'> ___',
`> - **Armor Class** ${_.random(10, 20)}`,
`> - **Hit Points** ${_.random(1, 150)}(1d4 + 5)`,
`> - **Speed** ${_.random(0, 50)}ft.`,
'>___',
'>|STR|DEX|CON|INT|WIS|CHA|',
'>|:---:|:---:|:---:|:---:|:---:|:---:|',
getStats(),
'>___',
`> - **Condition Immunities** ${genList(['groggy', 'swagged', 'weak-kneed', 'buzzed', 'groovy', 'melancholy', 'drunk'], 3)}`,
`> - **Senses** passive Perception ${_.random(3, 20)}`,
`> - **Languages** ${genList(['Common', 'Pottymouth', 'Gibberish', 'Latin', 'Jive'], 2)}`,
`> - **Challenge** ${_.random(0, 15)} (${_.random(10, 10000)} XP)`,
'> ___',
_.times(_.random(3, 6), function(){
return genAbilities();
}).join('\n>\n'),
'> ### Actions',
_.times(_.random(4, 6), function(){
return genAction();
}).join('\n>\n'),
].join('\n')}\n\n\n`;
},
half : function(){
return `${[
'___',
`> ## ${getMonsterName()}`,
`>*${getType()}, ${getAlignment()}*`,
'> ___',
`> - **Armor Class** ${_.random(10, 20)}`,
`> - **Hit Points** ${_.random(1, 150)}(1d4 + 5)`,
`> - **Speed** ${_.random(0, 50)}ft.`,
'>___',
'>|STR|DEX|CON|INT|WIS|CHA|',
'>|:---:|:---:|:---:|:---:|:---:|:---:|',
getStats(),
'>___',
`> - **Condition Immunities** ${genList(['groggy', 'swagged', 'weak-kneed', 'buzzed', 'groovy', 'melancholy', 'drunk'], 3)}`,
`> - **Senses** passive Perception ${_.random(3, 20)}`,
`> - **Languages** ${genList(['Common', 'Pottymouth', 'Gibberish', 'Latin', 'Jive'], 2)}`,
`> - **Challenge** ${_.random(0, 15)} (${_.random(10, 10000)} XP)`,
'> ___',
_.times(_.random(2, 3), function(){
return genAbilities();
}).join('\n>\n'),
'> ### Actions',
_.times(_.random(1, 2), function(){
return genAction();
}).join('\n>\n'),
].join('\n')}\n\n\n`;
}
};

View File

@@ -0,0 +1,327 @@
/* eslint-disable max-lines */
const MagicGen = require('./magic.gen.js');
const ClassTableGen = require('./classtable.gen.js');
const MonsterBlockGen = require('./monsterblock.gen.js');
const ClassFeatureGen = require('./classfeature.gen.js');
const CoverPageGen = require('./coverpage.gen.js');
const TableOfContentsGen = require('./tableOfContents.gen.js');
const dedent = require('dedent-tabs').default;
module.exports = [
{
groupName : 'Text Editor',
icon : 'fas fa-pencil-alt',
view : 'text',
snippets : [
{
name : 'Column Break',
icon : 'fas fa-columns',
gen : '```\n```\n\n'
},
{
name : 'New Page',
icon : 'fas fa-file-alt',
gen : '\\page\n\n'
},
{
name : 'Vertical Spacing',
icon : 'fas fa-arrows-alt-v',
gen : '<div style=\'margin-top:140px\'></div>\n\n'
},
{
name : 'Wide Block',
icon : 'fas fa-arrows-alt-h',
gen : '<div class=\'wide\'>\nEverything in here will be extra wide. Tables, text, everything! Beware though, CSS columns can behave a bit weird sometimes.\n</div>\n'
},
{
name : 'Image',
icon : 'fas fa-image',
gen : [
'<img ',
' src=\'https://s-media-cache-ak0.pinimg.com/736x/4a/81/79/4a8179462cfdf39054a418efd4cb743e.jpg\' ',
' style=\'width:325px\' />',
'Credit: Kyounghwan Kim'
].join('\n')
},
{
name : 'Background Image',
icon : 'fas fa-tree',
gen : [
'<img ',
' src=\'http://i.imgur.com/hMna6G0.png\' ',
' style=\'position:absolute; top:50px; right:30px; width:280px\' />'
].join('\n')
},
{
name : 'Page Number',
icon : 'fas fa-bookmark',
gen : '<div class=\'pageNumber\'>1</div>\n<div class=\'footnote\'>PART 1 | FANCINESS</div>\n\n'
},
{
name : 'Auto-incrementing Page Number',
icon : 'fas fa-sort-numeric-down',
gen : '<div class=\'pageNumber auto\'></div>\n'
},
{
name : 'Link to page',
icon : 'fas fa-link',
gen : '[Click here](#p3) to go to page 3\n'
},
{
name : 'Table of Contents',
icon : 'fas fa-book',
gen : TableOfContentsGen
},
{
name : 'Add Comment',
icon : 'fas fa-code',
gen : '<!-- This is a comment that will not be rendered into your brew. Hotkey (Ctrl/Cmd + /). -->'
}
]
},
{
groupName : 'Style Editor',
icon : 'fas fa-pencil-alt',
view : 'style',
snippets : [
{
name : 'Remove Drop Cap',
icon : 'fas fa-remove-format',
gen : dedent`/* Removes Drop Caps */
.phb h1+p:first-letter {
all: unset;
}\n\n`
},
{
name : 'Tweak Drop Cap',
icon : 'fas fa-sliders-h',
gen : dedent`/* Drop Cap Settings */
.phb h1 + p::first-letter {
float: left;
font-family: Solberry;
font-size: 10em;
color: #222;
line-height: .8em;
}\n\n`
},
{
name : 'Add Comment',
icon : 'fas fa-code',
gen : '/* This is a comment that will not be rendered into your brew. */'
}
]
},
/************************* PHB ********************/
{
groupName : 'PHB',
icon : 'fas fa-book',
view : 'text',
snippets : [
{
name : 'Spell',
icon : 'fas fa-magic',
gen : MagicGen.spell,
},
{
name : 'Spell List',
icon : 'fas fa-list',
gen : MagicGen.spellList,
},
{
name : 'Class Feature',
icon : 'fas fa-trophy',
gen : ClassFeatureGen,
},
{
name : 'Note',
icon : 'fas fa-sticky-note',
gen : function(){
return [
'> ##### Time to Drop Knowledge',
'> Use notes to point out some interesting information. ',
'> ',
'> **Tables and lists** both work within a note.'
].join('\n');
},
},
{
name : 'Descriptive Text Box',
icon : 'far fa-sticky-note',
gen : function(){
return [
'<div class=\'descriptive\'>',
'##### Time to Drop Knowledge',
'Use notes to point out some interesting information. ',
'',
'**Tables and lists** both work within a note.',
'</div>'
].join('\n');
},
},
{
name : 'Monster Stat Block',
icon : 'fas fa-bug',
gen : MonsterBlockGen.half,
},
{
name : 'Wide Monster Stat Block',
icon : 'fas fa-paw',
gen : MonsterBlockGen.full,
},
{
name : 'Cover Page',
icon : 'far fa-file-word',
gen : CoverPageGen,
},
{
name : 'Artist Credit',
icon : 'fas fa-signature',
gen : '<div class=\'artist\' style=\'top:90px;right:30px;\'>\n' +
'##### Starry Night\n' +
'[Van Gogh](https://www.vangoghmuseum.nl/en)\n' +
'</div>\n'
},
]
},
/********************* TABLES *********************/
{
groupName : 'Tables',
icon : 'fas fa-table',
view : 'text',
snippets : [
{
name : 'Class Table',
icon : 'fas fa-table',
gen : ClassTableGen.full,
},
{
name : 'Half Class Table',
icon : 'fas fa-list-alt',
gen : ClassTableGen.half,
},
{
name : 'Table',
icon : 'fas fa-th-list',
gen : function(){
return [
'##### Cookie Tastiness',
'| Tastiness | Cookie Type |',
'|:----:|:-------------|',
'| -5 | Raisin |',
'| 8th | Chocolate Chip |',
'| 11th | 2 or lower |',
'| 14th | 3 or lower |',
'| 17th | 4 or lower |\n\n',
].join('\n');
},
},
{
name : 'Wide Table',
icon : 'fas fa-list',
gen : function(){
return [
'<div class=\'wide\'>',
'##### Cookie Tastiness',
'| Tastiness | Cookie Type |',
'|:----:|:-------------|',
'| -5 | Raisin |',
'| 8th | Chocolate Chip |',
'| 11th | 2 or lower |',
'| 14th | 3 or lower |',
'| 17th | 4 or lower |',
'</div>\n\n'
].join('\n');
},
},
{
name : 'Split Table',
icon : 'fas fa-th-large',
gen : dedent`\n
<div style='column-count:2'>
| d10 | Damage Type |
|:---:|:------------|
| 1 | Acid |
| 2 | Cold |
| 3 | Fire |
| 4 | Force |
| 5 | Lightning |
| d10 | Damage Type |
|:---:|:------------|
| 6 | Necrotic |
| 7 | Poison |
| 8 | Psychic |
| 9 | Radiant |
| 10 | Thunder |
</div>
\n`
}
]
},
/**************** PRINT *************/
{
groupName : 'Print',
icon : 'fas fa-print',
view : 'style',
snippets : [
{
name : 'A4 Page Size',
icon : 'far fa-file',
gen : ['/* A4 Page Size */',
'.phb {',
' width : 210mm;',
' height : 296.8mm;',
'}'
].join('\n')
},
{
name : 'Square Page Size',
icon : 'far fa-file',
gen : ['/* Square Page Size */',
'.phb {',
' width : 125mm;',
' height : 125mm;',
' padding : 12.5mm;',
' columns : unset;',
'}',
''
].join('\n')
},
{
name : 'Ink Friendly',
icon : 'fas fa-tint',
gen : dedent`
/* Ink Friendly */
.phb, .phb blockquote, .phb hr+blockquote {
background : white;
box-shadow : 0px 0px 3px;
}
.phb img {
visibility : hidden;
}`
},
]
},
];

View File

@@ -0,0 +1,72 @@
const _ = require('lodash');
const getTOC = (pages)=>{
const add1 = (title, page)=>{
res.push({
title : title,
page : page + 1,
children : []
});
};
const add2 = (title, page)=>{
if(!_.last(res)) add1('', page);
_.last(res).children.push({
title : title,
page : page + 1,
children : []
});
};
const add3 = (title, page)=>{
if(!_.last(res)) add1('', page);
if(!_.last(_.last(res).children)) add2('', page);
_.last(_.last(res).children).children.push({
title : title,
page : page + 1,
children : []
});
};
const res = [];
_.each(pages, (page, pageNum)=>{
const lines = page.split('\n');
_.each(lines, (line)=>{
if(_.startsWith(line, '# ')){
const title = line.replace('# ', '');
add1(title, pageNum);
}
if(_.startsWith(line, '## ')){
const title = line.replace('## ', '');
add2(title, pageNum);
}
if(_.startsWith(line, '### ')){
const title = line.replace('### ', '');
add3(title, pageNum);
}
});
});
return res;
};
module.exports = function(brew){
const pages = brew.text.split('\\page');
const TOC = getTOC(pages);
const markdown = _.reduce(TOC, (r, g1, idx1)=>{
r.push(`- **[${idx1 + 1} ${g1.title}](#p${g1.page})**`);
if(g1.children.length){
_.each(g1.children, (g2, idx2)=>{
r.push(` - [${idx1 + 1}.${idx2 + 1} ${g2.title}](#p${g2.page})`);
if(g2.children.length){
_.each(g2.children, (g3, idx3)=>{
r.push(` - [${idx1 + 1}.${idx2 + 1}.${idx3 + 1} ${g3.title}](#p${g3.page})`);
});
}
});
}
return r;
}, []).join('\n');
return `<div class='toc'>
##### Table Of Contents
${markdown}
</div>\n`;
};

View File

@@ -13,6 +13,7 @@ const NewPage = require('./pages/newPage/newPage.jsx');
const PrintPage = require('./pages/printPage/printPage.jsx');
const Homebrew = createClass({
displayName : 'Homebrewery',
getDefaultProps : function() {
return {
url : '',
@@ -20,6 +21,7 @@ const Homebrew = createClass({
changelog : '',
version : '0.0.0',
account : null,
enable_v3 : false,
brew : {
title : '',
text : '',
@@ -30,11 +32,16 @@ const Homebrew = createClass({
}
};
},
componentWillMount : function() {
getInitialState : function() {
global.account = this.props.account;
global.version = this.props.version;
global.enable_v3 = this.props.enable_v3;
global.config = this.props.config;
return {};
},
render : function (){
return (
<Router location={this.props.url}>
@@ -42,12 +49,15 @@ const Homebrew = createClass({
<Switch>
<Route path='/edit/:id' component={(routeProps)=><EditPage id={routeProps.match.params.id} brew={this.props.brew} />}/>
<Route path='/share/:id' component={(routeProps)=><SharePage id={routeProps.match.params.id} brew={this.props.brew} />}/>
<Route path='/user/:username' component={(routeProps)=><UserPage username={routeProps.match.params.username} brews={this.props.brews} />}/>
<Route path='/print/:id' component={(routeProps)=><PrintPage brew={this.props.brew} query={queryString.parse(routeProps.location.search)} /> } />
<Route path='/print' exact component={(routeProps)=><PrintPage query={queryString.parse(routeProps.location.search)} /> } />
<Route path='/new' exact component={NewPage}/>
<Route path='/changelog' exact component={()=><SharePage brew={{ title: 'Changelog', text: this.props.changelog }} />}/>
<Route path='/' component={()=><HomePage welcomeText={this.props.welcomeText}/>}/>
<Route path='/new/:id' component={(routeProps)=><NewPage id={routeProps.match.params.id} brew={this.props.brew} />}/>
<Route path='/new' exact component={(routeProps)=><NewPage />}/>
<Route path='/user/:username' component={(routeProps)=><UserPage username={routeProps.match.params.username} brews={this.props.brews} query={queryString.parse(routeProps.location.search)}/>}/>
<Route path='/print/:id' component={(routeProps)=><PrintPage brew={this.props.brew} query={queryString.parse(routeProps.location.search)} />}/>
<Route path='/print' exact component={(routeProps)=><PrintPage query={queryString.parse(routeProps.location.search)} />}/>
<Route path='/changelog' exact component={()=><SharePage brew={this.props.brew} />}/>
<Route path='/faq' exact component={()=><SharePage brew={this.props.brew} />}/>
<Route path='/v3_preview' exact component={()=><HomePage brew={this.props.brew} />}/>
<Route path='/' component={()=><HomePage brew={this.props.brew} />}/>
</Switch>
</div>
</Router>

View File

@@ -1,7 +1,7 @@
@import 'naturalcrit/styles/core.less';
.homebrew{
height : 100%;
.page{
.sitePage{
display : flex;
height : 100%;
background-color : @steel;

View File

@@ -1,9 +1,10 @@
const React = require('react');
const createClass = require('create-react-class');
const Nav = require('naturalcrit/nav/nav.jsx');
const request = require('superagent');
const Account = createClass({
displayName : 'AccountNavItem',
getInitialState : function() {
return {
url : ''
@@ -18,14 +19,85 @@ const Account = createClass({
}
},
handleLogout : function(){
if(confirm('Are you sure you want to log out?')) {
// Reset divider position
window.localStorage.removeItem('naturalcrit-pane-split');
// Clear login cookie
let domain = '';
if(window.location?.hostname) {
let domainArray = window.location.hostname.split('.');
if(domainArray.length > 2){
domainArray = [''].concat(domainArray.slice(-2));
}
domain = domainArray.join('.');
}
document.cookie = `nc_session=;expires=Thu, 01 Jan 1970 00:00:01 GMT;path=/;samesite=lax;${domain ? `domain=${domain}` : ''}`;
window.location = '/';
}
},
localLogin : async function(){
const username = prompt('Enter username:');
if(!username) {return;}
const expiry = new Date;
expiry.setFullYear(expiry.getFullYear() + 1);
const token = await request.post('/local/login')
.send({ username })
.then((response)=>{
return response.body;
})
.catch((err)=>{
console.warn(err);
});
if(!token) return;
document.cookie = `nc_session=${token};expires=${expiry};path=/;samesite=lax;${window.domain ? `domain=${window.domain}` : ''}`;
window.location.reload(true);
},
render : function(){
// Logged in
if(global.account){
return <Nav.item href={`/user/${global.account.username}`} color='yellow' icon='fa-user'>
{global.account.username}
</Nav.item>;
return <Nav.dropdown>
<Nav.item
className='account'
color='orange'
icon='fas fa-user'
>
{global.account.username}
</Nav.item>
<Nav.item
href={`/user/${global.account.username}`}
color='yellow'
icon='fas fa-beer'
>
brews
</Nav.item>
<Nav.item
className='logout'
color='red'
icon='fas fa-power-off'
onClick={this.handleLogout}
>
logout
</Nav.item>
</Nav.dropdown>;
}
return <Nav.item href={`http://naturalcrit.com/login?redirect=${this.state.url}`} color='teal' icon='fa-sign-in'>
// Logged out
// LOCAL ONLY
if(global.config.local) {
return <Nav.item color='teal' icon='fas fa-sign-in-alt' onClick={this.localLogin}>
login
</Nav.item>;
};
// Logged out
// Production site
return <Nav.item href={`https://www.naturalcrit.com/login?redirect=${this.state.url}`} color='teal' icon='fas fa-sign-in-alt'>
login
</Nav.item>;
}

View File

@@ -7,6 +7,7 @@ const MAX_TITLE_LENGTH = 50;
const EditTitle = createClass({
displayName : 'EditTitleNavItem',
getDefaultProps : function() {
return {
title : '',

View File

@@ -0,0 +1,30 @@
const React = require('react');
const createClass = require('create-react-class');
const _ = require('lodash');
const dedent = require('dedent-tabs').default;
const Nav = require('naturalcrit/nav/nav.jsx');
module.exports = function(props){
return <Nav.dropdown>
<Nav.item color='grey' icon='fas fa-question-circle'>
need help?
</Nav.item>
<Nav.item color='red' icon='fas fa-fw fa-bug'
href={`https://www.reddit.com/r/homebrewery/submit?selftext=true&text=${encodeURIComponent(dedent`
**Browser(s)** :
**Operating System** :
**Legacy or v3 Renderer** :
**Issue** : `)}`}
newTab={true}
rel='noopener noreferrer'>
report issue
</Nav.item>
<Nav.item color='blue' icon='fas fa-fw fa-file-import'
href='/migrate'
newTab={true}
rel='noopener noreferrer'>
migrate
</Nav.item>
</Nav.dropdown>;
};

View File

@@ -1,13 +0,0 @@
const React = require('react');
const createClass = require('create-react-class');
const Nav = require('naturalcrit/nav/nav.jsx');
module.exports = function(props){
return <Nav.item
newTab={true}
color='red'
icon='fa-bug'
href={`https://www.reddit.com/r/homebrewery/submit?selftext=true&title=${encodeURIComponent('[Issue] Describe Your Issue Here')}`} >
report issue
</Nav.item>;
};

View File

@@ -6,6 +6,7 @@ const Nav = require('naturalcrit/nav/nav.jsx');
const PatreonNavItem = require('./patreon.navitem.jsx');
const Navbar = createClass({
displayName : 'Navbar',
getInitialState : function() {
return {
//showNonChromeWarning : false,
@@ -13,12 +14,10 @@ const Navbar = createClass({
};
},
componentDidMount : function() {
//const isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
this.setState({
//showNonChromeWarning : !isChrome,
ver : window.version
});
getInitialState : function() {
return {
ver : global.version
};
},
/*
@@ -39,7 +38,9 @@ const Navbar = createClass({
<Nav.item href='/' className='homebrewLogo'>
<div>The Homebrewery</div>
</Nav.item>
<Nav.item>{`v${this.state.ver}`}</Nav.item>
<Nav.item newTab={true} href='/changelog' color='purple' icon='far fa-file-alt'>
{`v${this.state.ver}`}
</Nav.item>
<PatreonNavItem />
{/*this.renderChromeWarning()*/}
</Nav.section>

View File

@@ -1,5 +1,6 @@
@import 'naturalcrit/styles/colors.less';
@navbarHeight : 28px;
@keyframes coloring {
@keyframes pinkColoring {
//from {color: white;}
//to {color: red;}
0% {color: pink;}
@@ -62,19 +63,21 @@
}
i{
.animate(color);
animation-name: coloring;
animation-name: pinkColoring;
animation-duration: 2s;
color: pink;
}
}
.recent.navItem{
.recent.navItem {
position : relative;
.dropdown{
position : absolute;
top : 28px;
left : 0px;
z-index : 10000;
width : 100%;
position : absolute;
top : 28px;
left : 0px;
z-index : 10000;
width : 100%;
overflow : hidden auto;
max-height : ~"calc(100vh - 28px)";
h4{
display : block;
box-sizing : border-box;
@@ -88,11 +91,12 @@
&:nth-of-type(2){ background-color: darken(@purple, 30%); }
}
.item{
#backgroundColors;
.animate(background-color);
position : relative;
display : block;
box-sizing : border-box;
padding : 13px 5px;
padding : 8px 5px 13px;
background-color : #333;
color : white;
text-decoration : none;
@@ -138,4 +142,7 @@
text-align : center;
}
}
.account.navItem{
min-width: 100px;
}
}

View File

@@ -0,0 +1,11 @@
const React = require('react');
const Nav = require('naturalcrit/nav/nav.jsx');
module.exports = function(props){
return <Nav.item
href='/new'
color='purple'
icon='fas fa-plus-square'>
new
</Nav.item>;
};

View File

@@ -1,5 +1,4 @@
const React = require('react');
const createClass = require('create-react-class');
const Nav = require('naturalcrit/nav/nav.jsx');
module.exports = function(props){
@@ -8,7 +7,7 @@ module.exports = function(props){
newTab={true}
href='https://www.patreon.com/NaturalCrit'
color='green'
icon='fa-heart'>
icon='fas fa-heart'>
help out
</Nav.item>;
};

View File

@@ -3,7 +3,7 @@ const createClass = require('create-react-class');
const Nav = require('naturalcrit/nav/nav.jsx');
module.exports = function(props){
return <Nav.item newTab={true} href={`/print/${props.shareId}?dialog=true`} color='purple' icon='fa-file-pdf-o'>
return <Nav.item newTab={true} href={`/print/${props.shareId}?dialog=true`} color='purple' icon='far fa-file-pdf'>
get PDF
</Nav.item>;
};
};

View File

@@ -10,7 +10,7 @@ const VIEW_KEY = 'homebrewery-recently-viewed';
const RecentItems = createClass({
DisplayName : 'RecentItems',
getDefaultProps : function() {
return {
storageKey : '',
@@ -80,7 +80,8 @@ const RecentItems = createClass({
componentDidUpdate : function(prevProps) {
if(prevProps.brew && this.props.brew.editId !== prevProps.brew.editId) {
if(this.props.storageKey == 'edit') {
let edited = JSON.parse(localStorage.getItem(EDIT_KEY) || '[]');
if(this.props.storageKey == 'edit') {
let prevEditId = prevProps.brew.editId;
if(prevProps.brew.googleId){
prevEditId = `${prevProps.brew.googleId}${prevProps.brew.editId}`;
@@ -122,8 +123,8 @@ const RecentItems = createClass({
if(!this.state.showDropdown) return null;
const makeItems = (brews)=>{
return _.map(brews, (brew)=>{
return <a href={brew.url} className='item' key={brew.id} target='_blank' rel='noopener noreferrer'>
return _.map(brews, (brew, i)=>{
return <a href={brew.url} className='item' key={`${brew.id}-${i}`} target='_blank' rel='noopener noreferrer' title={brew.title || '[ no title ]'}>
<span className='title'>{brew.title || '[ no title ]'}</span>
<span className='time'>{Moment(brew.ts).fromNow()}</span>
</a>;
@@ -143,7 +144,7 @@ const RecentItems = createClass({
},
render : function(){
return <Nav.item icon='fa-clock-o' color='grey' className='recent'
return <Nav.item icon='fas fa-history' color='grey' className='recent'
onMouseEnter={()=>this.handleDropdown(true)}
onMouseLeave={()=>this.handleDropdown(false)}>
{this.props.text}

View File

@@ -8,6 +8,7 @@ const MAIN_URL = 'https://www.reddit.com/r/UnearthedArcana/submit?selftext=true'
const RedditShare = createClass({
displayName : 'RedditShareNavItem',
getDefaultProps : function() {
return {
brew : {

View File

@@ -6,9 +6,11 @@ const cx = require('classnames');
const moment = require('moment');
const request = require('superagent');
const googleDriveIcon = require('../../../googleDrive.png');
const googleDriveIcon = require('../../../../googleDrive.png');
const dedent = require('dedent-tabs').default;
const BrewItem = createClass({
displayName : 'BrewItem',
getDefaultProps : function() {
return {
brew : {
@@ -29,26 +31,18 @@ const BrewItem = createClass({
if(!confirm('Are you REALLY sure? You will lose editor access to this document.')) return;
}
if(this.props.brew.googleId) {
request.get(`/api/removeGoogle/${this.props.brew.googleId}${this.props.brew.editId}`)
.send()
.end(function(err, res){
location.reload();
});
} else {
request.delete(`/api/${this.props.brew.editId}`)
.send()
.end(function(err, res){
location.reload();
});
}
request.delete(`/api/${this.props.brew.googleId ?? ''}${this.props.brew.editId}`)
.send()
.end(function(err, res){
location.reload();
});
},
renderDeleteBrewLink : function(){
if(!this.props.brew.editId) return;
return <a onClick={this.deleteBrew}>
<i className='fa fa-trash' />
return <a className='deleteLink' onClick={this.deleteBrew}>
<i className='fas fa-trash-alt' title='Delete' />
</a>;
},
@@ -60,8 +54,8 @@ const BrewItem = createClass({
editLink = this.props.brew.googleId + editLink;
}
return <a href={`/edit/${editLink}`} target='_blank' rel='noopener noreferrer'>
<i className='fa fa-pencil' />
return <a className='editLink' href={`/edit/${editLink}`} target='_blank' rel='noopener noreferrer'>
<i className='fas fa-pencil-alt' title='Edit' />
</a>;
},
@@ -73,8 +67,21 @@ const BrewItem = createClass({
shareLink = this.props.brew.googleId + shareLink;
}
return <a href={`/share/${shareLink}`} target='_blank' rel='noopener noreferrer'>
<i className='fa fa-share-alt' />
return <a className='shareLink' href={`/share/${shareLink}`} target='_blank' rel='noopener noreferrer'>
<i className='fas fa-share-alt' title='Share' />
</a>;
},
renderDownloadLink : function(){
if(!this.props.brew.shareId) return;
let shareLink = this.props.brew.shareId;
if(this.props.brew.googleId) {
shareLink = this.props.brew.googleId + shareLink;
}
return <a className='downloadLink' href={`/download/${shareLink}`}>
<i className='fas fa-download' title='Download' />
</a>;
},
@@ -88,20 +95,31 @@ const BrewItem = createClass({
render : function(){
const brew = this.props.brew;
return <div className='brewItem'>
<h2>{brew.title}</h2>
<p className='description' >{brew.description}</p>
<hr />
const dateFormatString = 'YYYY-MM-DD HH:mm:ss';
return <div className='brewItem'>
<div className='text'>
<h2>{brew.title}</h2>
<p className='description'>{brew.description}</p>
</div>
<hr />
<div className='info'>
<span>
<i className='fa fa-user' /> {brew.authors.join(', ')}
<span title={`Authors:\n${brew.authors.join('\n')}`}>
<i className='fas fa-user'/> {brew.authors.join(', ')}
</span>
<span>
<i className='fa fa-eye' /> {brew.views}
<br />
<span title={`Last viewed: ${moment(brew.lastViewed).local().format(dateFormatString)}`}>
<i className='fas fa-eye'/> {brew.views}
</span>
<span>
<i className='fa fa-refresh' /> {moment(brew.updatedAt).fromNow()}
{brew.pageCount &&
<span title={`Page count: ${brew.pageCount}`}>
<i className='far fa-file' /> {brew.pageCount}
</span>
}
<span title={dedent`
Created: ${moment(brew.createdAt).local().format(dateFormatString)}
Last updated: ${moment(brew.updatedAt).local().format(dateFormatString)}`}>
<i className='fas fa-sync-alt' /> {moment(brew.updatedAt).fromNow()}
</span>
{this.renderGoogleDriveIcon()}
</div>
@@ -109,6 +127,7 @@ const BrewItem = createClass({
<div className='links'>
{this.renderShareLink()}
{this.renderEditLink()}
{this.renderDownloadLink()}
{this.renderDeleteBrewLink()}
</div>
</div>;

View File

@@ -7,25 +7,33 @@
box-sizing : border-box;
overflow : hidden;
width : 48%;
min-height : 80px;
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;
box-shadow : 0px 4px 5px 0px #333;
background-color : #cab2802e;
.text {
min-height : 54px;
h4{
margin-bottom : 5px;
font-size : 2.2em;
}
}
.info{
position: initial;
bottom: 2px;
font-family : ScalySans;
font-size : 1.2em;
&>span{
margin-right : 12px;
line-height : 1.5em;
}
}
&:hover{

View File

@@ -0,0 +1,177 @@
require('./listPage.less');
const React = require('react');
const createClass = require('create-react-class');
const _ = require('lodash');
const moment = require('moment');
const BrewItem = require('./brewItem/brewItem.jsx');
const ListPage = createClass({
displayName : 'ListPage',
getDefaultProps : function() {
return {
brewCollection : [
{
title : '',
class : '',
brews : []
}
],
navItems : <></>
};
},
getInitialState : function() {
return {
sortType : 'alpha',
sortDir : 'asc',
filterString : this.props.query?.filter || '',
query : this.props.query
};
},
renderBrews : function(brews){
if(!brews || !brews.length) return <div className='noBrews'>No Brews.</div>;
return _.map(brews, (brew, idx)=>{
return <BrewItem brew={brew} key={idx}/>;
});
},
sortBrewOrder : function(brew){
if(!brew.title){brew.title = 'No Title';}
const mapping = {
'alpha' : _.deburr(brew.title.toLowerCase()),
'created' : moment(brew.createdAt).format(),
'updated' : moment(brew.updatedAt).format(),
'views' : brew.views,
'latest' : moment(brew.lastViewed).format()
};
return mapping[this.state.sortType];
},
handleSortOptionChange : function(event){
this.setState({
sortType : event.target.value
});
},
handleSortDirChange : function(event){
this.setState({
sortDir : `${(this.state.sortDir == 'asc' ? 'desc' : 'asc')}`
});
},
renderSortOption : function(sortTitle, sortValue){
return <td>
<button
value={`${sortValue}`}
onClick={this.handleSortOptionChange}
className={`${(this.state.sortType == sortValue ? 'active' : '')}`}
>
{`${sortTitle}`}
</button>
</td>;
},
handleFilterTextChange : function(e){
this.setState({
filterString : e.target.value,
});
this.updateUrl(e.target.value);
return;
},
updateUrl : function(filterTerm){
const url = new URL(window.location.href);
const urlParams = new URLSearchParams(url.search);
if(urlParams.get('filter') == filterTerm)
return;
if(!filterTerm)
urlParams.delete('filter');
else
urlParams.set('filter', filterTerm);
url.search = urlParams;
window.history.replaceState(null, null, url);
},
renderFilterOption : function(){
return <td>
<label>
<i className='fas fa-search'></i>
<input
type='search'
autoFocus={true}
placeholder='filter title/description'
onChange={this.handleFilterTextChange}
value={this.state.filterString}
/>
</label>
</td>;
},
renderSortOptions : function(){
return <div className='sort-container'>
<table>
<tbody>
<tr>
<td>
<h6>Sort by :</h6>
</td>
{this.renderSortOption('Title', 'alpha')}
{this.renderSortOption('Created Date', 'created')}
{this.renderSortOption('Updated Date', 'updated')}
{this.renderSortOption('Views', 'views')}
{/* {this.renderSortOption('Latest', 'latest')} */}
<td>
<h6>Direction :</h6>
</td>
<td>
<button
onClick={this.handleSortDirChange}
className='sortDir'
>
{`${(this.state.sortDir == 'asc' ? '\u25B2 ASC' : '\u25BC DESC')}`}
</button>
</td>
{this.renderFilterOption()}
</tr>
</tbody>
</table>
</div>;
},
getSortedBrews : function(brews){
const testString = _.deburr(this.state.filterString).toLowerCase();
brews = _.filter(brews, (brew)=>{
return (_.deburr(brew.title).toLowerCase().includes(testString)) ||
(_.deburr(brew.description).toLowerCase().includes(testString));
});
return _.orderBy(brews, (brew)=>{ return this.sortBrewOrder(brew); }, this.state.sortDir);
},
renderBrewCollection : function(brewCollection){
return _.map(brewCollection, (brewGroup, idx)=>{
return <div key={idx} className={`brewCollection ${brewGroup.class ?? ''}`}>
<h1>{brewGroup.title || 'No Title'}</h1>
{this.renderBrews(this.getSortedBrews(brewGroup.brews))}
</div>;
});
},
render : function(){
return <div className='listPage sitePage'>
<link href='/themes/5ePhbLegacy.style.css' rel='stylesheet'/>
{this.props.navItems}
<div className='content V3'>
<div className='phb'>
{this.renderSortOptions()}
{this.renderBrewCollection(this.props.brewCollection)}
</div>
</div>
</div>;
}
});
module.exports = ListPage;

View File

@@ -0,0 +1,77 @@
.noColumns(){
column-count : auto;
column-fill : auto;
column-gap : auto;
column-width : auto;
-webkit-column-count : auto;
-moz-column-count : auto;
-webkit-column-width : auto;
-moz-column-width : auto;
-webkit-column-gap : auto;
-moz-column-gap : auto;
}
.listPage{
.content{
overflow-y : scroll;
.phb{
.noColumns();
height : auto;
min-height : 279.4mm;
margin : 20px auto;
&::after{
display : none;
}
.noBrews{
margin : 10px 0px;
font-size : 1.3em;
font-style : italic;
}
}
}
.sort-container{
font-family : 'Open Sans', sans-serif;
position : fixed;
top : 35px;
left : calc(50vw - 408px);
border : 2px solid #58180D;
width : 800px;
background-color : #EEE5CE;
padding : 2px;
text-align : center;
z-index : 15;
h6{
text-transform : uppercase;
font-family : 'Open Sans', sans-serif;
font-size : 11px;
font-weight : bold;
color : #58180D;
}
table{
margin : 0px;
vertical-align : middle;
tbody tr{
background-color: transparent !important;
i{
padding-right : 5px
}
button{
background-color : transparent;
color : #58180D;
font-family : 'Open Sans', sans-serif;
font-size : 11px;
text-transform : uppercase;
font-weight : normal;
&.active{
font-weight : bold;
border : 2px solid #58180D;
}
&.sortDir{
width : 75px;
}
}
}
}
}
}

View File

@@ -9,7 +9,8 @@ const { Meta } = require('vitreum/headtags');
const Nav = require('naturalcrit/nav/nav.jsx');
const Navbar = require('../../navbar/navbar.jsx');
const ReportIssue = require('../../navbar/issue.navitem.jsx');
const NewBrew = require('../../navbar/newbrew.navitem.jsx');
const HelpNavItem = require('../../navbar/help.navitem.jsx');
const PrintLink = require('../../navbar/print.navitem.jsx');
const Account = require('../../navbar/account.navitem.jsx');
const RecentNavItem = require('../../navbar/recent.navitem.jsx').both;
@@ -26,37 +27,42 @@ const googleDriveInactive = require('../../googleDriveMono.png');
const SAVE_TIMEOUT = 3000;
const EditPage = createClass({
displayName : 'EditPage',
getDefaultProps : function() {
return {
brew : {
text : '',
style : '',
shareId : null,
editId : null,
createdAt : null,
updatedAt : null,
gDrive : false,
trashed : false,
title : '',
description : '',
tags : '',
published : false,
authors : [],
systems : []
systems : [],
renderer : 'legacy'
}
};
},
getInitialState : function() {
return {
brew : this.props.brew,
isSaving : false,
isPending : false,
saveGoogle : this.props.brew.googleId ? true : false,
confirmGoogleTransfer : false,
errors : null,
htmlErrors : Markdown.validate(this.props.brew.text),
url : ''
brew : this.props.brew,
isSaving : false,
isPending : false,
alertTrashedGoogleBrew : this.props.brew.trashed,
alertLoginToTransfer : false,
saveGoogle : this.props.brew.googleId ? true : false,
confirmGoogleTransfer : false,
errors : null,
htmlErrors : Markdown.validate(this.props.brew.text),
url : ''
};
},
savedBrew : null,
@@ -66,6 +72,8 @@ const EditPage = createClass({
url : window.location.href
});
this.savedBrew = JSON.parse(JSON.stringify(this.props.brew)); //Deep copy
this.trySave();
window.onbeforeunload = ()=>{
if(this.state.isSaving || this.state.isPending){
@@ -100,17 +108,8 @@ const EditPage = createClass({
this.refs.editor.update();
},
handleMetadataChange : function(metadata){
this.setState((prevState)=>({
brew : _.merge({}, prevState.brew, metadata),
isPending : true,
}), ()=>this.trySave());
},
handleTextChange : function(text){
//If there are errors, run the validator on everychange to give quick feedback
//If there are errors, run the validator on every change to give quick feedback
let htmlErrors = this.state.htmlErrors;
if(htmlErrors.length) htmlErrors = Markdown.validate(text);
@@ -121,9 +120,23 @@ const EditPage = createClass({
}), ()=>this.trySave());
},
handleStyleChange : function(style){
this.setState((prevState)=>({
brew : _.merge({}, prevState.brew, { style: style }),
isPending : true
}), ()=>this.trySave());
},
handleMetaChange : function(metadata){
this.setState((prevState)=>({
brew : _.merge({}, prevState.brew, metadata),
isPending : true,
}), ()=>this.trySave());
},
hasChanges : function(){
const savedBrew = this.savedBrew ? this.savedBrew : this.props.brew;
return !_.isEqual(this.state.brew, savedBrew);
return !_.isEqual(this.state.brew, this.savedBrew);
},
trySave : function(){
@@ -136,12 +149,27 @@ const EditPage = createClass({
},
handleGoogleClick : function(){
if(!global.account?.googleId) {
this.setState({
alertLoginToTransfer : true
});
return;
}
this.setState((prevState)=>({
confirmGoogleTransfer : !prevState.confirmGoogleTransfer
}));
this.clearErrors();
},
closeAlerts : function(event){
event.stopPropagation(); //Only handle click once so alert doesn't reopen
this.setState({
alertTrashedGoogleBrew : false,
alertLoginToTransfer : false,
confirmGoogleTransfer : false
});
},
toggleGoogleStorage : function(){
this.setState((prevState)=>({
saveGoogle : !prevState.saveGoogle,
@@ -169,73 +197,21 @@ const EditPage = createClass({
const transfer = this.state.saveGoogle == _.isNil(this.state.brew.googleId);
if(this.state.saveGoogle) {
if(transfer) {
const res = await request
.post('/api/newGoogle/')
.send(this.state.brew)
.catch((err)=>{
console.log(err.status === 401
? 'Not signed in!'
: 'Error Saving to Google!');
this.setState({ errors: err, saveGoogle: false });
});
const brew = this.state.brew;
brew.pageCount = ((brew.renderer=='legacy' ? brew.text.match(/\\page/g) : brew.text.match(/^\\page$/gm)) || []).length + 1;
if(!res) { return; }
const params = `${transfer ? `?transfer${this.state.saveGoogle ? 'To' : 'From'}Google=true` : ''}`;
const res = await request
.put(`/api/update/${brew.editId}${params}`)
.send(brew)
.catch((err)=>{
console.log('Error Updating Local Brew');
this.setState({ errors: err });
});
console.log('Deleting Local Copy');
await request.delete(`/api/${this.state.brew.editId}`)
.send()
.catch((err)=>{
console.log('Error deleting Local Copy');
});
this.savedBrew = res.body;
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)
.catch((err)=>{
console.log(err.status === 401
? 'Not signed in!'
: 'Error Saving to Google!');
this.setState({ errors: err, saveGoogle: false });
return;
});
this.savedBrew = res.body;
}
} else {
if(transfer) {
const res = await request.post('/api')
.send(this.state.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}`)
.send()
.catch((err)=>{
console.log('Error Deleting Google Brew');
});
this.savedBrew = res.body;
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)
.catch((err)=>{
console.log('Error Updating Local Brew');
this.setState({ errors: err });
return;
});
this.savedBrew = res.body;
}
this.savedBrew = res.body;
if(transfer) {
history.replaceState(null, null, `/edit/${this.savedBrew.googleId ?? ''}${this.savedBrew.editId}`);
}
this.setState((prevState)=>({
@@ -250,39 +226,44 @@ const EditPage = createClass({
},
renderGoogleDriveIcon : function(){
if(this.state.saveGoogle) {
return <Nav.item className='googleDriveStorage' onClick={this.handleGoogleClick}>
<img src={googleDriveActive} alt='googleDriveActive' />
return <Nav.item className='googleDriveStorage' onClick={this.handleGoogleClick}>
{this.state.saveGoogle
? <img src={googleDriveActive} alt='googleDriveActive'/>
: <img src={googleDriveInactive} alt='googleDriveInactive'/>
}
{this.state.confirmGoogleTransfer &&
<div className='errorContainer'>
Would you like to transfer this brew from your Google Drive storage back to the Homebrewery?<br />
<div className='confirm' onClick={this.toggleGoogleStorage}>
Yes
</div>
<div className='deny'>
No
</div>
{this.state.confirmGoogleTransfer &&
<div className='errorContainer' onClick={this.closeAlerts}>
{ this.state.saveGoogle
? `Would you like to transfer this brew from your Google Drive storage back to the Homebrewery?`
: `Would you like to transfer this brew from the Homebrewery to your personal Google Drive storage?`
}
<br />
<div className='confirm' onClick={this.toggleGoogleStorage}>
Yes
</div>
}
</Nav.item>;
} else {
return <Nav.item className='googleDriveStorage' onClick={this.handleGoogleClick}>
<img src={googleDriveInactive} alt='googleDriveInactive' />
<div className='deny'>
No
</div>
</div>
}
{this.state.confirmGoogleTransfer &&
<div className='errorContainer'>
Would you like to transfer this brew from the Homebrewery to your personal Google Drive storage?<br />
<div className='confirm' onClick={this.toggleGoogleStorage}>
Yes
</div>
<div className='deny'>
No
{this.state.alertLoginToTransfer &&
<div className='errorContainer' onClick={this.closeAlerts}>
You must be signed in to a Google account to transfer
between the homebrewery and Google Drive!
<a target='_blank' rel='noopener noreferrer'
href={`https://www.naturalcrit.com/login?redirect=${this.state.url}`}>
<div className='confirm'>
Sign In
</div>
</a>
<div className='deny'>
Not Now
</div>
}
</Nav.item>;
}
</div>
}
</Nav.item>;
},
renderSaveButton : function(){
@@ -290,18 +271,41 @@ const EditPage = createClass({
let errMsg = '';
try {
errMsg += `${this.state.errors.toString()}\n\n`;
errMsg += `\`\`\`\n${JSON.stringify(this.state.errors.response.error, null, ' ')}\n\`\`\``;
errMsg += `\`\`\`\n${this.state.errors.stack}\n`;
errMsg += `${JSON.stringify(this.state.errors.response.error, null, ' ')}\n\`\`\``;
console.log(errMsg);
} catch (e){}
if(this.state.errors.status == '401'){
return <Nav.item className='save error' icon='fa-warning'>
// if(this.state.errors.status == '401'){
// return <Nav.item className='save error' icon='fas fa-exclamation-triangle'>
// Oops!
// <div className='errorContainer' onClick={this.clearErrors}>
// You must be signed in to a Google account
// to save this to<br />Google Drive!<br />
// <a target='_blank' rel='noopener noreferrer'
// href={`https://www.naturalcrit.com/login?redirect=${this.state.url}`}>
// <div className='confirm'>
// Sign In
// </div>
// </a>
// <div className='deny'>
// Not Now
// </div>
// </div>
// </Nav.item>;
// }
if(this.state.errors.response.req.url.match(/^\/api.*Google.*$/m)){
return <Nav.item className='save error' icon='fas fa-exclamation-triangle'>
Oops!
<div className='errorContainer' onClick={this.clearErrors}>
You must be signed in to a Google account
to save this to<br />Google Drive!<br />
Looks like your Google credentials have
expired! Visit our log in page to sign out
and sign back in with Google,
then try saving again!
<a target='_blank' rel='noopener noreferrer'
href={`http://naturalcrit.com/login?redirect=${this.state.url}`}>
<div className='confirm' onClick={this.toggleGoogleStorage}>
href={`https://www.naturalcrit.com/login?redirect=${this.state.url}`}>
<div className='confirm'>
Sign In
</div>
</a>
@@ -312,12 +316,12 @@ const EditPage = createClass({
</Nav.item>;
}
return <Nav.item className='save error' icon='fa-warning'>
return <Nav.item className='save error' icon='fas fa-exclamation-triangle'>
Oops!
<div className='errorContainer'>
Looks like there was a problem saving. <br />
Report the issue <a target='_blank' rel='noopener noreferrer'
href={`https://github.com/naturalcrt/naturalcrit/issues/new?body=${encodeURIComponent(errMsg)}`}>
href={`https://github.com/naturalcrit/homebrewery/issues/new?body=${encodeURIComponent(errMsg)}`}>
here
</a>.
</div>
@@ -325,10 +329,10 @@ const EditPage = createClass({
}
if(this.state.isSaving){
return <Nav.item className='save' icon='fa-spinner fa-spin'>saving...</Nav.item>;
return <Nav.item className='save' icon='fas fa-spinner fa-spin'>saving...</Nav.item>;
}
if(this.state.isPending && this.hasChanges()){
return <Nav.item className='save' onClick={this.save} color='blue' icon='fa-save'>Save Now</Nav.item>;
return <Nav.item className='save' onClick={this.save} color='blue' icon='fas fa-save'>Save Now</Nav.item>;
}
if(!this.state.isPending && !this.state.isSaving){
return <Nav.item className='save saved'>saved.</Nav.item>;
@@ -341,8 +345,32 @@ const EditPage = createClass({
this.state.brew.shareId;
},
getRedditLink : function(){
const shareLink = this.processShareId();
const systems = this.props.brew.systems.length > 0 ? ` [${this.props.brew.systems.join(' - ')}]` : '';
const title = `${this.props.brew.title} ${systems}`;
const text = `Hey guys! I've been working on this homebrew. I'd love your feedback. Check it out.
**[Homebrewery Link](${global.config.publicUrl}/share/${shareLink})**`;
return `https://www.reddit.com/r/UnearthedArcana/submit?title=${encodeURIComponent(title)}&text=${encodeURIComponent(text)}`;
},
renderNavbar : function(){
const shareLink = this.processShareId();
return <Navbar>
{this.state.alertTrashedGoogleBrew &&
<div className='errorContainer' onClick={this.closeAlerts}>
This brew is currently in your Trash folder on Google Drive!<br />If you want to keep it, make sure to move it before it is deleted permanently!<br />
<div className='confirm'>
OK
</div>
</div>
}
<Nav.section>
<Nav.item className='brewTitle'>{this.state.brew.title}</Nav.item>
</Nav.section>
@@ -350,19 +378,32 @@ const EditPage = createClass({
<Nav.section>
{this.renderGoogleDriveIcon()}
{this.renderSaveButton()}
<ReportIssue />
<Nav.item newTab={true} href={`/share/${this.processShareId()}`} color='teal' icon='fa-share-alt'>
Share
</Nav.item>
<NewBrew />
<HelpNavItem/>
<Nav.dropdown>
<Nav.item color='teal' icon='fas fa-share-alt'>
share
</Nav.item>
<Nav.item color='blue' href={`/share/${shareLink}`}>
view
</Nav.item>
<Nav.item color='blue' onClick={()=>{navigator.clipboard.writeText(`${global.config.publicUrl}/share/${shareLink}`);}}>
copy url
</Nav.item>
<Nav.item color='blue' href={this.getRedditLink()} newTab={true} rel='noopener noreferrer'>
post to reddit
</Nav.item>
</Nav.dropdown>
<PrintLink shareId={this.processShareId()} />
<RecentNavItem brew={this.state.brew} storageKey='edit' />
<Account />
</Nav.section>
</Navbar>;
},
render : function(){
return <div className='editPage page'>
return <div className='editPage sitePage'>
<Meta name='robots' content='noindex, nofollow' />
{this.renderNavbar()}
@@ -370,12 +411,13 @@ const EditPage = createClass({
<SplitPane onDragFinish={this.handleSplitMove} ref='pane'>
<Editor
ref='editor'
value={this.state.brew.text}
onChange={this.handleTextChange}
metadata={this.state.brew}
onMetadataChange={this.handleMetadataChange}
brew={this.state.brew}
onTextChange={this.handleTextChange}
onStyleChange={this.handleStyleChange}
onMetaChange={this.handleMetaChange}
renderer={this.state.brew.renderer}
/>
<BrewRenderer text={this.state.brew.text} errors={this.state.htmlErrors} />
<BrewRenderer text={this.state.brew.text} style={this.state.brew.style} renderer={this.state.brew.renderer} errors={this.state.htmlErrors} />
</SplitPane>
</div>
</div>;

View File

@@ -1,8 +1,14 @@
@keyframes glideDown {
0% {transform : translate(-50% + 3px, 0px);
opacity : 0;}
100% {transform : translate(-50% + 3px, 10px);
opacity : 1;}
}
.editPage{
.navItem.save{
width : 106px;
text-align : center;
position : relative;
&.saved{
cursor : initial;
color : #666;
@@ -21,17 +27,23 @@
margin : -5px;
}
.errorContainer{
animation-name: glideDown;
animation-duration: 0.4s;
position : absolute;
top : 100%;
left : 50%;
z-index : 1000;
z-index : 100000;
width : 140px;
padding : 3px;
color : white;
background-color : #333;
border : 3px solid #444;
border-radius : 5px;
transform : translate(-50% + 3px, 10px);
text-align : center;
font-size : 10px;
font-weight : 800;
text-transform : uppercase;
a{
color : @teal;
}

View File

@@ -7,8 +7,8 @@ const cx = require('classnames');
const Nav = require('naturalcrit/nav/nav.jsx');
const Navbar = require('../../navbar/navbar.jsx');
const PatreonNavItem = require('../../navbar/patreon.navitem.jsx');
const IssueNavItem = require('../../navbar/issue.navitem.jsx');
const RecentNavItem = require('../../navbar/recent.navitem.jsx').both;
const HelpNavItem = require('../../navbar/help.navitem.jsx');
const BrewRenderer = require('../../brewRenderer/brewRenderer.jsx');
@@ -23,7 +23,7 @@ const ErrorPage = createClass({
text : '# Oops \n We could not find a brew with that id. **Sorry!**',
render : function(){
return <div className='errorPage page'>
return <div className='errorPage sitePage'>
<Navbar ver={this.props.ver}>
<Nav.section>
<Nav.item className='errorTitle'>
@@ -33,7 +33,7 @@ const ErrorPage = createClass({
<Nav.section>
<PatreonNavItem />
<IssueNavItem />
<HelpNavItem />
<RecentNavItem />
</Nav.section>
</Navbar>

View File

@@ -1,13 +1,15 @@
require('./homePage.less');
const React = require('react');
const createClass = require('create-react-class');
const _ = require('lodash');
const cx = require('classnames');
const request = require('superagent');
const { Meta } = require('vitreum/headtags');
const Nav = require('naturalcrit/nav/nav.jsx');
const Navbar = require('../../navbar/navbar.jsx');
const IssueNavItem = require('../../navbar/issue.navitem.jsx');
const NewBrewItem = require('../../navbar/newbrew.navitem.jsx');
const HelpNavItem = require('../../navbar/help.navitem.jsx');
const RecentNavItem = require('../../navbar/recent.navitem.jsx').both;
const AccountNavItem = require('../../navbar/account.navitem.jsx');
@@ -19,23 +21,25 @@ const BrewRenderer = require('../../brewRenderer/brewRenderer.jsx');
const HomePage = createClass({
displayName : 'HomePage',
getDefaultProps : function() {
return {
welcomeText : '',
ver : '0.0.0'
brew : {
text : '',
},
ver : '0.0.0'
};
},
getInitialState : function() {
return {
text : this.props.welcomeText
brew : this.props.brew,
welcomeText : this.props.brew.text
};
},
handleSave : function(){
request.post('/api')
.send({
text : this.state.text
text : this.state.brew.text
})
.end((err, res)=>{
if(err) return;
@@ -47,17 +51,15 @@ const HomePage = createClass({
this.refs.editor.update();
},
handleTextChange : function(text){
this.setState({
text : text
});
this.setState((prevState)=>({
brew : _.merge({}, prevState.brew, { text: text })
}));
},
renderNavbar : function(){
return <Navbar ver={this.props.ver}>
<Nav.section>
<IssueNavItem />
<Nav.item newTab={true} href='/changelog' color='purple' icon='fa-file-text-o'>
Changelog
</Nav.item>
<NewBrewItem />
<HelpNavItem />
<RecentNavItem />
<AccountNavItem />
</Nav.section>
@@ -65,23 +67,29 @@ const HomePage = createClass({
},
render : function(){
return <div className='homePage page'>
return <div className='homePage sitePage'>
<Meta name='google-site-verification' content='NwnAQSSJZzAT7N-p5MY6ydQ7Njm67dtbu73ZSyE5Fy4' />
{this.renderNavbar()}
<div className='content'>
<SplitPane onDragFinish={this.handleSplitMove} ref='pane'>
<Editor value={this.state.text} onChange={this.handleTextChange} showMetaButton={false} ref='editor'/>
<BrewRenderer text={this.state.text} />
<Editor
ref='editor'
brew={this.state.brew}
onTextChange={this.handleTextChange}
renderer={this.state.brew.renderer}
showEditButtons={false}
/>
<BrewRenderer text={this.state.brew.text} style={this.state.brew.style} renderer={this.state.brew.renderer}/>
</SplitPane>
</div>
<div className={cx('floatingSaveButton', { show: this.props.welcomeText != this.state.text })} onClick={this.handleSave}>
Save current <i className='fa fa-save' />
<div className={cx('floatingSaveButton', { show: this.state.welcomeText != this.state.brew.text })} onClick={this.handleSave}>
Save current <i className='fas fa-save' />
</div>
<a href='/new' className='floatingNewButton'>
Create your own <i className='fa fa-magic' />
Create your own <i className='fas fa-magic' />
</a>
</div>;
}

View File

@@ -5,7 +5,7 @@
position : absolute;
display : block;
right : 70px;
bottom : 70px;
bottom : 50px;
z-index : 100;
z-index : 5001;
padding : 1em;
@@ -23,7 +23,7 @@
position : absolute;
display : block;
right : 200px;
bottom : 90px;
bottom : 70px;
z-index : 100;
z-index : 5000;
padding : 0.8em;
@@ -40,4 +40,4 @@
right : 350px;
}
}
}
}

View File

@@ -0,0 +1,202 @@
# How to Convert a Legacy Document to v3
Here you will find a number of steps to guide you through converting a Legacy document into a Homebrewery v3 document.
**The first thing you'll want to do is switch the editor's rendering engine from `Legacy` to `v3`.** This will be the renderer we design features for moving forward.
There are some examples of Legacy code in the code pane if you need more context behind some of the changes.
**This document will evolve as users like yourself inform us of issues with it, or areas of conversion that it does not cover. _Please_ reach out if you have any suggestions for this document.**
## Simple Replacements
To make your life a little easier with this section, a text editor like [VSCode](https://code.visualstudio.com/) or Notepad will help a lot.
The following table describes Legacy and other document elements and their Homebrewery counterparts. A simple find/replace should get these in working order.
| Legacy / Other | Homebrewery |
|:----------------|:-----------------------------|
| `\pagebreak` | `\page` |
| `======` | `\page` |
| `\pagebreaknum` | `{{pageNumber,auto}}\n\page` |
| `@=====` | `{{pageNumber,auto}}\n\page` |
| `\columnbreak` | `\column` |
| `.phb` | `.page` |
## Classed or Styled Divs
Anything that relies on the following syntax can be changed to the new Homebrewery v3 curly brace syntax:
```
<div class="classTable wide">
...
</div>
```
:
The above example is equivalent to the following in v3 syntax.
```
{{classTable,wide
...
}}
```
:
Some examples of this include class tables (as shown above), descriptive blocks, notes, and spell lists.
\column
## Margins and Padding
Any manual margins and padding to push text down the page will likely need to be updated. Colons can be used on lines by themselves to push things down the page vertically if you'd rather not set pixel-perfect margins or padding.
## Notes
In Legacy, notes are denoted using markdown blockquote syntax. In Homebrewery v3, this is replaced by the curly brace syntax.
<!--
> ##### Catchy Title
> Useful Information
-->
{{note
##### Title
Information
}}
## Split Tables
Split tables also use the curly brace syntax, as the new renderer can handle style values separately from class names.
<!--
<div style='column-count:2'>
| d8 | Loot |
|:---:|:-----------:|
| 1 | 100gp |
| 2 | 200gp |
| 3 | 300gp |
| 4 | 400gp |
| d8 | Loot |
|:---:|:-----------:|
| 5 | 500gp |
| 6 | 600gp |
| 7 | 700gp |
| 8 | 1000gp |
</div>
-->
##### Typical Difficulty Classes
{{column-count:2
| Task Difficulty | DC |
|:----------------|:--:|
| Very easy | 5 |
| Easy | 10 |
| Medium | 15 |
| Task Difficulty | DC |
|:------------------|:--:|
| Hard | 20 |
| Very hard | 25 |
| Nearly impossible | 30 |
}}
## Blockquotes
Blockquotes are denoted by the `>` character at the beginning of the line. In Homebrewery's v3 renderer, they hold virtually no meaning and have no CSS styling. You are free to use blockquotes when styling your document or creating themes without needing to worry about your CSS affecting other parts of the document.
{{pageNumber,auto}}
\page
## Stat Blocks
There are pretty significant differences between stat blocks on the Legacy renderer and Homebrewery v3. This section contains a list of changes that will need to be made to update the stat block.
### Initial Changes
You will want to **remove all leading** `___` that started the stat block in Legacy, and replace that with `{{monster` before the stat block, and `}}` after it.
**If you want a frame** around the stat block, you can add `,frame` to the curly brace definition.
**If the stat block was wide**, make sure to add `,wide` to the curly brace definition.
### Blockquotes
The key difference is the lack of blockquotes. Legacy documents use the `>` symbol at the start of the line for each line in the stat block, and the v3 renderer does not. **You will want to remove all `>` characters at the beginning of all lines, and delete any leading spaces.**
### Lists
The basic characteristics and advanced characteristics sections are not list elements in Homebrewery. You will want to **remove all `-` or `*` characters from the beginning of lines.**
### Spacing
In order to have the correct spacing after removing the list elements, you will want to **add two colons between the name of each basic/advanced characteristic and its value.** _(see example in the code pane)_
Additionally, in the special traits and actions sections, you will want to add a colon at the beginning of each line that separates a trait/action from another, as seen below. **Any empty lines between special traits and actions should contain only a colon.** _(see example in the code pane)_
\column
{{margin-top:102px}}
<!--
### Legacy/Other Document Example:
___
> ## Centaur
> *Large Monstrosity, neutral good*
>___
> - **Armor Class** 12
> - **Hit Points** 45(6d10 + 12)
> - **Speed** 50ft.
>___
>|STR|DEX|CON|INT|WIS|CHA|
>|:---:|:---:|:---:|:---:|:---:|:---:|
>|18 (+4)|14 (+2)|14 (+2)|9 (-1)|13 (+1)|11 (+0)|
>___
> - **Skills** Athletics +6, Perception +3, Survival +3
> - **Senses** passive Perception 13
> - **Languages** Elvish, Sylvan
> - **Challenge** 2 (450 XP)
> ___
> ***Charge.*** If the centaur moves at least 30 feet straight toward a target and then hits it with a pike attack on the same turn, the target takes an extra 10 (3d6) piercing damage.
>
> ***Second Thing*** More details.
>
> ### Actions
> ***Multiattack.*** The centaur makes two attacks: one with its pike and one with its hooves or two with its longbow.
>
> ***Pike.*** *Melee Weapon Attack:* +6 to hit, reach 10 ft., one target. *Hit:* 9 (1d10 + 4) piercing damage.
>
> ***Hooves.*** *Melee Weapon Attack:* +6 to hit, reach 5 ft., one target. *Hit:* 11 (2d6 + 4) bludgeoning damage.
>
> ***Longbow.*** *Ranged Weapon Attack:* +4 to hit, range 150/600 ft., one target. *Hit:* 6 (1d8 + 2) piercing damage.
-->
### Homebrewery v3 Example:
{{monster
## Centaur
*Large monstrosity, neutral good*
___
**Armor Class** :: 12
**Hit Points** :: 45(6d10 + 12)
**Speed** :: 50ft.
___
| STR | DEX | CON | INT | WIS | CHA |
|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|
|18 (+4)|14 (+2)|14 (+2)|9 (-1) |13 (+1)|11 (+0)|
___
**Skills** :: Athletics +6, Perception +3, Survival +3
**Senses** :: passive Perception 13
**Languages** :: Elvish, Sylvan
**Challenge** :: 2 (450 XP)
___
***Charge.*** If the centaur moves at least 30 feet straight toward a target and then hits it with a pike attack on the same turn, the target takes an extra 10 (3d6) piercing damage.
:
***Second Thing*** More details.
### Actions
***Multiattack.*** The centaur makes two attacks: one with its pike and one with its hooves or two with its longbow.
:
***Pike.*** *Melee Weapon Attack:* +6 to hit, reach 10 ft., one target. *Hit:* 9 (1d10 + 4) piercing damage.
:
***Hooves.*** *Melee Weapon Attack:* +6 to hit, reach 5 ft., one target. *Hit:* 11 (2d6 + 4) bludgeoning damage.
:
***Longbow.*** *Ranged Weapon Attack:* +4 to hit, range 150/600 ft., one target. *Hit:* 6 (1d8 + 2) piercing damage.
}}
{{pageNumber,auto}}

View File

@@ -1,10 +1,11 @@
# The Homebrewery
Welcome traveler from an antique land. Please sit and tell us of what you have seen. The unheard of monsters, who slither and bite. Tell us of the wondrous items and and artifacts you have found, their mysteries yet to be unlocked. Of the vexing vocations and surprising skills you have seen.
### Homebrew D&D made easy
The Homebrewery makes the creation and sharing of authentic looking Fifth-Edition homebrews easy. It uses [Markdown](https://help.github.com/articles/markdown-basics/) with a little CSS magic to make your brews come to life.
**Try it! **Simply edit the text on the left and watch it *update live* on the right.
**Try it!** Simply edit the text on the left and watch it *update live* on the right.
@@ -14,7 +15,7 @@ When you create your own homebrew you will be given a *edit url* and a *share ur
Anyone with the *share url* will be able to access a read-only version of your homebrew.
## Helping out
Like this tool? Want to buy me a beer? [Head here](https://www.patreon.com/stolksdorf) to help me keep the servers running.
Like this tool? Want to buy me a beer? [Head here](https://www.patreon.com/Naturalcrit) to help me keep the servers running.
This tool will **always** be free, never have ads, and I will never offer any "premium" features or whatever.
@@ -36,32 +37,41 @@ This tool will **always** be free, never have ads, and I will never offer any "p
```
```
## Big things coming in v3.0.0
With the next major release of Homebrewery, v3.0.0, this tool *will no longer support raw HTML input for brew code*. All brews made previous to the release of v3.0.0 will still render normally.
## V3.0.0 Released!
With the latest major update to *The Homebrewery* we've implemented an extended Markdown-like syntax for block and span elements, plus a few other changes, eliminating the need for HTML tags like **div** and **span** in most cases. No raw HTML tags should be needed in a brew, and going forward, raw HTML will no longer receive debugging support (*but can still be used if you insist*).
**You can enable V3 via the <span class="fa fa-info-circle" style="text-indent:0"></span> Properties button!**
## New Things All The Time!
What's new in the latest update? Check out the full changelog [here](/changelog)
### Bugs, Issues, Suggestions?
Have an idea of how to make The Homebrewery better? Or did you find something that wasn't quite right? Head [here](https://www.reddit.com/r/homebrewery/submit?selftext=true&title=%5BIssue%5D%20Describe%20Your%20Issue%20Here) and let me know!.
Take a quick look at our [Frequently Asked Questions page](/faq) to see if your question has a handy answer.
Need help getting started or just the right look for your brew? Head to [r/Homebrewery](https://www.reddit.com/r/homebrewery/submit?selftext=true&title=%5BIssue%5D%20Describe%20Your%20Issue%20Here) and let us know!
Have an idea to make The Homebrewery better? Or did you find something that wasn't quite right? Check out the [GitHub Repo](https://github.com/naturalcrit/homebrewery/) to report technical issues.
### Legal Junk
The Homebrewery is licensed using the [MIT License](https://github.com/naturalcrit/homebrewery/blob/master/license). Which means you are free to use The Homebrewery is any way that you want, except for claiming that you made it yourself.
The Homebrewery is licensed using the [MIT License](https://github.com/naturalcrit/homebrewery/blob/master/license). This means you are free to use The Homebrewery codebase any way that you want, except for claiming that you made it yourself.
If you wish to sell or in some way gain profit for what's created on this site, it's your responsibility to ensure you have the proper licenses/rights for any images or resources used.
If you wish to sell or in some way gain profit for what you make on this site, it's your responsibility to ensure you have the proper licenses/rights for any images or resources used.
### More Resources
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/).
<a href='https://discord.gg/by3deKx' target='_blank'><img src='/assets/discordOfManyThings.svg' alt='Discord of Many Things Logo' title='Discord of Many Things Logo' style='width:50px; float: right; padding-left: 10px;'/></a>
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/wiki/resources). The <a href='https://discord.gg/by3deKx' target='_blank' title='Discord of Many Things'>Discord of Many Things</a> is another great resource to connect with fellow homebrewers for help and feedback.
<img src='https://i.imgur.com/hMna6G0.png' style='position:absolute;bottom:50px;right:30px;width:280px' />
<img src='https://i.imgur.com/hMna6G0.png' style='position:absolute;bottom:40px;right:30px;width:280px' />
<div class='pageNumber'>1</div>
<div class='footnote'>PART 1 | FANCINESS</div>
<div style='position: absolute; top: 20px; right: 20px;'>
<a href='https://discord.gg/by3deKx' target='_blank' title='Discord of Many Things'><img src='/assets/discord.png' style='height:30px'/></a>
<a href='https://github.com/naturalcrit/homebrewery' target='_blank' title='Github' style='color: black; padding-left: 5px;'><img src='/assets/github.png' style='height:30px'/></a>
<a href='https://patreon.com/NaturalCrit' target='_blank' title='Patreon' style='color: black; padding-left: 5px;'><img src='/assets/patreon.png' style='height:30px'/></a>
<a href='https://www.reddit.com/r/homebrewery/' target='_blank' title='Reddit' style='color: black; padding-left: 5px;'><img src='/assets/reddit.png' style='height:30px'/></a>
</div>
\page
@@ -96,5 +106,3 @@ If you'd like to credit The Homebrewery in your brew, I'd be flattered! Just ref
<div class='pageNumber'>2</div>
<div class='footnote'>PART 2 | BORING STUFF</div>

View File

@@ -0,0 +1,175 @@
```css
.page #example + table td {
border:1px dashed #00000030;
}
.page {
padding-bottom : 1.1cm;
}
```
# The Homebrewery *V3*
Welcome traveler from an antique land. Please sit and tell us of what you have seen. The unheard of monsters, who slither and bite. Tell us of the wondrous items and and artifacts you have found, their mysteries yet to be unlocked. Of the vexing vocations and surprising skills you have seen.
### Homebrew D&D made easy
The Homebrewery makes the creation and sharing of authentic looking Fifth-Edition homebrews easy. It uses [Markdown](https://help.github.com/articles/markdown-basics/) with a little CSS magic to make your brews come to life.
**Try it!** Simply edit the text on the left and watch it *update live* on the right. Note that not every button is visible on this demo page. Click New {{fas,fa-plus-square}} in the navbar above to start brewing with all the features!
### Editing and Sharing
When you create your own homebrew, you will be given a *edit url* and a *share url*.
Any changes you make while on the *edit url* will be automatically saved to the database within a few seconds. Anyone with the edit url will be able to make edits to your homebrew, so be careful about who you share it with.
Anyone with the *share url* will be able to access a read-only version of your homebrew.
{{note
##### PDF Creation
PDF Printing works best in Google Chrome. If you are having quality/consistency issues, try using Chrome to print instead.
After clicking the "Print" item in the navbar a new page will open and a print dialog will pop-up.
* Set the **Destination** to "Save as PDF"
* Set **Paper Size** to "Letter"
* If you are printing on A4 paper, make sure to have the **PRINT → {{far,fa-file}} A4 Pagesize** snippet in your brew
* In **Options** make sure "Background Images" is selected.
* Hit print and enjoy! You're done!
If you want to save ink or have a monochrome printer, add the **PRINT → {{fas,fa-tint}} Ink Friendly** snippet to your brew!
}}
![homebrew mug](http://i.imgur.com/hMna6G0.png) {position:absolute,bottom:20px,left:130px,width:220px}
{{artist,bottom:160px,left:100px
##### Homebrew Mug
[naturalcrit](https://homebrew.naturalcrit.com)
}}
{{pageNumber 1}}
{{footnote PART 1 | FANCINESS}}
\column
## New in V3.0.0
We've implemented an extended Markdown-like syntax for block and span elements, plus a few other changes, eliminating the need for HTML tags like `div` and `span` in most cases. No raw HTML tags should be needed in a brew (*but can still be used if you insist*).
Much of the syntax and styling has changed in V3, so converting a Legacy brew to V3 (or vice-versa) will require tweaking your document. *However*, all brews made prior to the release of v3.0.0 will still render normally, and you may switch between the "Legacy" brew renderer and the newer "V3" renderer via the {{fa,fa-info-circle}} **Properties** button on your brew at any time.
Scroll down to the next page for a brief summary of the changes and new features available in V3!
#### New Things All The Time!
Check out the latest updates in the full changelog [here](/changelog).
### Helping out
Like this tool? Want to buy me a beer? [Head here](https://www.patreon.com/Naturalcrit) to help me keep the servers running.
This tool will **always** be free, never have ads, and I will never offer any "premium" features or whatever.
### Bugs, Issues, Suggestions?
Take a quick look at our [Frequently Asked Questions page](/faq) to see if your question has a handy answer.
Need help getting started or just the right look for your brew? Head to [r/Homebrewery](https://www.reddit.com/r/homebrewery/submit?selftext=true&title=%5BIssue%5D%20Describe%20Your%20Issue%20Here) and let us know!
Have an idea to make The Homebrewery better? Or did you find something that wasn't quite right? Check out the [GitHub Repo](https://github.com/naturalcrit/homebrewery/) to report technical issues.
### Legal Junk
The Homebrewery is licensed using the [MIT License](https://github.com/naturalcrit/homebrewery/blob/master/license). Which means you are free to use The Homebrewery codebase any way that you want, except for claiming that you made it yourself.
If you wish to sell or in some way gain profit for what's created on this site, it's your responsibility to ensure you have the proper licenses/rights for any images or resources used.
#### Crediting Me
If you'd like to credit me in your brew, I'd be flattered! Just reference that you made it with The Homebrewery.
### More Homebrew Resources
<a href='https://discord.gg/by3deKx' target='_blank'><img src='/assets/discordOfManyThings.svg' alt='Discord of Many Things Logo' title='Discord of Many Things Logo' style='width:50px; float: right; padding-left: 10px;'/></a>
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/wiki/resources). The <a href='https://discord.gg/by3deKx' target='_blank' title='Discord of Many Things'>Discord of Many Things</a> is another great resource to connect with fellow homebrewers for help and feedback.
{{position:absolute;top:20px;right:20px;width:auto
<a href='https://discord.gg/by3deKx' target='_blank' title='Discord of Many Things' style='color: black;'><img src='/assets/discord.png' style='height:30px'/></a>
<a href='https://github.com/naturalcrit/homebrewery' target='_blank' title='Github' style='color: black; padding-left: 5px;'><img src='/assets/github.png' style='height:30px'/></a>
<a href='https://patreon.com/NaturalCrit' target='_blank' title='Patreon' style='color: black; padding-left: 5px;'><img src='/assets/patreon.png' style='height:30px'/></a>
<a href='https://www.reddit.com/r/homebrewery/' target='_blank' title='Reddit' style='color: black; padding-left: 5px;'><img src='/assets/reddit.png' style='height:30px'/></a>
}}
\page
## Markdown+
The Homebrewery aims to make homebrewing as simple as possible, providing a live editor with Markdown syntax that is more human-readable and faster to write with than raw HTML.
In version 3.0.0, with a goal of adding maximum flexibility without users resorting to complex HTML to accomplish simple tasks, Homebrewery provides an extended verision of Markdown with additional syntax.
**You can enable V3 via the {{fa,fa-info-circle}} Properties button!**
### Curly Brackets
The biggest change in V3 is the replacement of `<span></span>` and `<div></div>` with `{{ }}` for a cleaner custom formatting. Inline spans and block elements can be created and given ID's and Classes, as well as css properties, each of which are comma separated with no spaces. Use double quotes if a value requires spaces. Spans and Blocks start the same:
#### Span
My favorite author is {{pen,#author,color:orange,font-family:"trebuchet ms" Brandon Sanderson}}. The orange text has a class of `pen`, an id of `author`, is colored orange, and given a new font. The first space outside of quotes marks the beginning of the content.
#### Block
{{purple,#book,text-align:center,background:#aa88aa55
My favorite book is Wheel of Time. This block has a class of `purple`, an id of `book`, and centered text with a colored background. The opening and closing brackets are on lines separate from the block contents.
}}
#### Injection
For any element not inside a span or block, you can *inject* attributes using the same syntax but with single brackets in a single line immediately after the element.
Inline elements like *italics* {color:#D35400} or images require the injection on the same line.
Block elements like headers require the injection to start on the line immediately following.
##### A Purple Header
{color:purple,text-align:center}
\* *this does not currently work for tables yet*
### Vertical Spacing
A blank line can be achieved with a run of one or more `:` alone on a line. More `:`'s will create more space.
::
Much nicer than `<br><br><br><br><br>`
### Definition Lists
**Example** :: V3 uses HTML *definition lists* to create "lists" with hanging indents.
### Column Breaks
Column and page breaks with `\column` and `\page`.
\column
### Tables
Tables now allow column & row spanning between cells. This is included in some updated snippets, but a simplified example is given below.
A cell can be spanned across columns by grouping multiple pipe `|` characters at the end of a cell.
Row spanning is achieved by adding a `^` at the end of a cell just before the `|`.
These can be combined to span a cell across both columns and rows. Cells must have the same colspan if they are to be rowspan'd.
##### Example
| Head A | Spanned Header ||
| Head B | Head C | Head D |
|:-------|:------:|:------:|
| 1A | 1B | 1C |
| 2A ^| 2B | 2C |
| 3A ^| 3B 3C ||
| 4A | 4B 4C^||
| 5A ^| 5B | 5C |
| 6A | 6B ^| 6C |
## Images
Images must be hosted online somewhere, like [Imgur](https://www.imgur.com). You use the address to that image to reference it in your brew\*.
Using *Curly Injection* you can assign an id, classes, or inline CSS properties to the Markdown image syntax.
![alt-text](https://s-media-cache-ak0.pinimg.com/736x/4a/81/79/4a8179462cfdf39054a418efd4cb743e.jpg) {width:100px,border:"2px solid",border-radius:10px}
\* *When using Imgur-hosted images, use the "direct link", which can be found when you click into your image in the Imgur interace.*
## Snippets
Homebrewery comes with a series of *code snippets* found at the top of the editor pane that make it easy to create brews as quickly as possible. Just set your cursor where you want the code to appear in the editor pane, choose a snippet, and make the adjustments you need.
## Style Editor Panel
{{fa,fa-paint-brush}} Technically released prior to v3 but still new to many users, check out the new **Style Editor** located on the right side of the Snippet bar. This editor accepts CSS for styling without requiring `<style>` tags-- anything that would have gone inside style tags before can now be placed here, and snippets that insert CSS styles are now located on that tab.
{{pageNumber 2}}
{{footnote PART 2 | BORING STUFF}}

View File

@@ -1,3 +1,4 @@
/*eslint max-lines: ["warn", {"max": 300, "skipBlankLines": true, "skipComments": true}]*/
require('./newPage.less');
const React = require('react');
const createClass = require('create-react-class');
@@ -10,42 +11,79 @@ const Nav = require('naturalcrit/nav/nav.jsx');
const Navbar = require('../../navbar/navbar.jsx');
const AccountNavItem = require('../../navbar/account.navitem.jsx');
const RecentNavItem = require('../../navbar/recent.navitem.jsx').both;
const IssueNavItem = require('../../navbar/issue.navitem.jsx');
const HelpNavItem = require('../../navbar/help.navitem.jsx');
const SplitPane = require('naturalcrit/splitPane/splitPane.jsx');
const Editor = require('../../editor/editor.jsx');
const BrewRenderer = require('../../brewRenderer/brewRenderer.jsx');
const BREWKEY = 'homebrewery-new';
const STYLEKEY = 'homebrewery-new-style';
const METAKEY = 'homebrewery-new-meta';
const KEY = 'homebrewery-new';
const NewPage = createClass({
getInitialState : function() {
displayName : 'NewPage',
getDefaultProps : function() {
return {
metadata : {
gDrive : false,
brew : {
text : '',
style : undefined,
shareId : null,
editId : null,
createdAt : null,
updatedAt : null,
gDrive : false,
title : '',
description : '',
tags : '',
published : false,
authors : [],
systems : []
}
};
},
getInitialState : function() {
const brew = this.props.brew;
if(typeof window !== 'undefined') { //Load from localStorage if in client browser
const brewStorage = localStorage.getItem(BREWKEY);
const styleStorage = localStorage.getItem(STYLEKEY);
const metaStorage = JSON.parse(localStorage.getItem(METAKEY));
if(!brew.text || !brew.style){
brew.text = brew.text || (brewStorage ?? '');
brew.style = brew.style || (styleStorage ?? undefined);
// brew.title = metaStorage?.title || this.state.brew.title;
// brew.description = metaStorage?.description || this.state.brew.description;
brew.renderer = metaStorage?.renderer || brew.renderer;
}
}
return {
brew : {
text : brew.text || '',
style : brew.style || undefined,
gDrive : false,
title : brew.title || '',
description : brew.description || '',
tags : brew.tags || '',
published : false,
authors : [],
systems : brew.systems || [],
renderer : brew.renderer || 'legacy'
},
text : '',
isSaving : false,
saveGoogle : (global.account && global.account.googleId ? true : false),
errors : []
errors : null,
htmlErrors : Markdown.validate(brew.text)
};
},
componentDidMount : function() {
const storage = localStorage.getItem(KEY);
if(storage){
this.setState({
text : storage
});
}
document.addEventListener('keydown', this.handleControlKeys);
},
componentWillUnmount : function() {
@@ -68,18 +106,42 @@ const NewPage = createClass({
this.refs.editor.update();
},
handleMetadataChange : function(metadata){
this.setState({
metadata : _.merge({}, this.state.metadata, metadata)
});
handleTextChange : function(text){
//If there are errors, run the validator on every change to give quick feedback
let htmlErrors = this.state.htmlErrors;
if(htmlErrors.length) htmlErrors = Markdown.validate(text);
this.setState((prevState)=>({
brew : _.merge({}, prevState.brew, { text: text }),
htmlErrors : htmlErrors
}));
localStorage.setItem(BREWKEY, text);
},
handleTextChange : function(text){
handleStyleChange : function(style){
this.setState((prevState)=>({
brew : _.merge({}, prevState.brew, { style: style }),
}));
localStorage.setItem(STYLEKEY, style);
},
handleMetaChange : function(metadata){
this.setState((prevState)=>({
brew : _.merge({}, prevState.brew, metadata),
}));
localStorage.setItem(METAKEY, JSON.stringify({
// 'title' : this.state.brew.title,
// 'description' : this.state.brew.description,
'renderer' : this.state.brew.renderer
}));
},
clearErrors : function(){
this.setState({
text : text,
errors : Markdown.validate(text)
errors : null,
isSaving : false
});
localStorage.setItem(KEY, text);
},
save : async function(){
@@ -89,61 +151,111 @@ const NewPage = createClass({
console.log('saving new brew');
if(this.state.saveGoogle) {
const res = await request
.post('/api/newGoogle/')
.send(_.merge({}, this.state.metadata, { text: this.state.text }))
.catch((err)=>{
console.log(err.status === 401
? 'Not signed in!'
: 'Error Creating New Google Brew!');
this.setState({ isSaving: false });
return;
});
const brew = res.body;
localStorage.removeItem(KEY);
window.location = `/edit/${brew.googleId}${brew.editId}`;
} else {
request.post('/api')
.send(_.merge({}, this.state.metadata, {
text : this.state.text
}))
.end((err, res)=>{
if(err){
this.setState({
isSaving : false
});
return;
}
window.onbeforeunload = function(){};
const brew = res.body;
localStorage.removeItem(KEY);
window.location = `/edit/${brew.editId}`;
});
let brew = this.state.brew;
// Split out CSS to Style if CSS codefence exists
if(brew.text.startsWith('```css') && brew.text.indexOf('```\n\n') > 0) {
const index = brew.text.indexOf('```\n\n');
brew.style = `${brew.style ? `${brew.style}\n` : ''}${brew.text.slice(7, index - 1)}`;
brew.text = brew.text.slice(index + 5);
}
brew.pageCount=((brew.renderer=='legacy' ? brew.text.match(/\\page/g) : brew.text.match(/^\\page$/gm)) || []).length + 1;
const res = await request
.post(`/api${this.state.saveGoogle ? '?transferToGoogle=true' : ''}`)
.send(brew)
.catch((err)=>{
console.log(err);
this.setState({ isSaving: false, errors: err });
});
if(!res) return;
brew = res.body;
localStorage.removeItem(BREWKEY);
localStorage.removeItem(STYLEKEY);
localStorage.removeItem(METAKEY);
window.location = `/edit/${brew.googleId ?? ''}${brew.editId}`;
},
renderSaveButton : function(){
if(this.state.errors){
let errMsg = '';
try {
errMsg += `${this.state.errors.toString()}\n\n`;
errMsg += `\`\`\`\n${this.state.errors.stack}\n`;
errMsg += `${JSON.stringify(this.state.errors.response.error, null, ' ')}\n\`\`\``;
console.log(errMsg);
} catch (e){}
// if(this.state.errors.status == '401'){
// return <Nav.item className='save error' icon='fas fa-exclamation-triangle'>
// Oops!
// <div className='errorContainer' onClick={this.clearErrors}>
// You must be signed in to a Google account
// to save this to<br />Google Drive!<br />
// <a target='_blank' rel='noopener noreferrer'
// href={`https://www.naturalcrit.com/login?redirect=${this.state.url}`}>
// <div className='confirm'>
// Sign In
// </div>
// </a>
// <div className='deny'>
// Not Now
// </div>
// </div>
// </Nav.item>;
// }
if(this.state.errors.response.req.url.match(/^\/api.*Google.*$/m)){
return <Nav.item className='save error' icon='fas fa-exclamation-triangle'>
Oops!
<div className='errorContainer' onClick={this.clearErrors}>
Looks like your Google credentials have
expired! Visit our log in page to sign out
and sign back in with Google,
then try saving again!
<a target='_blank' rel='noopener noreferrer'
href={`https://www.naturalcrit.com/login?redirect=${this.state.url}`}>
<div className='confirm'>
Sign In
</div>
</a>
<div className='deny'>
Not Now
</div>
</div>
</Nav.item>;
}
return <Nav.item className='save error' icon='fas fa-exclamation-triangle'>
Oops!
<div className='errorContainer'>
Looks like there was a problem saving. <br />
Report the issue <a target='_blank' rel='noopener noreferrer'
href={`https://github.com/naturalcrit/homebrewery/issues/new?body=${encodeURIComponent(errMsg)}`}>
here
</a>.
</div>
</Nav.item>;
}
if(this.state.isSaving){
return <Nav.item icon='fa-spinner fa-spin' className='saveButton'>
return <Nav.item icon='fas fa-spinner fa-spin' className='save'>
save...
</Nav.item>;
} else {
return <Nav.item icon='fa-save' className='saveButton' onClick={this.save}>
return <Nav.item icon='fas fa-save' className='save' onClick={this.save}>
save
</Nav.item>;
}
},
print : function(){
localStorage.setItem('print', this.state.text);
window.open('/print?dialog=true&local=print', '_blank');
},
renderLocalPrintButton : function(){
return <Nav.item color='purple' icon='fa-file-pdf-o' onClick={this.print}>
return <Nav.item color='purple' icon='far fa-file-pdf' onClick={this.print}>
get PDF
</Nav.item>;
},
@@ -152,13 +264,13 @@ const NewPage = createClass({
return <Navbar>
<Nav.section>
<Nav.item className='brewTitle'>{this.state.metadata.title}</Nav.item>
<Nav.item className='brewTitle'>{this.state.brew.title}</Nav.item>
</Nav.section>
<Nav.section>
{this.renderSaveButton()}
{this.renderLocalPrintButton()}
<IssueNavItem />
<HelpNavItem />
<RecentNavItem />
<AccountNavItem />
</Nav.section>
@@ -166,18 +278,19 @@ const NewPage = createClass({
},
render : function(){
return <div className='newPage page'>
return <div className='newPage sitePage'>
{this.renderNavbar()}
<div className='content'>
<SplitPane onDragFinish={this.handleSplitMove} ref='pane'>
<Editor
ref='editor'
value={this.state.text}
onChange={this.handleTextChange}
metadata={this.state.metadata}
onMetadataChange={this.handleMetadataChange}
brew={this.state.brew}
onTextChange={this.handleTextChange}
onStyleChange={this.handleStyleChange}
onMetaChange={this.handleMetaChange}
renderer={this.state.brew.renderer}
/>
<BrewRenderer text={this.state.text} errors={this.state.errors} />
<BrewRenderer text={this.state.brew.text} style={this.state.brew.style} renderer={this.state.brew.renderer} errors={this.state.htmlErrors}/>
</SplitPane>
</div>
</div>;

View File

@@ -1,10 +1,82 @@
.newPage{
.saveButton{
.navItem.save{
background-color: @orange;
&:hover{
background-color: @green;
}
&.error{
position : relative;
background-color : @red;
}
}
}
.errorContainer{
animation-name: glideDown;
animation-duration: 0.4s;
position : absolute;
top : 100%;
left : 50%;
z-index : 100000;
width : 140px;
padding : 3px;
color : white;
background-color : #333;
border : 3px solid #444;
border-radius : 5px;
transform : translate(-50% + 3px, 10px);
text-align : center;
font-size : 10px;
font-weight : 800;
text-transform : uppercase;
a{
color : @teal;
}
&:before {
content: "";
width: 0px;
height: 0px;
position: absolute;
border-left: 10px solid transparent;
border-right: 10px solid transparent;
border-top: 10px solid transparent;
border-bottom: 10px solid #444;
left: 53px;
top: -23px;
}
&:after {
content: "";
width: 0px;
height: 0px;
position: absolute;
border-left: 10px solid transparent;
border-right: 10px solid transparent;
border-top: 10px solid transparent;
border-bottom: 10px solid #333;
left: 53px;
top: -19px;
}
.deny {
width : 48%;
margin : 1px;
padding : 5px;
background-color : #333;
display : inline-block;
border-left : 1px solid #666;
.animate(background-color);
&:hover{
background-color : red;
}
}
.confirm {
width : 48%;
margin : 1px;
padding : 5px;
background-color : #333;
display : inline-block;
color : white;
.animate(background-color);
&:hover{
background-color : teal;
}
}
}
}

View File

@@ -4,48 +4,92 @@ const createClass = require('create-react-class');
const _ = require('lodash');
const cx = require('classnames');
const { Meta } = require('vitreum/headtags');
const MarkdownLegacy = require('naturalcrit/markdownLegacy.js');
const Markdown = require('naturalcrit/markdown.js');
const BREWKEY = 'homebrewery-new';
const STYLEKEY = 'homebrewery-new-style';
const METAKEY = 'homebrewery-new-meta';
const PrintPage = createClass({
displayName : 'PrintPage',
getDefaultProps : function() {
return {
query : {},
brew : {
text : '',
text : '',
style : '',
renderer : 'legacy'
}
};
},
getInitialState : function() {
return {
brewText : this.props.brew.text
brew : {
text : this.props.brew.text || '',
style : this.props.brew.style || undefined,
renderer : this.props.brew.renderer || 'legacy'
}
};
},
componentDidMount : function() {
if(this.props.query.local){
this.setState((prevState, prevProps)=>({
brewText : localStorage.getItem(prevProps.query.local)
}));
if(this.props.query.local == 'print'){
const brewStorage = localStorage.getItem(BREWKEY);
const styleStorage = localStorage.getItem(STYLEKEY);
const metaStorage = JSON.parse(localStorage.getItem(METAKEY));
this.setState((prevState, prevProps)=>{
return {
brew : {
text : brewStorage,
style : styleStorage,
renderer : metaStorage.renderer || 'legacy'
}
};
});
}
if(this.props.query.dialog) window.print();
},
renderStyle : function() {
if(!this.state.brew.style) return;
return <div style={{ display: 'none' }} dangerouslySetInnerHTML={{ __html: `<style> ${this.state.brew.style} </style>` }} />;
},
renderPages : function(){
return _.map(this.state.brewText.split('\\page'), (page, index)=>{
return <div
className='phb'
id={`p${index + 1}`}
dangerouslySetInnerHTML={{ __html: Markdown.render(page) }}
key={index} />;
});
if(this.state.brew.renderer == 'legacy') {
return _.map(this.state.brew.text.split('\\page'), (pageText, index)=>{
return <div
className='phb page'
id={`p${index + 1}`}
dangerouslySetInnerHTML={{ __html: MarkdownLegacy.render(pageText) }}
key={index} />;
});
} else {
return _.map(this.state.brew.text.split(/^\\page$/gm), (pageText, index)=>{
pageText += `\n\n&nbsp;\n\\column\n&nbsp;`; //Artificial column break at page end to emulate column-fill:auto (until `wide` is used, when column-fill:balance will reappear)
return (
<div className='page' id={`p${index + 1}`} key={index} >
<div className='columnWrapper' dangerouslySetInnerHTML={{ __html: Markdown.render(pageText) }} />
</div>
);
});
}
},
render : function(){
return <div>
<Meta name='robots' content='noindex, nofollow' />
{this.renderPages()}
<link href={`${this.state.brew.renderer == 'legacy' ? '/themes/5ePhbLegacy.style.css' : '/themes/5ePhb.style.css'}`} rel='stylesheet'/>
{/* Apply CSS from Style tab */}
{this.renderStyle()}
<div className='pages' ref='pages'>
{this.renderPages()}
</div>
</div>;
}
});

View File

@@ -14,15 +14,18 @@ const BrewRenderer = require('../../brewRenderer/brewRenderer.jsx');
const SharePage = createClass({
displayName : 'SharePage',
getDefaultProps : function() {
return {
brew : {
title : '',
text : '',
style : '',
shareId : null,
createdAt : null,
updatedAt : null,
views : 0
views : 0,
renderer : ''
}
};
},
@@ -30,14 +33,16 @@ const SharePage = createClass({
componentDidMount : function() {
document.addEventListener('keydown', this.handleControlKeys);
},
componentWillUnmount : function() {
document.removeEventListener('keydown', this.handleControlKeys);
},
handleControlKeys : function(e){
if(!(e.ctrlKey || e.metaKey)) return;
const P_KEY = 80;
if(e.keyCode == P_KEY){
window.open(`/print/${this.props.brew.shareId}?dialog=true`, '_blank').focus();
window.open(`/print/${this.processShareId()}?dialog=true`, '_blank').focus();
e.stopPropagation();
e.preventDefault();
}
@@ -50,7 +55,7 @@ const SharePage = createClass({
},
render : function(){
return <div className='sharePage page'>
return <div className='sharePage sitePage'>
<Meta name='robots' content='noindex, nofollow' />
<Navbar>
<Nav.section>
@@ -58,17 +63,30 @@ const SharePage = createClass({
</Nav.section>
<Nav.section>
<PrintLink shareId={this.processShareId()} />
<Nav.item href={`/source/${this.processShareId()}`} color='teal' icon='fa-code'>
source
</Nav.item>
{this.props.brew.shareId && <>
<PrintLink shareId={this.processShareId()} />
<Nav.dropdown>
<Nav.item color='red' icon='fas fa-code'>
source
</Nav.item>
<Nav.item color='blue' href={`/source/${this.processShareId()}`}>
view
</Nav.item>
<Nav.item color='blue' href={`/download/${this.processShareId()}`}>
download
</Nav.item>
<Nav.item color='blue' href={`/new/${this.processShareId()}`}>
clone to new
</Nav.item>
</Nav.dropdown>
</>}
<RecentNavItem brew={this.props.brew} storageKey='view' />
<Account />
</Nav.section>
</Navbar>
<div className='content'>
<BrewRenderer text={this.props.brew.text} />
<BrewRenderer text={this.props.brew.text} style={this.props.brew.style} renderer={this.props.brew.renderer} />
</div>
</div>;
}

View File

@@ -2,4 +2,4 @@
.content{
overflow-y : hidden;
}
}
}

View File

@@ -1,77 +1,69 @@
require('./userPage.less');
const React = require('react');
const createClass = require('create-react-class');
const _ = require('lodash');
const cx = require('classnames');
const ListPage = require('../basePages/listPage/listPage.jsx');
const Nav = require('naturalcrit/nav/nav.jsx');
const Navbar = require('../../navbar/navbar.jsx');
const RecentNavItem = require('../../navbar/recent.navitem.jsx').both;
const Account = require('../../navbar/account.navitem.jsx');
const BrewItem = require('./brewItem/brewItem.jsx');
// const brew = {
// title : 'SUPER Long title woah now',
// authors : []
// };
//const BREWS = _.times(25, ()=>{ return brew;});
const NewBrew = require('../../navbar/newbrew.navitem.jsx');
const HelpNavItem = require('../../navbar/help.navitem.jsx');
const UserPage = createClass({
displayName : 'UserPage',
getDefaultProps : function() {
return {
username : '',
brews : []
brews : [],
query : ''
};
},
getUsernameWithS : function() {
if(this.props.username.endsWith('s'))
return `${this.props.username}'`;
return `${this.props.username}'s`;
},
getInitialState : function() {
const usernameWithS = this.props.username + (this.props.username.endsWith('s') ? `'` : `'s`);
renderBrews : function(brews){
if(!brews || !brews.length) return <div className='noBrews'>No Brews.</div>;
const sortedBrews = _.sortBy(brews, (brew)=>{ return brew.title; });
return _.map(sortedBrews, (brew, idx)=>{
return <BrewItem brew={brew} key={idx}/>;
});
},
getSortedBrews : function(){
return _.groupBy(this.props.brews, (brew)=>{
const brews = _.groupBy(this.props.brews, (brew)=>{
return (brew.published ? 'published' : 'private');
});
const brewCollection = [
{
title : `${usernameWithS} published brews`,
class : 'published',
brews : brews.published
}
];
if(this.props.username == global.account?.username){
brewCollection.push(
{
title : `${usernameWithS} unpublished brews`,
class : 'unpublished',
brews : brews.private
}
);
}
return {
brewCollection : brewCollection
};
},
navItems : function() {
return <Navbar>
<Nav.section>
<NewBrew />
<HelpNavItem />
<RecentNavItem />
<Account />
</Nav.section>
</Navbar>;
},
render : function(){
const brews = this.getSortedBrews();
return <div className='userPage page'>
<Navbar>
<Nav.section>
<RecentNavItem />
<Account />
</Nav.section>
</Navbar>
<div className='content'>
<div className='phb'>
<div>
<h1>{this.getUsernameWithS()} brews</h1>
{this.renderBrews(brews.published)}
</div>
<div>
<h1>{this.getUsernameWithS()} unpublished brews</h1>
{this.renderBrews(brews.private)}
</div>
</div>
</div>
</div>;
return <ListPage brewCollection={this.state.brewCollection} navItems={this.navItems()} query={this.props.query}></ListPage>;
}
});

View File

@@ -1,33 +0,0 @@
.noColumns(){
column-count : auto;
column-fill : auto;
column-gap : auto;
column-width : auto;
-webkit-column-count : auto;
-moz-column-count : auto;
-webkit-column-width : auto;
-moz-column-width : auto;
-webkit-column-gap : auto;
-moz-column-gap : auto;
}
.userPage{
.content{
overflow-y : scroll;
.phb{
.noColumns();
height : auto;
min-height : 279.4mm;
margin : 20px auto;
&::after{
display : none;
}
.noBrews{
margin : 10px 0px;
font-size : 1.3em;
font-style : italic;
}
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 327 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 530 B

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

View File

@@ -1,19 +1,28 @@
module.exports = async(name, title = '', props = {})=>{
const HOMEBREWERY_PUBLIC_URL=props.config.publicUrl;
return `
<!DOCTYPE html>
<html>
<head>
<link href="//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<link href="//use.fontawesome.com/releases/v5.15.1/css/all.css" rel="stylesheet" />
<link href="//fonts.googleapis.com/css?family=Open+Sans:400,300,600,700" rel="stylesheet" type="text/css" />
<link href=${`/${name}/bundle.css`} rel='stylesheet'></link>
<link href=${`/${name}/bundle.css`} rel='stylesheet' />
<link rel="icon" href="/assets/homebrew/favicon.ico" type="image/x-icon" />
<meta property="og:title" content="${props.brew?.title || 'Homebrewery - Untitled Brew'}">
<meta property="og:url" content="${HOMEBREWERY_PUBLIC_URL}/${props.brew?.shareId ? `share/${props.brew.shareId}` : ''}">
<meta property="og:image" content="${props.brew?.thumbnail || `${HOMEBREWERY_PUBLIC_URL}/thumbnail.png`}">
<meta property="og:description" content="${props.brew?.description || 'No description.'}">
<meta property="og:site_name" content="The Homebrewery - Make your Homebrew content look legit!">
<meta property="og:type" content="article">
<meta name="twitter:card" content="summary_large_image">
<title>${title.length ? `${title} - The Homebrewery`: 'The Homebrewery - NaturalCrit'}</title>
</head>
<body>
<main id="reactRoot">${require(`../build/${name}/ssr.js`)(props)}</main>
<script src=${`/${name}/bundle.js`}></script>
<script>start_app(${JSON.stringify(props)})</script>
</body>
<script src=${`/${name}/bundle.js`}></script>
<script>start_app(${JSON.stringify(props)})</script>
</html>
`;
};
};

View File

@@ -2,5 +2,8 @@
"host" : "homebrewery.local.naturalcrit.com:8000",
"naturalcrit_url" : "local.naturalcrit.com:8010",
"secret" : "secret",
"web_port" : 8000
"web_port" : 8000,
"enable_v3" : true,
"local_environments" : ["docker", "local"],
"publicUrl" : "https://homebrewery.naturalcrit.com"
}

152
faq.md Normal file
View File

@@ -0,0 +1,152 @@
```css
h5 {
font-size: .35cm !important;
}
.taskList li {
list-style-type : none;
}
.taskList li input {
margin-left : -0.52cm;
transform: translateY(.05cm);
filter: brightness(1.1) drop-shadow(1px 2px 1px #222);
}
.taskList li input[checked] {
filter: sepia(100%) hue-rotate(60deg) saturate(3.5) contrast(4) brightness(1.1) drop-shadow(1px 2px 1px #222);
}
pre + * {
margin-top: 0.17cm;
}
pre {
margin-top: 0.17cm;
}
.page pre code {
word-break:break-word;
}
.page p + pre {
margin-top : 0.1cm;
}
.page h1 + p:first-letter {
all:unset;
}
.page .toc ul {
margin-top:0;
}
.page h3 {
font-family:inherit;
font-size:inherit;
border:inherit;
margin-top:12px;
margin-bottom:5px
}
.page h3:before {
content:'Q.';
position:absolute;
font-size:2em;
margin-left:-1.2em;
}
.page .columnSplit + h3 {
margin-top:0;
}
```
# FAQ
{{wide Updated Oct. 11, 2021}}
### The site is down for me! Anyone else?
You can check the site status here: [Everyone or Just Me](https://downforeveryoneorjustme.com/homebrewery.naturalcrit.com)
### How do I log out?
Go to https://homebrewery.naturalcrit.com/login, and hit the "*logout*" link.
### Why am I getting an error when trying to save, and my account is linked to Google?
A sign-in with Google only lasts a year until the authentication expires. You must go [here](https://www.naturalcrit.com/login), click the *Log-out* button, and then sign back in using your Google account.
### I lost my password, how do I reset it? How do I change my password?
Homebrewery is specifically designed to not hold personal information as a measure to protect both users and admin, and does not require an email address. Thus it would be difficult to send a new password to a user. Reach out to the moderators on [the subreddit](https://www.reddit.com/r/homebrewery) with your Homebrewery username.
If you have linked your account with a Google account, you would change your password within Google.
### Is there a way to restore a previous version of my brew?
Currently, there is no way to do this through the site yourself. This would take too much of a toll on the amount of storage the homebrewery requires. However, we do have daily backups of our database that we keep for 8 days, and you can contact the moderators on [the subreddit](https://www.reddit.com/r/homebrewery) with your Homebrewery username, the name of the lost brew, and the last known time it was working properly. We can manually look through our backups and restore it if it exists.
### I worked on a brew for X hours, and suddenly all the text disappeared!
This usually happens if you accidentally drag-select all of your text and then start typing which overwrites the selection. Do not panic, and do not refresh the page or reload your brew quite yet as it is probably auto-saved in this state already. Simply press CTRL+Z as many times as needed to undo your last few changes and you will be back to where you were, then make sure to save your brew in the "good" state.
\column
### Why is only Chrome supported?
Different browsers have differing abilities to handle web styling (or "CSS"). For example, Firefox is not currently capable of handling column breaks well but Chrome has no problem. Also, each browser has slight differences in how they display pages which can make it a nightmare to compensate for. These capabilities change over time and we are hopeful that each browser update bridges these gaps and adds more features; until then, we will develop with one browser in mind.
### Both my friend and myself are using Chrome, but the brews still look different. Why?
A pixel can be rendered differently depending on the browser, operating system, computer, or screen. Unless you and your friend have exactly the same setup, it is likely your online brew will have very tiny differences. However, sometimes a few pixels is all it takes to create *big* differences....for example, an extra pixel can cause a whole line of text or even a monster stat block to run out of space in it's current column and be pushed to the next column or even off the page.
The best way to avoid this is to leave space at the end of a column equal to one or two lines of text. Or, create a PDF from your document for sharing--- PDF's are designed to be rendered the same on all devices.
### Why do I need to manually create a new page? Why doesn't text flow between pages?
A Homebrewery document is at it's core an HTML & CSS document, and currently limited by the specs of those technologies. It is currently not possible to flow content from inside one box ("page") to the inside of another box. It seems likely that someday CSS will add this capability, and if/when that happens, Homebrewery will adopt it as soon as possible.
### Where do I get images?
The Homebrewery does not provide images for use besides some page elements and example images for snippets. You will need to find your own images for use and be sure you are following the appropriate license requirements.
Once you have an image you would like to use, it is recommended to host it somewhere that won't disappear; commonly, people host their images on [Imgur](https://www.imgur.com). Create an account and upload your images there, and use the *Direct Link* that is shown when you click into the image from the gallery in your Homebrewery document.
\page
### A particular font does not work for my language, what do I do?
The fonts used were originally created for use with the English language, though revisions since then have added more support for other languages. They are still not complete sets and may be missing a glyph/character you need. Unfortunately, the volunteer group as it stands at the time of this writing does not have a font guru, so it would be difficult to add more glyphs (especially complicated glyphs). Let us know which glyph is missing on the subreddit, but you may need to search [Google Fonts](https://fonts.google.com) for an alternative font if you need something fast.
### Whenever I click on the "Get PDF" button, instead of getting a download, it opens Print Preview in another tab.
Yes, this is by design. In the print preview, select "Save as PDF" as the Destination, and then click "Save". There will be a normal download dialog where you can save your brew as a PDF.
### The preview window is suddenly gone, I can only see the editor side of the Homebrewery (or the other way around).
1. Press `CTRL`+`SHIFT`+`i` (or right-click and select "Inspect") while in the Homebrewery.
2. Expand...
```
- `body`
- `main`
- `div class="homebrew"`
- `div class="editPage page"`
- `div class="content"`
- `div class="splitPane"`
```
There you will find 3 divs: `div class="pane" [...]`, `div class="divider" [...]`, and `div class="pane" [...]`.
The `class="pane"` looks similar to this: `div class="pane" data-reactid="36" style="flex: 0 0 auto; width: 925px;"`.
Change whatever stands behind width: to something smaller than your display width.
### I have white borders on the bottom/sides of the print preview.
The Homebrewery paper size and your print paper size do not match.
The Homebrewery defaults to creating US Letter page sizes. If you are printing with A4 size paper, you must add the "A4 Page Size" snippet. In the "Print" dialog be sure your Paper Size matches the page size in Homebrewery.
### Typing `#### Adhesion` in the text editor doesn't show the header at all in the completed page?
Your ad-blocking software is mistakenly assuming your text to be an ad. Whitelist homebrewery.naturalcrit.com in your ad-blocking software.

View File

@@ -10,7 +10,7 @@ These instructions assume that you are installing to a completely new, fresh Fre
2. Install wget (`pkg install -y wget`). On a fresh jail, you will be prompted to press 'Y' to set up `pkg`.
3. Download the installation script (`wget --no-check-certificate https://raw.githubusercontent.com/naturalcrit/homebrewery/master/freebsd/install.sh`). The parameter `--no-check-certificate` is required as we haven't set up any trusted certificates/authorities yet.
3. Download the installation script (`wget --no-check-certificate https://raw.githubusercontent.com/naturalcrit/homebrewery/master/install/freebsd/install.sh`). The parameter `--no-check-certificate` is required as we haven't set up any trusted certificates/authorities yet.
4. Make the downloaded file executable (`chmod +x install.sh`).

35
install/README.UBUNTU.md Normal file
View File

@@ -0,0 +1,35 @@
# Ubuntu Installation Instructions
## Before Installing
These instructions assume that you are installing to a completely new, fresh Ubuntu installation. As such, some steps will not be necessary if you are installing to an existing Ubuntu instance.
## Installation instructions
1. Install Ubuntu.
2. Install wget (`apt install -y wget`). This may already be installed, depending on your exact Ubuntu version.
3. Download the installation script (`wget https://raw.githubusercontent.com/naturalcrit/homebrewery/master/install/ubuntu/install.sh`).
4. Make the downloaded file executable (`chmod +x install.sh`).
5. Run the script (`sudo ./install.sh`). This will automatically download all of the required packages, install both them and HomeBrewery, configure the system and finally start HomeBrewery.
**NOTE:** At this time, the script **ONLY** installs HomeBrewery. It does **NOT** install the NaturalCrit login system, as that is currently a completely separate project.
---
### Testing
These installation instructions have been tested on the following Ubuntu releases:
- *ubuntu-20.04.3-desktop-amd64*
## Final Notes
While this installation process works successfully at the time of writing (December 19, 2021), it relies on all of the Node.JS packages used in the HomeBrewery project retaining their cross-platform capabilities to continue to function. This is one of the inherent advantages of Node.JS, but it is by no means guaranteed and as such, functionality or even installation may fail without warning at some point in the future.
Regards,
G
December 19, 2021

View File

@@ -0,0 +1,13 @@
[Unit]
Description=Homebrewery Web Server
[Service]
User=root
After=mongodb
Environment=NODE_ENV=local
WorkingDirectory=/usr/local/homebrewery
ExecStart=node server.js
Restart=always
[Install]
WantedBy=multi-user.target

34
install/ubuntu/install.sh Normal file
View File

@@ -0,0 +1,34 @@
#!/bin/sh
# Install CURL and add required NodeJS source to package repo
echo ::Install CURL
apt install -y curl
echo ::Add NodeJS source to package repo
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
# Install required packages
echo ::Install Homebrewery requirements
apt satisfy -y git nodejs npm mongodb
# Clone Homebrewery repo
echo ::Get Homebrewery files
cd /usr/local/
git clone https://github.com/naturalcrit/homebrewery.git
# Install Homebrewery
echo ::Install Homebrewery
cd homebrewery
npm install
npm audit fix
npm run postinstall
# Create Homebrewery service
echo ::Create Homebrewery service
ln -s /usr/local/homebrewery/install/ubuntu/etc/systemd/system/homebrewery.service /etc/systemd/system/homebrewery.service
systemctl daemon-reload
echo ::Set Homebrewery to start automatically
systemctl enable homebrewery
# Start Homebrewery
echo ::Start Homebrewery
systemctl start homebrewery

19689
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,9 +1,9 @@
{
"name": "homebrewery",
"description": "Create authentic looking D&D homebrews using only markdown",
"version": "2.10.7",
"version": "3.1.1",
"engines": {
"node": "12.16.x"
"node": "16.11.x"
},
"repository": {
"type": "git",
@@ -18,8 +18,11 @@
"lint:dry": "eslint **/*.{js,jsx}",
"circleci": "npm test && eslint **/*.{js,jsx} --max-warnings=0",
"verify": "npm run lint && npm test",
"test": "pico-check",
"test:dev": "pico-check -v -w",
"test": "jest",
"test:dev": "jest --verbose --watch",
"test:basic": "jest tests/markdown/basic.test.js --verbose",
"test:mustache-span": "jest tests/markdown/mustache-span.test.js --verbose",
"test:route": "jest tests/routes/static-pages.test.js --verbose",
"phb": "node scripts/phb.js",
"prod": "set NODE_ENV=production && npm run build",
"postinstall": "npm run buildall",
@@ -30,48 +33,63 @@
"eslintIgnore": [
"build/*"
],
"pico-check": {
"require": "./tests/test.init.js"
"jest": {
"testTimeout": 15000,
"modulePaths": [
"mode_modules",
"shared",
"server"
]
},
"babel": {
"presets": [
"env",
"react"
"@babel/preset-env",
"@babel/preset-react"
],
"plugins": [
"@babel/plugin-transform-runtime"
]
},
"dependencies": {
"@babel/core": "^7.12.10",
"@babel/preset-env": "^7.12.11",
"@babel/preset-react": "^7.12.10",
"body-parser": "^1.19.0",
"classnames": "^2.2.6",
"codemirror": "^5.59.2",
"cookie-parser": "^1.4.5",
"@babel/core": "^7.18.2",
"@babel/plugin-transform-runtime": "^7.18.2",
"@babel/preset-env": "^7.18.2",
"@babel/preset-react": "^7.17.12",
"body-parser": "^1.20.0",
"classnames": "^2.3.1",
"codemirror": "^5.65.5",
"cookie-parser": "^1.4.6",
"create-react-class": "^15.7.0",
"express": "^4.17.1",
"express-static-gzip": "2.1.1",
"fs-extra": "9.1.0",
"googleapis": "67.0.0",
"dedent-tabs": "^0.10.1",
"express": "^4.18.1",
"express-async-handler": "^1.2.0",
"express-static-gzip": "2.1.7",
"fs-extra": "10.1.0",
"googleapis": "101.0.0",
"js-yaml": "^4.1.0",
"jwt-simple": "^0.5.6",
"less": "^3.13.1",
"lodash": "^4.17.20",
"marked": "^0.3.19",
"moment": "^2.29.1",
"mongoose": "^5.11.13",
"nanoid": "3.1.20",
"nconf": "^0.11.1",
"prop-types": "15.7.2",
"query-string": "6.13.8",
"lodash": "^4.17.21",
"marked": "4.0.16",
"marked-extended-tables": "^1.0.3",
"markedLegacy": "npm:marked@^0.3.19",
"moment": "^2.29.3",
"mongoose": "^6.3.6",
"nanoid": "3.3.4",
"nconf": "^0.12.0",
"query-string": "7.1.1",
"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.3.0",
"sanitize-filename": "1.6.3",
"superagent": "^6.1.0",
"vitreum": "github:calculuschild/vitreum#21a8e1c9421f1d3a3b474c12f480feb2fbd28c5b"
"vitreum": "git+https://git@github.com/calculuschild/vitreum.git"
},
"devDependencies": {
"eslint": "^7.18.0",
"eslint-plugin-react": "^7.22.0",
"pico-check": "^2.0.3"
"eslint": "^8.17.0",
"eslint-plugin-react": "^7.30.0",
"jest": "^28.1.1",
"supertest": "^6.2.3"
}
}

View File

@@ -1,2 +1,4 @@
# Notes
User-agent: *
Disallow: /edit/

View File

@@ -14,10 +14,10 @@ const transforms = {
};
const build = async ({ bundle, render, ssr })=>{
await fs.outputFile('./build/admin/bundle.css', await lessTransform.generate({ paths: './shared' }));
const css = await lessTransform.generate({ paths: './shared' });
await fs.outputFile('./build/admin/bundle.css', css);
await fs.outputFile('./build/admin/bundle.js', bundle);
await fs.outputFile('./build/admin/ssr.js', ssr);
await fs.outputFile('./build/admin/render.js', render);
};
fs.emptyDirSync('./build/admin');

View File

@@ -7,9 +7,14 @@ const isDev = !!process.argv.find((arg)=>arg=='--dev');
const lessTransform = require('vitreum/transforms/less.js');
const assetTransform = require('vitreum/transforms/asset.js');
//const Meta = require('vitreum/headtags');
const babel = require('@babel/core');
const less = require('less');
const babelify = async (code)=>(await babel.transformAsync(code, { presets: ['@babel/preset-env', '@babel/preset-react'], plugins: ['@babel/plugin-transform-runtime'] })).code;
const transforms = {
'.js' : (code, filename, opts)=>babelify(code),
'.jsx' : (code, filename, opts)=>babelify(code),
'.less' : lessTransform,
'*' : assetTransform('./build')
};
@@ -19,15 +24,42 @@ const build = async ({ bundle, render, ssr })=>{
await fs.outputFile('./build/homebrew/bundle.css', css);
await fs.outputFile('./build/homebrew/bundle.js', bundle);
await fs.outputFile('./build/homebrew/ssr.js', ssr);
await fs.outputFile('./build/homebrew/render.js', render);
await fs.copy('./themes/fonts', './build/fonts');
await fs.copy('./themes/assets', './build/assets');
let src = './themes/5ePhbLegacy.style.less';
//Parse brew theme files
less.render(fs.readFileSync(src).toString(), {
compress : !isDev
}, function(e, output) {
fs.outputFile('./build/themes/5ePhbLegacy.style.css', output.css);
});
src = './themes/5ePhb.style.less';
less.render(fs.readFileSync(src).toString(), {
compress : !isDev
}, function(e, output) {
fs.outputFile('./build/themes/5ePhb.style.css', output.css);
});
// await less.render(lessCode, {
// compress : !dev,
// sourceMap : (dev ? {
// sourceMapFileInline: true,
// outputSourceFiles: true
// } : false),
// })
//compress files
await fs.outputFile('./build/homebrew/bundle.css.br', zlib.brotliCompressSync(css));
await fs.outputFile('./build/homebrew/bundle.js.br', zlib.brotliCompressSync(bundle));
await fs.outputFile('./build/homebrew/ssr.js.br', zlib.brotliCompressSync(ssr));
//compress files in production
if(!isDev){
await fs.outputFile('./build/homebrew/bundle.css.br', zlib.brotliCompressSync(css));
await fs.outputFile('./build/homebrew/bundle.js.br', zlib.brotliCompressSync(bundle));
await fs.outputFile('./build/homebrew/ssr.js.br', zlib.brotliCompressSync(ssr));
} else {
await fs.remove('./build/homebrew/bundle.css.br');
await fs.remove('./build/homebrew/bundle.js.br');
await fs.remove('./build/homebrew/ssr.js.br');
}
};
fs.emptyDirSync('./build/homebrew');
fs.emptyDirSync('./build');
pack('./client/homebrew/homebrew.jsx', {
paths : ['./shared'],
libs : Proj.libs,
@@ -42,6 +74,6 @@ pack('./client/homebrew/homebrew.jsx', {
if(isDev){
livereload('./build');
watchFile('./server.js', {
watch : ['./homebrew'] // Watch additional folders if you want
watch : ['./client', './server'] // Watch additional folders if you want
});
}

View File

@@ -10,7 +10,21 @@
"classnames",
"codemirror",
"codemirror/mode/gfm/gfm.js",
"codemirror/mode/css/css.js",
"codemirror/mode/javascript/javascript.js",
"codemirror/addon/fold/foldcode.js",
"codemirror/addon/fold/foldgutter.js",
"codemirror/addon/fold/xml-fold.js",
"codemirror/addon/scroll/scrollpastend.js",
"codemirror/addon/search/search.js",
"codemirror/addon/search/searchcursor.js",
"codemirror/addon/search/jump-to-line.js",
"codemirror/addon/search/match-highlighter.js",
"codemirror/addon/search/matchesonscrollbar.js",
"codemirror/addon/dialog/dialog.js",
"codemirror/addon/edit/closetag.js",
"codemirror/addon/edit/trailingspace.js",
"codemirror/addon/selection/active-line.js",
"moment",
"superagent",
"marked"

243
server.js
View File

@@ -1,237 +1,12 @@
const _ = require('lodash');
const jwt = require('jwt-simple');
const expressStaticGzip = require('express-static-gzip');
const express = require('express');
const app = express();
const DB = require('./server/db.js');
const server = require('./server/app.js');
const config = require('./server/config.js');
const homebrewApi = require('./server/homebrew.api.js');
const GoogleActions = require('./server/googleActions.js');
// Serve brotli-compressed static files if available
app.use('/', expressStaticGzip(`${__dirname}/build`, {
enableBrotli : true,
orderPreference : ['br'],
index : false
}));
process.chdir(__dirname);
//app.use(express.static(`${__dirname}/build`));
app.use(require('body-parser').json({ limit: '25mb' }));
app.use(require('cookie-parser')());
app.use(require('./server/forcessl.mw.js'));
const config = require('nconf')
.argv()
.env({ lowerCase: true })
.file('environment', { file: `config/${process.env.NODE_ENV}.json` })
.file('defaults', { file: 'config/default.json' });
//DB
const mongoose = require('mongoose');
mongoose.connect(config.get('mongodb_uri') || config.get('mongolab_uri') || 'mongodb://localhost/naturalcrit',
{ retryWrites: false, useNewUrlParser: true });
mongoose.connection.on('error', ()=>{
console.log('Error : Could not connect to a Mongo Database.');
console.log(' If you are running locally, make sure mongodb.exe is running.');
throw 'Can not connect to Mongo';
});
//Account Middleware
app.use((req, res, next)=>{
if(req.cookies && req.cookies.nc_session){
try {
req.account = jwt.decode(req.cookies.nc_session, config.get('secret'));
//console.log("Just loaded up JWT from cookie:");
//console.log(req.account);
} catch (e){}
}
req.config = {
google_client_id : config.get('google_client_id'),
google_client_secret : config.get('google_client_secret')
};
return next();
});
app.use(homebrewApi);
app.use(require('./server/admin.api.js'));
const HomebrewModel = require('./server/homebrew.model.js').model;
const welcomeText = require('fs').readFileSync('./client/homebrew/pages/homePage/welcome_msg.md', 'utf8');
const changelogText = require('fs').readFileSync('./changelog.md', 'utf8');
String.prototype.replaceAll = function(s, r){return this.split(s).join(r);};
//Robots.txt
app.get('/robots.txt', (req, res)=>{
return res.sendFile(`${__dirname}/robots.txt`);
});
//Source page
app.get('/source/:id', (req, res)=>{
if(req.params.id.length > 12) {
const googleId = req.params.id.slice(0, -12);
const shareId = req.params.id.slice(-12);
GoogleActions.readFileMetadata(config.get('google_api_key'), googleId, shareId, 'share')
.then((brew)=>{
const text = brew.text.replaceAll('<', '&lt;').replaceAll('>', '&gt;');
return res.send(`<code><pre style="white-space: pre-wrap;">${text}</pre></code>`);
})
.catch((err)=>{
console.log(err);
return res.status(400).send('Can\'t get brew from Google');
});
} else {
HomebrewModel.get({ shareId: req.params.id })
.then((brew)=>{
const text = brew.text.replaceAll('<', '&lt;').replaceAll('>', '&gt;');
return res.send(`<code><pre style="white-space: pre-wrap;">${text}</pre></code>`);
})
.catch((err)=>{
console.log(err);
return res.status(404).send('Could not find Homebrew with that id');
});
}
});
//User Page
app.get('/user/:username', async (req, res, next)=>{
const fullAccess = req.account && (req.account.username == req.params.username);
let googleBrews = [];
if(req.account && req.account.googleId){
googleBrews = await GoogleActions.listGoogleBrews(req, res)
.catch((err)=>{
console.error(err);
});
}
const brews = await HomebrewModel.getByUser(req.params.username, fullAccess)
.catch((err)=>{
console.log(err);
DB.connect(config).then(()=>{
// Ensure that we have successfully connected to the database
// before launching server
const PORT = process.env.PORT || config.get('web_port') || 8000;
server.app.listen(PORT, ()=>{
console.log(`server on port: ${PORT}`);
});
if(googleBrews) {
req.brews = _.concat(brews, googleBrews);
} else {req.brews = brews;}
return next();
});
//Edit Page
app.get('/edit/:id', (req, res, next)=>{
res.header('Cache-Control', 'no-cache, no-store'); //reload the latest saved brew when pressing back button, not the cached version before save.
if(req.params.id.length > 12) {
const googleId = req.params.id.slice(0, -12);
const editId = req.params.id.slice(-12);
GoogleActions.readFileMetadata(config.get('google_api_key'), googleId, editId, 'edit')
.then((brew)=>{
req.brew = brew; //TODO Need to sanitize later
return next();
})
.catch((err)=>{
console.log(err);
return res.status(400).send('Can\'t get brew from Google');
});
} else {
HomebrewModel.get({ editId: req.params.id })
.then((brew)=>{
req.brew = brew.sanatize();
return next();
})
.catch((err)=>{
console.log(err);
return res.status(400).send(`Can't get that`);
});
}
});
//Share Page
app.get('/share/:id', (req, res, next)=>{
if(req.params.id.length > 12) {
const googleId = req.params.id.slice(0, -12);
const shareId = req.params.id.slice(-12);
GoogleActions.readFileMetadata(config.get('google_api_key'), googleId, shareId, 'share')
.then((brew)=>{
GoogleActions.increaseView(googleId, shareId, 'share', brew);
return brew;
})
.then((brew)=>{
req.brew = brew; //TODO Need to sanitize later
return next();
})
.catch((err)=>{
console.log(err);
return res.status(400).send('Can\'t get brew from Google');
});
} else {
HomebrewModel.get({ shareId: req.params.id })
.then((brew)=>{
return brew.increaseView();
})
.then((brew)=>{
req.brew = brew.sanatize(true);
return next();
})
.catch((err)=>{
console.log(err);
return res.status(400).send(`Can't get that`);
});
}
});
//Print Page
app.get('/print/:id', (req, res, next)=>{
if(req.params.id.length > 12) {
const googleId = req.params.id.slice(0, -12);
const shareId = req.params.id.slice(-12);
GoogleActions.readFileMetadata(config.get('google_api_key'), googleId, shareId, 'share')
.then((brew)=>{
req.brew = brew; //TODO Need to sanitize later
return next();
})
.catch((err)=>{
console.log(err);
return res.status(400).send('Can\'t get brew from Google');
});
} else {
HomebrewModel.get({ shareId: req.params.id })
.then((brew)=>{
req.brew = brew.sanatize(true);
return next();
})
.catch((err)=>{
console.log(err);
return res.status(400).send(`Can't get that`);
});
}
});
//Render the page
//const render = require('.build/render');
const templateFn = require('./client/template.js');
app.use((req, res)=>{
const props = {
version : require('./package.json').version,
url : req.originalUrl,
welcomeText : welcomeText,
changelog : changelogText,
brew : req.brew,
brews : req.brews,
googleBrews : req.googleBrews,
account : req.account,
};
templateFn('homebrew', title = req.brew ? req.brew.title : '', props)
.then((page)=>{ res.send(page); })
.catch((err)=>{
console.log(err);
return res.sendStatus(500);
});
});
const PORT = process.env.PORT || config.get('web_port') || 8000;
app.listen(PORT);
console.log(`server on port:${PORT}`);

346
server/app.js Normal file
View File

@@ -0,0 +1,346 @@
/*eslint max-lines: ["warn", {"max": 300, "skipBlankLines": true, "skipComments": true}]*/
// Set working directory to project root
process.chdir(`${__dirname}/..`);
const _ = require('lodash');
const jwt = require('jwt-simple');
const express = require('express');
const yaml = require('js-yaml');
const app = express();
const config = require('./config.js');
const homebrewApi = require('./homebrew.api.js');
const GoogleActions = require('./googleActions.js');
const serveCompressedStaticAssets = require('./static-assets.mv.js');
const sanitizeFilename = require('sanitize-filename');
const asyncHandler = require('express-async-handler');
const brewAccessTypes = ['edit', 'share', 'raw'];
//Get the brew object from the HB database or Google Drive
const getBrewFromId = asyncHandler(async (id, accessType)=>{
if(!brewAccessTypes.includes(accessType))
throw ('Invalid Access Type when getting brew');
let brew;
if(id.length > 12) {
const googleId = id.slice(0, -12);
id = id.slice(-12);
brew = await GoogleActions.getGoogleBrew(googleId, id, accessType);
} else {
brew = await HomebrewModel.get(accessType == 'edit' ? { editId: id } : { shareId: id });
brew = brew.toObject(); // Convert MongoDB object to standard Javascript Object
}
brew = sanitizeBrew(brew, accessType === 'edit' ? false : true);
//Split brew.text into text and style
//unless the Access Type is RAW, in which case return immediately
if(accessType == 'raw') {
return brew;
}
splitTextStyleAndMetadata(brew);
return brew;
});
const sanitizeBrew = (brew, full=false)=>{
delete brew._id;
delete brew.__v;
if(full){
delete brew.editId;
}
return brew;
};
const splitTextStyleAndMetadata = (brew)=>{
brew.text = brew.text.replaceAll('\r\n', '\n');
if(brew.text.startsWith('```metadata')) {
const index = brew.text.indexOf('```\n\n');
const metadataSection = brew.text.slice(12, index - 1);
const metadata = yaml.load(metadataSection);
Object.assign(brew, _.pick(metadata, ['title', 'description', 'tags', 'systems', 'renderer']));
brew.text = brew.text.slice(index + 5);
}
if(brew.text.startsWith('```css')) {
const index = brew.text.indexOf('```\n\n');
brew.style = brew.text.slice(7, index - 1);
brew.text = brew.text.slice(index + 5);
}
};
app.use('/', serveCompressedStaticAssets(`build`));
//app.use(express.static(`${__dirname}/build`));
app.use(require('body-parser').json({ limit: '25mb' }));
app.use(require('cookie-parser')());
app.use(require('./forcessl.mw.js'));
//Account Middleware
app.use((req, res, next)=>{
if(req.cookies && req.cookies.nc_session){
try {
req.account = jwt.decode(req.cookies.nc_session, config.get('secret'));
//console.log("Just loaded up JWT from cookie:");
//console.log(req.account);
} catch (e){}
}
req.config = {
google_client_id : config.get('google_client_id'),
google_client_secret : config.get('google_client_secret')
};
return next();
});
app.use(homebrewApi);
app.use(require('./admin.api.js'));
const HomebrewModel = require('./homebrew.model.js').model;
const welcomeText = require('fs').readFileSync('client/homebrew/pages/homePage/welcome_msg.md', 'utf8');
const welcomeTextV3 = require('fs').readFileSync('client/homebrew/pages/homePage/welcome_msg_v3.md', 'utf8');
const migrateText = require('fs').readFileSync('client/homebrew/pages/homePage/migrate.md', 'utf8');
const changelogText = require('fs').readFileSync('changelog.md', 'utf8');
const faqText = require('fs').readFileSync('faq.md', 'utf8');
String.prototype.replaceAll = function(s, r){return this.split(s).join(r);};
//Robots.txt
app.get('/robots.txt', (req, res)=>{
return res.sendFile(`robots.txt`, { root: process.cwd() });
});
//Home page
app.get('/', async (req, res, next)=>{
const brew = {
text : welcomeText
};
req.brew = brew;
return next();
});
//Home page v3
app.get('/v3_preview', async (req, res, next)=>{
const brew = {
text : welcomeTextV3,
renderer : 'V3'
};
splitTextStyleAndMetadata(brew);
req.brew = brew;
return next();
});
//Legacy/Other Document -> v3 Migration Guide
app.get('/migrate', async (req, res, next)=>{
const brew = {
text : migrateText,
renderer : 'V3'
};
splitTextStyleAndMetadata(brew);
req.brew = brew;
return next();
});
//Changelog page
app.get('/changelog', async (req, res, next)=>{
const brew = {
title : 'Changelog',
text : changelogText,
renderer : 'V3'
};
splitTextStyleAndMetadata(brew);
req.brew = brew;
return next();
});
//FAQ page
app.get('/faq', async (req, res, next)=>{
const brew = {
title : 'FAQ',
text : faqText,
renderer : 'V3'
};
splitTextStyleAndMetadata(brew);
req.brew = brew;
return next();
});
//Source page
app.get('/source/:id', asyncHandler(async (req, res)=>{
const brew = await getBrewFromId(req.params.id, 'raw');
const replaceStrings = { '&': '&amp;', '<': '&lt;', '>': '&gt;' };
let text = brew.text;
for (const replaceStr in replaceStrings) {
text = text.replaceAll(replaceStr, replaceStrings[replaceStr]);
}
text = `<code><pre style="white-space: pre-wrap;">${text}</pre></code>`;
res.status(200).send(text);
}));
//Download brew source page
app.get('/download/:id', asyncHandler(async (req, res)=>{
const brew = await getBrewFromId(req.params.id, 'raw');
const prefix = 'HB - ';
let fileName = sanitizeFilename(`${prefix}${brew.title}`).replaceAll(' ', '');
if(!fileName || !fileName.length) { fileName = `${prefix}-Untitled-Brew`; };
res.set({
'Cache-Control' : 'no-cache',
'Content-Type' : 'text/plain',
'Content-Disposition' : `attachment; filename="${fileName}.txt"`
});
res.status(200).send(brew.text);
}));
//User Page
app.get('/user/:username', async (req, res, next)=>{
const ownAccount = req.account && (req.account.username == req.params.username);
const fields = [
'title',
'pageCount',
'description',
'authors',
'published',
'views',
'shareId',
'editId',
'createdAt',
'updatedAt',
'lastViewed'
];
let brews = await HomebrewModel.getByUser(req.params.username, ownAccount, fields)
.catch((err)=>{
console.log(err);
});
if(ownAccount && req?.account?.googleId){
const auth = await GoogleActions.authCheck(req.account, res);
let googleBrews = await GoogleActions.listGoogleBrews(auth)
.catch((err)=>{
console.error(err);
});
if(googleBrews) {
googleBrews = googleBrews.map((brew)=>({ ...brew, authors: [req.account.username] }));
brews = _.concat(brews, googleBrews);
}
}
req.brews = _.map(brews, (brew)=>{
return sanitizeBrew(brew, !ownAccount);
});
return next();
});
//Edit Page
app.get('/edit/:id', asyncHandler(async (req, res, next)=>{
res.header('Cache-Control', 'no-cache, no-store'); //reload the latest saved brew when pressing back button, not the cached version before save.
const brew = await getBrewFromId(req.params.id, 'edit');
req.brew = brew;
return next();
}));
//New Page
app.get('/new/:id', asyncHandler(async (req, res, next)=>{
const brew = await getBrewFromId(req.params.id, 'share');
brew.title = `CLONE - ${brew.title}`;
req.brew = brew;
return next();
}));
//Share Page
app.get('/share/:id', asyncHandler(async (req, res, next)=>{
const brew = await getBrewFromId(req.params.id, 'share');
if(req.params.id.length > 12) {
const googleId = req.params.id.slice(0, -12);
const shareId = req.params.id.slice(-12);
await GoogleActions.increaseView(googleId, shareId, 'share', brew)
.catch((err)=>{next(err);});
} else {
await HomebrewModel.increaseView({ shareId: brew.shareId });
}
req.brew = brew;
return next();
}));
//Print Page
app.get('/print/:id', asyncHandler(async (req, res, next)=>{
const brew = await getBrewFromId(req.params.id, 'share');
req.brew = brew;
return next();
}));
const nodeEnv = config.get('node_env');
const isLocalEnvironment = config.get('local_environments').includes(nodeEnv);
// Local only
if(isLocalEnvironment){
// Login
app.post('/local/login', (req, res)=>{
const username = req.body.username;
if(!username) return;
const payload = jwt.encode({ username: username, issued: new Date }, config.get('secret'));
return res.json(payload);
});
}
//Render the page
const templateFn = require('./../client/template.js');
app.use((req, res)=>{
// Create configuration object
const configuration = {
local : isLocalEnvironment,
publicUrl : config.get('publicUrl') ?? '',
environment : nodeEnv
};
const props = {
version : require('./../package.json').version,
url : req.originalUrl,
brew : req.brew,
brews : req.brews,
googleBrews : req.googleBrews,
account : req.account,
enable_v3 : config.get('enable_v3'),
config : configuration
};
const title = req.brew ? req.brew.title : '';
templateFn('homebrew', title, props)
.then((page)=>{ res.send(page); })
.catch((err)=>{
console.log(err);
return res.sendStatus(500);
});
});
//v=====----- Error-Handling Middleware -----=====v//
//Format Errors so all fields will be sent
const replaceErrors = (key, value)=>{
if(value instanceof Error) {
const error = {};
Object.getOwnPropertyNames(value).forEach(function (key) {
error[key] = value[key];
});
return error;
}
return value;
};
const getPureError = (error)=>{
return JSON.parse(JSON.stringify(error, replaceErrors));
};
app.use((err, req, res, next)=>{
const status = err.status || 500;
console.error(err);
res.status(status).send(getPureError(err));
});
//^=====--------------------------------------=====^//
module.exports = {
app : app
};

5
server/config.js Normal file
View File

@@ -0,0 +1,5 @@
module.exports = require('nconf')
.argv()
.env({ lowerCase: true })
.file('environment', { file: `config/${process.env.NODE_ENV}.json` })
.file('defaults', { file: 'config/default.json' });

37
server/db.js Normal file
View File

@@ -0,0 +1,37 @@
// The main purpose of this file is to provide an interface for database
// connection. Even though the code is quite simple and basically a tiny
// wrapper around mongoose package, it works as single point where
// database setup/config is performed and the interface provided here can be
// reused by both the main application and all tests which require database
// connection.
const Mongoose = require('mongoose');
const getMongoDBURL = (config)=>{
return config.get('mongodb_uri') ||
config.get('mongolab_uri') ||
'mongodb://localhost/homebrewery';
};
const handleConnectionError = (error)=>{
if(error) {
console.error('Could not connect to a Mongo database: \n');
console.error(error);
console.error('\nIf you are running locally, make sure mongodb.exe is running and DB URL is configured properly');
process.exit(1); // non-zero exit code to indicate an error
}
};
const disconnect = async ()=>{
return await Mongoose.disconnect();
};
const connect = async (config)=>{
return await Mongoose.connect(getMongoDBURL(config),
{ retryWrites: false }, handleConnectionError);
};
module.exports = {
connect : connect,
disconnect : disconnect
};

View File

@@ -3,21 +3,30 @@ const _ = require('lodash');
const { google } = require('googleapis');
const { nanoid } = require('nanoid');
const token = require('./token.js');
const config = require('nconf')
.argv()
.env({ lowerCase: true }) // Load environment variables
.file('environment', { file: `config/${process.env.NODE_ENV}.json` })
.file('defaults', { file: 'config/default.json' });
const config = require('./config.js');
//let oAuth2Client;
const keys = typeof(config.get('service_account')) == 'string' ?
JSON.parse(config.get('service_account')) :
config.get('service_account');
let serviceAuth;
try {
serviceAuth = google.auth.fromJSON(keys);
serviceAuth.scopes = [
'https://www.googleapis.com/auth/drive'
];
} catch (err) {
console.warn(err);
console.log('Please make sure that a Google Service Account is set up properly in your config files.');
}
google.options({ auth: serviceAuth || config.get('google_api_key') });
GoogleActions = {
const GoogleActions = {
authCheck : (account, res)=>{
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(
@@ -47,7 +56,7 @@ GoogleActions = {
},
getGoogleFolder : async (auth)=>{
const drive = google.drive({ version: 'v3', auth: auth });
const drive = google.drive({ version: 'v3', auth });
fileMetadata = {
'name' : 'Homebrewery',
@@ -60,6 +69,7 @@ GoogleActions = {
.catch((err)=>{
console.log('Error searching Google Drive Folders');
console.error(err);
throw (err);
});
let folderId;
@@ -69,8 +79,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;
@@ -81,100 +92,83 @@ GoogleActions = {
return folderId;
},
listGoogleBrews : async (req, res)=>{
oAuth2Client = GoogleActions.authCheck(req.account, res);
//TODO: Change to service account to allow non-owners to view published files.
// Requires a driveId parameter in the drive.files.list command
// const keys = JSON.parse(config.get('service_account'));
// const auth = google.auth.fromJSON(keys);
// auth.scopes = ['https://www.googleapis.com/auth/drive'];
const drive = google.drive({ version: 'v3', auth: oAuth2Client });
listGoogleBrews : async (auth)=>{
const drive = google.drive({ version: 'v3', auth });
const obj = await drive.files.list({
pageSize : 100,
fields : 'nextPageToken, files(id, name, description, modifiedTime, properties)',
pageSize : 1000,
fields : 'nextPageToken, files(id, name, description, createdTime, modifiedTime, properties)',
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.
});
if(!obj.data.files.length) {
console.log('No files found.');
}
console.log('No files found.');
}
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,
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 {
text : '',
shareId : file.properties.shareId,
editId : file.properties.editId,
createdAt : file.createdTime,
updatedAt : file.modifiedTime,
gDrive : true,
googleId : file.id,
pageCount : parseInt(file.properties.pageCount),
title : file.properties.title,
description : file.description,
views : parseInt(file.properties.views),
tags : '',
published : file.properties.published ? file.properties.published == 'true' : false,
systems : [],
thumbnail : file.properties.thumbnail
};
});
return brews;
},
existsGoogleBrew : async (auth, id)=>{
const drive = google.drive({ version: 'v3', auth: auth });
updateGoogleBrew : async (brew)=>{
const drive = google.drive({ version: 'v3' });
const result = await drive.files.get({ fileId: id })
await drive.files.update({
fileId : brew.googleId,
resource : {
name : `${brew.title}.txt`,
description : `${brew.description}`,
properties : {
title : brew.title,
published : brew.published,
version : brew.version,
renderer : brew.renderer,
tags : brew.tags,
pageCount : brew.pageCount,
systems : brew.systems.join(),
thumbnail : brew.thumbnail
}
},
media : {
mimeType : 'text/plain',
body : brew.text
}
})
.catch((err)=>{
console.log('error checking file exists...');
console.log(err);
return false;
console.log('Error saving to google');
console.error(err);
throw (err);
//return res.status(500).send('Error while saving');
});
if(result){return true;}
return false;
},
updateGoogleBrew : async (auth, brew)=>{
const drive = google.drive({ version: 'v3', auth: auth });
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,
tags : brew.tags,
systems : brew.systems.join() }
},
media : { mimeType : 'text/plain',
body : brew.text }
})
.catch((err)=>{
console.log('Error saving to google');
console.error(err);
//return res.status(500).send('Error while saving');
});
}
return (brew);
},
newGoogleBrew : async (auth, brew)=>{
const drive = google.drive({ version: 'v3', auth: auth });
const drive = google.drive({ version: 'v3', auth });
const media = {
mimeType : 'text/plain',
@@ -188,10 +182,13 @@ GoogleActions = {
'description' : `${brew.description}`,
'parents' : [folderId],
'properties' : { //AppProperties is not accessible
'shareId' : nanoid(12),
'editId' : nanoid(12),
'title' : brew.title,
'views' : '0'
'shareId' : brew.shareId || nanoid(12),
'editId' : brew.editId || nanoid(12),
'title' : brew.title,
'views' : '0',
'pageCount' : brew.pageCount,
'renderer' : brew.renderer || 'legacy',
'thumbnail' : brew.thumbnail || ''
}
};
@@ -200,8 +197,9 @@ GoogleActions = {
media : media
})
.catch((err)=>{
console.log('Error while creating new Google brew');
console.error(err);
return res.status(500).send('Error while creating google brew');
throw (err);
});
if(!obj) return;
@@ -225,11 +223,13 @@ GoogleActions = {
updatedAt : new Date(),
gDrive : true,
googleId : obj.data.id,
pageCount : fileMetadata.properties.pageCount,
title : brew.title,
description : brew.description,
tags : '',
published : brew.published,
renderer : brew.renderer,
authors : [],
systems : []
};
@@ -237,16 +237,16 @@ GoogleActions = {
return newHomebrew;
},
readFileMetadata : async (auth, id, accessId, accessType)=>{
const drive = google.drive({ version: 'v3', auth: auth });
getGoogleBrew : async (id, accessId, accessType)=>{
const drive = google.drive({ version: 'v3' });
const obj = await drive.files.get({
fileId : id,
fields : 'properties, createdTime, modifiedTime, description'
fields : 'properties, createdTime, modifiedTime, description, trashed'
})
.catch((err)=>{
console.log('Error loading from Google');
console.error(err);
throw (err);
return;
});
@@ -257,12 +257,7 @@ GoogleActions = {
throw ('Share ID does not match');
}
//Access actual file with service account. Just api key is causing "automated query" errors.
const keys = JSON.parse(config.get('service_account'));
const serviceAuth = google.auth.fromJSON(keys);
serviceAuth.scopes = ['https://www.googleapis.com/auth/drive'];
const serviceDrive = google.drive({ version: 'v3', auth: serviceAuth });
const serviceDrive = google.drive({ version: 'v3' });
const file = await serviceDrive.files.get({
fileId : id,
@@ -285,12 +280,16 @@ GoogleActions = {
systems : obj.data.properties.systems ? obj.data.properties.systems.split(',') : [],
authors : [],
published : obj.data.properties.published ? obj.data.properties.published == 'true' : false,
trashed : obj.data.trashed,
createdAt : obj.data.createdTime,
updatedAt : obj.data.modifiedTime,
lastViewed : obj.data.properties.lastViewed,
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',
thumbnail : obj.data.properties.thumbnail || '',
gDrive : true,
googleId : id
@@ -300,10 +299,8 @@ GoogleActions = {
}
},
deleteGoogleBrew : async (req, res, id)=>{
oAuth2Client = GoogleActions.authCheck(req.account, res);
const drive = google.drive({ version: 'v3', auth: oAuth2Client });
deleteGoogleBrew : async (auth, id)=>{
const drive = google.drive({ version: 'v3', auth });
const googleId = id.slice(0, -12);
const accessId = id.slice(-12);
@@ -315,7 +312,6 @@ GoogleActions = {
.catch((err)=>{
console.log('Error loading from Google');
console.error(err);
return;
});
if(obj && obj.data.properties.editId != accessId) {
@@ -330,31 +326,26 @@ GoogleActions = {
console.log('Can\'t delete Google file');
console.error(err);
});
return res.status(200).send();
},
increaseView : async (id, accessId, accessType, brew)=>{
//service account because this is modifying another user's file properties
//so we need extended scope
const keys = JSON.parse(config.get('service_account'));
const auth = google.auth.fromJSON(keys);
auth.scopes = ['https://www.googleapis.com/auth/drive'];
const drive = google.drive({ version: 'v3', auth: auth });
const drive = google.drive({ version: 'v3' });
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');
console.error(err);
//return res.status(500).send('Error while saving');
});
return;
}
};

View File

@@ -4,6 +4,8 @@ const router = require('express').Router();
const zlib = require('zlib');
const GoogleActions = require('./googleActions.js');
const Markdown = require('../shared/naturalcrit/markdown.js');
const yaml = require('js-yaml');
const asyncHandler = require('express-async-handler');
// const getTopBrews = (cb) => {
// HomebrewModel.find().sort({ views: -1 }).limit(5).exec(function(err, brews) {
@@ -11,141 +13,224 @@ const Markdown = require('../shared/naturalcrit/markdown.js');
// });
// };
const getGoodBrewTitle = (text)=>{
const tokens = Markdown.marked.lexer(text);
return title = (tokens.find((token)=>token.type == 'heading' || token.type == 'paragraph') || { text: 'No Title' }).text;
const mergeBrewText = (brew)=>{
let text = brew.text;
if(brew.style !== undefined) {
text = `\`\`\`css\n` +
`${brew.style || ''}\n` +
`\`\`\`\n\n` +
`${text}`;
}
const metadata = _.pick(brew, ['title', 'description', 'tags', 'systems', 'renderer']);
text = `\`\`\`metadata\n` +
`${yaml.dump(metadata)}\n` +
`\`\`\`\n\n` +
`${text}`;
return text;
};
const newBrew = (req, res)=>{
const brew = req.body;
brew.authors = (req.account) ? [req.account.username] : [];
const MAX_TITLE_LENGTH = 100;
const getGoodBrewTitle = (text)=>{
const tokens = Markdown.marked.lexer(text);
return (tokens.find((token)=>token.type == 'heading' || token.type == 'paragraph')?.text || 'No Title')
.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 beforeNewSave = (account, brew)=>{
if(!brew.title) {
brew.title = getGoodBrewTitle(brew.text);
}
delete brew.editId;
delete brew.shareId;
delete brew.googleId;
brew.authors = (account) ? [account.username] : [];
brew.text = mergeBrewText(brew);
};
const newLocalBrew = async (brew)=>{
const newHomebrew = new HomebrewModel(brew);
// Compress brew text to binary before saving
newHomebrew.textBin = zlib.deflateRawSync(newHomebrew.text);
// Delete the non-binary text field since it's not needed anymore
newHomebrew.text = undefined;
newHomebrew.save((err, obj)=>{
if(err) {
console.error(err, err.toString(), err.stack);
return res.status(500).send(`Error while creating new brew, ${err.toString()}`);
}
obj = obj.toObject();
obj.gDrive = false;
return res.status(200).send(obj);
});
};
const updateBrew = (req, res)=>{
HomebrewModel.get({ editId: req.params.id })
.then((brew)=>{
brew = _.merge(brew, req.body);
// Compress brew text to binary before saving
brew.textBin = zlib.deflateRawSync(req.body.text);
// Delete the non-binary text field since it's not needed anymore
brew.text = undefined;
brew.updatedAt = new Date();
if(req.account) {
brew.authors = _.uniq(_.concat(brew.authors, req.account.username));
}
brew.markModified('authors');
brew.markModified('systems');
brew.save((err, obj)=>{
if(err) throw err;
return res.status(200).send(obj);
});
})
let saved = await newHomebrew.save()
.catch((err)=>{
console.error(err);
return res.status(500).send('Error while saving');
console.error(err, err.toString(), err.stack);
throw `Error while creating new brew, ${err.toString()}`;
});
saved = saved.toObject();
saved.gDrive = false;
return saved;
};
const deleteBrew = (req, res)=>{
HomebrewModel.find({ editId: req.params.id }, (err, objs)=>{
if(!objs.length || err) {
return res.status(404).send('Can not find homebrew with that id');
}
const newGoogleBrew = async (account, brew, res)=>{
const oAuth2Client = GoogleActions.authCheck(account, res);
const brew = objs[0];
if(req.account) {
// Remove current user as author
brew.authors = _.pull(brew.authors, req.account.username);
brew.markModified('authors');
}
if(brew.authors.length === 0) {
// Delete brew if there are no authors left
brew.remove((err)=>{
if(err) return res.status(500).send('Error while removing');
return res.status(200).send();
});
} else {
// Otherwise, save the brew with updated author list
brew.save((err, savedBrew)=>{
if(err) throw err;
return res.status(200).send(savedBrew);
});
}
});
return await GoogleActions.newGoogleBrew(oAuth2Client, brew);
};
const newGoogleBrew = async (req, res, next)=>{
let oAuth2Client;
try { oAuth2Client = GoogleActions.authCheck(req.account, res); } catch (err) { return res.status(err.status).send(err.message); }
const newBrew = async (req, res)=>{
const brew = req.body;
brew.authors = (req.account) ? [req.account.username] : [];
if(!brew.title) {
brew.title = getGoodBrewTitle(brew.text);
}
const { transferToGoogle } = req.query;
delete brew.editId;
delete brew.shareId;
delete brew.googleId;
req.body = brew;
beforeNewSave(req.account, brew);
console.log(oAuth2Client);
const newBrew = await GoogleActions.newGoogleBrew(oAuth2Client, brew);
return res.status(200).send(newBrew);
let saved;
if(transferToGoogle) {
saved = await newGoogleBrew(req.account, brew, res)
.catch((err)=>{
res.status(err.status || err.response.status).send(err.message || err);
});
} else {
saved = await newLocalBrew(brew)
.catch((err)=>{
res.status(500).send(err);
});
}
if(!saved) return;
return res.status(200).send(saved);
};
const updateGoogleBrew = async (req, res, next)=>{
let oAuth2Client;
const updateBrew = async (req, res)=>{
let brew = excludePropsFromUpdate(req.body);
const { transferToGoogle, transferFromGoogle } = req.query;
try { oAuth2Client = GoogleActions.authCheck(req.account, res); } catch (err) { return res.status(err.status).send(err.message); }
let saved;
if(brew.googleId && transferFromGoogle) {
beforeNewSave(req.account, brew);
const updatedBrew = await GoogleActions.updateGoogleBrew(oAuth2Client, req.body);
saved = await newLocalBrew(brew)
.catch((err)=>{
console.error(err);
res.status(500).send(err);
});
if(!saved) return;
return res.status(200).send(updatedBrew);
await deleteGoogleBrew(req.account, `${brew.googleId}${brew.editId}`, res)
.catch((err)=>{
console.error(err);
res.status(err.status || err.response.status).send(err.message || err);
});
} else if(!brew.googleId && transferToGoogle) {
saved = await newGoogleBrew(req.account, brew, res)
.catch((err)=>{
console.error(err);
res.status(err.status || err.response.status).send(err.message || err);
});
if(!saved) return;
await deleteLocalBrew(req.account, brew.editId)
.catch((err)=>{
console.error(err);
res.status(err.status).send(err.message);
});
} else if(brew.googleId) {
brew.text = mergeBrewText(brew);
saved = await GoogleActions.updateGoogleBrew(brew)
.catch((err)=>{
console.error(err);
res.status(err.response?.status || 500).send(err);
});
} else {
const dbBrew = await HomebrewModel.get({ editId: req.params.id })
.catch((err)=>{
console.error(err);
return res.status(500).send('Error while saving');
});
brew = _.merge(dbBrew, brew);
brew.text = mergeBrewText(brew);
// Compress brew text to binary before saving
brew.textBin = zlib.deflateRawSync(brew.text);
// Delete the non-binary text field since it's not needed anymore
brew.text = undefined;
brew.updatedAt = new Date();
if(req.account) {
brew.authors = _.uniq(_.concat(brew.authors, req.account.username));
}
brew.markModified('authors');
brew.markModified('systems');
saved = await brew.save();
}
if(!saved) return;
if(!res.headersSent) return res.status(200).send(saved);
};
router.post('/api', newBrew);
router.post('/api/newGoogle/', newGoogleBrew);
router.put('/api/:id', updateBrew);
router.put('/api/update/:id', updateBrew);
router.put('/api/updateGoogle/:id', updateGoogleBrew);
router.delete('/api/:id', deleteBrew);
router.get('/api/remove/:id', deleteBrew);
router.get('/api/removeGoogle/:id', (req, res)=>{GoogleActions.deleteGoogleBrew(req, res, req.params.id);});
const deleteBrew = async (req, res)=>{
if(req.params.id.length > 12) {
const deleted = await deleteGoogleBrew(req.account, req.params.id, res)
.catch((err)=>{
res.status(500).send(err);
});
if(deleted) return res.status(200).send();
} else {
const deleted = await deleteLocalBrew(req.account, req.params.id)
.catch((err)=>{
res.status(err.status).send(err.message);
});
if(deleted) return res.status(200).send(deleted);
return res.status(200).send();
}
};
const deleteLocalBrew = async (account, id)=>{
const brew = await HomebrewModel.findOne({ editId: id });
if(!brew) {
throw { status: 404, message: 'Can not find homebrew with that id' };
}
if(account) {
// Remove current user as author
brew.authors = _.pull(brew.authors, account.username);
brew.markModified('authors');
}
if(brew.authors.length === 0) {
// Delete brew if there are no authors left
await brew.remove()
.catch((err)=>{
console.error(err);
throw { status: 500, message: 'Error while removing' };
});
} else {
// Otherwise, save the brew with updated author list
return await brew.save()
.catch((err)=>{
throw { status: 500, message: err };
});
}
};
const deleteGoogleBrew = async (account, id, res)=>{
const auth = await GoogleActions.authCheck(account, res);
await GoogleActions.deleteGoogleBrew(auth, id);
return true;
};
router.post('/api', asyncHandler(newBrew));
router.put('/api/:id', asyncHandler(updateBrew));
router.put('/api/update/:id', asyncHandler(updateBrew));
router.delete('/api/:id', asyncHandler(deleteBrew));
router.get('/api/remove/:id', asyncHandler(deleteBrew));
module.exports = router;

View File

@@ -4,17 +4,20 @@ 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: '' },
systems : [String],
renderer : { type: String, default: '' },
authors : [String],
published : { type: Boolean, default: false },
thumbnail : { type: String, default: '' },
createdAt : { type: Date, default: Date.now },
updatedAt : { type: Date, default: Date.now },
@@ -23,54 +26,41 @@ const HomebrewSchema = mongoose.Schema({
version : { type: Number, default: 1 }
}, { versionKey: false });
HomebrewSchema.methods.sanatize = function(full=false){
const brew = this.toJSON();
delete brew._id;
delete brew.__v;
if(full){
delete brew.editId;
}
return brew;
};
HomebrewSchema.methods.increaseView = async function(){
this.lastViewed = new Date();
this.views = this.views + 1;
const text = this.text;
this.text = undefined;
await this.save()
HomebrewSchema.statics.increaseView = async function(query) {
const brew = await Homebrew.findOne(query).exec();
brew.lastViewed = new Date();
brew.views = brew.views + 1;
await brew.save()
.catch((err)=>{
return err;
});
this.text = text;
return this;
return brew;
};
HomebrewSchema.statics.get = function(query){
HomebrewSchema.statics.get = function(query, fields=null){
return new Promise((resolve, reject)=>{
Homebrew.find(query, (err, brews)=>{
Homebrew.find(query, fields, null, (err, brews)=>{
if(err || !brews.length) return reject('Can not find brew');
if(!_.isNil(brews[0].textBin)) { // Uncompress zipped text field
unzipped = zlib.inflateRawSync(brews[0].textBin);
brews[0].text = unzipped.toString();
}
if(!brews[0].renderer)
brews[0].renderer = 'legacy';
return resolve(brews[0]);
});
});
};
HomebrewSchema.statics.getByUser = function(username, allowAccess=false){
HomebrewSchema.statics.getByUser = function(username, allowAccess=false, fields=null){
return new Promise((resolve, reject)=>{
const query = { authors: username, published: true };
if(allowAccess){
delete query.published;
}
Homebrew.find(query, (err, brews)=>{
Homebrew.find(query, fields).lean().exec((err, brews)=>{ //lean() converts results to JSObjects
if(err) return reject('Can not find brew');
return resolve(_.map(brews, (brew)=>{
return brew.sanatize(!allowAccess);
}));
return resolve(brews);
});
});
};

View File

@@ -0,0 +1,31 @@
const expressStaticGzip = require('express-static-gzip');
// Serve brotli-compressed static files if available
const customCacheControlHandler=(response, path)=>{
if(path.endsWith('.br')) {
// Drop .br suffix to help mime understand the actual type of the file
path = path.slice(0, -3);
}
if(path.endsWith('.js') || path.endsWith('.css')) {
// .js and .css files are allowed to be cached up to 12 hours, but then
// they must be revalidated to see if there are any updates
response.setHeader('Cache-Control', 'public, max-age: 43200, must-revalidate');
} else {
// Everything else is cached up to a months as we don't update our images
// or fonts frequently
response.setHeader('Cache-Control', 'public, max-age=2592000, must-revalidate');
}
};
const init=(pathToAssets)=>{
return expressStaticGzip(pathToAssets, {
enableBrotli : true,
orderPreference : ['br'],
index : false,
serveStatic : {
cacheControl : false, // we are going to use custom cache-control
setHeaders : customCacheControlHandler
} });
};
module.exports = init;

View File

@@ -1,11 +1,7 @@
const jwt = require('jwt-simple');
// Load configuration values
const config = require('nconf')
.argv()
.env({ lowerCase: true }) // Load environment variables
.file('environment', { file: `config/${process.env.NODE_ENV}.json` })
.file('defaults', { file: 'config/default.json' });
const config = require('./config.js');
// Generate an Access Token for the given User ID
const generateAccessToken = (account)=>{

Some files were not shown because too many files have changed in this diff Show More