tandem-front-end
Version:
Visual editor for web components
36 lines • 1.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var React = require("react");
var path = require("path");
var recompose_1 = require("recompose");
var actions_1 = require("actions");
var tandem_common_1 = require("tandem-common");
exports.default = recompose_1.compose(recompose_1.pure, recompose_1.withHandlers({
onClick: function (_a) {
var dispatch = _a.dispatch, file = _a.file;
return function () {
dispatch(actions_1.quickSearchItemClicked(file));
};
}
}), function (Base) { return function (_a) {
var filter = _a.filter, onClick = _a.onClick, file = _a.file, cwd = _a.cwd;
var basename = highlightFilterMatches(path.basename(file.uri), filter);
var directory = highlightFilterMatches(path
.dirname(file.uri)
.replace(cwd, "")
.substr(1), filter);
return (React.createElement(Base, { onClick: onClick, basenameProps: { children: basename }, directoryProps: { children: directory } }));
}; });
var MATCH_STYLE = { fontWeight: 600, color: "#5f87cd" };
var getFilterReplacer = tandem_common_1.memoize(function (filter) { return new RegExp(filter.join("|"), "g"); });
var highlightFilterMatches = function (str, filter) {
return str
.replace(getFilterReplacer(filter), function (match) {
return "%%MATCH%%" + match + "%%MATCH%%";
})
.split("%%MATCH%%")
.map(function (match) {
return getFilterReplacer(filter).test(match) ? (React.createElement("span", { style: MATCH_STYLE }, match)) : (match);
});
};
//# sourceMappingURL=search-result-controller.js.map