@progress/kendo-react-treeview
Version:
React TreeView displays hierarchical data in a traditional tree structure, supports user interaction. KendoReact TreeView package
63 lines (62 loc) • 2.08 kB
JavaScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
import { Keys as a, treeIdUtils as n, isEnabledAndAllParentsEnabled as s, isItemExpandedAndWithChildren as c } from "@progress/kendo-react-common";
function F(o, e, t, g, r) {
switch (g) {
case a.left:
return I();
case a.right:
return l();
case a.up:
return y();
case a.down:
return C();
case a.home:
return n.ZERO_LEVEL_ZERO_NODE_ID;
case a.end:
return E();
default:
return e;
}
function I() {
return n.isIdZeroLevel(e) || // For expanded disabled items, navigate directly to the parent.
// Collapse cannot happen because an event is not fired to the client.
r.expanded(o) && s(e, t, r) ? e : n.getDirectParentId(e);
}
function l() {
return c(o, r) ? n.getFirstChildId(e) : e;
}
function y() {
const d = Number(n.getShortId(e)), u = n.getDirectParentId(e);
return d ? i(n.createId(d - 1, u), t, r) : n.isIdZeroLevel(e) ? e : u;
}
function C() {
return c(o, r) ? n.getFirstChildId(e) : p(e, t, r) || e;
}
function E() {
let d = (t.length - 1).toString(), u = t[t.length - 1], h;
for (; c(u, r); )
h = u[r.getChildrenField()], d = n.createId(h.length - 1, d), u = h[h.length - 1];
return d;
}
}
function p(o, e, t) {
const g = n.getDirectParentId(o), r = g ? n.getItemById(g, e, t.getChildrenField()) : void 0, I = r ? r[t.getChildrenField()] : e, l = Number(n.getShortId(o));
return l < I.length - 1 ? n.createId(l + 1, g) : r ? p(g, e, t) : void 0;
}
function i(o, e, t) {
const g = n.getItemById(o, e, t.getChildrenField());
return c(g, t) ? i(
n.createId(g[t.getChildrenField()].length - 1, o),
e,
t
) : o;
}
export {
F as default
};