primereact
Version:
A rich set of premium UI Components for React.
4 lines (2 loc) • 1.92 kB
JavaScript
'use client';
import{Component as m,withComponent as C}from"@primereact/core/component";import{useTreeNode as h}from"@primereact/headless/tree";import{mergeProps as f,resolve as D}from"@primeuix/utils";import*as i from"react";import{createOptionalContext as T}from"@primereact/core/utils";var[g,a]=T();import{createOptionalContext as y}from"@primereact/core/utils";var[d,c]=y();var l={as:"li",uKey:""};var u=new Set,B=C({name:"Tree.Node",defaultProps:l,setup({props:r}){let o=a(),s=c(),t=r.uKey,n=t?o?.findNodeByKey?.(t):void 0,p=t?o?.findNodeInfo?.(t):void 0;!n&&t&&o&&process.env.NODE_ENV!=="production"&&(u.has(t)||(u.add(t),console.warn(`[Tree.Node] unknown uKey="${t}"; rendering aria-busy placeholder.`)));let e=h({node:n,index:p?p.posInSet-1:0,context:o,parentContext:s});return{state:e.state,nodeProps:e.nodeProps,contentProps:e.contentProps,dropPointProps:e.dropPointProps,expanded:e.state.expanded,selected:e.state.selected,checked:e.state.checked,partialChecked:e.state.partialChecked,leaf:e.state.leaf,level:e.state.level,posInSet:e.state.posInSet,setSize:e.state.setSize,isNodeDropActive:e.state.isNodeDropActive,isPrevDropPointActive:e.state.isPrevDropPointActive,isNextDropPointActive:e.state.isNextDropPointActive,isDraggable:e.state.isDraggable,nodeTouched:e.state.nodeTouched,tree:o,parentNode:s,node:n,info:p,uKey:t}},render(r){let{props:o,ptmi:s,tree:t,node:n,info:p,nodeProps:e,leaf:P}=r;if(!n){let x=f({"aria-busy":!0,role:"treeitem","data-scope":"tree","data-part":"node-placeholder","data-node-key":o.uKey},s("root"));return i.createElement(m,{instance:r,attrs:x})}let N={"--px-tree-node-level":p?.level??1},v=f(e,{className:t?.cx("node",{leaf:P}),style:N},n?.nodeProps,t?.ptm("node"),s("root"));return i.createElement(d,{value:r},i.createElement(m,{instance:r,attrs:v},D(o.children,r)??n?.label))}});export{B as TreeNode,d as TreeNodeProvider,l as defaultNodeProps,c as useTreeNodeContext};