diff --git a/dist/diff2html-ui.js b/dist/diff2html-ui.js
index c111a95..7557388 100644
--- a/dist/diff2html-ui.js
+++ b/dist/diff2html-ui.js
@@ -10,10 +10,12 @@
*
*/
-/*global $, hljs*/
+/*global $, hljs, Diff2Html*/
(function() {
+ var highlightJS = require('./highlight.js-internals.js').HighlightJS;
+
var diffJson = null;
var defaultTarget = "body";
var currentSelectionColumnId = -1;
@@ -71,15 +73,50 @@
var $target = that._getTarget(targetId);
- var languages = that._getLanguages($target);
+ // collect all the diff files and execute the highlight on their lines
+ var $files = $target.find(".d2h-file-wrapper");
+ $files.map(function(_i, file) {
+ var oldLinesState;
+ var newLinesState;
+ var $file = $(file);
+ var language = $file.data("lang");
- // pass the languages to the highlightjs plugin
- hljs.configure({languages: languages});
+ // collect all the code lines and execute the highlight on them
+ var $codeLines = $file.find(".d2h-code-line-ctn");
+ $codeLines.map(function(_j, line) {
+ var $line = $(line);
+ var text = line.textContent;
+ var lineParent = line.parentNode;
- // collect all the code lines and execute the highlight on them
- var $codeLines = $target.find(".d2h-code-line-ctn");
- $codeLines.map(function(i, line) {
- hljs.highlightBlock(line);
+ var lineState;
+ if (lineParent.className.indexOf("d2h-del") !== -1) {
+ lineState = oldLinesState;
+ } else {
+ lineState = newLinesState;
+ }
+
+ var result = hljs.getLanguage(language) ? hljs.highlight(language, text, true, lineState) : hljs.highlightAuto(text);
+
+ if (lineParent.className.indexOf("d2h-del") !== -1) {
+ oldLinesState = result.top;
+ } else if (lineParent.className.indexOf("d2h-ins") !== -1) {
+ newLinesState = result.top;
+ } else {
+ oldLinesState = result.top;
+ newLinesState = result.top;
+ }
+
+ var originalStream = highlightJS.nodeStream(line);
+ if (originalStream.length) {
+ var resultNode = document.createElementNS('http://www.w3.org/1999/xhtml', 'div');
+ resultNode.innerHTML = result.value;
+ result.value = highlightJS.mergeStreams(originalStream, highlightJS.nodeStream(resultNode), text);
+ }
+
+ $line.addClass("hljs");
+ $line.addClass(result.language);
+ $line.html(result.value);
+ });
});
};
@@ -99,24 +136,6 @@
return $target;
};
- Diff2HtmlUI.prototype._getLanguages = function($target) {
- var allFileLanguages = [];
-
- if (diffJson) {
- // collect all the file extensions in the json
- allFileLanguages = diffJson.map(function(line) {
- return line.language;
- });
- } else {
- $target.find(".d2h-file-wrapper").map(function(i, file) {
- allFileLanguages.push($(file).data("lang"));
- });
- }
-
- // return only distinct languages
- return this._distinct(allFileLanguages);
- };
-
Diff2HtmlUI.prototype._getHashTag = function() {
var docUrl = document.URL;
var hashTagIndex = docUrl.indexOf('#');
@@ -191,4 +210,145 @@
})();
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{"./highlight.js-internals.js":2}],2:[function(require,module,exports){
+/*
+ *
+ * highlight.js
+ * Author: isagalaev
+ *
+ */
+
+(function() {
+
+ function HighlightJS() {
+ }
+
+ /*
+ * Copied from Highlight.js Private API
+ * Will be removed when this part of the API is exposed
+ */
+
+ /* Utility functions */
+
+ function escape(value) {
+ return value.replace(/&/gm, '&').replace(//gm, '>');
+ }
+
+ function tag(node) {
+ return node.nodeName.toLowerCase();
+ }
+
+ /* Stream merging */
+
+ HighlightJS.prototype.nodeStream = function(node) {
+ var result = [];
+ (function _nodeStream(node, offset) {
+ for (var child = node.firstChild; child; child = child.nextSibling) {
+ if (child.nodeType == 3)
+ offset += child.nodeValue.length;
+ else if (child.nodeType == 1) {
+ result.push({
+ event: 'start',
+ offset: offset,
+ node: child
+ });
+ offset = _nodeStream(child, offset);
+ // Prevent void elements from having an end tag that would actually
+ // double them in the output. There are more void elements in HTML
+ // but we list only those realistically expected in code display.
+ if (!tag(child).match(/br|hr|img|input/)) {
+ result.push({
+ event: 'stop',
+ offset: offset,
+ node: child
+ });
+ }
+ }
+ }
+ return offset;
+ })(node, 0);
+ return result;
+ };
+
+ HighlightJS.prototype.mergeStreams = function(original, highlighted, value) {
+ var processed = 0;
+ var result = '';
+ var nodeStack = [];
+
+ function selectStream() {
+ if (!original.length || !highlighted.length) {
+ return original.length ? original : highlighted;
+ }
+ if (original[0].offset != highlighted[0].offset) {
+ return (original[0].offset < highlighted[0].offset) ? original : highlighted;
+ }
+
+ /*
+ To avoid starting the stream just before it should stop the order is
+ ensured that original always starts first and closes last:
+ if (event1 == 'start' && event2 == 'start')
+ return original;
+ if (event1 == 'start' && event2 == 'stop')
+ return highlighted;
+ if (event1 == 'stop' && event2 == 'start')
+ return original;
+ if (event1 == 'stop' && event2 == 'stop')
+ return highlighted;
+ ... which is collapsed to:
+ */
+ return highlighted[0].event == 'start' ? original : highlighted;
+ }
+
+ function open(node) {
+ function attrStr(a) {
+ return ' ' + a.nodeName + '="' + escape(a.value) + '"';
+ }
+
+ result += '<' + tag(node) + Array.prototype.map.call(node.attributes, attrStr).join('') + '>';
+ }
+
+ function close(node) {
+ result += '' + tag(node) + '>';
+ }
+
+ function render(event) {
+ (event.event == 'start' ? open : close)(event.node);
+ }
+
+ while (original.length || highlighted.length) {
+ var stream = selectStream();
+ result += escape(value.substr(processed, stream[0].offset - processed));
+ processed = stream[0].offset;
+ if (stream == original) {
+
+ /*
+ On any opening or closing tag of the original markup we first close
+ the entire highlighted node stack, then render the original tag along
+ with all the following original tags at the same offset and then
+ reopen all the tags on the highlighted stack.
+ */
+ nodeStack.reverse().forEach(close);
+ do {
+ render(stream.splice(0, 1)[0]);
+ stream = selectStream();
+ } while (stream == original && stream.length && stream[0].offset == processed);
+ nodeStack.reverse().forEach(open);
+ } else {
+ if (stream[0].event == 'start') {
+ nodeStack.push(stream[0].node);
+ } else {
+ nodeStack.pop();
+ }
+ render(stream.splice(0, 1)[0]);
+ }
+ }
+ return result + escape(value.substr(processed));
+ };
+
+ /* **** Highlight.js Private API **** */
+
+ module.exports.HighlightJS = new HighlightJS();
+
+})();
+
},{}]},{},[1]);
diff --git a/dist/diff2html-ui.min.js b/dist/diff2html-ui.min.js
index 8362987..6a39ce7 100644
--- a/dist/diff2html-ui.min.js
+++ b/dist/diff2html-ui.min.js
@@ -1 +1 @@
-!function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o/gm,">")}function tag(node){return node.nodeName.toLowerCase()}HighlightJS.prototype.nodeStream=function(node){var result=[];return function _nodeStream(node,offset){for(var child=node.firstChild;child;child=child.nextSibling)3==child.nodeType?offset+=child.nodeValue.length:1==child.nodeType&&(result.push({event:"start",offset:offset,node:child}),offset=_nodeStream(child,offset),tag(child).match(/br|hr|img|input/)||result.push({event:"stop",offset:offset,node:child}));return offset}(node,0),result},HighlightJS.prototype.mergeStreams=function(original,highlighted,value){function selectStream(){return original.length&&highlighted.length?original[0].offset!=highlighted[0].offset?original[0].offset"}function close(node){result+=""+tag(node)+">"}function render(event){("start"==event.event?open:close)(event.node)}for(var processed=0,result="",nodeStack=[];original.length||highlighted.length;){var stream=selectStream();if(result+=escape(value.substr(processed,stream[0].offset-processed)),processed=stream[0].offset,stream==original){nodeStack.reverse().forEach(close);do render(stream.splice(0,1)[0]),stream=selectStream();while(stream==original&&stream.length&&stream[0].offset==processed);nodeStack.reverse().forEach(open)}else"start"==stream[0].event?nodeStack.push(stream[0].node):nodeStack.pop(),render(stream.splice(0,1)[0])}return result+escape(value.substr(processed))},module.exports.HighlightJS=new HighlightJS}()},{}]},{},[1]);
\ No newline at end of file
diff --git a/dist/diff2html.css b/dist/diff2html.css
index 60f8397..2adf760 100644
--- a/dist/diff2html.css
+++ b/dist/diff2html.css
@@ -6,193 +6,193 @@
*/
.d2h-wrapper {
- text-align: left;
+ text-align: left;
}
.d2h-file-header {
- padding: 5px 10px;
- border-bottom: 1px solid #d8d8d8;
- background-color: #f7f7f7;
- font: 13px Helvetica, arial, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";
+ padding: 5px 10px;
+ border-bottom: 1px solid #d8d8d8;
+ background-color: #f7f7f7;
}
.d2h-file-stats {
- display: inline;
- font-size: 12px;
- text-align: center;
+ display: inline;
+ text-align: center;
}
.d2h-lines-added {
- text-align: right;
+ text-align: right;
}
.d2h-lines-added > * {
- background-color: #ceffce;
- border: 1px solid #b4e2b4;
- color: #399839;
- border-radius: 5px 0 0 5px;
- padding: 2px;
+ background-color: #ceffce;
+ border: 1px solid #b4e2b4;
+ color: #399839;
+ border-radius: 5px 0 0 5px;
+ padding: 2px;
}
.d2h-lines-deleted {
- text-align: left;
+ text-align: left;
}
.d2h-lines-deleted > * {
- background-color: #f7c8c8;
- border: 1px solid #e9aeae;
- color: #c33;
- border-radius: 0 5px 5px 0;
- padding: 2px;
+ background-color: #f7c8c8;
+ border: 1px solid #e9aeae;
+ color: #c33;
+ border-radius: 0 5px 5px 0;
+ padding: 2px;
}
.d2h-file-name-wrapper {
- display: inline-flex;
- width: 90%;
+ display: inline-flex;
+ width: 90%;
+ font-family: "Source Sans Pro", "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 15px;
}
.d2h-file-name {
- line-height: 33px;
- white-space: nowrap;
- text-overflow: ellipsis;
- overflow: hidden;
+ line-height: 33px;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
}
.d2h-file-wrapper {
- border: 1px solid #ddd;
- border-radius: 3px;
- margin-bottom: 1em;
+ border: 1px solid #ddd;
+ border-radius: 3px;
+ margin-bottom: 1em;
}
.d2h-diff-table {
- border-collapse: collapse;
- font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
- font-size: 12px;
- width: 100%;
+ width: 100%;
+ border-collapse: collapse;
+ font-family: "Menlo", "Consolas", monospace;
+ font-size: 13px;
}
.d2h-diff-tbody > tr > td > div {
- height: 16px;
- line-height: 16px;
+ height: 16px;
+ line-height: 16px;
}
.d2h-files-diff {
- width: 100%;
+ width: 100%;
}
.d2h-file-diff {
- overflow-x: scroll;
- overflow-y: hidden;
+ overflow-x: scroll;
+ overflow-y: hidden;
}
.d2h-file-side-diff {
- display: inline-block;
- overflow-x: scroll;
- overflow-y: hidden;
- width: 50%;
- margin-right: -4px;
+ display: inline-block;
+ overflow-x: scroll;
+ overflow-y: hidden;
+ width: 50%;
+ margin-right: -4px;
}
.d2h-code-line {
- display: block;
- white-space: nowrap;
- padding: 0 10px;
- margin-left: 80px;
+ display: block;
+ white-space: nowrap;
+ padding: 0 10px;
+ margin-left: 80px;
}
.d2h-code-side-line {
- display: block;
- white-space: pre;
- padding: 0 10px;
- height: 18px;
- line-height: 18px;
- margin-left: 50px;
- /* Override HighlightJS */
- color: inherit;
- overflow-x: inherit;
- background: none;
- /* ******************** */
+ display: block;
+ white-space: pre;
+ padding: 0 10px;
+ height: 18px;
+ line-height: 18px;
+ margin-left: 50px;
+ /* Override HighlightJS */
+ color: inherit;
+ overflow-x: inherit;
+ background: none;
+ /* ******************** */
}
.d2h-code-line del,
.d2h-code-side-line del {
- display: inline-block;
- margin-top: -1px;
- text-decoration: none;
- background-color: #ffb6ba;
- border-radius: 0.2em;
+ display: inline-block;
+ margin-top: -1px;
+ text-decoration: none;
+ background-color: #ffb6ba;
+ border-radius: 0.2em;
}
.d2h-code-line ins,
.d2h-code-side-line ins {
- display: inline-block;
- margin-top: -1px;
- text-decoration: none;
- background-color: #97f295;
- border-radius: 0.2em;
+ display: inline-block;
+ margin-top: -1px;
+ text-decoration: none;
+ background-color: #97f295;
+ border-radius: 0.2em;
}
.d2h-code-line-prefix {
- float: left;
- background: none;
- padding: 0;
+ float: left;
+ background: none;
+ padding: 0;
}
.d2h-code-line-ctn {
- background: none;
- padding: 0;
+ background: none;
+ padding: 0;
}
.line-num1 {
- box-sizing: border-box;
- float: left;
- width: 40px;
- overflow: hidden;
- text-overflow: ellipsis;
- padding-left: 3px;
+ box-sizing: border-box;
+ float: left;
+ width: 40px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ padding-left: 3px;
}
.line-num2 {
- box-sizing: border-box;
- float: right;
- width: 40px;
- overflow: hidden;
- text-overflow: ellipsis;
- padding-left: 3px;
+ box-sizing: border-box;
+ float: right;
+ width: 40px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ padding-left: 3px;
}
.d2h-code-linenumber {
- box-sizing: border-box;
- position: absolute;
- width: 86px;
- height: 18px;
- padding-left: 2px;
- padding-right: 2px;
- line-height: 18px;
- background-color: #fff;
- color: rgba(0, 0, 0, 0.3);
- text-align: right;
- border: solid #eeeeee;
- border-width: 0 1px 0 1px;
- cursor: pointer;
+ box-sizing: border-box;
+ position: absolute;
+ width: 86px;
+ height: 18px;
+ padding-left: 2px;
+ padding-right: 2px;
+ line-height: 18px;
+ background-color: #fff;
+ color: rgba(0, 0, 0, 0.3);
+ text-align: right;
+ border: solid #eeeeee;
+ border-width: 0 1px 0 1px;
+ cursor: pointer;
}
.d2h-code-side-linenumber {
- box-sizing: border-box;
- position: absolute;
- width: 56px;
- padding-left: 5px;
- padding-right: 5px;
- height: 18px;
- line-height: 18px;
- background-color: #fff;
- color: rgba(0, 0, 0, 0.3);
- text-align: right;
- border: solid #eeeeee;
- border-width: 0 1px 0 1px;
- cursor: pointer;
- overflow: hidden;
- text-overflow: ellipsis;
+ box-sizing: border-box;
+ position: absolute;
+ width: 56px;
+ padding-left: 5px;
+ padding-right: 5px;
+ height: 18px;
+ line-height: 18px;
+ background-color: #fff;
+ color: rgba(0, 0, 0, 0.3);
+ text-align: right;
+ border: solid #eeeeee;
+ border-width: 0 1px 0 1px;
+ cursor: pointer;
+ overflow: hidden;
+ text-overflow: ellipsis;
}
/*
@@ -200,35 +200,35 @@
*/
.d2h-del {
- background-color: #fee8e9;
- border-color: #e9aeae;
+ background-color: #fee8e9;
+ border-color: #e9aeae;
}
.d2h-ins {
- background-color: #dfd;
- border-color: #b4e2b4;
+ background-color: #dfd;
+ border-color: #b4e2b4;
}
.d2h-info {
- background-color: #f8fafd;
- color: rgba(0, 0, 0, 0.3);
- border-color: #d5e4f2;
+ background-color: #f8fafd;
+ color: rgba(0, 0, 0, 0.3);
+ border-color: #d5e4f2;
}
.d2h-del.d2h-change, .d2h-ins.d2h-change {
- background-color: #ffc;
+ background-color: #ffc;
}
ins.d2h-change, del.d2h-change {
- background-color: #fad771;
+ background-color: #fad771;
}
.d2h-file-diff .d2h-del.d2h-change {
- background-color: #fae1af;
+ background-color: #fae1af;
}
.d2h-file-diff .d2h-ins.d2h-change {
- background-color: #ded;
+ background-color: #ded;
}
/*
@@ -236,43 +236,42 @@ ins.d2h-change, del.d2h-change {
*/
.d2h-file-list-wrapper {
- margin-bottom: 10px;
+ margin-bottom: 10px;
}
.d2h-file-list-wrapper a {
- text-decoration: none;
- color: #3572b0;
+ text-decoration: none;
+ color: #3572b0;
}
.d2h-file-list-wrapper a:visited {
- color: #3572b0;
+ color: #3572b0;
}
.d2h-file-list-header {
- text-align: left;
+ text-align: left;
}
.d2h-file-list-title {
- font-weight: bold;
+ font-weight: bold;
}
.d2h-file-list-line {
- text-align: left;
- font: 13px Helvetica, arial, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";
+ text-align: left;
}
.d2h-file-list-line .d2h-file-name {
- line-height: 21px;
+ line-height: 21px;
}
.d2h-file-list {
- display: block;
+ display: block;
}
.d2h-file-switch {
- display: none;
- font-size: 10px;
- cursor: pointer;
+ display: none;
+ font-size: 10px;
+ cursor: pointer;
}
/*
@@ -286,7 +285,7 @@ ins.d2h-change, del.d2h-change {
.selecting-left .d2h-code-side-line,
.selecting-left .d2h-code-side-line *,
.selecting-right td.d2h-code-side-linenumber,
-.selecting-right td.d2h-code-side-linenumber *{
+.selecting-right td.d2h-code-side-linenumber * {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
diff --git a/dist/diff2html.min.css b/dist/diff2html.min.css
index 384fae7..50ec675 100644
--- a/dist/diff2html.min.css
+++ b/dist/diff2html.min.css
@@ -1 +1 @@
-.d2h-code-line-prefix,.line-num1{float:left}.d2h-wrapper{text-align:left}.d2h-file-header{padding:5px 10px;border-bottom:1px solid #d8d8d8;background-color:#f7f7f7;font:13px Helvetica,arial,freesans,clean,sans-serif,"Segoe UI Emoji","Segoe UI Symbol"}.d2h-file-stats{display:inline;font-size:12px;text-align:center}.d2h-lines-added{text-align:right}.d2h-lines-added>*{background-color:#ceffce;border:1px solid #b4e2b4;color:#399839;border-radius:5px 0 0 5px;padding:2px}.d2h-lines-deleted{text-align:left}.d2h-lines-deleted>*{background-color:#f7c8c8;border:1px solid #e9aeae;color:#c33;border-radius:0 5px 5px 0;padding:2px}.d2h-file-name-wrapper{display:inline-flex;width:90%}.d2h-file-name{line-height:33px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.d2h-file-diff,.d2h-file-side-diff{overflow-x:scroll;overflow-y:hidden}.d2h-file-wrapper{border:1px solid #ddd;border-radius:3px;margin-bottom:1em}.d2h-diff-table{border-collapse:collapse;font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:12px;width:100%}.d2h-diff-tbody>tr>td>div{height:16px;line-height:16px}.d2h-files-diff{width:100%}.d2h-file-side-diff{display:inline-block;width:50%;margin-right:-4px}.d2h-code-line{display:block;white-space:nowrap;padding:0 10px;margin-left:80px}.d2h-code-side-line{display:block;white-space:pre;padding:0 10px;height:18px;line-height:18px;margin-left:50px;color:inherit;overflow-x:inherit;background:0 0}.d2h-code-line del,.d2h-code-side-line del{display:inline-block;margin-top:-1px;text-decoration:none;background-color:#ffb6ba;border-radius:.2em}.d2h-code-line ins,.d2h-code-side-line ins{display:inline-block;margin-top:-1px;text-decoration:none;background-color:#97f295;border-radius:.2em}.d2h-code-line-ctn,.d2h-code-line-prefix{background:0 0;padding:0}.d2h-code-linenumber,.d2h-code-side-linenumber{position:absolute;height:18px;line-height:18px;background-color:#fff;text-align:right;color:rgba(0,0,0,.3);cursor:pointer}.line-num1,.line-num2{width:40px;padding-left:3px;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis}.line-num2{float:right}.d2h-code-linenumber{box-sizing:border-box;width:86px;padding-left:2px;padding-right:2px;border:solid #eee;border-width:0 1px}.d2h-code-side-linenumber{box-sizing:border-box;width:56px;padding-left:5px;padding-right:5px;border:solid #eee;border-width:0 1px;overflow:hidden;text-overflow:ellipsis}.d2h-del{background-color:#fee8e9;border-color:#e9aeae}.d2h-ins{background-color:#dfd;border-color:#b4e2b4}.d2h-info{background-color:#f8fafd;color:rgba(0,0,0,.3);border-color:#d5e4f2}.d2h-del.d2h-change,.d2h-ins.d2h-change{background-color:#ffc}del.d2h-change,ins.d2h-change{background-color:#fad771}.d2h-file-diff .d2h-del.d2h-change{background-color:#fae1af}.d2h-file-diff .d2h-ins.d2h-change{background-color:#ded}.d2h-file-list-wrapper{margin-bottom:10px}.d2h-file-list-wrapper a{text-decoration:none;color:#3572b0}.d2h-file-list-wrapper a:visited{color:#3572b0}.d2h-file-list-header{text-align:left}.d2h-file-list-title{font-weight:700}.d2h-file-list-line{text-align:left;font:13px Helvetica,arial,freesans,clean,sans-serif,"Segoe UI Emoji","Segoe UI Symbol"}.d2h-file-list-line .d2h-file-name{line-height:21px}.d2h-file-list{display:block}.d2h-file-switch{display:none;font-size:10px;cursor:pointer}.selecting-left .d2h-code-line,.selecting-left .d2h-code-line *,.selecting-left .d2h-code-side-line,.selecting-left .d2h-code-side-line *,.selecting-right td.d2h-code-linenumber,.selecting-right td.d2h-code-linenumber *,.selecting-right td.d2h-code-side-linenumber,.selecting-right td.d2h-code-side-linenumber *{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.selecting-left .d2h-code-line ::selection .selecting-right td.d2h-code-linenumber::selection,.selecting-left .d2h-code-line::selection,.selecting-left .d2h-code-side-line ::selection,.selecting-left .d2h-code-side-line::selection,.selecting-right td.d2h-code-side-linenumber ::selection,.selecting-right td.d2h-code-side-linenumber::selection{background:0 0}
\ No newline at end of file
+.d2h-code-line-prefix,.line-num1{float:left}.d2h-wrapper{text-align:left}.d2h-file-header{padding:5px 10px;border-bottom:1px solid #d8d8d8;background-color:#f7f7f7}.d2h-file-stats{display:inline;text-align:center}.d2h-lines-added{text-align:right}.d2h-lines-added>*{background-color:#ceffce;border:1px solid #b4e2b4;color:#399839;border-radius:5px 0 0 5px;padding:2px}.d2h-lines-deleted{text-align:left}.d2h-lines-deleted>*{background-color:#f7c8c8;border:1px solid #e9aeae;color:#c33;border-radius:0 5px 5px 0;padding:2px}.d2h-file-name-wrapper{display:inline-flex;width:90%;font-family:"Source Sans Pro","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px}.d2h-file-name{line-height:33px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.d2h-file-diff,.d2h-file-side-diff{overflow-x:scroll;overflow-y:hidden}.d2h-file-wrapper{border:1px solid #ddd;border-radius:3px;margin-bottom:1em}.d2h-diff-table{width:100%;border-collapse:collapse;font-family:Menlo,Consolas,monospace;font-size:13px}.d2h-diff-tbody>tr>td>div{height:16px;line-height:16px}.d2h-files-diff{width:100%}.d2h-file-side-diff{display:inline-block;width:50%;margin-right:-4px}.d2h-code-line{display:block;white-space:nowrap;padding:0 10px;margin-left:80px}.d2h-code-side-line{display:block;white-space:pre;padding:0 10px;height:18px;line-height:18px;margin-left:50px;color:inherit;overflow-x:inherit;background:0 0}.d2h-code-line del,.d2h-code-side-line del{display:inline-block;margin-top:-1px;text-decoration:none;background-color:#ffb6ba;border-radius:.2em}.d2h-code-line ins,.d2h-code-side-line ins{display:inline-block;margin-top:-1px;text-decoration:none;background-color:#97f295;border-radius:.2em}.d2h-code-line-ctn,.d2h-code-line-prefix{background:0 0;padding:0}.d2h-code-linenumber,.d2h-code-side-linenumber{position:absolute;height:18px;line-height:18px;background-color:#fff;text-align:right;color:rgba(0,0,0,.3);cursor:pointer}.line-num1,.line-num2{width:40px;padding-left:3px;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis}.line-num2{float:right}.d2h-code-linenumber{box-sizing:border-box;width:86px;padding-left:2px;padding-right:2px;border:solid #eee;border-width:0 1px}.d2h-code-side-linenumber{box-sizing:border-box;width:56px;padding-left:5px;padding-right:5px;border:solid #eee;border-width:0 1px;overflow:hidden;text-overflow:ellipsis}.d2h-file-list-header,.d2h-file-list-line{text-align:left}.d2h-del{background-color:#fee8e9;border-color:#e9aeae}.d2h-ins{background-color:#dfd;border-color:#b4e2b4}.d2h-info{background-color:#f8fafd;color:rgba(0,0,0,.3);border-color:#d5e4f2}.d2h-del.d2h-change,.d2h-ins.d2h-change{background-color:#ffc}del.d2h-change,ins.d2h-change{background-color:#fad771}.d2h-file-diff .d2h-del.d2h-change{background-color:#fae1af}.d2h-file-diff .d2h-ins.d2h-change{background-color:#ded}.d2h-file-list-wrapper{margin-bottom:10px}.d2h-file-list-wrapper a{text-decoration:none;color:#3572b0}.d2h-file-list-wrapper a:visited{color:#3572b0}.d2h-file-list-title{font-weight:700}.d2h-file-list-line .d2h-file-name{line-height:21px}.d2h-file-list{display:block}.d2h-file-switch{display:none;font-size:10px;cursor:pointer}.selecting-left .d2h-code-line,.selecting-left .d2h-code-line *,.selecting-left .d2h-code-side-line,.selecting-left .d2h-code-side-line *,.selecting-right td.d2h-code-linenumber,.selecting-right td.d2h-code-linenumber *,.selecting-right td.d2h-code-side-linenumber,.selecting-right td.d2h-code-side-linenumber *{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.selecting-left .d2h-code-line ::selection .selecting-right td.d2h-code-linenumber::selection,.selecting-left .d2h-code-line::selection,.selecting-left .d2h-code-side-line ::selection,.selecting-left .d2h-code-side-line::selection,.selecting-right td.d2h-code-side-linenumber ::selection,.selecting-right td.d2h-code-side-linenumber::selection{background:0 0}
\ No newline at end of file
diff --git a/package.json b/package.json
index 3828595..d3ddd38 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "diff2html",
- "version": "2.0.0-rc.1",
+ "version": "2.0.0-rc.2",
"homepage": "http://rtfpessoa.github.io/diff2html/",
"description": "Fast Diff to colorized HTML",
"keywords": [