UNPKG

@blueprintjs/core

Version:
78 lines (76 loc) 12.7 kB
/* * Copyright 2015 Palantir Technologies, Inc. All rights reserved. * Licensed under the BSD-3 License as modified (the “License”); you may obtain a copy * of the license at https://github.com/palantir/blueprint/blob/master/LICENSE * and https://github.com/palantir/blueprint/blob/master/PATENTS */ "use strict"; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; var __assign = (this && this.__assign) || Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; var classNames = require("classnames"); var React = require("react"); var Classes = require("../../common/classes"); var utils_1 = require("../../common/utils"); var treeNode_1 = require("./treeNode"); var Tree = (function (_super) { __extends(Tree, _super); function Tree() { var _this = this; _super.apply(this, arguments); this.handleNodeCollapse = function (node, e) { _this.handlerHelper(_this.props.onNodeCollapse, node, e); }; this.handleNodeClick = function (node, e) { _this.handlerHelper(_this.props.onNodeClick, node, e); }; this.handleNodeDoubleClick = function (node, e) { _this.handlerHelper(_this.props.onNodeDoubleClick, node, e); }; this.handleNodeExpand = function (node, e) { _this.handlerHelper(_this.props.onNodeExpand, node, e); }; } Tree.nodeFromPath = function (path, treeNodes) { if (path.length === 1) { return treeNodes[path[0]]; } else { return Tree.nodeFromPath(path.slice(1), treeNodes[path[0]].childNodes); } }; Tree.prototype.render = function () { return (React.createElement("div", {className: classNames(Classes.TREE, this.props.className)}, this.renderNodes(this.props.contents, [], Classes.TREE_ROOT))); }; Tree.prototype.renderNodes = function (treeNodes, currentPath, className) { var _this = this; if (treeNodes == null) { return null; } var nodeItems = treeNodes.map(function (node, i) { var elementPath = currentPath.concat(i); return (React.createElement(treeNode_1.TreeNode, __assign({}, node, {key: node.id, depth: elementPath.length - 1, onClick: _this.handleNodeClick, onCollapse: _this.handleNodeCollapse, onDoubleClick: _this.handleNodeDoubleClick, onExpand: _this.handleNodeExpand, path: elementPath}), _this.renderNodes(node.childNodes, elementPath))); }); return (React.createElement("ul", {className: classNames(Classes.TREE_NODE_LIST, className)}, nodeItems)); }; Tree.prototype.handlerHelper = function (handlerFromProps, node, e) { if (utils_1.isFunction(handlerFromProps)) { var nodeData = Tree.nodeFromPath(node.props.path, this.props.contents); handlerFromProps(nodeData, node.props.path, e); } }; return Tree; }(React.Component)); exports.Tree = Tree; exports.TreeFactory = React.createFactory(Tree); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb25lbnRzL3RyZWUvdHJlZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7Ozs7Ozs7Ozs7Ozs7OztBQUVILElBQVksVUFBVSxXQUFNLFlBQVksQ0FBQyxDQUFBO0FBQ3pDLElBQVksS0FBSyxXQUFNLE9BQU8sQ0FBQyxDQUFBO0FBRS9CLElBQVksT0FBTyxXQUFNLHNCQUFzQixDQUFDLENBQUE7QUFFaEQsc0JBQTJCLG9CQUFvQixDQUFDLENBQUE7QUFDaEQseUJBQW9DLFlBQVksQ0FBQyxDQUFBO0FBaUNqRDtJQUEwQix3QkFBK0I7SUFBekQ7UUFBQSxpQkFxRUM7UUFyRXlCLDhCQUErQjtRQStDN0MsdUJBQWtCLEdBQUcsVUFBQyxJQUFjLEVBQUUsQ0FBZ0M7WUFDMUUsS0FBSSxDQUFDLGFBQWEsQ0FBQyxLQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUFBO1FBRU8sb0JBQWUsR0FBRyxVQUFDLElBQWMsRUFBRSxDQUFnQztZQUN2RSxLQUFJLENBQUMsYUFBYSxDQUFDLEtBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUE7UUFFTywwQkFBcUIsR0FBRyxVQUFDLElBQWMsRUFBRSxDQUFnQztZQUM3RSxLQUFJLENBQUMsYUFBYSxDQUFDLEtBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQTtRQUVPLHFCQUFnQixHQUFHLFVBQUMsSUFBYyxFQUFFLENBQWdDO1lBQ3hFLEtBQUksQ0FBQyxhQUFhLENBQUMsS0FBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pELENBQUMsQ0FBQTtJQVFMLENBQUM7SUFwRWlCLGlCQUFZLEdBQTFC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cHlyaWdodCAyMDE1IFBhbGFudGlyIFRlY2hub2xvZ2llcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEJTRC0zIExpY2Vuc2UgYXMgbW9kaWZpZWQgKHRoZSDigJxMaWNlbnNl4oCdKTsgeW91IG1heSBvYnRhaW4gYSBjb3B5XG4gKiBvZiB0aGUgbGljZW5zZSBhdCBodHRwczovL2dpdGh1Yi5jb20vcGFsYW50aXIvYmx1ZXByaW50L2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqIGFuZCBodHRwczovL2dpdGh1Yi5jb20vcGFsYW50aXIvYmx1ZXByaW50L2Jsb2IvbWFzdGVyL1BBVEVOVFNcbiAqL1xuXG5pbXBvcnQgKiBhcyBjbGFzc05hbWVzIGZyb20gXCJjbGFzc25hbWVzXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0ICogYXMgQ2xhc3NlcyBmcm9tIFwiLi4vLi4vY29tbW9uL2NsYXNzZXNcIjtcbmltcG9ydCB7IElQcm9wcyB9IGZyb20gXCIuLi8uLi9jb21tb24vcHJvcHNcIjtcbmltcG9ydCB7IGlzRnVuY3Rpb24gfSBmcm9tIFwiLi4vLi4vY29tbW9uL3V0aWxzXCI7XG5pbXBvcnQgeyBJVHJlZU5vZGUsIFRyZWVOb2RlIH0gZnJvbSBcIi4vdHJlZU5vZGVcIjtcblxuZXhwb3J0IHR5cGUgVHJlZUV2ZW50SGFuZGxlciA9IChub2RlOiBJVHJlZU5vZGUsIG5vZGVQYXRoOiBudW1iZXJbXSwgZTogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRyZWVQcm9wcyBleHRlbmRzIElQcm9wcyB7XG4gICAvKipcbiAgICAqIFRoZSBkYXRhIHNwZWNpZnlpbmcgdGhlIGNvbnRlbnRzIGFuZCBhcHBlYXJhbmNlIG9mIHRoZSB0cmVlLlxuICAgICovXG4gICBjb250ZW50czogSVRyZWVOb2RlW107XG5cbiAgIC8qKlxuICAgICogSW52b2tlZCB3aGVuIGEgbm9kZSBpcyBjbGlja2VkIGFueXdoZXJlIG90aGVyIHRoYW4gdGhlIGNhcmV0IGZvciBleHBhbmRpbmcvY29sbGFwc2luZyB0aGUgbm9kZS5cbiAgICAqL1xuICAgb25Ob2RlQ2xpY2s/OiBUcmVlRXZlbnRIYW5kbGVyO1xuXG4gICAvKipcbiAgICAqIEludm9rZWQgd2hlbiBjYXJldCBvZiBhbiBleHBhbmRlZCBub2RlIGlzIGNsaWNrZWQuXG4gICAgKi9cbiAgIG9uTm9kZUNvbGxhcHNlPzogVHJlZUV2ZW50SGFuZGxlcjtcblxuICAgLyoqXG4gICAgKiBJbnZva2VkIHdoZW4gYSBub2RlIGlzIGRvdWJsZS1jbGlja2VkLiBCZSBjYXJlZnVsIHdoZW4gdXNpbmcgdGhpcyBpbiBjb21iaW5hdGlvbiB3aXRoXG4gICAgKiBhbiBgb25Ob2RlQ2xpY2tgIChzaW5nbGUtY2xpY2spIGhhbmRsZXIsIGFzIHRoZSB3YXkgdGhpcyBiZWhhdmVzIGNhbiB2YXJ5IGJldHdlZW4gYnJvd3NlcnMuXG4gICAgKiBTZWUgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3EvNTQ5NzA3My8zMTI0Mjg4XG4gICAgKi9cbiAgIG9uTm9kZURvdWJsZUNsaWNrPzogVHJlZUV2ZW50SGFuZGxlcjtcblxuICAgLyoqXG4gICAgKiBJbnZva2VkIHdoZW4gdGhlIGNhcmV0IG9mIGEgY29sbGFwc2VkIG5vZGUgaXMgY2xpY2tlZC5cbiAgICAqL1xuICAgb25Ob2RlRXhwYW5kPzogVHJlZUV2ZW50SGFuZGxlcjtcbn1cblxuZXhwb3J0IGNsYXNzIFRyZWUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SVRyZWVQcm9wcywge30+IHtcbiAgICBwdWJsaWMgc3RhdGljIG5vZGVGcm9tUGF0aChwYXRoOiBudW1iZXJbXSwgdHJlZU5vZGVzOiBJVHJlZU5vZGVbXSk6IElUcmVlTm9kZSB7XG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRyZWVOb2Rlc1twYXRoWzBdXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBUcmVlLm5vZGVGcm9tUGF0aChwYXRoLnNsaWNlKDEpLCB0cmVlTm9kZXNbcGF0aFswXV0uY2hpbGROb2Rlcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVuZGVyKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZXMoQ2xhc3Nlcy5UUkVFLCB0aGlzLnByb3BzLmNsYXNzTmFtZSl9PlxuICAgICAgICAgICAgICAgIHt0aGlzLnJlbmRlck5vZGVzKHRoaXMucHJvcHMuY29udGVudHMsIFtdLCBDbGFzc2VzLlRSRUVfUk9PVCl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbmRlck5vZGVzKHRyZWVOb2RlczogSVRyZWVOb2RlW10sIGN1cnJlbnRQYXRoPzogbnVtYmVyW10sIGNsYXNzTmFtZT86IHN0cmluZyk6IEpTWC5FbGVtZW50IHtcbiAgICAgICAgaWYgKHRyZWVOb2RlcyA9PSBudWxsKSB7XG4gICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgbm9kZUl0ZW1zID0gdHJlZU5vZGVzLm1hcCgobm9kZSwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudFBhdGggPSBjdXJyZW50UGF0aC5jb25jYXQoaSk7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxUcmVlTm9kZVxuICAgICAgICAgICAgICAgICAgICB7Li4ubm9kZX1cbiAgICAgICAgICAgICAgICAgICAga2V5PXtub2RlLmlkfVxuICAgICAgICAgICAgICAgICAgICBkZXB0aD17ZWxlbWVudFBhdGgubGVuZ3RoIC0gMX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5oYW5kbGVOb2RlQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIG9uQ29sbGFwc2U9e3RoaXMuaGFuZGxlTm9kZUNvbGxhcHNlfVxuICAgICAgICAgICAgICAgICAgICBvbkRvdWJsZUNsaWNrPXt0aGlzLmhhbmRsZU5vZGVEb3VibGVDbGlja31cbiAgICAgICAgICAgICAgICAgICAgb25FeHBhbmQ9e3RoaXMuaGFuZGxlTm9kZUV4cGFuZH1cbiAgICAgICAgICAgICAgICAgICAgcGF0aD17ZWxlbWVudFBhdGh9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJOb2Rlcyhub2RlLmNoaWxkTm9kZXMsIGVsZW1lbnRQYXRoKX1cbiAgICAgICAgICAgICAgICA8L1RyZWVOb2RlPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDx1bCBjbGFzc05hbWU9e2NsYXNzTmFtZXMoQ2xhc3Nlcy5UUkVFX05PREVfTElTVCwgY2xhc3NOYW1lKX0+XG4gICAgICAgICAgICAgICAge25vZGVJdGVtc31cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVOb2RlQ29sbGFwc2UgPSAobm9kZTogVHJlZU5vZGUsIGU6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlckhlbHBlcih0aGlzLnByb3BzLm9uTm9kZUNvbGxhcHNlLCBub2RlLCBlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZU5vZGVDbGljayA9IChub2RlOiBUcmVlTm9kZSwgZTogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVySGVscGVyKHRoaXMucHJvcHMub25Ob2RlQ2xpY2ssIG5vZGUsIGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlTm9kZURvdWJsZUNsaWNrID0gKG5vZGU6IFRyZWVOb2RlLCBlOiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZXJIZWxwZXIodGhpcy5wcm9wcy5vbk5vZGVEb3VibGVDbGljaywgbm9kZSwgZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVOb2RlRXhwYW5kID0gKG5vZGU6IFRyZWVOb2RlLCBlOiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZXJIZWxwZXIodGhpcy5wcm9wcy5vbk5vZGVFeHBhbmQsIG5vZGUsIGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlckhlbHBlcihoYW5kbGVyRnJvbVByb3BzOiBUcmVlRXZlbnRIYW5kbGVyLCBub2RlOiBUcmVlTm9kZSwgZTogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pIHtcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24oaGFuZGxlckZyb21Qcm9wcykpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVEYXRhID0gVHJlZS5ub2RlRnJvbVBhdGgobm9kZS5wcm9wcy5wYXRoLCB0aGlzLnByb3BzLmNvbnRlbnRzKTtcbiAgICAgICAgICAgIGhhbmRsZXJGcm9tUHJvcHMobm9kZURhdGEsIG5vZGUucHJvcHMucGF0aCwgZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBUcmVlRmFjdG9yeSA9IFJlYWN0LmNyZWF0ZUZhY3RvcnkoVHJlZSk7XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=