├── .babelrc ├── .eslintignore ├── .eslintrc.js ├── .github └── workflows │ ├── build.yml │ └── deploy.yml ├── .gitignore ├── LICENSE.txt ├── OGL-LICENSE.txt ├── README.md ├── examples ├── 5e-srd │ ├── aboleth.json │ ├── acolyte.json │ ├── adult-black-dragon.json │ ├── adult-blue-dragon.json │ ├── adult-brass-dragon.json │ ├── adult-bronze-dragon.json │ ├── adult-copper-dragon.json │ ├── adult-gold-dragon.json │ ├── adult-green-dragon.json │ ├── adult-red-dragon.json │ ├── adult-silver-dragon.json │ ├── adult-white-dragon.json │ ├── air-elemental.json │ ├── ancient-black-dragon.json │ ├── ancient-blue-dragon.json │ ├── ancient-brass-dragon.json │ ├── ancient-bronze-dragon.json │ ├── ancient-copper-dragon.json │ ├── ancient-gold-dragon.json │ ├── ancient-green-dragon.json │ ├── ancient-red-dragon.json │ ├── ancient-silver-dragon.json │ ├── ancient-white-dragon.json │ ├── androsphinx.json │ ├── animated-armor.json │ ├── ankheg.json │ ├── ape.json │ ├── archmage.json │ ├── assassin.json │ ├── awakened-shrub.json │ ├── awakened-tree.json │ ├── axe-beak.json │ ├── azer.json │ ├── baboon.json │ ├── badger.json │ ├── balor.json │ ├── bandit-captain.json │ ├── bandit.json │ ├── barbed-devil.json │ ├── basilisk.json │ ├── bat.json │ ├── bearded-devil.json │ ├── behir.json │ ├── berserker.json │ ├── black-bear.json │ ├── black-dragon-wyrmling.json │ ├── black-pudding.json │ ├── blink-dog.json │ ├── blood-hawk.json │ ├── blue-dragon-wyrmling.json │ ├── boar.json │ ├── bone-devil.json │ ├── brass-dragon-wyrmling.json │ ├── bronze-dragon-wyrmling.json │ ├── brown-bear.json │ ├── bugbear.json │ ├── bulette.json │ ├── camel.json │ ├── cat.json │ ├── centaur.json │ ├── chain-devil.json │ ├── chimera.json │ ├── chuul.json │ ├── clay-golem.json │ ├── cloaker.json │ ├── cloud-giant.json │ ├── cockatrice.json │ ├── commoner.json │ ├── constrictor-snake.json │ ├── copper-dragon-wyrmling.json │ ├── couatl.json │ ├── crab.json │ ├── crocodile.json │ ├── cult-fanatic.json │ ├── cultist.json │ ├── darkmantle.json │ ├── death-dog.json │ ├── deep-gnome-svirfneblin.json │ ├── deer.json │ ├── deva.json │ ├── dire-wolf.json │ ├── djinni.json │ ├── doppelganger.json │ ├── draft-horse.json │ ├── dragon-turtle.json │ ├── dretch.json │ ├── drider.json │ ├── drow.json │ ├── druid.json │ ├── dryad.json │ ├── duergar.json │ ├── dust-mephit.json │ ├── eagle.json │ ├── earth-elemental.json │ ├── efreeti.json │ ├── elephant.json │ ├── elk.json │ ├── erinyes.json │ ├── ettercap.json │ ├── ettin.json │ ├── fire-elemental.json │ ├── fire-giant.json │ ├── flesh-golem.json │ ├── flying-snake.json │ ├── flying-sword.json │ ├── frog.json │ ├── frost-giant.json │ ├── gargoyle.json │ ├── gelatinous-cube.json │ ├── ghast.json │ ├── ghost.json │ ├── ghoul.json │ ├── giant-ape.json │ ├── giant-badger.json │ ├── giant-bat.json │ ├── giant-boar.json │ ├── giant-centipede.json │ ├── giant-constrictor-snake.json │ ├── giant-crab.json │ ├── giant-crocodile.json │ ├── giant-eagle.json │ ├── giant-elk.json │ ├── giant-fire-beetle.json │ ├── giant-frog.json │ ├── giant-goat.json │ ├── giant-hyena.json │ ├── giant-lizard.json │ ├── giant-octopus.json │ ├── giant-owl.json │ ├── giant-poisonous-snake.json │ ├── giant-rat-diseased.json │ ├── giant-rat.json │ ├── giant-scorpion.json │ ├── giant-sea-horse.json │ ├── giant-shark.json │ ├── giant-spider.json │ ├── giant-toad.json │ ├── giant-vulture.json │ ├── giant-wasp.json │ ├── giant-weasel.json │ ├── giant-wolf-spider.json │ ├── gibbering-mouther.json │ ├── glabrezu.json │ ├── gladiator.json │ ├── gnoll.json │ ├── goat.json │ ├── goblin.json │ ├── gold-dragon-wyrmling.json │ ├── gorgon.json │ ├── gray-ooze.json │ ├── green-dragon-wyrmling.json │ ├── green-hag.json │ ├── grick.json │ ├── griffon.json │ ├── grimlock.json │ ├── guard.json │ ├── guardian-naga.json │ ├── gynosphinx.json │ ├── half-red-dragon-veteran.json │ ├── harpy.json │ ├── hawk.json │ ├── hell-hound.json │ ├── hezrou.json │ ├── hill-giant.json │ ├── hippogriff.json │ ├── hobgoblin.json │ ├── homunculus.json │ ├── horned-devil.json │ ├── hunter-shark.json │ ├── hydra.json │ ├── hyena.json │ ├── ice-devil.json │ ├── ice-mephit.json │ ├── imp.json │ ├── invisible-stalker.json │ ├── iron-golem.json │ ├── jackal.json │ ├── killer-whale.json │ ├── knight.json │ ├── kobold.json │ ├── kraken.json │ ├── lamia.json │ ├── lemure.json │ ├── lich.json │ ├── lion.json │ ├── lizard.json │ ├── lizardfolk.json │ ├── mage.json │ ├── magma-mephit.json │ ├── magmin.json │ ├── mammoth.json │ ├── manticore.json │ ├── marilith.json │ ├── mastiff.json │ ├── medusa.json │ ├── merfolk.json │ ├── merrow.json │ ├── mimic.json │ ├── minotaur-skeleton.json │ ├── minotaur.json │ ├── mule.json │ ├── mummy-lord.json │ ├── mummy.json │ ├── nalfeshnee.json │ ├── night-hag.json │ ├── nightmare.json │ ├── noble.json │ ├── ochre-jelly.json │ ├── octopus.json │ ├── ogre-zombie.json │ ├── ogre.json │ ├── oni.json │ ├── orc.json │ ├── otyugh.json │ ├── owl.json │ ├── owlbear.json │ ├── panther.json │ ├── pegasus.json │ ├── phase-spider.json │ ├── pit-fiend.json │ ├── planetar.json │ ├── plesiosaurus.json │ ├── poisonous-snake.json │ ├── polar-bear.json │ ├── pony.json │ ├── priest.json │ ├── pseudodragon.json │ ├── purple-worm.json │ ├── quasit.json │ ├── quipper.json │ ├── rakshasa.json │ ├── rat.json │ ├── raven.json │ ├── red-dragon-wyrmling.json │ ├── reef-shark.json │ ├── remorhaz.json │ ├── rhinoceros.json │ ├── riding-horse.json │ ├── roc.json │ ├── roper.json │ ├── rug-of-smothering.json │ ├── rust-monster.json │ ├── saber-toothed-tiger.json │ ├── sahuagin.json │ ├── salamander.json │ ├── satyr.json │ ├── scorpion.json │ ├── scout.json │ ├── sea-hag.json │ ├── sea-horse.json │ ├── shadow.json │ ├── shambling-mound.json │ ├── shield-guardian.json │ ├── shrieker.json │ ├── silver-dragon-wyrmling.json │ ├── skeleton.json │ ├── solar.json │ ├── specter.json │ ├── spider.json │ ├── spirit-naga.json │ ├── sprite.json │ ├── spy.json │ ├── steam-mephit.json │ ├── stirge.json │ ├── stone-giant.json │ ├── stone-golem.json │ ├── storm-giant.json │ ├── succubus-incubus.json │ ├── swarm-of-bats.json │ ├── swarm-of-beetles.json │ ├── swarm-of-centipedes.json │ ├── swarm-of-insects.json │ ├── swarm-of-poisonous-snakes.json │ ├── swarm-of-quippers.json │ ├── swarm-of-rats.json │ ├── swarm-of-ravens.json │ ├── swarm-of-spiders.json │ ├── swarm-of-wasps.json │ ├── tarrasque.json │ ├── thug.json │ ├── tiger.json │ ├── treant.json │ ├── tribal-warrior.json │ ├── triceratops.json │ ├── troll.json │ ├── tyrannosaurus-rex.json │ ├── unicorn.json │ ├── vampire-spawn.json │ ├── vampire.json │ ├── veteran.json │ ├── violet-fungus.json │ ├── vrock.json │ ├── vulture.json │ ├── warhorse-skeleton.json │ ├── warhorse.json │ ├── water-elemental.json │ ├── weasel.json │ ├── werebear.json │ ├── wereboar.json │ ├── wererat.json │ ├── weretiger.json │ ├── werewolf.json │ ├── white-dragon-wyrmling.json │ ├── wight.json │ ├── will-o-wisp.json │ ├── winter-wolf.json │ ├── wolf.json │ ├── worg.json │ ├── wraith.json │ ├── wyvern.json │ ├── xorn.json │ ├── young-black-dragon.json │ ├── young-blue-dragon.json │ ├── young-brass-dragon.json │ ├── young-bronze-dragon.json │ ├── young-copper-dragon.json │ ├── young-gold-dragon.json │ ├── young-green-dragon.json │ ├── young-red-dragon.json │ ├── young-silver-dragon.json │ ├── young-white-dragon.json │ └── zombie.json └── homebrew │ ├── dragonborn-slaver.json │ ├── order-of-the-falcon-knight.json │ ├── vishan-delaar.json │ └── wilder-scout.json ├── images ├── markdown-buttons.png ├── math-expression-menus.png ├── name-expression-menus.png ├── statblock.png └── title-section.png ├── index.html ├── package-lock.json ├── package.json ├── src ├── css │ ├── elements │ │ ├── autonomous │ │ │ ├── containers │ │ │ │ ├── advanced-stats.css │ │ │ │ ├── basic-stats.css │ │ │ │ ├── bottom-stats.css │ │ │ │ ├── heading-stats.css │ │ │ │ ├── stat-block-editor.css │ │ │ │ ├── stat-block-menu.css │ │ │ │ ├── stat-block-sidebar.css │ │ │ │ ├── stat-block.css │ │ │ │ └── top-stats.css │ │ │ ├── dialogs │ │ │ │ ├── custom-dialog.css │ │ │ │ ├── export-dialog.css │ │ │ │ ├── generate-attack-dialog.css │ │ │ │ ├── generate-spellcasting-dialog.css │ │ │ │ ├── import-dialog.css │ │ │ │ ├── import-json-dialog.css │ │ │ │ ├── import-open5e-dialog.css │ │ │ │ ├── import-srd-dialog.css │ │ │ │ ├── option-dialog.css │ │ │ │ └── reset-dialog.css │ │ │ ├── error-messages.css │ │ │ ├── getting-started-help-box.css │ │ │ ├── lists │ │ │ │ ├── display-block-list.css │ │ │ │ ├── display-block.css │ │ │ │ ├── drag-and-drop-list-item.css │ │ │ │ ├── editable-block-list.css │ │ │ │ ├── editable-block.css │ │ │ │ ├── legendary-action-display-block-list.css │ │ │ │ ├── legendary-action-display-block.css │ │ │ │ ├── legendary-action-editable-block-list.css │ │ │ │ ├── legendary-action-editable-block.css │ │ │ │ ├── property-list-item.css │ │ │ │ └── property-list.css │ │ │ ├── loading-screen.css │ │ │ ├── menus │ │ │ │ ├── drop-down-menu.css │ │ │ │ └── expression-menu.css │ │ │ ├── property-block.css │ │ │ ├── property-line.css │ │ │ ├── section-divider.css │ │ │ ├── sections │ │ │ │ ├── ability-scores-section.css │ │ │ │ ├── actions-section.css │ │ │ │ ├── armor-class-section.css │ │ │ │ ├── block-list-section.css │ │ │ │ ├── challenge-rating-section.css │ │ │ │ ├── condition-immunities-section.css │ │ │ │ ├── damage-immunities-section.css │ │ │ │ ├── damage-resistances-section.css │ │ │ │ ├── damage-vulnerabilities-section.css │ │ │ │ ├── hit-points-section.css │ │ │ │ ├── languages-section.css │ │ │ │ ├── legendary-actions-section.css │ │ │ │ ├── property-list-section.css │ │ │ │ ├── reactions-section.css │ │ │ │ ├── saving-throws-section.css │ │ │ │ ├── section.css │ │ │ │ ├── senses-section.css │ │ │ │ ├── skills-section.css │ │ │ │ ├── special-traits-section.css │ │ │ │ ├── speed-section.css │ │ │ │ ├── subtitle-section.css │ │ │ │ └── title-section.css │ │ │ ├── slide-toggle.css │ │ │ ├── spell-category-box.css │ │ │ ├── tapered-rule.css │ │ │ └── tooltips │ │ │ │ ├── custom-text-help-tooltip.css │ │ │ │ └── help-tooltip.css │ │ └── ui-controls.css │ ├── index.css │ ├── section-animations.css │ └── vendor │ │ └── material-icons.css ├── html │ ├── elements │ │ └── autonomous │ │ │ ├── containers │ │ │ ├── advanced-stats.html │ │ │ ├── basic-stats.html │ │ │ ├── bottom-stats.html │ │ │ ├── heading-stats.html │ │ │ ├── stat-block-editor.html │ │ │ ├── stat-block-menu.html │ │ │ ├── stat-block-sidebar.html │ │ │ ├── stat-block.html │ │ │ └── top-stats.html │ │ │ ├── dialogs │ │ │ ├── custom-dialog.html │ │ │ ├── export-dialog.html │ │ │ ├── generate-attack-dialog.html │ │ │ ├── generate-spellcasting-dialog.html │ │ │ ├── import-dialog.html │ │ │ ├── import-json-dialog.html │ │ │ ├── import-open5e-dialog.html │ │ │ ├── import-srd-dialog.html │ │ │ ├── option-dialog.html │ │ │ └── reset-dialog.html │ │ │ ├── error-messages.html │ │ │ ├── getting-started-help-box.html │ │ │ ├── lists │ │ │ ├── display-block-list.html │ │ │ ├── display-block.html │ │ │ ├── drag-and-drop-list-item.html │ │ │ ├── editable-block-list.html │ │ │ ├── editable-block.html │ │ │ ├── legendary-action-display-block-list.html │ │ │ ├── legendary-action-display-block.html │ │ │ ├── legendary-action-editable-block-list.html │ │ │ ├── legendary-action-editable-block.html │ │ │ ├── property-list-item.html │ │ │ └── property-list.html │ │ │ ├── loading-screen.html │ │ │ ├── menus │ │ │ ├── drop-down-menu.html │ │ │ └── expression-menu.html │ │ │ ├── property-block.html │ │ │ ├── property-line.html │ │ │ ├── section-divider.html │ │ │ ├── sections │ │ │ ├── ability-scores-section.html │ │ │ ├── actions-section.html │ │ │ ├── armor-class-section.html │ │ │ ├── block-list-section.html │ │ │ ├── challenge-rating-section.html │ │ │ ├── condition-immunities-section.html │ │ │ ├── damage-immunities-section.html │ │ │ ├── damage-resistances-section.html │ │ │ ├── damage-vulnerabilities-section.html │ │ │ ├── hit-points-section.html │ │ │ ├── languages-section.html │ │ │ ├── legendary-actions-section.html │ │ │ ├── property-list-section.html │ │ │ ├── reactions-section.html │ │ │ ├── saving-throws-section.html │ │ │ ├── section.html │ │ │ ├── senses-section.html │ │ │ ├── skills-section.html │ │ │ ├── special-traits-section.html │ │ │ ├── speed-section.html │ │ │ ├── subtitle-section.html │ │ │ └── title-section.html │ │ │ ├── slide-toggle.html │ │ │ ├── spell-category-box.html │ │ │ ├── tapered-rule.html │ │ │ └── tooltips │ │ │ ├── custom-text-help-tooltip.html │ │ │ └── help-tooltip.html │ └── export-inlined.html └── js │ ├── api │ ├── __mocks__ │ │ └── open5e-client.js │ └── open5e-client.js │ ├── data │ ├── challenge-rating-to-experience-points.js │ ├── challenge-rating-to-proficiency-bonus.js │ ├── conditions.js │ ├── creature-alignments.js │ ├── creature-sizes-to-hit-die-sizes.js │ ├── creature-tags.js │ ├── creature-types.js │ ├── damage-types-for-property-lists.js │ ├── damage-types.js │ ├── languages.js │ ├── predefined-weapons.js │ ├── spellcaster-types.js │ ├── spells.js │ └── srd-creature-list.js │ ├── elements │ ├── autonomous │ │ ├── containers │ │ │ ├── advanced-stats.js │ │ │ ├── basic-stats.js │ │ │ ├── bottom-stats.js │ │ │ ├── divisible-container.js │ │ │ ├── heading-stats.js │ │ │ ├── stat-block-editor.js │ │ │ ├── stat-block-menu.js │ │ │ ├── stat-block-menu.test.js │ │ │ ├── stat-block-sidebar.js │ │ │ ├── stat-block-sidebar.test.js │ │ │ ├── stat-block.js │ │ │ ├── stats-container.js │ │ │ └── top-stats.js │ │ ├── custom-autonomous-element.js │ │ ├── dialogs │ │ │ ├── custom-dialog.js │ │ │ ├── export-dialog.js │ │ │ ├── export-dialog.test.js │ │ │ ├── generate-attack-dialog.js │ │ │ ├── generate-attack-dialog.test.js │ │ │ ├── generate-spellcasting-dialog.js │ │ │ ├── generate-spellcasting-dialog.test.js │ │ │ ├── import-dialog.js │ │ │ ├── import-json-dialog.js │ │ │ ├── import-json-dialog.test.js │ │ │ ├── import-open5e-dialog.js │ │ │ ├── import-open5e-dialog.test.js │ │ │ ├── import-srd-dialog.js │ │ │ ├── import-srd-dialog.test.js │ │ │ ├── option-dialog.js │ │ │ ├── reset-dialog.js │ │ │ └── reset-dialog.test.js │ │ ├── error-messages.js │ │ ├── error-messages.test.js │ │ ├── getting-started-help-box.js │ │ ├── lists │ │ │ ├── display-block-list.js │ │ │ ├── display-block.js │ │ │ ├── drag-and-drop-list-item.js │ │ │ ├── drag-and-drop-list.js │ │ │ ├── editable-block-list.js │ │ │ ├── editable-block.js │ │ │ ├── editable-block.test.js │ │ │ ├── legendary-action-display-block-list.js │ │ │ ├── legendary-action-display-block.js │ │ │ ├── legendary-action-editable-block-list.js │ │ │ ├── legendary-action-editable-block.js │ │ │ ├── property-list-item.js │ │ │ └── property-list.js │ │ ├── loading-screen.js │ │ ├── menus │ │ │ ├── drop-down-menu.js │ │ │ └── expression-menu.js │ │ ├── property-block.js │ │ ├── property-line.js │ │ ├── section-divider.js │ │ ├── sections │ │ │ ├── ability-scores-section.js │ │ │ ├── ability-scores-section.test.js │ │ │ ├── actions-section.js │ │ │ ├── actions-section.test.js │ │ │ ├── armor-class-section.js │ │ │ ├── armor-class-section.test.js │ │ │ ├── block-list-section.js │ │ │ ├── block-list-section.specs.js │ │ │ ├── challenge-rating-section.js │ │ │ ├── challenge-rating-section.test.js │ │ │ ├── condition-immunities-section.js │ │ │ ├── condition-immunities-section.test.js │ │ │ ├── damage-immunities-section.js │ │ │ ├── damage-immunities-section.test.js │ │ │ ├── damage-resistances-section.js │ │ │ ├── damage-resistances-section.test.js │ │ │ ├── damage-vulnerabilities-section.js │ │ │ ├── damage-vulnerabilities-section.test.js │ │ │ ├── hit-points-section.js │ │ │ ├── hit-points-section.test.js │ │ │ ├── languages-section.js │ │ │ ├── languages-section.test.js │ │ │ ├── legendary-actions-section.js │ │ │ ├── legendary-actions-section.test.js │ │ │ ├── property-line-section.js │ │ │ ├── property-list-section.js │ │ │ ├── property-list-section.specs.js │ │ │ ├── reactions-section.js │ │ │ ├── reactions-section.test.js │ │ │ ├── saving-throws-section.js │ │ │ ├── saving-throws-section.test.js │ │ │ ├── section.js │ │ │ ├── senses-section.js │ │ │ ├── senses-section.test.js │ │ │ ├── skills-section.js │ │ │ ├── skills-section.test.js │ │ │ ├── special-traits-section.js │ │ │ ├── special-traits-section.test.js │ │ │ ├── speed-section.js │ │ │ ├── speed-section.test.js │ │ │ ├── subtitle-section.js │ │ │ ├── subtitle-section.test.js │ │ │ ├── title-section.js │ │ │ └── title-section.test.js │ │ ├── slide-toggle.js │ │ ├── spell-category-box.js │ │ ├── tapered-rule.js │ │ └── tooltips │ │ │ ├── custom-text-help-tooltip.js │ │ │ └── help-tooltip.js │ └── builtin │ │ ├── block-textarea.js │ │ ├── dynamic-select.js │ │ ├── enable-disable-elements-checkbox.js │ │ ├── number-input.js │ │ ├── number-select.js │ │ ├── property-datalist.js │ │ ├── sanitized-paragraph.js │ │ └── text-input.js │ ├── helpers │ ├── array-helpers.js │ ├── element-helpers.js │ ├── export-helpers.js │ ├── file-helpers.js │ ├── html-export-document-factory.js │ ├── html-templates.js │ ├── is-running-in-jsdom.js │ ├── local-storage-proxy.js │ ├── markdown-helpers.js │ ├── number-helpers.js │ ├── object-helpers.js │ ├── print-helpers.js │ ├── sanitize-html.js │ ├── spell-helpers.js │ ├── string-formatter.js │ └── test │ │ ├── event-interceptor.js │ │ ├── expect-matchers.js │ │ ├── matchers │ │ ├── property-line-matchers.js │ │ ├── to-be-in-mode.js │ │ ├── to-be-selected.js │ │ ├── to-have-elements-enabled-or-disabled-based-on-checkbox-state.js │ │ └── to-have-error.js │ │ ├── test-custom-elements.js │ │ └── test-globals.js │ ├── init.js │ ├── models │ ├── abilities.js │ ├── armor-class.js │ ├── attack.js │ ├── challenge-rating.js │ ├── creature.js │ ├── current-context.js │ ├── hit-points.js │ ├── lists │ │ ├── block │ │ │ ├── actions.js │ │ │ ├── block-list-model.js │ │ │ ├── block-model.js │ │ │ ├── legendary-actions.js │ │ │ ├── legendary-block-model.js │ │ │ ├── reactions.js │ │ │ └── special-traits.js │ │ └── property │ │ │ ├── condition-immunities.js │ │ │ ├── damage-immunities.js │ │ │ ├── damage-resistances.js │ │ │ ├── damage-vulnerabilities.js │ │ │ ├── languages.js │ │ │ └── property-list-model.js │ ├── model.js │ ├── property-line-model.js │ ├── saving-throws.js │ ├── senses.js │ ├── settings │ │ ├── layout-settings.js │ │ └── local-settings.js │ ├── skills.js │ ├── speed.js │ ├── spellcasting.js │ ├── subtitle.js │ └── title.js │ └── parsers │ ├── grammars │ ├── markdown-grammar.pegjs │ ├── math-grammar.pegjs │ └── name-grammar.pegjs │ ├── markdown-parser.js │ ├── markdown-parser.test.js │ ├── math-parser.js │ ├── math-parser.test.js │ ├── name-parser.js │ ├── name-parser.test.js │ ├── parser.js │ └── scripts │ └── generate-parser-script.js ├── webpack.common.js ├── webpack.dev.js └── webpack.prod.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "test": { 4 | "plugins": [ 5 | "transform-es2015-modules-commonjs" 6 | ] 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | src/js/parsers/markdown-parser.js 2 | src/js/parsers/name-parser.js -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | "env": { 3 | "browser": true, 4 | "es6": true, 5 | "amd": true, 6 | "jest" : true 7 | }, 8 | "extends": "eslint:recommended", 9 | "globals": { 10 | "global": "readable", 11 | "process": "readable", 12 | "module": "readable" 13 | }, 14 | "parserOptions": { 15 | "ecmaVersion": 2018, 16 | "sourceType": "module" 17 | }, 18 | "rules": { 19 | "indent": [ 20 | "error", 21 | 2, { "CallExpression": {"arguments": "first"} } 22 | ], 23 | "linebreak-style": [ 24 | "error", 25 | "windows" 26 | ], 27 | "quotes": [ 28 | "error", 29 | "single" 30 | ], 31 | "semi": [ 32 | "error", 33 | "always" 34 | ] 35 | } 36 | }; -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | build: 10 | 11 | runs-on: ubuntu-latest 12 | 13 | strategy: 14 | matrix: 15 | node-version: [16.x] 16 | 17 | steps: 18 | - name: Checkout files 19 | uses: actions/checkout@v2 20 | - name: Setup Node.js ${{ matrix.node-version }} 21 | uses: actions/setup-node@v1 22 | with: 23 | node-version: ${{ matrix.node-version }} 24 | - name: Install dependencies 25 | run: npm install 26 | - name: Run tests 27 | run: npm test 28 | - name: Create production bundle 29 | run: npm run build -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: Deploy 2 | 3 | on: 4 | release: 5 | types: [published] 6 | 7 | jobs: 8 | build: 9 | 10 | runs-on: ubuntu-latest 11 | 12 | strategy: 13 | matrix: 14 | node-version: [16.x] 15 | 16 | steps: 17 | - name: Checkout files 18 | uses: actions/checkout@v2 19 | - name: Setup Node.js ${{ matrix.node-version }} 20 | uses: actions/setup-node@v1 21 | with: 22 | node-version: ${{ matrix.node-version }} 23 | - name: Install dependencies 24 | run: npm install 25 | - name: Run tests 26 | run: npm test 27 | - name: Create production bundle 28 | run: npm run build 29 | - name: Deploy to GitHub Pages 30 | uses: JamesIves/github-pages-deploy-action@4.1.3 31 | with: 32 | ssh-key: ${{ secrets.DEPLOY_KEY }} 33 | branch: gh-pages 34 | folder: . 35 | clean: false -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | coverage/ 3 | .vscode/ 4 | *.code-workspace -------------------------------------------------------------------------------- /images/markdown-buttons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Frumple/statblock5e-creator/d138d8e0f735f22e25e0e6a80cb474fc51e51639/images/markdown-buttons.png -------------------------------------------------------------------------------- /images/math-expression-menus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Frumple/statblock5e-creator/d138d8e0f735f22e25e0e6a80cb474fc51e51639/images/math-expression-menus.png -------------------------------------------------------------------------------- /images/name-expression-menus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Frumple/statblock5e-creator/d138d8e0f735f22e25e0e6a80cb474fc51e51639/images/name-expression-menus.png -------------------------------------------------------------------------------- /images/statblock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Frumple/statblock5e-creator/d138d8e0f735f22e25e0e6a80cb474fc51e51639/images/statblock.png -------------------------------------------------------------------------------- /images/title-section.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Frumple/statblock5e-creator/d138d8e0f735f22e25e0e6a80cb474fc51e51639/images/title-section.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |This custom text field supports Markdown Emphasis syntax:
5 |Italic: | 8 |*single asterisks* or _single underscores_ |
9 |
Bold: | 12 |**double asterisks** or __double underscores__ |
13 |
Italic+Bold: | 16 |***triple asterisks*** or ___triple underscores___ |
17 |