@@ -6924,89 +6924,129 @@ var ResultSet = function (_React$Component) {
6924
6924
return ResultSet;
6925
6925
}(_react2.default.Component);
6926
6926
6927
- function FileResult(props) {
6928
- var lines = props.lines,
6929
- file_name = props.file_name,
6930
- kind = props.kind,
6931
- count = props.count;
6932
-
6933
- var divLines = lines.map(function (l) {
6934
- var lineId = 'snippet_line_number_' + kind + '_' + count + '_' + l.line_start;
6935
- var snippetId = 'snippet_line_' + kind + '_' + count + '_' + l.line_start;
6936
-
6937
- // Squash the indent down by a factor of four.
6938
- var text = l.line;
6939
- var trimmed = text.trimLeft();
6940
- var newIndent = (text.length - trimmed.length) / 4;
6941
- var diffIndent = text.length - trimmed.length - newIndent;
6942
- trimmed = trimmed.padStart(trimmed.length + newIndent);
6943
-
6944
- var lineClick = function lineClick(e) {
6945
- var highlight = {
6946
- "line_start": l.line_start,
6947
- "line_end": l.line_start,
6948
- "column_start": 0,
6949
- "column_end": 0
6950
- };
6951
- props.app.loadSource(file_name, highlight);
6952
- e.preventDefault();
6953
- e.stopPropagation();
6954
- };
6955
- var snippetClick = function snippetClick(e) {
6956
- var highlight = {
6957
- "line_start": l.line_start,
6958
- "line_end": l.line_end,
6959
- "column_start": l.column_start,
6960
- "column_end": l.column_end
6961
- };
6962
- props.app.loadSource(file_name, highlight);
6963
- e.preventDefault();
6964
- e.stopPropagation();
6965
- };
6927
+ var FileResult = function (_React$Component2) {
6928
+ _inherits(FileResult, _React$Component2);
6966
6929
6967
- return _react2.default.createElement(
6968
- 'div',
6969
- { key: kind + '-' + count + '-' + l.line_start },
6970
- _react2.default.createElement(
6971
- 'span',
6972
- { className: 'div_span_src_number' },
6930
+ function FileResult(props) {
6931
+ _classCallCheck(this, FileResult);
6932
+
6933
+ var _this2 = _possibleConstructorReturn(this, (FileResult.__proto__ || Object.getPrototypeOf(FileResult)).call(this, props));
6934
+
6935
+ _this2.state = { peekContext: null };
6936
+ return _this2;
6937
+ }
6938
+
6939
+ _createClass(FileResult, [{
6940
+ key: 'render',
6941
+ value: function render() {
6942
+ var _this3 = this;
6943
+
6944
+ var _props2 = this.props,
6945
+ lines = _props2.lines,
6946
+ file_name = _props2.file_name,
6947
+ kind = _props2.kind,
6948
+ count = _props2.count,
6949
+ app = _props2.app;
6950
+
6951
+ var self = this;
6952
+ var divLines = lines.map(function (l) {
6953
+ var lineId = 'snippet_line_number_' + kind + '_' + count + '_' + l.line_start;
6954
+ var snippetId = 'snippet_line_' + kind + '_' + count + '_' + l.line_start;
6955
+
6956
+ // Squash the indent down by a factor of four.
6957
+ var text = l.line;
6958
+ var trimmed = text.trimLeft();
6959
+ var newIndent = (text.length - trimmed.length) / 4;
6960
+ var diffIndent = text.length - trimmed.length - newIndent;
6961
+ trimmed = trimmed.padStart(trimmed.length + newIndent);
6962
+
6963
+ var lineClick = function lineClick(e) {
6964
+ var highlight = {
6965
+ "line_start": l.line_start,
6966
+ "line_end": l.line_start,
6967
+ "column_start": 0,
6968
+ "column_end": 0
6969
+ };
6970
+ app.loadSource(file_name, highlight);
6971
+ e.preventDefault();
6972
+ e.stopPropagation();
6973
+ };
6974
+ var snippetClick = function snippetClick(e) {
6975
+ var highlight = {
6976
+ "line_start": l.line_start,
6977
+ "line_end": l.line_end,
6978
+ "column_start": l.column_start,
6979
+ "column_end": l.column_end
6980
+ };
6981
+ app.loadSource(file_name, highlight);
6982
+ e.preventDefault();
6983
+ e.stopPropagation();
6984
+ };
6985
+
6986
+ var onMouseOver = function onMouseOver(e) {
6987
+ self.setState({ peekContext: { pre: l.pre_context, post: l.post_context } });
6988
+ e.preventDefault();
6989
+ e.stopPropagation();
6990
+ };
6991
+ var onMouseOut = function onMouseOut(e) {
6992
+ self.setState({ peekContext: null });
6993
+ e.preventDefault();
6994
+ e.stopPropagation();
6995
+ };
6996
+
6997
+ var context = null;
6998
+ if (_this3.state.peekContext) {
6999
+ context = _react2.default.createElement(SearchContext, { line: l.line, preContext: _this3.state.peekContext.pre, postContext: _this3.state.peekContext.post });
7000
+ }
7001
+
7002
+ return _react2.default.createElement(
7003
+ 'div',
7004
+ { key: kind + '-' + count + '-' + l.line_start },
7005
+ _react2.default.createElement(
7006
+ 'span',
7007
+ { className: 'div_span_src_number' },
7008
+ _react2.default.createElement(
7009
+ 'div',
7010
+ { className: 'span_src_number', id: lineId, onClick: lineClick },
7011
+ l.line_start
7012
+ )
7013
+ ),
7014
+ _react2.default.createElement(
7015
+ 'span',
7016
+ { className: 'div_span_src' },
7017
+ _react2.default.createElement('div', { className: 'span_src', id: snippetId, onClick: snippetClick, onMouseOver: onMouseOver, onMouseOut: onMouseOut, dangerouslySetInnerHTML: { __html: trimmed }, 'data-adjust': diffIndent })
7018
+ ),
7019
+ context,
7020
+ _react2.default.createElement('br', null)
7021
+ );
7022
+ });
7023
+ var onClick = function onClick(e) {
7024
+ props.app.loadSource(file_name);
7025
+ e.preventDefault();
7026
+ e.stopPropagation();
7027
+ };
7028
+ return _react2.default.createElement(
7029
+ 'div',
7030
+ null,
6973
7031
_react2.default.createElement(
6974
7032
'div',
6975
- { className: 'span_src_number', id: lineId, onClick: lineClick },
6976
- l.line_start
7033
+ { className: 'div_search_file_link', onClick: onClick },
7034
+ file_name
7035
+ ),
7036
+ _react2.default.createElement(
7037
+ 'div',
7038
+ { className: 'div_all_span_src' },
7039
+ divLines
6977
7040
)
6978
- ),
6979
- _react2.default.createElement(
6980
- 'span',
6981
- { className: 'div_span_src' },
6982
- _react2.default.createElement('div', { className: 'span_src', id: snippetId, onClick: snippetClick, dangerouslySetInnerHTML: { __html: trimmed }, 'data-adjust': diffIndent })
6983
- ),
6984
- _react2.default.createElement('br', null)
6985
- );
6986
- });
6987
- var onClick = function onClick(e) {
6988
- props.app.loadSource(file_name);
6989
- e.preventDefault();
6990
- e.stopPropagation();
6991
- };
6992
- return _react2.default.createElement(
6993
- 'div',
6994
- null,
6995
- _react2.default.createElement(
6996
- 'div',
6997
- { className: 'div_search_file_link', onClick: onClick },
6998
- file_name
6999
- ),
7000
- _react2.default.createElement(
7001
- 'div',
7002
- { className: 'div_all_span_src' },
7003
- divLines
7004
- )
7005
- );
7006
- }
7041
+ );
7042
+ }
7043
+ }]);
7007
7044
7008
- var StructuredResultSet = function (_React$Component2) {
7009
- _inherits(StructuredResultSet, _React$Component2);
7045
+ return FileResult;
7046
+ }(_react2.default.Component);
7047
+
7048
+ var StructuredResultSet = function (_React$Component3) {
7049
+ _inherits(StructuredResultSet, _React$Component3);
7010
7050
7011
7051
function StructuredResultSet() {
7012
7052
_classCallCheck(this, StructuredResultSet);
@@ -7109,6 +7149,11 @@ function highlight_needle(results, tag) {
7109
7149
});
7110
7150
}
7111
7151
7152
+ function SearchContext(props) {
7153
+ var text = props.preContext + '\n<span class="search_context_highlight">' + props.line + '</span>\n' + props.postContext;
7154
+ return _react2.default.createElement('div', { className: 'div_search_context_box', dangerouslySetInnerHTML: { __html: text } });
7155
+ }
7156
+
7112
7157
/***/ }),
7113
7158
/* 148 */
7114
7159
/***/ (function(module, exports, __webpack_require__) {
0 commit comments