From d197de1816e6020858883a58f9aa7cdfb5a26698 Mon Sep 17 00:00:00 2001 From: Pete Boysen Date: Tue, 15 Mar 2016 13:59:09 -0500 Subject: [PATCH] changed resizing of grammar divs and added plain versions of html for demo --- comments-plain.html | 50 ++++++++++++++++++++++++++++++++++++++++++++ grammar-built-min.js | 2 +- grammar-plain.html | 45 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 comments-plain.html create mode 100644 grammar-plain.html diff --git a/comments-plain.html b/comments-plain.html new file mode 100644 index 0000000..de8c47a --- /dev/null +++ b/comments-plain.html @@ -0,0 +1,50 @@ + + +ProseMirror Comments Examples + + + + + + + + + + + + + + +
+
+
+ Comment style:
+
+
+
+
+ + + diff --git a/grammar-built-min.js b/grammar-built-min.js index 7aa166f..e86f18f 100644 --- a/grammar-built-min.js +++ b/grammar-built-min.js @@ -11,4 +11,4 @@ module.exports=function(text,options){for(var r=options&&options.by?byRe||constr return!0},menu:{group:"content",rank:74,display:{type:"label",label:"Graph/Map"}},params:[{name:"Data URL",attr:"data",label:"Data URL",type:"select",prefill:function(pm){return(0,_utils.selectedNodeAttr)(pm,this,"data")},options:function(){return getGraphOptions()}},{name:"Size",attr:"size",label:"Size",type:"select","default":"medium",prefill:function(pm){return(0,_utils.selectedNodeAttr)(pm,this,"size")},options:[{value:"small",label:"small"},{value:"medium",label:"medium"},{value:"large",label:"large"}]}]}),(0,_utils.defParamsClick)(Graph,"graph:insert"),(0,_dom.insertCSS)("\n\n.ProseMirror .{css} {}\n\n."+css+"-small {\n border-radius: 6px;\n border: 1px solid #DDD;\n width: 400px;\n height: 300px;\n display: inline-block;\n}\n\n."+css+"-medium {\n border-radius: 6px;\n border: 1px solid #DDD;\n width: 600px;\n height: 400px;\n display: inline-block;\n}\n\n."+css+"-large {\n border-radius: 6px;\n border: 1px solid #DDD;\n width: 800px;\n height: 600px;\n display: inline-block;\n}\n\n")},{"../../utils":65,"prosemirror/dist/dom":1,"prosemirror/dist/model":34}],70:[function(require,module,exports){"use strict";function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(self,call){if(!self)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!call||"object"!=typeof call&&"function"!=typeof call?self:call}function _inherits(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass)}var _createClass=function(){function defineProperties(target,props){for(var i=0;i0)return pm.tr["delete"](from,to).apply(pm.apply.scroll);var toCL=toCI.shorten(),cl=pm.doc.path(toCL.path),_nodeBefore=(0,_utils.nodeBefore)(pm,toCI),before=_nodeBefore.before;_nodeBefore.at;if(2==cl.size||before.type!=this||ci.lastChild.size>0)return!0;var tr=pm.tr["delete"](toCL,toCL.move(1)).apply(pm.apply.scroll);return renumber(pm,toCL),tr},keys:["Backspace(10)","Mod-Backspace(10)"]}),CheckList.register("command","insert",{label:"Check List",run:function(pm,name,title){var _pm$selection3=pm.selection,from=_pm$selection3.from,node=(_pm$selection3.to,_pm$selection3.node),attrs={name:name,title:title};if(node&&node.type==this){var tr=pm.tr.setNodeType(from,this,attrs).apply();return renumber(pm,_model.Pos.from(from.toPath().concat(from.offset),0)),tr}return(0,_utils.insertQuestion)(pm,from,this.create(attrs))},select:function(pm){return!0},menu:{group:"question",rank:70,display:{type:"label",label:"CheckList"}},params:[{name:"Name",attr:"name",label:"Short ID",type:"text",prefill:function(pm){return(0,_utils.selectedNodeAttr)(pm,this,"name")},options:{pattern:_utils.namePattern,size:10,title:_utils.nameTitle}},{name:"Title",attr:"title",label:"(optional)",type:"text","default":"",prefill:function(pm){return(0,_utils.selectedNodeAttr)(pm,this,"title")},options:{required:""}}]}),(0,_utils.defParamsClick)(CheckList,"checklist:insert"),(0,_dom.insertCSS)("\n\n.ProseMirror ."+cssi+" {\n cursor: text;\n}\n\n.ProseMirror ."+cssi+" input {\n float: left;\n}\n\n\n")},{"../../utils":65,"./question":90,"./textbox":94,"prosemirror/dist/dom":1,"prosemirror/dist/model":34}],87:[function(require,module,exports){"use strict";function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(self,call){if(!self)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!call||"object"!=typeof call&&"function"!=typeof call?self:call}function _inherits(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass)}var _createClass=function(){function defineProperties(target,props){for(var i=0;i0)return pm.tr["delete"](from,to).apply(pm.apply.scroll);var toMC=toCH.shorten(),mc=pm.doc.path(toMC.path),_nodeBefore=(0,_utils.nodeBefore)(pm,toCH),before=_nodeBefore.before;_nodeBefore.at;if(2==mc.size||before.type!=this||ch.lastChild.size>0)return!0;var tr=pm.tr["delete"](toMC,toMC.move(1)).apply(pm.apply.scroll);return renumber(pm,toMC),tr},keys:["Backspace(10)","Mod-Backspace(10)"]}),MultipleChoice.register("command","insert",{label:"MultipleChoice",run:function(pm,name,title){var _pm$selection3=pm.selection,from=_pm$selection3.from,node=(_pm$selection3.to,_pm$selection3.node),attrs={name:name,title:title,value:1};if(node&&node.type==this){var tr=pm.tr.setNodeType(from,this,attrs).apply();return renumber(pm,_model.Pos.from(from.toPath().concat(from.offset),0)),tr}return(0,_utils.insertQuestion)(pm,from,this.create(attrs))},select:function(pm){return!0},menu:{group:"question",rank:70,display:{type:"label",label:"MultipleChoice"}},params:[{name:"Name",attr:"name",label:"Short ID",type:"text",prefill:function(pm){return(0,_utils.selectedNodeAttr)(pm,this,"name")},options:{pattern:_utils.namePattern,size:10,title:_utils.nameTitle}},{name:"Title",attr:"title",label:"(optional)",type:"text","default":"",prefill:function(pm){return(0,_utils.selectedNodeAttr)(pm,this,"title")},options:{required:""}}]}),(0,_utils.defParamsClick)(MultipleChoice,"multiplechoice:insert"),(0,_dom.insertCSS)("\n\n."+cssc+" input {\n float: left;\n}\n\n.ProseMirror ."+cssc+":hover {\n cursor: text;\n}\n\n")},{"../../utils":65,"./question":90,"prosemirror/dist/dom":1,"prosemirror/dist/model":34}],90:[function(require,module,exports){"use strict";function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(self,call){if(!self)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!call||"object"!=typeof call&&"function"!=typeof call?self:call}function _inherits(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass)}function setChildAttrs(pm,pos,type,attrs){return pm.doc.path(pos.path).forEach(function(node,start){return node.type.name==type?pm.tr.setNodeType(new _model.Pos(pos.path,start),node.type,attrs).apply():void 0}),!1}var _createClass=function(){function defineProperties(target,props){for(var i=0;i0||"paragraph"!=para.type.name)return!1;from=from.shorten();var parent=pm.doc.path(from.path);return parent.type instanceof Question?parent.firstChild==para:!1},keys:["Backspace(10)","Mod-Backspace(10)"]}),Question.register("command","enter",{label:"process enter",run:function(pm){var _pm$selection2=pm.selection,from=_pm$selection2.from,node=_pm$selection2.node,para=pm.doc.path(from.path);if(node&&node.type instanceof Question){var _parent=pm.doc.path(from.path);if(_parent.lastChild==node||!_parent.child(from.offset+1).isTextblock){var side=from.move(1);pm.tr.insert(side,pm.schema.defaultTextblockType().create()).apply(pm.apply.scroll),pm.setTextSelection(new _model.Pos(side.toPath(),0))}return!0}if(from.offset>0||"paragraph"!=para.type.name)return!1;var parent=pm.doc.path(from.shorten().path);return parent.type instanceof Question},keys:["Enter(10)","Mod-Enter(10)"]}),(0,_dom.insertCSS)("\n \n."+css+" {\n counter-increment: qcnt;\n border: 1px solid #DDD;\n border-radius: 4px;\n padding: 8px;\n margin-top: 1em;\n}\n\n."+css+':before {\n content: counter(qcnt)"." attr(title);\n font-size: 80%;\n font-weight: bold;\n cursor: grabbing;\n}\n\n.ProseMirror .'+css+" p:hover {\n cursor: text;\n}\n\n")},{"../../utils":65,"prosemirror/dist/dom":1,"prosemirror/dist/model":34,"prosemirror/dist/transform":40}],91:[function(require,module,exports){"use strict";function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(self,call){if(!self)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!call||"object"!=typeof call&&"function"!=typeof call?self:call}function _inherits(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass)}var _get=function get(object,property,receiver){null===object&&(object=Function.prototype);var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_createClass=function(){function defineProperties(target,props){for(var i=0;istartVal?setOutputValue=function(val){out.value=val}:!function(){var max=startVal;setOutputValue=function(val){out.value=max-val},endVal=startVal-endVal,startVal=0}();var range=(0,_dom.elt)("input",{"class":"widgets-input",value:mid,name:node.attrs.name,id:node.attrs.name,type:"range",min:startVal,max:endVal,contenteditable:!1});return range.addEventListener("input",function(e){e.stopPropagation(),setOutputValue(e.originalTarget.valueAsNumber)}),(0,_dom.elt)("div",node.attrs,(0,_dom.elt)("span",null,node.attrs.startlabel),range,(0,_dom.elt)("span",null,node.attrs.endlabel),out)};var Scale=exports.Scale=function(_Question){function Scale(){return _classCallCheck(this,Scale),_possibleConstructorReturn(this,Object.getPrototypeOf(Scale).apply(this,arguments))}return _inherits(Scale,_Question),_createClass(Scale,[{key:"defaultContent",value:function(attrs){return _model.Fragment.from([this.schema.nodes.paragraph.create(null,""),this.schema.nodes.scaledisplay.create(attrs)])}},{key:"create",value:function(attrs,content,marks){return content||(content=this.defaultContent(attrs)),_get(Object.getPrototypeOf(Scale.prototype),"create",this).call(this,attrs,content,marks)}},{key:"attrs",get:function(){return{name:new _model.Attribute,title:new _model.Attribute({"default":""}),startvalue:new _model.Attribute({"default":"1"}),startlabel:new _model.Attribute({"default":"low"}),endvalue:new _model.Attribute({"default":"10"}),endlabel:new _model.Attribute({"default":"high"}),"class":new _model.Attribute({"default":"widgets-scale "+_question.qclass})}}}],[{key:"contains",get:function(){return"text"}}]),Scale}(_question.Question);(0,_utils.defParser)(Scale,"div",cssd),(0,_utils.defParser)(Scale,"div",csss),Scale.register("command","insert",{label:"Scale",run:function(pm,name,title,startvalue,startlabel,endvalue,endlabel){var _pm$selection=pm.selection,from=_pm$selection.from,node=(_pm$selection.to,_pm$selection.node),attrs={name:name,title:title,startvalue:startvalue,startlabel:startlabel,endvalue:endvalue,endlabel:endlabel};return node&&node.type==this?(pm.tr.setNodeType(from,this,attrs).apply(pm.apply.scroll),from=new _model.Pos(from.path.concat(from.offset),0),(0,_question.setChildAttrs)(pm,from,"scaledisplay",attrs)):(0,_utils.insertQuestion)(pm,from,this.create(attrs))},menu:{group:"question",rank:74,display:{type:"label",label:"Scale"}},params:[{name:"Name",attr:"name",label:"Short ID",type:"text",prefill:function(pm){return(0,_utils.selectedNodeAttr)(pm,this,"name")},options:{pattern:_utils.namePattern,size:10,title:_utils.nameTitle}},{name:"Title",attr:"title",label:"(optional)",type:"text","default":"",prefill:function(pm){return(0,_utils.selectedNodeAttr)(pm,this,"title")},options:{required:""}},{label:"Start value",attr:"startvalue",type:"number","default":1,prefill:function(pm){return(0,_utils.selectedNodeAttr)(pm,this,"startvalue")}},{name:"Start Label",attr:"startlabel",label:"Text on left",type:"text","default":"low",prefill:function(pm){return(0,_utils.selectedNodeAttr)(pm,this,"startlabel")}},{label:"End value",attr:"endvalue",type:"number","default":10,prefill:function(pm){return(0,_utils.selectedNodeAttr)(pm,this,"endvalue")}},{name:"End Label",attr:"endlabel",label:"Text on right",type:"text","default":"high",prefill:function(pm){return(0,_utils.selectedNodeAttr)(pm,this,"endlabel")}}]}),(0,_utils.defParamsClick)(Scale,"scale:insert"),(0,_dom.insertCSS)("\n\n."+cssd+" {\n display: inline-block;\n text-align: center;\n font-size: 80%;\n}\n\n."+csss+" input {\n vertical-align: middle;\n display: inline;\n}\n\n."+csss+" output {\n vertical-align: middle;\n border-radius: 4px;\n text-align: right;\n height: 20px;\n border: 1px solid #AAA;\n display: inline;\n padding: 2px;\n margin: 4px;\n background: white;\n}\n\n."+csss+" span {\n vertical-align: middle;\n font-weight: normal;\n display: inline;\n}\n\n."+csss+" div {\n display: inline-block;\n padding: 4px;\n}\n\n."+csss+" input[type=range] {\n -webkit-appearance: none;\n border: 1px solid white;\n width: 200px;\n cursor: pointer;\n}\n."+csss+" input[type=range]::-webkit-slider-runnable-track {\n width: 200px;\n height: 5px;\n background: skyblue;\n border: none;\n border-radius: 3px;\n}\n."+csss+" input[type=range]::-webkit-slider-thumb {\n -webkit-appearance: none;\n border: none;\n height: 16px;\n width: 16px;\n border-radius: 50%;\n background: navy;\n margin-top: -4px;\n}\n."+csss+" input[type=range]:focus {\n outline: none;\n}\n."+csss+" input[type=range]:focus::-webkit-slider-runnable-track {\n background: #ccc;\n}\n\n."+csss+" input[type=range]::-moz-range-track {\n width: 200px;\n height: 5px;\n background: skyblue;\n border: none;\n border-radius: 3px;\n}\n."+csss+" input[type=range]::-moz-range-thumb {\n border: none;\n height: 16px;\n width: 16px;\n border-radius: 50%;\n background: navy;\n}\n\n."+csss+" input[type=range]:-moz-focusring{\n outline: 1px solid white;\n outline-offset: -1px;\n}\n\n."+csss+" input[type=range]::-ms-track {\n width: 200px;\n height: 5px;\n background: transparent;\n border-color: transparent;\n border-width: 6px 0;\n\n /*remove default tick marks*/\n color: transparent;\n}\n."+csss+" input[type=range]::-ms-fill-lower {\n background: ;\n border-radius: 10px;\n}\n."+csss+" input[type=range]::-ms-fill-upper {\n background: #ddd;\n border-radius: 10px;\n}\n."+csss+" input[type=range]::-ms-thumb {\n border: none;\n height: 16px;\n width: 16px;\n border-radius: 50%;\n background: navy;\n}\n."+csss+" input[type=range]:focus::-ms-fill-lower {\n background: #888;\n}\n."+csss+" input[type=range]:focus::-ms-fill-upper {\n background: #ccc;\n}\n")},{"../../utils":65,"./question":90,"prosemirror/dist/dom":1,"prosemirror/dist/model":34}],92:[function(require,module,exports){"use strict";function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(self,call){if(!self)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!call||"object"!=typeof call&&"function"!=typeof call?self:call}function _inherits(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass)}var _createClass=function(){function defineProperties(target,props){for(var i=0;ir.right-16&&e.clientYtop&&(top=bottom),r.dom.style.top=top+"px",bottom=top+r.h+1})}},{key:"highlightComment",value:function(id){var c=comments[id];if(c){this.clearHighlight(),c.dom.className+=" select",this.highlight=c;var _c$range=c.range,from=_c$range.from,to=_c$range.to;pm.removeRange(c.range),c.range=pm.markRange(from,to,{className:c.getRangeClass(!0)})}}},{key:"clearHighlight",value:function(){if(this.highlight){var c=this.highlight;if(c.dom.className="comment",c.range){var r=c.range,from=r.from,to=r.to;pm.removeRange(r),c.range=pm.markRange(from,to,{className:c.getRangeClass(!1)})}this.highlight=null}}},{key:"getSelectionTop",value:function(){var from=pm.selection.from,r=pm.coordsAtPos(from),rect=pm.content.getBoundingClientRect();return Math.round(r.top-rect.top)}}]),CommentStore}();(0,_dom.insertCSS)('\n.comments {\n display: block;\n margin: 0 auto;\n width: 100%;\n height: 400px;\n}\n\n.comments .peer .ProseMirror-menubar {\n text-align: right;\n}\n\n.comments #editor {\n float: left;\n width: 60%;\n height: 100%;\n}\n\n.comments #comments {\n border: 1px solid #AAA;\n margin-left: 1px;\n padding: 0;\n height: 100%;\n width: 250px;\n display: inline-block;\n overflow-y: auto;\n position:relative;\n }\n\n\n.comments .comment-header {\n font-weight: bold;\n font-size: 80%;\n width: 100%;\n background: skyblue;\n color: white;\n margin: 0;\n padding: 2px 2px 0px 2px;\n border-bottom: 1px solid #AAA;\n display: inline-block;\n}\n \n.comments .newcomment {\n margin-left: 10px;\n display: inline-block;\n}\n\n.comments .newcomment a {\n padding: 0 4px 0 4px;\n background: skyblue;\n color: white;\n text-decoration: none;\n}\n\n.comments .newcomment a:hover {\n padding: 0 4px 0 4px;\n background: white;\n color: skyblue;\n cursor: pointer;\n}\n\n.comments .comment {\n background: white;\n border-radius: 6px;\n border: 1px solid #AAA;\n width: 92%;\n font-size: 90%;\n padding: 4px;\n min-height: 30px;\n position: absolute; \n left: 8px;\n}\n\n.comments .comment:after {\n content: \' \';\n height: 0;\n position: absolute;\n width: 0;\n border: 8px solid transparent;\n border-right-color: skyblue;\n left: -16px;\n top: 5px;\n}\n\n.comments .comment:hover {\n background-image: url(\'icons/menu.png\');\n background-repeat: no-repeat;\n background-position: top right;\n cursor: pointer;\n}\n\n.comments .select {\n border: 1px solid skyblue;\n}\n\n.comment-button {\n margin: 4px;\n padding: 2px;\n border-radius: 4px;\n border: 1px solid #AAA;\n background: skyblue;\n color: white;\n cursor: pointer;\n}\n\n.addComment {\n background: white;\n margin: 2px;\n border-radius: 6px;\n border: 1px solid #AAA;\n visibility: visible;\n font-size: 80%;\n padding: 4px;\n display: inline-block;\n position: absolute;\n left: 0;\n width: 93%;\n z-index: 100;\n}\n\n.addComment textarea {\n width: 95%;\n resize: none;\n margin: 4px;\n}\n\n.mode-comment {\n background: skyblue;\n}\n\n\n.mode-comment-select {\n background: dodgerblue;\n color: white;\n}\n\n.mode-delete {\n text-decoration: line-through;\n}\n\n.mode-delete-select {\n text-decoration: line-through;\n background: red;\n}\n\n.mode-insert:before {\n content: "^";\n font-width: bold;\n color: blue;\n}\n\n.mode-insert-select:before {\n content: "^";\n background: yellow;\n}\n\n.mode-replace {\n text-decoration: overline;\n}\n\n.mode-replace-select {\n text-decoration: overline;\n background: orange;\n}\n\n.commentMenu {\n font-size: 90%;\n border: 1px solid #AAA;\n display: none;\n position:relative;\n left: 180px;\n width: 60px;\n z-index: 100;\n cursor: pointer;\n}\n\n.commentMenu ul {\n display: block;\n list-style-type: none;\n margin: 0;\n padding: 0;\n overflow: hidden;\n background-color: white;\n}\n\n.commentMenu li {\n}\n\n.commentMenu li span {\n display: inline-block;\n color: black;\n padding: 1px;\n text-decoration: none;\n}\n\n.commentMenu li span:hover {\n background: skyblue;\n color: white;\n}\n\n.hide, .approval, .mode {\n display: none;\n}\n\n.show {\n display: block;\n}\n\n.approval, .mode {\n display: block;\n font-size: 85%;\n margin: 4px;\n}\n\n.approval span:first-child:after {\n content: "?";\n display: inline-block;\n font-weight: bold;\n}\n\n')},{"../../utils":65,"prosemirror/dist/dom":1,"prosemirror/dist/model":34,"prosemirror/dist/util/event":53}],96:[function(require,module,exports){"use strict";function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}function clearRanges(){granges&&(granges.forEach(function(r){return pm.removeRange(r)}),granges=null)}function clearComments(){for(;comments.lastChild;)comments.removeChild(comments.lastChild);comments.appendChild((0,_dom.elt)("div",{"class":"comment-header"},"Comments"))}function clearPositions(){grammar.forEach(function(g){return g.clear()})}function getGrammar(f){grammar&&f(),grammar=[];var xmlhttp=new XMLHttpRequest;xmlhttp.onreadystatechange=function(){4==xmlhttp.readyState&&200==xmlhttp.status&&(JSON.parse(xmlhttp.responseText).forEach(function(g){grammar.push(new GrammarItem(g[0],g[1]))}),f())},xmlhttp.open("GET","grammar.json",!0),xmlhttp.send()}function scanGrammar(doc){function scan(node,offset){var updatePath=node.isBlock&&null!=offset;updatePath&&path.push(offset),node.isText&&grammar.forEach(function(g){for(var m=void 0;m=g.regexp.exec(node.text);)g.recordLoc(offset+m.index,offset+m.index+m[0].length,path)}),node.forEach(scan),updatePath&&path.pop()}clearComments(),clearRanges(),clearPositions();var result=[],path=[],text=doc.textContent,psv=getPassive(text);return psv&&grammar.push(psv),scan(doc),grammar.forEach(function(g){g.loc.length>0&&result.push(g)}),result.push(getStats(text)),psv&&grammar.pop(),result}function getStats(text){var stats=analyzer.stats(text),tstats={sentence:stats.sentences,word:stats.words,syllable:stats.syllables},fstat=flesch(tstats).toFixed(1),fkstat=fleschkincaid(tstats).toFixed(1),msg="There were "+stats.sentences+" sentences, "+stats.words+" words, and "+stats.syllables+" syllables. Flesch:"+fstat+", FleschKincaid:"+fkstat;return new GrammarItem("Summary Statistics",msg)}function getPassive(text){var passive=passivevoice(text);if(passive.length>0){var s="";return passive.forEach(function(loc){s+=text.substr(loc.index,loc.offset)+","}),s=s.slice(0,-1),new GrammarItem(s,"Passive voice can be hard to read. Can you make it active?")}return null}var _createClass=function(){function defineProperties(target,props){for(var i=0;ir.right-16&&e.clientYtop&&(top=bottom),r.dom.style.top=top+"px",bottom=top+r.h+1})}},{key:"highlightComment",value:function(id){var c=comments[id];if(c){this.clearHighlight(),c.dom.className+=" select",this.highlight=c;var _c$range=c.range,from=_c$range.from,to=_c$range.to;pm.removeRange(c.range),c.range=pm.markRange(from,to,{className:c.getRangeClass(!0)})}}},{key:"clearHighlight",value:function(){if(this.highlight){var c=this.highlight;if(c.dom.className="comment",c.range){var r=c.range,from=r.from,to=r.to;pm.removeRange(r),c.range=pm.markRange(from,to,{className:c.getRangeClass(!1)})}this.highlight=null}}},{key:"getSelectionTop",value:function(){var from=pm.selection.from,r=pm.coordsAtPos(from),rect=pm.content.getBoundingClientRect();return Math.round(r.top-rect.top)}}]),CommentStore}();(0,_dom.insertCSS)('\n.comments {\n display: block;\n margin: 0 auto;\n width: 100%;\n height: 400px;\n}\n\n.comments .peer .ProseMirror-menubar {\n text-align: right;\n}\n\n.comments #editor {\n float: left;\n width: 70%;\n height: 100%;\n}\n\n.comments #comments {\n border: 1px solid #AAA;\n margin-left: 1px;\n padding: 0;\n height: 100%;\n width: 300px;\n display: inline-block;\n overflow-y: auto;\n position:relative;\n }\n\n\n.comments .comment-header {\n font-weight: bold;\n font-size: 80%;\n width: 100%;\n background: skyblue;\n color: white;\n margin: 0;\n padding: 2px 2px 0px 2px;\n border-bottom: 1px solid #AAA;\n display: inline-block;\n}\n \n.comments .newcomment {\n margin-left: 10px;\n display: inline-block;\n}\n\n.comments .newcomment a {\n padding: 0 4px 0 4px;\n background: skyblue;\n color: white;\n text-decoration: none;\n}\n\n.comments .newcomment a:hover {\n padding: 0 4px 0 4px;\n background: white;\n color: skyblue;\n cursor: pointer;\n}\n\n.comments .comment {\n background: white;\n border-radius: 6px;\n border: 1px solid #AAA;\n width: 92%;\n font-size: 90%;\n padding: 4px;\n min-height: 30px;\n position: absolute; \n left: 8px;\n}\n\n.comments .comment:after {\n content: \' \';\n height: 0;\n position: absolute;\n width: 0;\n border: 8px solid transparent;\n border-right-color: skyblue;\n left: -16px;\n top: 5px;\n}\n\n.comments .comment:hover {\n background-image: url(\'icons/menu.png\');\n background-repeat: no-repeat;\n background-position: top right;\n cursor: pointer;\n}\n\n.comments .select {\n border: 1px solid skyblue;\n}\n\n.comment-button {\n margin: 4px;\n padding: 2px;\n border-radius: 4px;\n border: 1px solid #AAA;\n background: skyblue;\n color: white;\n cursor: pointer;\n}\n\n.addComment {\n background: white;\n margin: 2px;\n border-radius: 6px;\n border: 1px solid #AAA;\n visibility: visible;\n font-size: 80%;\n padding: 4px;\n display: inline-block;\n position: absolute;\n left: 0;\n width: 93%;\n z-index: 100;\n}\n\n.addComment textarea {\n width: 95%;\n resize: none;\n margin: 4px;\n}\n\n.mode-comment {\n background: skyblue;\n}\n\n\n.mode-comment-select {\n background: dodgerblue;\n color: white;\n}\n\n.mode-delete {\n text-decoration: line-through;\n}\n\n.mode-delete-select {\n text-decoration: line-through;\n background: red;\n}\n\n.mode-insert:before {\n content: "^";\n font-width: bold;\n color: blue;\n}\n\n.mode-insert-select:before {\n content: "^";\n background: yellow;\n}\n\n.mode-replace {\n text-decoration: overline;\n}\n\n.mode-replace-select {\n text-decoration: overline;\n background: orange;\n}\n\n.commentMenu {\n font-size: 90%;\n border: 1px solid #AAA;\n display: none;\n position:relative;\n left: 180px;\n width: 60px;\n z-index: 100;\n cursor: pointer;\n}\n\n.commentMenu ul {\n display: block;\n list-style-type: none;\n margin: 0;\n padding: 0;\n overflow: hidden;\n background-color: white;\n}\n\n.commentMenu li {\n}\n\n.commentMenu li span {\n display: inline-block;\n color: black;\n padding: 1px;\n text-decoration: none;\n}\n\n.commentMenu li span:hover {\n background: skyblue;\n color: white;\n}\n\n.hide, .approval, .mode {\n display: none;\n}\n\n.show {\n display: block;\n}\n\n.approval, .mode {\n display: block;\n font-size: 85%;\n margin: 4px;\n}\n\n.approval span:first-child:after {\n content: "?";\n display: inline-block;\n font-weight: bold;\n}\n\n')},{"../../utils":65,"prosemirror/dist/dom":1,"prosemirror/dist/model":34,"prosemirror/dist/util/event":53}],96:[function(require,module,exports){"use strict";function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}function clearRanges(){granges&&(granges.forEach(function(r){return pm.removeRange(r)}),granges=null)}function clearComments(){for(;comments.lastChild;)comments.removeChild(comments.lastChild);comments.appendChild((0,_dom.elt)("div",{"class":"comment-header"},"Comments"))}function clearPositions(){grammar.forEach(function(g){return g.clear()})}function getGrammar(f){grammar&&f(),grammar=[];var xmlhttp=new XMLHttpRequest;xmlhttp.onreadystatechange=function(){4==xmlhttp.readyState&&200==xmlhttp.status&&(JSON.parse(xmlhttp.responseText).forEach(function(g){grammar.push(new GrammarItem(g[0],g[1]))}),f())},xmlhttp.open("GET","grammar.json",!0),xmlhttp.send()}function scanGrammar(doc){function scan(node,offset){var updatePath=node.isBlock&&null!=offset;updatePath&&path.push(offset),node.isText&&grammar.forEach(function(g){for(var m=void 0;m=g.regexp.exec(node.text);)g.recordLoc(offset+m.index,offset+m.index+m[0].length,path)}),node.forEach(scan),updatePath&&path.pop()}clearComments(),clearRanges(),clearPositions();var result=[],path=[],text=doc.textContent,psv=getPassive(text);return psv&&grammar.push(psv),scan(doc),grammar.forEach(function(g){g.loc.length>0&&result.push(g)}),result.push(getStats(text)),psv&&grammar.pop(),result}function getStats(text){var stats=analyzer.stats(text),tstats={sentence:stats.sentences,word:stats.words,syllable:stats.syllables},fstat=flesch(tstats).toFixed(1),fkstat=fleschkincaid(tstats).toFixed(1),msg="There were "+stats.sentences+" sentences, "+stats.words+" words, and "+stats.syllables+" syllables. Flesch:"+fstat+", FleschKincaid:"+fkstat;return new GrammarItem("Summary Statistics",msg)}function getPassive(text){var passive=passivevoice(text);if(passive.length>0){var s="";return passive.forEach(function(loc){s+=text.substr(loc.index,loc.offset)+","}),s=s.slice(0,-1),new GrammarItem(s,"Passive voice can be hard to read. Can you make it active?")}return null}var _createClass=function(){function defineProperties(target,props){for(var i=0;i + +ProseMirror Grammar Examples + + + + + + + + + + + + + + +
+
+
+
Comments
+
+ + + +