@nexusui/components
Version:
These are custom components specially-developed for NexusUI applications. They will make your life easier by giving you out-of-the-box implementations for various high-level UI elements that you can drop directly into your application.
2 lines (1 loc) • 2.9 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),r=require("@mui/x-tree-view"),a=require("@mui/material/Toolbar"),l=require("@mui/material/Stack"),i=require("@mui/material/Typography"),s=require("@mui/icons-material/ArrowRight"),o=require("@mui/icons-material/ArrowDropDown"),n=require("@mui/material/Box"),c=require("@mui/material/styles"),d=require("./AssemblyTreeItem/AssemblyTreeItem.component.js");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var m=u(a),p=u(l),h=u(i),f=u(s),b=u(o),g=u(n);const x="NexusAssemblyTree",y=(e,t)=>{for(let r=0;r<e.length;r++){const a=e[r];if(a.itemId===t)return a;if(a.children){const e=y(a.children,t);if(e)return e}}},I=(e,t)=>{if(!t||t.length<1)return[];let r=[],a=[];return e.forEach((e=>{a=a.concat(e.sectionData)})),t.forEach((t=>{const l=y(a,t);r.find((e=>e===t))||(r=r.concat([t]),l?.children&&(r=r.concat(I(e,l?.children.map((e=>e.itemId))||[]))))})),r};exports.AssemblyTree=a=>{const{background:l="solid",Header:i,data:s,editable:o,onNodeChanged:n,actions:u,selectMode:y="standard",defaultSelectedItems:S,onSelectedItemsChange:$,autoSelectChildNodes:j=!0,autoDeselectChildNodes:k=!0,selectedItems:q,...C}=a,[N,T]=t.useState(S??[]),A=q??N;return e.jsxs(g.default,{sx:[{p:0,py:4,[`& .${x}-tree:last-child`]:{pb:0}},"solid"===l?{backgroundColor:"background.paper"}:"translucent"===l?e=>({backgroundColor:`rgba(${e.vars.palette.background.paperChannel} / 0.5)`,backdropFilter:"blur(10px)",...e.applyStyles("dark",{backgroundColor:c.alpha(e.palette.grey[900],.5)})}):{background:"transparent"}],"data-testid":`${x}-root`,className:`${x}-root`,children:[i&&e.jsx(m.default,{sx:{px:{xs:2.5,sm:2.5},pb:4},"data-testid":`${x}-header`,className:`${x}-header`,children:i}),e.jsx(r.SimpleTreeView,{multiSelect:!0,slots:{expandIcon:()=>e.jsx(f.default,{sx:e=>({color:"inherit",...e.applyStyles("dark",{color:"primary.light"})})}),collapseIcon:()=>e.jsx(b.default,{sx:e=>({color:"inherit",...e.applyStyles("dark",{color:"primary.light"})})})},"data-testid":`${x}-tree`,className:`${x}-tree`,defaultSelectedItems:S,selectedItems:A,itemChildrenIndentation:0,...C,onSelectedItemsChange:"toggle"===y?(e,t)=>{let r;if(1===t.length&&A.includes(t[0])){r=A.filter((e=>!(k?I(s,t):t).includes(e)))}else if(1===t.length){r=[...A,...j?I(s,t):t]}else r=j?I(s,t):t;T(r),$?.(e,r)}:(e,t)=>{const r=j?I(s,t):t;T(r),$?.(e,r)},children:s.map((({sectionLabel:t,sectionData:r},a)=>e.jsxs(p.default,{sx:{mt:0===a?0:4},"data-testid":`${x}-treeSection`,className:`${x}-treeSection`,children:[t&&"string"==typeof t?e.jsx(h.default,{variant:"caption",sx:{ml:2.5,fontSize:"0.875rem",minHeight:28},"data-testid":`${x}-sectionLabel`,className:`${x}-sectionLabel`,children:t}):t,r.map((t=>e.jsx(d.AssemblyTreeItem,{actions:u,depth:0,onNodeChanged:n,editable:o,...t},t.itemId)))]},`section-${a}`)))})]})};