@antmjs/vantui
Version:
一套适用于Taro3及React的vantui组件库
87 lines (85 loc) • 3.54 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _helper = require("./helper");
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
var Tree = /*#__PURE__*/function () {
function Tree(nodes, config) {
var _this = this;
(0, _classCallCheck2.default)(this, Tree);
(0, _defineProperty2.default)(this, "isLeaf", function (node, lazy) {
var leaf = node.leaf,
children = node.children;
var hasChildren = Array.isArray(children) && Boolean(children.length);
return leaf || !hasChildren && !lazy;
});
(0, _defineProperty2.default)(this, "hasChildren", function (node, lazy) {
var isLeaf = _this.isLeaf(node, lazy);
if (isLeaf) {
return false;
}
var children = node.children;
return Array.isArray(children) && Boolean(children.length);
});
this.config = _objectSpread({
value: 'value',
text: 'text',
children: 'children'
}, config || {});
this.nodes = (0, _helper.formatTree)(nodes, null, this.config);
}
(0, _createClass2.default)(Tree, [{
key: "updateChildren",
value: function updateChildren(nodes, parent) {
if (!parent) {
this.nodes = (0, _helper.formatTree)(nodes, null, this.config);
} else {
parent.children = (0, _helper.formatTree)(nodes, parent, this.config);
}
}
// for test
}, {
key: "getNodeByValue",
value: function getNodeByValue(value) {
var foundNode;
(0, _helper.eachTree)(this.nodes, function (node) {
if (node.value === value) {
foundNode = node;
return true;
}
return null;
});
return foundNode;
}
}, {
key: "getPathNodesByValue",
value: function getPathNodesByValue(value) {
if (!value.length) {
return [];
}
var pathNodes = [];
var currentNodes = this.nodes;
while (currentNodes && currentNodes.length) {
var foundNode = currentNodes.find(function (node) {
return node.value === value[node.level];
});
if (!foundNode) {
break;
}
pathNodes.push(foundNode);
currentNodes = foundNode.children;
}
return pathNodes;
}
}]);
return Tree;
}();
var _default = Tree;
exports.default = _default;
;