0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2025-12-24 16:22:44 +00:00
This commit is contained in:
Trevor Buckner
2024-05-08 14:53:24 -04:00
parent d692e88b96
commit a6b2dab9cc
6 changed files with 2375 additions and 2375 deletions

View File

@@ -11,53 +11,53 @@ const emojis = {
const showAutocompleteEmoji = function(CodeMirror, editor) {
CodeMirror.commands.autocomplete = function(editor) {
editor.showHint({
completeSingle: false,
hint: function(editor) {
completeSingle : false,
hint : function(editor) {
const cursor = editor.getCursor();
const line = cursor.line;
const lineContent = editor.getLine(line);
const start = lineContent.lastIndexOf(':', cursor.ch - 1) + 1;
const end = cursor.ch;
const currentWord = lineContent.slice(start, end);
const list = Object.keys(emojis).filter(function(emoji) {
return emoji.toLowerCase().indexOf(currentWord.toLowerCase()) >= 0;
}).sort((a, b) => {
}).sort((a, b)=>{
const lowerA = a.replace(/\d+/g, function(match) { // Temporarily convert any numbers in emoji string
return match.padStart(4, '0'); // to 4-digits, left-padded with 0's, to aid in
}).toLowerCase(); // sorting numbers, i.e., "d6, d10, d20", not "d10, d20, d6"
const lowerB = b.replace(/\d+/g, function(match) { // Also make lowercase for case-insensitive alpha sorting
return match.padStart(4, '0');
}).toLowerCase();
if (lowerA < lowerB)
if(lowerA < lowerB)
return -1;
return 1;
}).map(function(emoji) {
return {
text: emoji + ":", // Text to output to editor when option is selected
render: function(element, self, data) { // How to display the option in the dropdown
text : `${emoji}:`, // Text to output to editor when option is selected
render : function(element, self, data) { // How to display the option in the dropdown
const div = document.createElement('div');
div.innerHTML = `<i class="emojiPreview ${emojis[emoji]}"></i> ${emoji}`;
element.appendChild(div);
}
};
});
return {
list: list.length ? list : [],
from: CodeMirror.Pos(line, start),
to: CodeMirror.Pos(line, end)
list : list.length ? list : [],
from : CodeMirror.Pos(line, start),
to : CodeMirror.Pos(line, end)
};
}
});
};
editor.on('inputRead', function(instance, change) {
const cursor = editor.getCursor();
const line = editor.getLine(cursor.line);
// Get the text from the start of the line to the cursor
const textToCursor = line.slice(0, cursor.ch);
@@ -66,17 +66,17 @@ const showAutocompleteEmoji = function(CodeMirror, editor) {
const curlyToCursor = textToCursor.slice(textToCursor.indexOf(`{`));
const curlySpanRegex = /{(?=((?:[:=](?:"[\w,\-()#%. ]*"|[\w\-()#%.]*)|[^"':={}\s]*)*))\1$/g;
if (curlySpanRegex.test(curlyToCursor))
if(curlySpanRegex.test(curlyToCursor))
return;
}
// Check if the text ends with ':xyz'
if (/:[^\s:]+$/.test(textToCursor)) {
if(/:[^\s:]+$/.test(textToCursor)) {
CodeMirror.commands.autocomplete(editor);
}
});
}
};
module.exports = {
showAutocompleteEmoji
showAutocompleteEmoji
};

View File

@@ -180,7 +180,7 @@ const CodeEditor = createClass({
// return el;
// }
});
// Add custom behaviors (auto-close curlies and auto-complete emojis)
closeTag.autoCloseCurlyBraces(CodeMirror, this.codeMirror);
autoCompleteEmoji.showAutocompleteEmoji(CodeMirror, this.codeMirror);
@@ -442,7 +442,7 @@ const CodeEditor = createClass({
render : function(){
return <>
<link href={`../homebrew/cm-themes/${this.props.editorTheme}.css`} type="text/css" rel='stylesheet' />
<link href={`../homebrew/cm-themes/${this.props.editorTheme}.css`} type='text/css' rel='stylesheet' />
<div className='codeEditor' ref='editor' style={this.props.style}/>
</>;
}

View File

@@ -4,7 +4,7 @@ const Marked = require('marked');
const MarkedExtendedTables = require('marked-extended-tables');
const { markedSmartypantsLite: MarkedSmartypantsLite } = require('marked-smartypants-lite');
const { gfmHeadingId: MarkedGFMHeadingId } = require('marked-gfm-heading-id');
const { markedEmoji: MarkedEmojis} = require('marked-emoji');
const { markedEmoji: MarkedEmojis } = require('marked-emoji');
//Icon fonts included so they can appear in emoji autosuggest dropdown
const diceFont = require('../../themes/fonts/iconFonts/diceFont.js');
@@ -147,7 +147,7 @@ const mustacheSpans = {
`${tags.classes ? ` class="${tags.classes}"` : ''}` +
`${tags.id ? ` id="${tags.id}"` : ''}` +
`${tags.styles ? ` style="${tags.styles}"` : ''}` +
`${tags.attributes ? ` ${Object.entries(tags.attributes).map(([key, value]) => `${key}="${value}"`).join(' ')}` : ''}` +
`${tags.attributes ? ` ${Object.entries(tags.attributes).map(([key, value])=>`${key}="${value}"`).join(' ')}` : ''}` +
`>${this.parser.parseInline(token.tokens)}</span>`; // parseInline to turn child tokens into HTML
}
};
@@ -203,7 +203,7 @@ const mustacheDivs = {
`${tags.classes ? ` class="${tags.classes}"` : ''}` +
`${tags.id ? ` id="${tags.id}"` : ''}` +
`${tags.styles ? ` style="${tags.styles}"` : ''}` +
`${tags.attributes ? ` ${Object.entries(tags.attributes).map(([key, value]) => `${key}="${value}"`).join(' ')}` : ''}` +
`${tags.attributes ? ` ${Object.entries(tags.attributes).map(([key, value])=>`${key}="${value}"`).join(' ')}` : ''}` +
`>${this.parser.parse(token.tokens)}</div>`; // parse to turn child tokens into HTML
}
};
@@ -251,7 +251,7 @@ const mustacheInjectInline = {
`${tags.classes ? ` class="${tags.classes}"` : ''}` +
`${tags.id ? ` id="${tags.id}"` : ''}` +
`${tags.styles ? ` style="${tags.styles}"` : ''}` +
`${!_.isEmpty(tags.attributes) ? ` ${Object.entries(tags.attributes).map(([key, value]) => `${key}="${value}"`).join(' ')}` : ''}` +
`${!_.isEmpty(tags.attributes) ? ` ${Object.entries(tags.attributes).map(([key, value])=>`${key}="${value}"`).join(' ')}` : ''}` +
`${openingTag[2]}`; // parse to turn child tokens into HTML
}
return text;
@@ -300,7 +300,7 @@ const mustacheInjectBlock = {
`${tags.classes ? ` class="${tags.classes}"` : ''}` +
`${tags.id ? ` id="${tags.id}"` : ''}` +
`${tags.styles ? ` style="${tags.styles}"` : ''}` +
`${!_.isEmpty(tags.attributes) ? ` ${Object.entries(tags.attributes).map(([key, value]) => `${key}="${value}"`).join(' ')}` : ''}` +
`${!_.isEmpty(tags.attributes) ? ` ${Object.entries(tags.attributes).map(([key, value])=>`${key}="${value}"`).join(' ')}` : ''}` +
`${openingTag[2]}`; // parse to turn child tokens into HTML
}
return text;
@@ -354,13 +354,13 @@ const definitionListsSingleLine = {
let endIndex = 0;
const definitions = [];
while (match = regex.exec(src)) {
let originalLine = match[0]; // This line and below to handle conflict with emojis
const originalLine = match[0]; // This line and below to handle conflict with emojis
let firstLine = originalLine; // Remove in V4 when definitionListsInline updated to
this.lexer.inlineTokens(firstLine.trim()) // require spaces around `::`
.filter(t => t.type == 'emoji')
.map(emoji => firstLine = firstLine.replace(emoji.raw, 'x'.repeat(emoji.raw.length)));
.filter((t)=>t.type == 'emoji')
.map((emoji)=>firstLine = firstLine.replace(emoji.raw, 'x'.repeat(emoji.raw.length)));
let newMatch = /^([^\n]*?)::([^\n]*)(?:\n|$)/ym.exec(firstLine);
const newMatch = /^([^\n]*?)::([^\n]*)(?:\n|$)/ym.exec(firstLine);
if(newMatch) {
definitions.push({
dt : this.lexer.inlineTokens(originalLine.slice(0, newMatch[1].length).trim()),
@@ -685,12 +685,12 @@ function MarkedVariables() {
// 6) Import the .js file to shared/naturalcrit/codeEditor/autocompleteEmoji.js and add to `emojis` object
// 7) Import the .js file here to markdown.js, and add to `emojis` object below
const MarkedEmojiOptions = {
emojis: {
emojis : {
...diceFont,
...elderberryInn,
...fontAwesome
},
renderer: (token) => `<i class="${token.emoji}"></i>`
renderer : (token)=>`<i class="${token.emoji}"></i>`
};
Marked.use(MarkedVariables());
@@ -767,9 +767,9 @@ const processStyleTags = (string)=>{
const id = _.remove(tags, (tag)=>tag.startsWith('#')).map((tag)=>tag.slice(1))[0] || null;
const classes = _.remove(tags, (tag)=>(!tag.includes(':')) && (!tag.includes('='))).join(' ') || null;
const attributes = _.remove(tags, (tag)=>(tag.includes('='))).map((tag)=>tag.replace(/="?([^"]*)"?/g, '="$1"'))
?.filter(attr => !attr.startsWith('class="') && !attr.startsWith('style="') && !attr.startsWith('id="'))
.reduce((obj, attr) => {
let [key, value] = attr.split("=");
?.filter((attr)=>!attr.startsWith('class="') && !attr.startsWith('style="') && !attr.startsWith('id="'))
.reduce((obj, attr)=>{
let [key, value] = attr.split('=');
value = value.replace(/"/g, '');
obj[key] = value;
return obj;
@@ -784,14 +784,14 @@ const processStyleTags = (string)=>{
};
};
const extractHTMLStyleTags = (htmlString)=> {
const extractHTMLStyleTags = (htmlString)=>{
const id = htmlString.match(/id="([^"]*)"/)?.[1] || null;
const classes = htmlString.match(/class="([^"]*)"/)?.[1] || null;
const styles = htmlString.match(/style="([^"]*)"/)?.[1] || null;
const attributes = htmlString.match(/[a-zA-Z]+="[^"]*"/g)
?.filter(attr => !attr.startsWith('class="') && !attr.startsWith('style="') && !attr.startsWith('id="'))
.reduce((obj, attr) => {
let [key, value] = attr.split("=");
?.filter((attr)=>!attr.startsWith('class="') && !attr.startsWith('style="') && !attr.startsWith('id="'))
.reduce((obj, attr)=>{
let [key, value] = attr.split('=');
value = value.replace(/"/g, '');
obj[key] = value;
return obj;

View File

@@ -1,96 +1,96 @@
const diceFont = {
"df_f" : "df F",
"df_f_minus" : "df F-minus",
"df_f_plus" : "df F-plus",
"df_f_zero" : "df F-zero",
"df_d10" : "df d10",
"df_d10_1" : "df d10-1",
"df_d10_10" : "df d10-10",
"df_d10_2" : "df d10-2",
"df_d10_3" : "df d10-3",
"df_d10_4" : "df d10-4",
"df_d10_5" : "df d10-5",
"df_d10_6" : "df d10-6",
"df_d10_7" : "df d10-7",
"df_d10_8" : "df d10-8",
"df_d10_9" : "df d10-9",
"df_d12" : "df d12",
"df_d12_1" : "df d12-1",
"df_d12_10" : "df d12-10",
"df_d12_11" : "df d12-11",
"df_d12_12" : "df d12-12",
"df_d12_2" : "df d12-2",
"df_d12_3" : "df d12-3",
"df_d12_4" : "df d12-4",
"df_d12_5" : "df d12-5",
"df_d12_6" : "df d12-6",
"df_d12_7" : "df d12-7",
"df_d12_8" : "df d12-8",
"df_d12_9" : "df d12-9",
"df_d2" : "df d2",
"df_d2_1" : "df d2-1",
"df_d2_2" : "df d2-2",
"df_d20" : "df d20",
"df_d20_1" : "df d20-1",
"df_d20_10" : "df d20-10",
"df_d20_11" : "df d20-11",
"df_d20_12" : "df d20-12",
"df_d20_13" : "df d20-13",
"df_d20_14" : "df d20-14",
"df_d20_15" : "df d20-15",
"df_d20_16" : "df d20-16",
"df_d20_17" : "df d20-17",
"df_d20_18" : "df d20-18",
"df_d20_19" : "df d20-19",
"df_d20_2" : "df d20-2",
"df_d20_20" : "df d20-20",
"df_d20_3" : "df d20-3",
"df_d20_4" : "df d20-4",
"df_d20_5" : "df d20-5",
"df_d20_6" : "df d20-6",
"df_d20_7" : "df d20-7",
"df_d20_8" : "df d20-8",
"df_d20_9" : "df d20-9",
"df_d4" : "df d4",
"df_d4_1" : "df d4-1",
"df_d4_2" : "df d4-2",
"df_d4_3" : "df d4-3",
"df_d4_4" : "df d4-4",
"df_d6" : "df d6",
"df_d6_1" : "df d6-1",
"df_d6_2" : "df d6-2",
"df_d6_3" : "df d6-3",
"df_d6_4" : "df d6-4",
"df_d6_5" : "df d6-5",
"df_d6_6" : "df d6-6",
"df_d8" : "df d8",
"df_d8_1" : "df d8-1",
"df_d8_2" : "df d8-2",
"df_d8_3" : "df d8-3",
"df_d8_4" : "df d8-4",
"df_d8_5" : "df d8-5",
"df_d8_6" : "df d8-6",
"df_d8_7" : "df d8-7",
"df_d8_8" : "df d8-8",
"df_dot_d6" : "df dot-d6",
"df_dot_d6_1" : "df dot-d6-1",
"df_dot_d6_2" : "df dot-d6-2",
"df_dot_d6_3" : "df dot-d6-3",
"df_dot_d6_4" : "df dot-d6-4",
"df_dot_d6_5" : "df dot-d6-5",
"df_dot_d6_6" : "df dot-d6-6",
"df_small_dot_d6_1" : "df small-dot-d6-1",
"df_small_dot_d6_2" : "df small-dot-d6-2",
"df_small_dot_d6_3" : "df small-dot-d6-3",
"df_small_dot_d6_4" : "df small-dot-d6-4",
"df_small_dot_d6_5" : "df small-dot-d6-5",
"df_small_dot_d6_6" : "df small-dot-d6-6",
"df_solid_small_dot_d6_1" : "df solid-small-dot-d6-1",
"df_solid_small_dot_d6_2" : "df solid-small-dot-d6-2",
"df_solid_small_dot_d6_3" : "df solid-small-dot-d6-3",
"df_solid_small_dot_d6_4" : "df solid-small-dot-d6-4",
"df_solid_small_dot_d6_5" : "df solid-small-dot-d6-5",
"df_solid_small_dot_d6_6" : "df solid-small-dot-d6-6"
}
'df_f' : 'df F',
'df_f_minus' : 'df F-minus',
'df_f_plus' : 'df F-plus',
'df_f_zero' : 'df F-zero',
'df_d10' : 'df d10',
'df_d10_1' : 'df d10-1',
'df_d10_10' : 'df d10-10',
'df_d10_2' : 'df d10-2',
'df_d10_3' : 'df d10-3',
'df_d10_4' : 'df d10-4',
'df_d10_5' : 'df d10-5',
'df_d10_6' : 'df d10-6',
'df_d10_7' : 'df d10-7',
'df_d10_8' : 'df d10-8',
'df_d10_9' : 'df d10-9',
'df_d12' : 'df d12',
'df_d12_1' : 'df d12-1',
'df_d12_10' : 'df d12-10',
'df_d12_11' : 'df d12-11',
'df_d12_12' : 'df d12-12',
'df_d12_2' : 'df d12-2',
'df_d12_3' : 'df d12-3',
'df_d12_4' : 'df d12-4',
'df_d12_5' : 'df d12-5',
'df_d12_6' : 'df d12-6',
'df_d12_7' : 'df d12-7',
'df_d12_8' : 'df d12-8',
'df_d12_9' : 'df d12-9',
'df_d2' : 'df d2',
'df_d2_1' : 'df d2-1',
'df_d2_2' : 'df d2-2',
'df_d20' : 'df d20',
'df_d20_1' : 'df d20-1',
'df_d20_10' : 'df d20-10',
'df_d20_11' : 'df d20-11',
'df_d20_12' : 'df d20-12',
'df_d20_13' : 'df d20-13',
'df_d20_14' : 'df d20-14',
'df_d20_15' : 'df d20-15',
'df_d20_16' : 'df d20-16',
'df_d20_17' : 'df d20-17',
'df_d20_18' : 'df d20-18',
'df_d20_19' : 'df d20-19',
'df_d20_2' : 'df d20-2',
'df_d20_20' : 'df d20-20',
'df_d20_3' : 'df d20-3',
'df_d20_4' : 'df d20-4',
'df_d20_5' : 'df d20-5',
'df_d20_6' : 'df d20-6',
'df_d20_7' : 'df d20-7',
'df_d20_8' : 'df d20-8',
'df_d20_9' : 'df d20-9',
'df_d4' : 'df d4',
'df_d4_1' : 'df d4-1',
'df_d4_2' : 'df d4-2',
'df_d4_3' : 'df d4-3',
'df_d4_4' : 'df d4-4',
'df_d6' : 'df d6',
'df_d6_1' : 'df d6-1',
'df_d6_2' : 'df d6-2',
'df_d6_3' : 'df d6-3',
'df_d6_4' : 'df d6-4',
'df_d6_5' : 'df d6-5',
'df_d6_6' : 'df d6-6',
'df_d8' : 'df d8',
'df_d8_1' : 'df d8-1',
'df_d8_2' : 'df d8-2',
'df_d8_3' : 'df d8-3',
'df_d8_4' : 'df d8-4',
'df_d8_5' : 'df d8-5',
'df_d8_6' : 'df d8-6',
'df_d8_7' : 'df d8-7',
'df_d8_8' : 'df d8-8',
'df_dot_d6' : 'df dot-d6',
'df_dot_d6_1' : 'df dot-d6-1',
'df_dot_d6_2' : 'df dot-d6-2',
'df_dot_d6_3' : 'df dot-d6-3',
'df_dot_d6_4' : 'df dot-d6-4',
'df_dot_d6_5' : 'df dot-d6-5',
'df_dot_d6_6' : 'df dot-d6-6',
'df_small_dot_d6_1' : 'df small-dot-d6-1',
'df_small_dot_d6_2' : 'df small-dot-d6-2',
'df_small_dot_d6_3' : 'df small-dot-d6-3',
'df_small_dot_d6_4' : 'df small-dot-d6-4',
'df_small_dot_d6_5' : 'df small-dot-d6-5',
'df_small_dot_d6_6' : 'df small-dot-d6-6',
'df_solid_small_dot_d6_1' : 'df solid-small-dot-d6-1',
'df_solid_small_dot_d6_2' : 'df solid-small-dot-d6-2',
'df_solid_small_dot_d6_3' : 'df solid-small-dot-d6-3',
'df_solid_small_dot_d6_4' : 'df solid-small-dot-d6-4',
'df_solid_small_dot_d6_5' : 'df solid-small-dot-d6-5',
'df_solid_small_dot_d6_6' : 'df solid-small-dot-d6-6'
};
module.exports = diceFont;

View File

@@ -1,208 +1,208 @@
const elderberryInn = {
"ei_book" : "ei book",
"ei_screen" : "ei screen",
'ei_book' : 'ei book',
'ei_screen' : 'ei screen',
/* Spell levels */
"ei_spell_0" : "ei spell-0",
"ei_spell_1" : "ei spell-1",
"ei_spell_2" : "ei spell-2",
"ei_spell_3" : "ei spell-3",
"ei_spell_4" : "ei spell-4",
"ei_spell_5" : "ei spell-5",
"ei_spell_6" : "ei spell-6",
"ei_spell_7" : "ei spell-7",
"ei_spell_8" : "ei spell-8",
"ei_spell_9" : "ei spell-9",
'ei_spell_0' : 'ei spell-0',
'ei_spell_1' : 'ei spell-1',
'ei_spell_2' : 'ei spell-2',
'ei_spell_3' : 'ei spell-3',
'ei_spell_4' : 'ei spell-4',
'ei_spell_5' : 'ei spell-5',
'ei_spell_6' : 'ei spell-6',
'ei_spell_7' : 'ei spell-7',
'ei_spell_8' : 'ei spell-8',
'ei_spell_9' : 'ei spell-9',
/* Damage types */
"ei_acid" : "ei acid",
"ei_bludgeoning" : "ei bludgeoning",
"ei_cold" : "ei cold",
"ei_fire" : "ei fire",
"ei_force" : "ei force",
"ei_lightning" : "ei lightning",
"ei_necrotic" : "ei necrotic",
"ei_piercing" : "ei piercing",
"ei_poison" : "ei poison",
"ei_psychic" : "ei psychic",
"ei_radiant" : "ei radiant",
"ei_slashing" : "ei slashing",
"ei_thunder" : "ei thunder",
'ei_acid' : 'ei acid',
'ei_bludgeoning' : 'ei bludgeoning',
'ei_cold' : 'ei cold',
'ei_fire' : 'ei fire',
'ei_force' : 'ei force',
'ei_lightning' : 'ei lightning',
'ei_necrotic' : 'ei necrotic',
'ei_piercing' : 'ei piercing',
'ei_poison' : 'ei poison',
'ei_psychic' : 'ei psychic',
'ei_radiant' : 'ei radiant',
'ei_slashing' : 'ei slashing',
'ei_thunder' : 'ei thunder',
/* DnD Donditions */
"ei_blinded" : "ei blinded",
"ei_charmed" : "ei charmed",
"ei_deafened" : "ei deafened",
"ei_exhaust1" : "ei exhaust-1",
"ei_blinded" : "ei blinded",
"ei_exhaust2" : "ei exhaust-2",
"ei_exhaust3" : "ei exhaust-3",
"ei_exhaust4" : "ei exhaust-4",
"ei_exhaust5" : "ei exhaust-5",
"ei_exhaust6" : "ei exhaust-6",
"ei_frightened" : "ei frightened",
"ei_grappled" : "ei grappled",
"ei_incapacitated" : "ei incapacitated",
"ei_invisible" : "ei invisible",
"ei_paralyzed" : "ei paralyzed",
"ei_petrified" : "ei petrified",
"ei_poisoned" : "ei poisoned",
"ei_prone" : "ei prone",
"ei_restrained" : "ei restrained",
"ei_stunned" : "ei stunned",
"ei_unconscious" : "ei unconscious",
'ei_blinded' : 'ei blinded',
'ei_charmed' : 'ei charmed',
'ei_deafened' : 'ei deafened',
'ei_exhaust1' : 'ei exhaust-1',
'ei_blinded' : 'ei blinded',
'ei_exhaust2' : 'ei exhaust-2',
'ei_exhaust3' : 'ei exhaust-3',
'ei_exhaust4' : 'ei exhaust-4',
'ei_exhaust5' : 'ei exhaust-5',
'ei_exhaust6' : 'ei exhaust-6',
'ei_frightened' : 'ei frightened',
'ei_grappled' : 'ei grappled',
'ei_incapacitated' : 'ei incapacitated',
'ei_invisible' : 'ei invisible',
'ei_paralyzed' : 'ei paralyzed',
'ei_petrified' : 'ei petrified',
'ei_poisoned' : 'ei poisoned',
'ei_prone' : 'ei prone',
'ei_restrained' : 'ei restrained',
'ei_stunned' : 'ei stunned',
'ei_unconscious' : 'ei unconscious',
/* Character Classes and Features */
"ei_barbarian_rage" : "ei barbarian-rage",
"ei_barbarian_reckless_attack" : "ei barbarian-reckless-attack",
"ei_bardic_inspiration" : "ei bardic-inspiration",
"ei_cleric_channel_divinity" : "ei cleric-channel-divinity",
"ei_druid_wild_shape" : "ei druid-wild-shape",
"ei_fighter_action_surge" : "ei fighter-action-surge",
"ei_fighter_second_wind" : "ei fighter-second-wind",
"ei_monk_flurry_blows" : "ei monk-flurry-blows",
"ei_monk_patient_defense" : "ei monk-patient-defense",
"ei_monk_step_of_the_wind" : "ei monk-step-of-the-wind",
"ei_monk_step_of_the_wind2" : "ei monk-step-of-the-wind-2",
"ei_monk_step_of_the_wind3" : "ei monk-step-of-the-wind-3",
"ei_monk_stunning_strike" : "ei monk-stunning-strike",
"ei_monk_stunning_strike2" : "ei monk-stunning-strike-2",
"ei_paladin_divine_smite" : "ei paladin-divine-smite",
"ei_paladin_lay_on_hands" : "ei paladin-lay-on-hands",
"ei_barbarian_abilities" : "ei barbarian-abilities",
"ei_barbarian" : "ei barbarian",
"ei_bard_abilities" : "ei bard-abilities",
"ei_bard" : "ei bard",
"ei_cleric_abilities" : "ei cleric-abilities",
"ei_cleric" : "ei cleric",
"ei_druid_abilities" : "ei druid-abilities",
"ei_druid" : "ei druid",
"ei_fighter_abilities" : "ei fighter-abilities",
"ei_fighter" : "ei fighter",
"ei_monk_abilities" : "ei monk-abilities",
"ei_monk" : "ei monk",
"ei_paladin_abilities" : "ei paladin-abilities",
"ei_paladin" : "ei paladin",
"ei_ranger_abilities" : "ei ranger-abilities",
"ei_ranger" : "ei ranger",
"ei_rogue_abilities" : "ei rogue-abilities",
"ei_rogue" : "ei rogue",
"ei_sorcerer_abilities" : "ei sorcerer-abilities",
"ei_sorcerer" : "ei sorcerer",
"ei_warlock_abilities" : "ei warlock-abilities",
"ei_warlock" : "ei warlock",
"ei_wizard_abilities" : "ei wizard-abilities",
"ei_wizard" : "ei wizard",
/* Character Classes and Features */
'ei_barbarian_rage' : 'ei barbarian-rage',
'ei_barbarian_reckless_attack' : 'ei barbarian-reckless-attack',
'ei_bardic_inspiration' : 'ei bardic-inspiration',
'ei_cleric_channel_divinity' : 'ei cleric-channel-divinity',
'ei_druid_wild_shape' : 'ei druid-wild-shape',
'ei_fighter_action_surge' : 'ei fighter-action-surge',
'ei_fighter_second_wind' : 'ei fighter-second-wind',
'ei_monk_flurry_blows' : 'ei monk-flurry-blows',
'ei_monk_patient_defense' : 'ei monk-patient-defense',
'ei_monk_step_of_the_wind' : 'ei monk-step-of-the-wind',
'ei_monk_step_of_the_wind2' : 'ei monk-step-of-the-wind-2',
'ei_monk_step_of_the_wind3' : 'ei monk-step-of-the-wind-3',
'ei_monk_stunning_strike' : 'ei monk-stunning-strike',
'ei_monk_stunning_strike2' : 'ei monk-stunning-strike-2',
'ei_paladin_divine_smite' : 'ei paladin-divine-smite',
'ei_paladin_lay_on_hands' : 'ei paladin-lay-on-hands',
'ei_barbarian_abilities' : 'ei barbarian-abilities',
'ei_barbarian' : 'ei barbarian',
'ei_bard_abilities' : 'ei bard-abilities',
'ei_bard' : 'ei bard',
'ei_cleric_abilities' : 'ei cleric-abilities',
'ei_cleric' : 'ei cleric',
'ei_druid_abilities' : 'ei druid-abilities',
'ei_druid' : 'ei druid',
'ei_fighter_abilities' : 'ei fighter-abilities',
'ei_fighter' : 'ei fighter',
'ei_monk_abilities' : 'ei monk-abilities',
'ei_monk' : 'ei monk',
'ei_paladin_abilities' : 'ei paladin-abilities',
'ei_paladin' : 'ei paladin',
'ei_ranger_abilities' : 'ei ranger-abilities',
'ei_ranger' : 'ei ranger',
'ei_rogue_abilities' : 'ei rogue-abilities',
'ei_rogue' : 'ei rogue',
'ei_sorcerer_abilities' : 'ei sorcerer-abilities',
'ei_sorcerer' : 'ei sorcerer',
'ei_warlock_abilities' : 'ei warlock-abilities',
'ei_warlock' : 'ei warlock',
'ei_wizard_abilities' : 'ei wizard-abilities',
'ei_wizard' : 'ei wizard',
/* Types of actions */
"ei_movement" : "ei movement",
"ei_action" : "ei action",
"ei_bonus_action" : "ei bonus-action",
"ei_reaction" : "ei reaction",
/* Types of actions */
'ei_movement' : 'ei movement',
'ei_action' : 'ei action',
'ei_bonus_action' : 'ei bonus-action',
'ei_reaction' : 'ei reaction',
/* SRD Spells */
"ei_acid_arrow" : "ei acid-arrow",
"ei_action1" : "ei action-1",
"ei_alter_self" : "ei alter-self",
"ei_alter_self2" : "ei alter-self-2",
"ei_animal_friendship" : "ei animal-friendship",
"ei_animate_dead" : "ei animate-dead",
"ei_animate_objects" : "ei animate-objects",
"ei_animate_objects2" : "ei animate-objects-2",
"ei_bane" : "ei bane",
"ei_bless" : "ei bless",
"ei_blur" : "ei blur",
"ei_bonus" : "ei bonus",
"ei_branding_smite" : "ei branding-smite",
"ei_burning_hands" : "ei burning-hands",
"ei_charm_person" : "ei charm-person",
"ei_chill_touch" : "ei chill-touch",
"ei_cloudkill" : "ei cloudkill",
"ei_comprehend_languages" : "ei comprehend-languages",
"ei_cone_of_cold" : "ei cone-of-cold",
"ei_conjure_elemental" : "ei conjure-elemental",
"ei_conjure_minor_elemental" : "ei conjure-minor-elemental",
"ei_control_water" : "ei control-water",
"ei_counterspell" : "ei counterspell",
"ei_cure_wounds" : "ei cure-wounds",
"ei_dancing_lights" : "ei dancing-lights",
"ei_darkness" : "ei darkness",
"ei_detect_magic" : "ei detect-magic",
"ei_disguise_self" : "ei disguise-self",
"ei_disintegrate" : "ei disintegrate",
"ei_dispel_evil_and_good" : "ei dispel-evil-and-good",
"ei_dispel_magic" : "ei dispel-magic",
"ei_dominate_monster" : "ei dominate-monster",
"ei_dominate_person" : "ei dominate-person",
"ei_eldritch_blast" : "ei eldritch-blast",
"ei_enlarge_reduce" : "ei enlarge-reduce",
"ei_entangle" : "ei entangle",
"ei_faerie_fire" : "ei faerie-fire",
"ei_faerie_fire2" : "ei faerie-fire2",
"ei_feather_fall" : "ei feather-fall",
"ei_find_familiar" : "ei find-familiar",
"ei_finger_of_death" : "ei finger-of-death",
"ei_fireball" : "ei fireball",
"ei_floating_disk" : "ei floating-disk",
"ei_fly" : "ei fly",
"ei_fog_cloud" : "ei fog-cloud",
"ei_gaseous_form" : "ei gaseous-form",
"ei_gaseous_form2" : "ei gaseous-form2",
"ei_gentle_repose" : "ei gentle-repose",
"ei_gentle_repose2" : "ei gentle-repose2",
"ei_globe_of_invulnerability" : "ei globe-of-invulnerability",
"ei_guiding_bolt" : "ei guiding-bolt",
"ei_healing_word" : "ei healing-word",
"ei_heat_metal" : "ei heat-metal",
"ei_hellish_rebuke" : "ei hellish-rebuke",
"ei_heroes_feast" : "ei heroes-feast",
"ei_heroism" : "ei heroism",
"ei_hideous_laughter" : "ei hideous-laughter",
"ei_identify" : "ei identify",
"ei_illusory_script" : "ei illusory-script",
"ei_inflict_wounds" : "ei inflict-wounds",
"ei_light" : "ei light",
"ei_longstrider" : "ei longstrider",
"ei_mage_armor" : "ei mage-armor",
"ei_mage_hand" : "ei mage-hand",
"ei_magic_missile" : "ei magic-missile",
"ei_mass_cure_wounds" : "ei mass-cure-wounds",
"ei_mass_healing_word" : "ei mass-healing-word",
"ei_mending" : "ei _mending",
"ei_message" : "ei message",
"ei_minor_illusion" : "ei _minor-illusion",
"ei_movement1" : "ei movement1",
"ei_polymorph" : "ei polymorph",
"ei_power_word_kill" : "ei power-word-kill",
"ei_power_word_stun" : "ei power-word-stun",
"ei_prayer_of_healing" : "ei prayer-of-healing",
"ei_prestidigitation" : "ei prestidigitation",
"ei_protection_from_evil_and_good" : "ei protection-from-evil-and-good",
"ei_raise_dead" : "ei raise-dead",
"ei_raise_dead2" : "ei raise-dead2",
"ei_reaction1" : "ei reaction1",
"ei_resurrection" : "ei resurrection",
"ei_resurrection2" : "ei resurrection2",
"ei_revivify" : "ei revivify",
"ei_revivify2" : "ei revivify2",
"ei_sacred_flame" : "ei sacred-flame",
"ei_sanctuary" : "ei sanctuary",
"ei_scorching_ray" : "ei scorching-ray",
"ei_sending" : "ei sending",
"ei_shatter" : "ei shatter",
"ei_shield" : "ei shield",
"ei_silent_image" : "ei silent-image",
"ei_sleep" : "ei sleep",
"ei_speak_with_animals" : "ei speak-with-animals",
"ei_telekinesis" : "ei telekinesis",
"ei_true_strike" : "ei true-strike",
"ei_vicious_mockery" : "ei vicious-mockery",
"ei_wall_of_fire" : "ei wall-of-fire",
"ei_wall_of_force" : "ei wall-of-force",
"ei_wall_of_ice" : "ei wall-of-ice",
"ei_wall_of_stone" : "ei wall-of-stone",
"ei_wall_of_thorns" : "ei wall-of-thorns",
"ei_wish" : "ei wish"
}
/* SRD Spells */
'ei_acid_arrow' : 'ei acid-arrow',
'ei_action1' : 'ei action-1',
'ei_alter_self' : 'ei alter-self',
'ei_alter_self2' : 'ei alter-self-2',
'ei_animal_friendship' : 'ei animal-friendship',
'ei_animate_dead' : 'ei animate-dead',
'ei_animate_objects' : 'ei animate-objects',
'ei_animate_objects2' : 'ei animate-objects-2',
'ei_bane' : 'ei bane',
'ei_bless' : 'ei bless',
'ei_blur' : 'ei blur',
'ei_bonus' : 'ei bonus',
'ei_branding_smite' : 'ei branding-smite',
'ei_burning_hands' : 'ei burning-hands',
'ei_charm_person' : 'ei charm-person',
'ei_chill_touch' : 'ei chill-touch',
'ei_cloudkill' : 'ei cloudkill',
'ei_comprehend_languages' : 'ei comprehend-languages',
'ei_cone_of_cold' : 'ei cone-of-cold',
'ei_conjure_elemental' : 'ei conjure-elemental',
'ei_conjure_minor_elemental' : 'ei conjure-minor-elemental',
'ei_control_water' : 'ei control-water',
'ei_counterspell' : 'ei counterspell',
'ei_cure_wounds' : 'ei cure-wounds',
'ei_dancing_lights' : 'ei dancing-lights',
'ei_darkness' : 'ei darkness',
'ei_detect_magic' : 'ei detect-magic',
'ei_disguise_self' : 'ei disguise-self',
'ei_disintegrate' : 'ei disintegrate',
'ei_dispel_evil_and_good' : 'ei dispel-evil-and-good',
'ei_dispel_magic' : 'ei dispel-magic',
'ei_dominate_monster' : 'ei dominate-monster',
'ei_dominate_person' : 'ei dominate-person',
'ei_eldritch_blast' : 'ei eldritch-blast',
'ei_enlarge_reduce' : 'ei enlarge-reduce',
'ei_entangle' : 'ei entangle',
'ei_faerie_fire' : 'ei faerie-fire',
'ei_faerie_fire2' : 'ei faerie-fire2',
'ei_feather_fall' : 'ei feather-fall',
'ei_find_familiar' : 'ei find-familiar',
'ei_finger_of_death' : 'ei finger-of-death',
'ei_fireball' : 'ei fireball',
'ei_floating_disk' : 'ei floating-disk',
'ei_fly' : 'ei fly',
'ei_fog_cloud' : 'ei fog-cloud',
'ei_gaseous_form' : 'ei gaseous-form',
'ei_gaseous_form2' : 'ei gaseous-form2',
'ei_gentle_repose' : 'ei gentle-repose',
'ei_gentle_repose2' : 'ei gentle-repose2',
'ei_globe_of_invulnerability' : 'ei globe-of-invulnerability',
'ei_guiding_bolt' : 'ei guiding-bolt',
'ei_healing_word' : 'ei healing-word',
'ei_heat_metal' : 'ei heat-metal',
'ei_hellish_rebuke' : 'ei hellish-rebuke',
'ei_heroes_feast' : 'ei heroes-feast',
'ei_heroism' : 'ei heroism',
'ei_hideous_laughter' : 'ei hideous-laughter',
'ei_identify' : 'ei identify',
'ei_illusory_script' : 'ei illusory-script',
'ei_inflict_wounds' : 'ei inflict-wounds',
'ei_light' : 'ei light',
'ei_longstrider' : 'ei longstrider',
'ei_mage_armor' : 'ei mage-armor',
'ei_mage_hand' : 'ei mage-hand',
'ei_magic_missile' : 'ei magic-missile',
'ei_mass_cure_wounds' : 'ei mass-cure-wounds',
'ei_mass_healing_word' : 'ei mass-healing-word',
'ei_mending' : 'ei _mending',
'ei_message' : 'ei message',
'ei_minor_illusion' : 'ei _minor-illusion',
'ei_movement1' : 'ei movement1',
'ei_polymorph' : 'ei polymorph',
'ei_power_word_kill' : 'ei power-word-kill',
'ei_power_word_stun' : 'ei power-word-stun',
'ei_prayer_of_healing' : 'ei prayer-of-healing',
'ei_prestidigitation' : 'ei prestidigitation',
'ei_protection_from_evil_and_good' : 'ei protection-from-evil-and-good',
'ei_raise_dead' : 'ei raise-dead',
'ei_raise_dead2' : 'ei raise-dead2',
'ei_reaction1' : 'ei reaction1',
'ei_resurrection' : 'ei resurrection',
'ei_resurrection2' : 'ei resurrection2',
'ei_revivify' : 'ei revivify',
'ei_revivify2' : 'ei revivify2',
'ei_sacred_flame' : 'ei sacred-flame',
'ei_sanctuary' : 'ei sanctuary',
'ei_scorching_ray' : 'ei scorching-ray',
'ei_sending' : 'ei sending',
'ei_shatter' : 'ei shatter',
'ei_shield' : 'ei shield',
'ei_silent_image' : 'ei silent-image',
'ei_sleep' : 'ei sleep',
'ei_speak_with_animals' : 'ei speak-with-animals',
'ei_telekinesis' : 'ei telekinesis',
'ei_true_strike' : 'ei true-strike',
'ei_vicious_mockery' : 'ei vicious-mockery',
'ei_wall_of_fire' : 'ei wall-of-fire',
'ei_wall_of_force' : 'ei wall-of-force',
'ei_wall_of_ice' : 'ei wall-of-ice',
'ei_wall_of_stone' : 'ei wall-of-stone',
'ei_wall_of_thorns' : 'ei wall-of-thorns',
'ei_wish' : 'ei wish'
};
module.exports = elderberryInn;

File diff suppressed because it is too large Load Diff