UNPKG

@react-awesome-query-builder/antd

Version:
125 lines (123 loc) 5.5 kB
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray"; function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } import { Utils } from "@react-awesome-query-builder/ui"; var _Utils$ListUtils = Utils.ListUtils, getItemInListValues = _Utils$ListUtils.getItemInListValues, listValuesToArray = _Utils$ListUtils.listValuesToArray; var isObjectOrArray = Utils.OtherUtils.isObjectOrArray; export var defaultTreeDataMap = { id: "value", pId: "parent", rootPId: undefined }; // converts from treeData to treeDataSimpleMode format (https://ant.design/components/tree-select/) // ! modifies value of `treeData` var flatizeTreeData = function flatizeTreeData(treeData) { var tdm = defaultTreeDataMap; var rind; var len; var _flatize2 = function _flatize(node, root, lev) { if (node.children) { if (lev == 1) node[tdm.pId] = tdm.rootPId; //optional? var childrenCount = node.children.length; var _iterator = _createForOfIteratorHelper(node.children), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var c = _step.value; c[tdm.pId] = node[tdm.id]; rind++; root.splice(rind, 0, c); //instead of just push len++; _flatize2(c, root, lev + 1); } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } delete node.children; if (childrenCount == 0) { root.splice(rind, 1); rind--; len--; } } }; if (Array.isArray(treeData)) { len = treeData.length; for (rind = 0; rind < len; rind++) { var c = treeData[rind]; if (!isObjectOrArray(c)) continue; if (c[tdm.pId] !== undefined && c[tdm.pId] != tdm.rootPId) continue; //not lev 1 _flatize2(c, treeData, 1); } } return treeData; }; var _getPathInListValues = function getPathInListValues(listValues, value) { var tdm = defaultTreeDataMap; var it = getItemInListValues(listValues, value); var parentId = it ? it[tdm.pId] : undefined; var parent = parentId ? listValues.find(function (v) { return v[tdm.id] === parentId; }) : undefined; return parent ? [parent.value].concat(_toConsumableArray(_getPathInListValues(listValues, parent.value))) : []; }; var getChildrenInListValues = function getChildrenInListValues(listValues, value) { var tdm = defaultTreeDataMap; var it = getItemInListValues(listValues, value); return it ? listValues.filter(function (v) { return v[tdm.pId] === it[tdm.id]; }).map(function (v) { return v.value; }) : []; }; // ! modifies value of `treeData` var extendTreeData = function extendTreeData(treeData, fieldSettings, isMulti) { var _iterator2 = _createForOfIteratorHelper(treeData), _step2; try { for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { var node = _step2.value; node.path = _getPathInListValues(treeData, node.value); if (fieldSettings.treeSelectOnlyLeafs != false) { var childrenValues = getChildrenInListValues(treeData, node.value); if (!isMulti) { node.selectable = childrenValues.length == 0; } } } } catch (err) { _iterator2.e(err); } finally { _iterator2.f(); } return treeData; }; export var normalizeListValues = function normalizeListValues(listValues, type, fieldSettings) { var isTree = ["treeselect", "treemultiselect"].includes(type); var isMulti = ["multiselect", "treemultiselect"].includes(type); if (isTree) { listValues = listValuesToArray(listValues); listValues = flatizeTreeData(listValues); listValues = extendTreeData(listValues, fieldSettings, isMulti); } return listValues; }; export var removePrefixPath = function removePrefixPath(selectedPath, parentPath) { if (!selectedPath) return selectedPath; var isPrefix = true; for (var i = 0; i < parentPath.length; i++) { var part = parentPath[i]; if (selectedPath[i] !== undefined && part == selectedPath[i]) { //ok } else { isPrefix = false; break; } } return isPrefix ? selectedPath.slice(parentPath.length) : selectedPath; };