UNPKG

tandem-front-end

Version:

Visual editor for web components

46 lines 1.88 kB
"use strict"; 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