tandem-front-end
Version:
Visual editor for web components
46 lines • 1.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var React = require("react");
var recompose_1 = require("recompose");
var tandem_common_1 = require("tandem-common");
var SearchResult = require("./row.pc").SearchResult;
var MAX_RESULTS = 50;
var getFilterTester = tandem_common_1.memoize(function (filter) { return new RegExp(filter.join(".*?")); });
exports.default = recompose_1.compose(recompose_1.pure, recompose_1.withState("filter", "setFilter", null), recompose_1.withHandlers({
onInputChange: function (_a) {
var setFilter = _a.setFilter;
return function (value) {
var filter = String(value || "")
.toLowerCase()
.trim()
.split(/\s+/g);
setFilter(filter);
};
}
}), function (Base) { return function (_a) {
var filter = _a.filter, onInputChange = _a.onInputChange, root = _a.root, dispatch = _a.dispatch;
var allFiles = tandem_common_1.flattenTreeNode(root.projectDirectory);
var results = filter
? allFiles
.filter(function (file) {
if (!tandem_common_1.isFile(file)) {
return false;
}
var uri = file.uri;
var lastIndex = 0;
return getFilterTester(filter).test(uri);
})
.slice(0, MAX_RESULTS)
.map(function (file) {
return (React.createElement(SearchResult, { filter: filter, cwd: root.projectDirectory.uri, file: file, key: file.id, textProps: {
children: file.uri
}, dispatch: dispatch }));
})
: [];
return (React.createElement(Base, { searchResultsProps: {
children: results
}, quickSearchInputProps: {
onChange: onInputChange
} }));
}; });
//# sourceMappingURL=quick-search-controller.js.map