UNPKG

@accelint/design-toolkit

Version:

An open-source component library to serve as part of the entire ecosystem of UX for Accelint.

4 lines (3 loc) 2.24 kB
'use client'; import {jsx}from'react/jsx-runtime';import {Cache}from'./../../hooks/use-tree/actions/cache.js';import'client-only';import {useMemo}from'react';import {useDragAndDrop,Tree,composeRenderProps,DropIndicator}from'react-aria-components';import {TreeContext}from'./context.js';import {TreeStyles,TreeStylesDefaults}from'./styles.js';const{tree:L}=TreeStyles(),Q=i=>jsx(DropIndicator,{target:i,className:"border border-highlight-hover"});function $({children:i,className:h,disabledKeys:s,dragAndDropConfig:T,expandedKeys:d,items:r,selectedKeys:a,showRuleLines:g=true,showVisibility:b=true,selectionMode:w="multiple",variant:u=TreeStylesDefaults.variant,visibleKeys:l,onVisibilityChange:D,onSelectionChange:S,...v}){if(r&&(s||d||a||l))throw new Error("Tree should only be controlled with state from either `items` or keys props, not both");if(!!r!=(typeof i=="function"))throw new Error("Tree `items` and node iterator `children` must be used together");const{dragAndDropHooks:C}=useDragAndDrop({renderDropIndicator:Q,getAllowedDropOperations:()=>["move"],getDropOperation:()=>"move",...T}),m=useMemo(()=>r?new Cache([...r]):null,[r]),e=useMemo(()=>m?.getAllNodes(),[m]),{disabledKeys:c,expandedKeys:K,selectedKeys:p,visibleKeys:A,visibilityComputedKeys:x}=useMemo(()=>{const t={disabledKeys:e?new Set:s,expandedKeys:e?new Set:d,selectedKeys:e?new Set:a,visibleKeys:e?new Set:l,visibilityComputedKeys:new Set};return e?e.reduce((o,{key:n,isDisabled:N,isExpanded:E,isSelected:H,isVisible:M,isVisibleComputed:O})=>(N&&o.disabledKeys?.add(n),E&&o.expandedKeys?.add(n),H&&o.selectedKeys?.add(n),M&&o.visibleKeys?.add(n),O&&o.visibilityComputedKeys.add(n),o),t):t},[e,s,d,a,l]),I=p?t=>{t!=="all"&&S?.(t);}:void 0;return jsx(TreeContext.Provider,{value:{disabledKeys:c,expandedKeys:K,selectedKeys:p,showRuleLines:g,showVisibility:b,variant:u,visibleKeys:A,visibilityComputedKeys:x,isStatic:typeof i!="function",onVisibilityChange:D??(()=>{})},children:jsx(Tree,{...v,className:composeRenderProps(h,t=>L({className:t,variant:u})),disabledKeys:c,dragAndDropHooks:C,expandedKeys:K,items:r,selectedKeys:p,onSelectionChange:I,selectionMode:w,children:i})})}export{$ as Tree};//# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map