mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2025-12-29 19:52:43 +00:00
366 lines
8.8 KiB
JavaScript
366 lines
8.8 KiB
JavaScript
/* 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 : 'Editor',
|
|
icon : 'fas fa-pencil-alt',
|
|
view : 'text',
|
|
snippets : [
|
|
{
|
|
name : 'Column Break',
|
|
icon : 'fas fa-columns',
|
|
gen : '\n\\column\n'
|
|
},
|
|
{
|
|
name : 'New Page',
|
|
icon : 'fas fa-file-alt',
|
|
gen : '\n\\page\n'
|
|
},
|
|
{
|
|
name : 'Vertical Spacing',
|
|
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 : '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 rely on the automatic column-break rather than \`\column\` if
|
|
you mix columns and wide blocks on the same page.
|
|
}}
|
|
\n`
|
|
},
|
|
{
|
|
name : 'Image',
|
|
icon : 'fas fa-image',
|
|
gen : dedent`
|
|
 {width:325px,mix-blend-mode:multiply}
|
|
|
|
{{artist,position:relative,top:-230px,left:-100px,margin-bottom:-30px
|
|
##### Cat Warrior
|
|
[Kyoung Hwan Kim](https://www.artstation.com/tahra)
|
|
}}`
|
|
},
|
|
{
|
|
name : 'Background Image',
|
|
icon : 'fas fa-tree',
|
|
gen : dedent`
|
|
 {position:absolute,top:50px,right:30px,width:280px}
|
|
|
|
{{artist,top:90px,right:30px
|
|
##### Homebrew Mug
|
|
[naturalcrit](https://homebrew.naturalcrit.com)
|
|
}}`
|
|
},
|
|
{
|
|
name : 'QR Code',
|
|
icon : 'fas fa-qrcode',
|
|
gen : (brew)=>{
|
|
return `![]` +
|
|
`(https://api.qrserver.com/v1/create-qr-code/?data=` +
|
|
`https://homebrewery.naturalcrit.com/share/${brew.shareId}` +
|
|
`&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 : 'Remove Drop Cap',
|
|
icon : 'fas fa-remove-format',
|
|
gen : '<style>\n' +
|
|
' .phb3 h1+p:first-letter {\n' +
|
|
' all: unset;\n' +
|
|
' }\n' +
|
|
'</style>'
|
|
},
|
|
{
|
|
name : 'Tweak Drop Cap',
|
|
icon : 'fas fa-sliders-h',
|
|
gen : '<style>\n' +
|
|
' /* Drop Cap settings */\n' +
|
|
' .phb3 h1 + p::first-letter {\n' +
|
|
' float: left;\n' +
|
|
' font-family: SolberaImitationRemake;\n' +
|
|
' font-size: 3.5cm;\n' +
|
|
' color: #222;\n' +
|
|
' line-height: .8em;\n' +
|
|
' }\n' +
|
|
'</style>'
|
|
},
|
|
{
|
|
name : 'Add Comment',
|
|
icon : 'fas fa-code', /* might need to be fa-solid fa-comment-code --not sure, Gazook */
|
|
gen : dedent`\n
|
|
<!-- This is a comment that will not be rendered into your brew. Hotkey (Ctrl/Cmd + /). -->
|
|
`
|
|
},
|
|
]
|
|
},
|
|
|
|
|
|
/************************* 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-scroll',
|
|
gen : MagicGen.spellList,
|
|
},
|
|
{
|
|
name : 'Class Feature',
|
|
icon : 'fas fa-mask',
|
|
gen : ClassFeatureGen,
|
|
},
|
|
{
|
|
name : 'Note',
|
|
icon : 'fas fa-sticky-note',
|
|
gen : function(){
|
|
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 : 'fas fa-comment-alt',
|
|
gen : function(){
|
|
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 : 'fas fa-spider',
|
|
gen : MonsterBlockGen.monster('monster,frame', 2),
|
|
},
|
|
{
|
|
name : 'Wide Monster Stat Block',
|
|
icon : 'fas fa-dragon',
|
|
gen : MonsterBlockGen.monster('monster,frame,wide', 4),
|
|
},
|
|
{
|
|
name : 'Cover Page',
|
|
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`;
|
|
},
|
|
},
|
|
]
|
|
},
|
|
|
|
|
|
|
|
/********************* 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 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 : 'fas fa-list',
|
|
gen : function(){
|
|
return dedent`
|
|
{{wide
|
|
##### Weapons
|
|
| Name | Cost | Damage | Weight | Properties |
|
|
|:------------------------|:-----:|:----------------|--------:|:-----------|
|
|
| *Simple Melee Weapons* | | | | |
|
|
|   Club | 1 sp | 1d4 bludgeoning | 2 lb. | Light |
|
|
|   Dagger | 2 gp | 1d4 piercing | 1 lb. | Finesse |
|
|
|   Spear | 1 gp | 1d6 piercing | 3 lb. | Thrown |
|
|
| *Simple Ranged Weapons* | | | | |
|
|
|   Dart | 5 cp | 1d4 piercig | 1/4 lb. | Finesse |
|
|
|   Shortbow | 25 gp | 1d6 piercing | 2 lb. | Ammunition |
|
|
|   Sling | 1 sp | 1d4 bludgeoning | — | Ammunition |
|
|
}}
|
|
\n`;
|
|
}
|
|
},
|
|
{
|
|
name : 'Split Table',
|
|
icon : 'fas fa-th-large',
|
|
gen : function(){
|
|
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`;
|
|
}
|
|
}
|
|
]
|
|
},
|
|
|
|
|
|
|
|
|
|
/**************** PAGE *************/
|
|
|
|
{
|
|
groupName : 'Print',
|
|
icon : 'fas fa-print',
|
|
view : 'style',
|
|
snippets : [
|
|
{
|
|
name : 'A4 Page Size',
|
|
icon : 'far fa-file',
|
|
gen : ['/* A4 Page Size */',
|
|
'.page{',
|
|
' width : 210mm;',
|
|
' height : 296.8mm;',
|
|
'}',
|
|
''
|
|
].join('\n')
|
|
},
|
|
{
|
|
name : 'Square Page Size',
|
|
icon : 'far fa-file',
|
|
gen : ['/* Square Page Size */',
|
|
'.page {',
|
|
' width : 125mm;',
|
|
' height : 125mm;',
|
|
' padding : 12.5mm;',
|
|
' columns : unset;',
|
|
'}',
|
|
''
|
|
].join('\n')
|
|
},
|
|
{
|
|
name : 'Ink Friendly',
|
|
icon : 'fas fa-tint',
|
|
gen : dedent`
|
|
/* Ink Friendly */
|
|
.pages *:is(.page,.monster,.note,.descriptive) {
|
|
background : white !important;
|
|
box-shadow : 0px 0px 3px !important;
|
|
}
|
|
|
|
.page .note:before {
|
|
box-shadow : 0px 0px 3px;
|
|
}
|
|
|
|
.page img {
|
|
visibility : hidden;
|
|
}`
|
|
},
|
|
]
|
|
},
|
|
|
|
];
|