UNPKG

tandem-front-end

Version:

Visual editor for web components

36 lines 1.62 kB
"use strict"; 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