119 lines
3.4 KiB
JavaScript
Raw Normal View History

2024-01-29 09:26:07 +08:00
export function toArray(arg) {
if (Array.isArray(arg))
return arg;
return [arg];
}
// Do not use enum for lint plugin has error
export const TRAVERSE_COMMAND = {
STOP: 'STOP'
};
export function traverseWithCb(treeNode, callback) {
const command = callback(treeNode);
if (treeNode.children !== undefined && command !== TRAVERSE_COMMAND.STOP) {
treeNode.children.forEach((childNode) => traverseWithCb(childNode, callback));
}
}
export function getNonLeafKeys(treeNodes, options = {}) {
const { preserveGroup = false } = options;
const keys = [];
const cb = preserveGroup
? (node) => {
if (!node.isLeaf) {
keys.push(node.key);
traverse(node.children);
}
}
: (node) => {
if (!node.isLeaf) {
if (!node.isGroup)
keys.push(node.key);
traverse(node.children);
}
};
function traverse(nodes) {
nodes.forEach(cb);
}
traverse(treeNodes);
return keys;
}
export function isLeaf(rawNode, getChildren) {
const { isLeaf } = rawNode;
if (isLeaf !== undefined)
return isLeaf;
else if (!getChildren(rawNode))
return true;
return false;
}
export function defaultGetChildren(node) {
return node.children;
}
export function defaultGetKey(node) {
return node.key;
}
export function isIgnored() {
return false;
}
export function isShallowLoaded(rawNode, getChildren) {
const { isLeaf } = rawNode;
if (isLeaf === false && !Array.isArray(getChildren(rawNode)))
return false;
return true;
}
export function isDisabled(rawNode) {
return rawNode.disabled === true;
}
export function isExpilicitlyNotLoaded(rawNode, getChildren) {
return (rawNode.isLeaf === false && !Array.isArray(getChildren(rawNode)));
}
export function isNodeInvalid(rawNode, getChildren) {
if (rawNode.isLeaf === true) {
const children = getChildren(rawNode);
if (Array.isArray(children) && children.length > 0)
return true;
}
return false;
}
export function unwrapCheckedKeys(result) {
var _a;
if (result === undefined || result === null)
return [];
if (Array.isArray(result))
return result;
return (_a = result.checkedKeys) !== null && _a !== void 0 ? _a : [];
}
export function unwrapIndeterminateKeys(result) {
var _a;
if (result === undefined || result === null || Array.isArray(result)) {
return [];
}
return (_a = result.indeterminateKeys) !== null && _a !== void 0 ? _a : [];
}
export function merge(originalKeys, keysToAdd) {
const set = new Set(originalKeys);
keysToAdd.forEach((key) => {
if (!set.has(key)) {
set.add(key);
}
});
return Array.from(set);
}
export function minus(originalKeys, keysToRemove) {
const set = new Set(originalKeys);
keysToRemove.forEach((key) => {
if (set.has(key)) {
set.delete(key);
}
});
return Array.from(set);
}
export function isGroup(rawNode) {
return (rawNode === null || rawNode === void 0 ? void 0 : rawNode.type) === 'group';
}
export function createIndexGetter(treeNodes) {
const map = new Map();
treeNodes.forEach((treeNode, i) => {
map.set(treeNode.key, i);
});
return (key) => { var _a; return (_a = map.get(key)) !== null && _a !== void 0 ? _a : null; };
}