diff --git a/client/homebrew/brewRenderer/brewRenderer.jsx b/client/homebrew/brewRenderer/brewRenderer.jsx index 096a4f87e..fff2ccbf4 100644 --- a/client/homebrew/brewRenderer/brewRenderer.jsx +++ b/client/homebrew/brewRenderer/brewRenderer.jsx @@ -1,97 +1,115 @@ -var React = require('react'); -var _ = require('lodash'); -var cx = require('classnames'); - -var Markdown = require('marked'); - -var PAGE_HEIGHT = 1056 + 30; - -var BrewRenderer = React.createClass({ - getDefaultProps: function() { - return { - text : '' - }; - }, - getInitialState: function() { - return { - viewablePageNumber: 0, - height : 0, - isMounted : false - }; - }, - totalPages : 0, - height : 0, - - componentDidMount: function() { - this.setState({ - height : this.refs.main.parentNode.clientHeight, - isMounted : true - }); - }, - handleScroll : function(e){ - this.setState({ - viewablePageNumber : Math.floor(e.target.scrollTop / PAGE_HEIGHT) - }); - }, - //Implement later - scrollToPage : function(pageNumber){ - }, - - shouldRender : function(pageText, index){ - if(!this.state.isMounted) return false; - - var viewIndex = this.state.viewablePageNumber; - if(index == viewIndex - 1) return true; - if(index == viewIndex) return true; - if(index == viewIndex + 1) return true; - - //Check for style tages - if(pageText.indexOf('' - ].join('\n') - }, - { - name : "Ink Friendly", - icon : 'fa-tint', - gen : ['', - '' - ].join('\n') - }, - ] - }, - -] - - +var MagicGen = require('./magic.gen.js'); +var ClassTableGen = require('./classtable.gen.js'); +var MonsterBlockGen = require('./monsterblock.gen.js'); +var ClassFeatureGen = require('./classfeature.gen.js'); +var FullClassGen = require('./fullclass.gen.js'); + + + +module.exports = [ + + { + groupName : 'Editor', + icon : 'fa-pencil', + snippets : [ + { + name : "Column Break", + icon : 'fa-columns', + gen : "```\n```\n\n" + }, + { + name : "New Page", + icon : 'fa-file-text', + gen : "\\page\n\n" + }, + { + name : "Vertical Spacing", + icon : 'fa-arrows-v', + gen : "
\n\n" + }, + { + name : "Image", + icon : 'fa-image', + gen : [ + "", + "Credit: Kyounghwan Kim" + ].join('\n') + }, + { + name : "Background Image", + icon : 'fa-tree', + gen : [ + "" + ].join('\n') + }, + + { + name : "Page Number", + icon : 'fa-bookmark', + gen : "
1
\n
PART 1 | FANCINESS
\n\n" + }, + + + ] + }, + + + /************************* PHB ********************/ + + { + groupName : 'PHB', + icon : 'fa-book', + snippets : [ + { + name : 'Spell', + icon : 'fa-magic', + gen : MagicGen.spell, + }, + { + name : 'Spell List', + icon : 'fa-list', + gen : MagicGen.spellList, + }, + { + name : 'Class Feature', + icon : 'fa-trophy', + gen : ClassFeatureGen, + }, + { + name : 'Note', + icon : '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 : 'Monster Stat Block', + icon : 'fa-bug', + gen : MonsterBlockGen.half, + }, + { + name : 'Wide Monster Stat Block', + icon : 'fa-paw', + gen : MonsterBlockGen.full, + } + ] + }, + + + + /********************* TABLES *********************/ + + { + groupName : 'Tables', + icon : 'fa-table', + 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', + 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'); + }, + } + ] + }, + + + + + /**************** PRINT *************/ + + { + groupName : 'Print', + icon : 'fa-print', + snippets : [ + { + name : "A4 PageSize", + icon : 'fa-file-o', + gen : ['' + ].join('\n') + }, + { + name : "Ink Friendly", + icon : 'fa-tint', + gen : ['', + '' + ].join('\n') + }, + ] + }, + +] diff --git a/client/homebrew/phbStyle/phb.style.less b/client/homebrew/phbStyle/phb.style.less index de8291fd4..7c4f4f763 100644 --- a/client/homebrew/phbStyle/phb.style.less +++ b/client/homebrew/phbStyle/phb.style.less @@ -64,17 +64,17 @@ } ul{ margin-bottom : 0.8em; + padding-left : 1.4em; line-height : 1.3em; list-style-position : outside; list-style-type : disc; - padding-left: 1.4em; } ol{ margin-bottom : 0.8em; + padding-left : 1.4em; line-height : 1.3em; list-style-position : outside; list-style-type : decimal; - padding-left: 1.4em; } img{ z-index : -1; @@ -169,15 +169,15 @@ // *****************************/ blockquote{ .useSansSerif(); - box-sizing : border-box; - margin-bottom : 1em; - padding : 5px 10px; - background-color : @noteGreen; - border-style: solid; - border-width: 11px; - border-image: @noteBorderImage 11; - border-image-outset: 9px 0px; - box-shadow : 1px 4px 14px #888; + box-sizing : border-box; + margin-bottom : 1em; + padding : 5px 10px; + background-color : @noteGreen; + border-style : solid; + border-width : 11px; + border-image : @noteBorderImage 11; + border-image-outset : 9px 0px; + box-shadow : 1px 4px 14px #888; p, ul{ font-size : 0.352cm; line-height : 1.1em; @@ -185,7 +185,7 @@ } //If a note starts a column, give it space at the top to render border pre+blockquote{ - margin-top: 11px; + margin-top : 11px; } //***************************** // * MONSTER STAT BLOCK @@ -222,8 +222,8 @@ margin : 0; column-span : 1; background-color : transparent; + border-style : none; border-image : none; - border-style : none; -webkit-column-span : 1; tbody{ tr:nth-child(odd), tr:nth-child(even){ @@ -339,7 +339,7 @@ -moz-column-span : all; } //Column Break - pre{ + pre, code{ visibility : hidden; -webkit-column-break-after : always; break-after : always; @@ -367,6 +367,31 @@ } } //***************************** +// * SPELL LIST +// *****************************/ +.phb .spellList{ + .useSansSerif(); + column-count : 4; + column-span : all; + -webkit-column-span : all; + -moz-column-span : all; + ul+h5{ + margin-top : 15px; + } + p, ul{ + font-size : 0.352cm; + line-height : 1.3em; + } + ul{ + margin-bottom : 0.5em; + padding-left : 1em; + text-indent : -1em; + list-style-type : none; + -webkit-column-break-inside : auto; + column-break-inside : auto; + } +} +//***************************** // * PRINT // *****************************/ .phb.print{ diff --git a/shared/codemirror/addon/comment/continuecomment.js b/shared/codemirror/addon/comment/continuecomment.js deleted file mode 100644 index 837b18bce..000000000 --- a/shared/codemirror/addon/comment/continuecomment.js +++ /dev/null @@ -1,85 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - var modes = ["clike", "css", "javascript"]; - - for (var i = 0; i < modes.length; ++i) - CodeMirror.extendMode(modes[i], {blockCommentContinue: " * "}); - - function continueComment(cm) { - if (cm.getOption("disableInput")) return CodeMirror.Pass; - var ranges = cm.listSelections(), mode, inserts = []; - for (var i = 0; i < ranges.length; i++) { - var pos = ranges[i].head, token = cm.getTokenAt(pos); - if (token.type != "comment") return CodeMirror.Pass; - var modeHere = CodeMirror.innerMode(cm.getMode(), token.state).mode; - if (!mode) mode = modeHere; - else if (mode != modeHere) return CodeMirror.Pass; - - var insert = null; - if (mode.blockCommentStart && mode.blockCommentContinue) { - var end = token.string.indexOf(mode.blockCommentEnd); - var full = cm.getRange(CodeMirror.Pos(pos.line, 0), CodeMirror.Pos(pos.line, token.end)), found; - if (end != -1 && end == token.string.length - mode.blockCommentEnd.length && pos.ch >= end) { - // Comment ended, don't continue it - } else if (token.string.indexOf(mode.blockCommentStart) == 0) { - insert = full.slice(0, token.start); - if (!/^\s*$/.test(insert)) { - insert = ""; - for (var j = 0; j < token.start; ++j) insert += " "; - } - } else if ((found = full.indexOf(mode.blockCommentContinue)) != -1 && - found + mode.blockCommentContinue.length > token.start && - /^\s*$/.test(full.slice(0, found))) { - insert = full.slice(0, found); - } - if (insert != null) insert += mode.blockCommentContinue; - } - if (insert == null && mode.lineComment && continueLineCommentEnabled(cm)) { - var line = cm.getLine(pos.line), found = line.indexOf(mode.lineComment); - if (found > -1) { - insert = line.slice(0, found); - if (/\S/.test(insert)) insert = null; - else insert += mode.lineComment + line.slice(found + mode.lineComment.length).match(/^\s*/)[0]; - } - } - if (insert == null) return CodeMirror.Pass; - inserts[i] = "\n" + insert; - } - - cm.operation(function() { - for (var i = ranges.length - 1; i >= 0; i--) - cm.replaceRange(inserts[i], ranges[i].from(), ranges[i].to(), "+insert"); - }); - } - - function continueLineCommentEnabled(cm) { - var opt = cm.getOption("continueComments"); - if (opt && typeof opt == "object") - return opt.continueLineComment !== false; - return true; - } - - CodeMirror.defineOption("continueComments", null, function(cm, val, prev) { - if (prev && prev != CodeMirror.Init) - cm.removeKeyMap("continueComment"); - if (val) { - var key = "Enter"; - if (typeof val == "string") - key = val; - else if (typeof val == "object" && val.key) - key = val.key; - var map = {name: "continueComment"}; - map[key] = continueComment; - cm.addKeyMap(map); - } - }); -}); diff --git a/shared/codemirror/addon/dialog/dialog.css b/shared/codemirror/addon/dialog/dialog.css deleted file mode 100644 index 8f713c077..000000000 --- a/shared/codemirror/addon/dialog/dialog.css +++ /dev/null @@ -1,32 +0,0 @@ -.CodeMirror-dialog { - position: absolute; - left: 0; right: 0; - background: inherit; - z-index: 15; - padding: .1em .8em; - overflow: hidden; - color: inherit; -} - -.CodeMirror-dialog-top { - border-bottom: 1px solid #eee; - top: 0; -} - -.CodeMirror-dialog-bottom { - border-top: 1px solid #eee; - bottom: 0; -} - -.CodeMirror-dialog input { - border: none; - outline: none; - background: transparent; - width: 20em; - color: inherit; - font-family: monospace; -} - -.CodeMirror-dialog button { - font-size: 70%; -}