tandem-front-end
Version:
Visual editor for web components
43 lines • 1.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var React = require("react");
var recompose_1 = require("recompose");
var ComponentOption = require("./cell.pc").ComponentOption;
var paperclip_1 = require("paperclip");
var actions_1 = require("../../actions");
exports.default = recompose_1.compose(recompose_1.pure, recompose_1.withState("filter", "setFilter", []), recompose_1.withHandlers({
onFilterChange: function (_a) {
var setFilter = _a.setFilter;
return function (value) {
setFilter((value || "").split(" "));
};
},
onClickComponent: function (_a) {
var dispatch = _a.dispatch;
return function (component) {
dispatch(actions_1.componentPickerItemClick(component));
};
}
}), function (Base) { return function (_a) {
var onFilterChange = _a.onFilterChange, onClickComponent = _a.onClickComponent, filter = _a.filter, root = _a.root, dispatch = _a.dispatch;
var componentNodes = paperclip_1.getAllPCComponents(root.graph);
// TODO - filter private
var options = componentNodes
.filter(function (component) {
var label = (component.label || "").toLowerCase();
for (var _i = 0, filter_1 = filter; _i < filter_1.length; _i++) {
var part = filter_1[_i];
if (label.indexOf(part) === -1) {
return false;
}
}
return true;
})
.map(function (component) {
return (React.createElement(ComponentOption, { key: component.id, component: component, onClick: function () { return onClickComponent(component); }, centerProps: { children: component.label } }));
});
return (React.createElement(Base, { filterInputProps: {
onChange: onFilterChange
}, optionsProps: { children: options } }));
}; });
//# sourceMappingURL=picker-controller.js.map