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 += ''; + } + + 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+=""}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": [