@progress/kendo-react-treeview
Version:
React TreeView displays hierarchical data in a traditional tree structure, supports user interaction. KendoReact TreeView package
9 lines (8 loc) • 1.85 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
*-------------------------------------------------------------------------------------------
*/
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("@progress/kendo-react-common"),d=require("./utils/consts.js");function C(n,t){if(!n||!n.length)return[];let e=n;const l=t.cloneField||"cloned",c=t.expandField||d.EXPAND_FIELD,s=t.selectField||d.SELECT_FIELD,r=t.checkField||d.CHECK_FIELD,i=t.childrenField||d.CHILDREN_FIELD;return e=o(e,c,t.expand,l,i),e=o(e,s,t.select,l,i),e=o(e,r,t.check,l,i),m(e,i,t.check),e}function o(n,t,e,l,c){if(e){const{ids:s,field:r}=E(e,t),i=!f.isArray(e)&&e.idField?f.resolveItemsIds(s,e.idField,n,c):s;return F(n,i,r,l,c)}return n}function E(n,t){let e,l;return f.isArray(n)?(e=n,l=t):(e=n.ids||[],l=n.operationField||t),{ids:e,field:l}}function F(n,t,e,l,c){let s=n;return t.forEach(r=>{s=f.updateItem(s,r,i=>g(e,i),l,c)}),s}function g(n,t){const e=(n||"").split(".");let l=t;for(let c=0;c<e.length;c++){const s=e[c];if(c===e.length-1)l[s]=!0;else if(l[s]!==void 0)l[s]={...l[s]},l=l[s];else return}}function m(n,t,e){if(e&&!f.isArray(e)&&e.applyCheckIndeterminate){const{field:l}=E(e,d.CHECK_FIELD),c=e.checkIndeterminateField||d.CHECK_INDETERMINATE_FIELD;for(let s=0;s<n.length;s++){const r=n[s],i=r[t];i&&I(i,f.getNestedValue(l,r)?[]:[r],t,l,c)}}}function I(n,t,e,l,c){let s=!1;for(let r=0;r<n.length;r++){const i=n[r];if(f.getNestedValue(l,i)){if(!s)for(let u=0;u<t.length;u++)g(c,t[u]);s=!0,i[e]&&I(i[e],[],e,l,c)}else i[e]&&I(i[e],s?[i]:t.concat([i]),e,l,c)}}exports.processTreeViewItems=C;