@powerduck/tree 0.7.18 → 0.7.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.d.cts +40 -1
- package/dist/react/index.d.ts +40 -1
- package/dist/react/index.js +1 -1
- package/package.json +1 -1
package/dist/react/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var Fe=Object.defineProperty;var yt=Object.getOwnPropertyDescriptor;var It=Object.getOwnPropertyNames;var Nt=Object.prototype.hasOwnProperty;var Mt=(t,e)=>{for(var a in e)Fe(t,a,{get:e[a],enumerable:!0})},St=(t,e,a,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of It(e))!Nt.call(t,n)&&n!==a&&Fe(t,n,{get:()=>e[n],enumerable:!(o=yt(e,n))||o.enumerable});return t};var kt=t=>St(Fe({},"__esModule",{value:!0}),t);var qt={};Mt(qt,{METHOD_LABEL_MAP:()=>Be,Tree:()=>it,getMethodLabel:()=>ke,useTreeExpansion:()=>Pe,useTreeSearch:()=>Oe});module.exports=kt(qt);var p=require("react");function*je(t,e=1/0){let a=new Set,o=[];for(let n=t.length-1;n>=0;n--)o.push({node:t[n],depth:1});for(;o.length;){let n=o.pop();if(a.has(n.node)||n.depth>e)continue;a.add(n.node),yield n;let l=n.node.children??[];for(let i=l.length-1;i>=0;i--)o.push({node:l[i],parent:n,depth:n.depth+1})}}function $e(t,e){for(let{node:a}of je(t))if(a.id===e)return a}function Dt(t,e,a=[]){for(let o of je(t)){if(o.node.id!==e)continue;let n=[],l=o;for(;l;)n.push(l.node),l=l.parent;n.reverse();let i=[...a,...n];return{nodes:i,target:o.node,parent:i[i.length-2],ancestorIds:i.slice(0,-1).map(v=>v.id)}}return null}var $t=new Intl.Collator("en-US",{numeric:!0,sensitivity:"base"});function We(t,e,a=()=>!0){let o=new Set,n=new Map,l=[{source:t,output:[],index:0}];for(;l.length;){let i=l[l.length-1];if(i.index<i.source.length){let c=i.source[i.index++];if(o.has(c))continue;if(n.has(c)){let x=n.get(c);x&&i.output.push(x)}else if(c.children?.length&&a(c))o.add(c),l.push({source:c.children,output:[],index:0,owner:c});else{let x=e(c);n.set(c,x),x&&i.output.push(x)}continue}l.pop();let v=i.source.length===i.output.length&&i.source.every((c,x)=>c===i.output[x])?i.source:i.output;if(!i.owner)return v;let f=i.owner,I=e(v===f.children?f:{...f,children:v});o.delete(f),n.set(f,I),I&&l[l.length-1].output.push(I)}return t}function Ye(t,e){let a=e.query.trim().toLowerCase();return a?We(t,o=>o.name.toLowerCase().includes(a)||o.id.toLowerCase().includes(a)||(e.keepAncestors??!0)&&o.children?.length?o:null):t}function Le(t,e={}){let a=[];for(let{node:o,depth:n}of je(t,e.maxDepth??1/0))n<=(e.maxDepth??1/0)&&(!(e.onlyWithChildren??!0)||o.children?.length)&&a.push(o.id);return a}function Xe(t){return Le(t)}function Ze(t,e,a){return We(t,o=>o.id===e?a(o):o,o=>o.id!==e)}function Ct(t,e){return We(t,a=>a.id===e?null:a,a=>a.id!==e)}function et(t,e){return Math.max(0,Math.min(Number.isNaN(t)?0:Math.trunc(t),e))}function tt(t,e,a){let o=Dt(t,e);if(!o)return null;let n=o.parent?.children??t,l=n.indexOf(o.target),i=et(a,n.length-1),v={nodes:t,moved:o.target,parentId:o.parent?.id??null,fromIndex:l,toIndex:i};if(i===l)return v;let f=[...n];return f.splice(l,1),f.splice(i,0,o.target),{...v,nodes:o.parent?Ze(t,o.parent.id,I=>({...I,children:f})):f}}function Qe(t,e,a,o){let n=$e(t,e);if(!n||a!==null&&(!$e(t,a)||$e([n],a)))return null;let l=Ct(t,e),i=v=>{let f=[...v];return f.splice(et(o??f.length,f.length),0,n),f};return a===null?i(l):Ze(l,a,v=>({...v,children:i(v.children??[])}))}var ie=require("react"),rt=require("react-dom"),de=require("react/jsx-runtime");function ot({state:t,onClose:e}){let a=(0,ie.useRef)(null),[o,n]=(0,ie.useState)(null),[l,i]=(0,ie.useState)({left:t.x,top:t.y}),[v,f]=(0,ie.useState)({}),I=t.anchor.closest("dialog")??t.anchor.ownerDocument.body;return(0,ie.useLayoutEffect)(()=>{let c=t.anchor.closest(".pde-tree-root")??t.anchor,x=getComputedStyle(c),M={};for(let k=0;k<x.length;k++){let G=x.item(k);(G.startsWith("--tree-")||G.startsWith("--color-")||G.startsWith("--radius-")||G.startsWith("--font-")||G.startsWith("--shadow-"))&&(M[G]=x.getPropertyValue(G))}f(M);let b=a.current;if(!b)return;let P=()=>{let k=b.getBoundingClientRect();i({left:Math.max(8,Math.min(t.x,document.documentElement.clientWidth-k.width-8)),top:Math.max(8,Math.min(t.y,document.documentElement.clientHeight-k.height-8))})};P();let Y=typeof ResizeObserver>"u"?void 0:new ResizeObserver(P);Y?.observe(b),b.querySelector("button:not(:disabled)")?.focus();let te=k=>{k.target instanceof Node&&!b.contains(k.target)&&e()},re=k=>{k.target instanceof Node&&!b.contains(k.target)&&e()};return document.addEventListener("pointerdown",te),document.addEventListener("scroll",re,!0),window.addEventListener("resize",e),()=>{Y?.disconnect(),document.removeEventListener("pointerdown",te),document.removeEventListener("scroll",re,!0),window.removeEventListener("resize",e),b.contains(document.activeElement)&&t.anchor.isConnected&&t.anchor.focus({preventScroll:!0})}},[t,e]),(0,rt.createPortal)((0,de.jsx)("div",{ref:a,className:"pde-tree-contextMenu",style:{...v,...l},role:"menu","aria-label":`Actions for ${t.node.name}`,tabIndex:-1,onKeyDown:c=>{let x=a.current;if(!x)return;let M=Array.from(x.querySelectorAll("button:not(:disabled)")),b=M.indexOf(document.activeElement);if(c.key==="Escape"||c.key==="Tab"){c.key==="Escape"&&c.preventDefault(),c.stopPropagation(),e();return}let P;if(c.key==="ArrowDown")P=(b+1)%M.length;else if(c.key==="ArrowUp")P=(b-1+M.length)%M.length;else if(c.key==="Home")P=0;else if(c.key==="End")P=M.length-1;else return;c.preventDefault(),M[P]?.focus()},children:t.items.map((c,x)=>(0,de.jsxs)("div",{role:"presentation",children:[c.separator&&(0,de.jsx)("div",{className:"pde-tree-contextMenuSeparator",role:"separator"}),(0,de.jsxs)("button",{type:"button",role:"menuitem",tabIndex:-1,disabled:c.disabled,className:`pde-tree-contextMenuItem${c.danger?" pde-tree-contextMenuItemDanger":""}${o===x?" pde-tree-contextMenuItemConfirming":""}`,onClick:()=>{if(c.confirm&&o!==x){n(x);return}e(),c.onClick(t.node)},children:[c.icon&&(0,de.jsx)("span",{className:"pde-tree-contextMenuIcon","aria-hidden":"true",children:c.icon}),(0,de.jsx)("span",{children:c.confirm&&o===x?c.confirmLabel??"Confirm?":c.label})]})]},`${c.label}-${x}`))}),I)}var E=require("react");function Pe(t,e={}){let{defaultExpandedIds:a,defaultExpandDepth:o=1,onExpandedChange:n}=e,l=(0,E.useMemo)(()=>a!==void 0?[...a]:o<=1?[]:Le(t,{maxDepth:o-1,onlyWithChildren:!0}),[]),[i,v]=(0,E.useState)(l),f=(0,E.useRef)(new Map),I=(0,E.useMemo)(()=>Xe(t),[t]),c=(0,E.useMemo)(()=>new Set(i),[i]),x=(0,E.useRef)(i);x.current=i;let M=(0,E.useMemo)(()=>I.length>0&&I.every(S=>c.has(S)),[I,c]),b=(0,E.useCallback)(S=>{x.current=S,v(S),n?.(S)},[n]),P=(0,E.useCallback)(S=>{let D=x.current,se=D.includes(S)?D.filter(xe=>xe!==S):[...D,S];b(se)},[b]),Y=(0,E.useCallback)(()=>{b([...I])},[I,b]),te=(0,E.useCallback)(()=>{b([])},[b]),re=(0,E.useCallback)(S=>{let D=Le(t,{maxDepth:S,onlyWithChildren:!0});b(D)},[t,b]),k=(0,E.useCallback)((S,D)=>{D?f.current.set(S,D):f.current.delete(S)},[]),G=(0,E.useCallback)(S=>{let D=f.current.get(S);D&&D.scrollIntoView?.({behavior:"auto",block:"nearest"})},[]);return{expandedIds:i,setExpandedIds:b,toggleNode:P,expandAll:Y,collapseAll:te,expandToDepth:re,isAllExpanded:M,allBranchIds:I,setNodeElementRef:k,scrollToNode:G,nodeElementRefs:f}}var J=require("react");function Oe(t){let[e,a]=(0,J.useState)(""),o=(0,J.useDeferredValue)(e),[n,l]=(0,J.useState)(null),i=o.trim().length>0,v=(0,J.useMemo)(()=>i?Ye(t,{query:o,keepAncestors:!0}):t,[t,o,i]),f=(0,J.useCallback)((c,x)=>{let M=e.trim(),b=c.trim();!M&&b&&l(x),M&&!b&&l(null),a(c)},[e]),I=(0,J.useCallback)(()=>{a(""),l(null)},[]);return{query:e,deferredQuery:o,isSearching:i,filteredNodes:v,expandedBeforeSearch:n,handleQueryChange:f,clearSearch:I}}function nt(t){let e=new Map,a=new Set,o=t.map(n=>({node:n,parentId:null})).reverse();for(;o.length;){let n=o.pop();if(a.has(n.node)||e.has(n.node.id))continue;a.add(n.node),e.set(n.node.id,n);let l=n.node.children??[];for(let i=l.length-1;i>=0;i--)o.push({node:l[i],parentId:n.node.id})}return{byId:e,path(n){let l=e.get(n);if(!l)return null;let i=[l.node],v=l.parentId;for(;v!==null;){let f=e.get(v);if(!f)break;i.push(f.node),v=f.parentId}return i.reverse(),{nodes:i,target:l.node,parent:i[i.length-2],ancestorIds:i.slice(0,-1).map(f=>f.id)}}}}var Be={get:"GET",post:"POST",put:"PUT",delete:"DEL",patch:"PAT",head:"HEAD",options:"OPT",trace:"TRC",connect:"CON"};function ke(t){let e=t.toLowerCase().trim();return Object.prototype.hasOwnProperty.call(Be,e)?Be[e]:e.slice(0,4).toUpperCase()}var N=require("react-icons/lu"),ze=require("react-icons/md"),s=require("react/jsx-runtime"),g={branchControl:"pde-tree-branchControl",deprecatedLabel:"pde-tree-deprecatedLabel",dragHandle:"pde-tree-dragHandle",dropIndicatorAfter:"pde-tree-dropIndicatorAfter",dropIndicatorBefore:"pde-tree-dropIndicatorBefore",dropIndicatorChild:"pde-tree-dropIndicatorChild",emptyState:"pde-tree-emptyState",expandIcon:"pde-tree-expandIcon",expandIconPlaceholder:"pde-tree-expandIconPlaceholder",highlight:"pde-tree-highlight",iconButton:"pde-tree-iconButton",indentGuide:"pde-tree-indentGuide",leafItem:"pde-tree-leafItem",methodBadge:"pde-tree-methodBadge",methodDelete:"pde-tree-methodDelete",methodGet:"pde-tree-methodGet",methodOther:"pde-tree-methodOther",methodPatch:"pde-tree-methodPatch",methodPost:"pde-tree-methodPost",methodPut:"pde-tree-methodPut",moreButton:"pde-tree-moreButton",moreButtonActive:"pde-tree-moreButtonActive",nodeDragging:"pde-tree-nodeDragging",nodeIcon:"pde-tree-nodeIcon",primitiveDot:"pde-tree-primitiveDot",nodeLabel:"pde-tree-nodeLabel",nodeLabelBranch:"pde-tree-nodeLabelBranch",nodeRow:"pde-tree-nodeRow",nodeRowSelected:"pde-tree-nodeRowSelected",nodeSuffix:"pde-tree-nodeSuffix",requiredDot:"pde-tree-requiredDot",root:"pde-tree-root",searchIcon:"pde-tree-searchIcon",searchInput:"pde-tree-searchInput",searchInputWrap:"pde-tree-searchInputWrap",searchRow:"pde-tree-searchRow",toolbar:"pde-tree-toolbar",treeContainer:"pde-tree-treeContainer"};function Rt({expanded:t}){return(0,s.jsx)("span",{className:g.expandIcon,children:t?(0,s.jsx)(N.LuChevronDown,{size:14}):(0,s.jsx)(N.LuChevronRight,{size:14})})}function Et(){return(0,s.jsx)(N.LuSearch,{size:14,"aria-hidden":"true"})}function Lt(){return(0,s.jsx)(N.LuGripVertical,{size:14,"aria-hidden":"true"})}function Pt(){return(0,s.jsx)(N.LuEllipsisVertical,{size:14,"aria-hidden":"true"})}function at(t){let a=t.metadata?.jsonPath;if(Array.isArray(a)&&a.length>0&&a.every(o=>typeof o=="string"||typeof o=="number"&&Number.isInteger(o)&&o>=0))return a}function Ot(t,e,a,o){let n=at(t);if(!n||n.length===0)return[];let l=JSON.stringify(n.slice(0,-1));if(!o.every((v,f)=>{let I=at(v);return I&&I[I.length-1]===f&&JSON.stringify(I.slice(0,-1))===l}))return[];let i=n.slice(0,-1);return[{op:"move",from:[...i,e],path:[...i,a]}]}function Bt({text:t,query:e}){if(!e)return(0,s.jsx)(s.Fragment,{children:t});let a=t.toLowerCase(),o=e.toLowerCase(),n=a.indexOf(o);return n===-1?(0,s.jsx)(s.Fragment,{children:t}):(0,s.jsxs)(s.Fragment,{children:[t.slice(0,n),(0,s.jsx)("span",{className:g.highlight,children:t.slice(n,n+e.length)}),t.slice(n+e.length)]})}var dt={get:g.methodGet,post:g.methodPost,put:g.methodPut,patch:g.methodPatch,delete:g.methodDelete};function zt({method:t}){let e=t.toLowerCase(),a=Object.prototype.hasOwnProperty.call(dt,e)?dt[e]:g.methodOther,o=ke(t);return(0,s.jsx)("span",{className:`${g.methodBadge} ${a}`,children:o})}var U={draggedId:null,dragOverId:null,dragOverPosition:null};function At(t,e){if(t.isFocused!==e.isFocused||t.positionInSet!==e.positionInSet||t.setSize!==e.setSize||t.node!==e.node||t.depth!==e.depth||t.isExpanded!==e.isExpanded||t.isSelected!==e.isSelected||t.searchQuery!==e.searchQuery||t.showIndentGuides!==e.showIndentGuides||t.canDragNode!==e.canDragNode||t.draggable!==e.draggable||t.showContextMenuButton!==e.showContextMenuButton||t.activeMenuNodeId===t.node.id!=(e.activeMenuNodeId===e.node.id))return!1;let a=t.dragState.draggedId===t.node.id,o=e.dragState.draggedId===e.node.id;if(a!==o)return!1;let n=t.dragState.dragOverId===t.node.id,l=e.dragState.dragOverId===e.node.id;return!(n!==l||n&&l&&t.dragState.dragOverPosition!==e.dragState.dragOverPosition||t.renderIcon!==e.renderIcon||t.renderLabel!==e.renderLabel||t.renderSuffix!==e.renderSuffix||t.renderNode!==e.renderNode||t.onToggle!==e.onToggle||t.onSelect!==e.onSelect||t.onNodeRef!==e.onNodeRef||t.onDragStart!==e.onDragStart||t.onDragOver!==e.onDragOver||t.onDragLeave!==e.onDragLeave||t.onDrop!==e.onDrop||t.onDragEnd!==e.onDragEnd||t.onContextMenu!==e.onContextMenu||t.onMoreClick!==e.onMoreClick)}function Ht(t){let{node:e,depth:a,onToggle:o,onSelect:n,onNodeRef:l,searchQuery:i,showIndentGuides:v,renderIcon:f,renderLabel:I,renderSuffix:c,renderNode:x,draggable:M,dragState:b,canDragNode:P,onDragStart:Y,onDragOver:te,onDragLeave:re,onDrop:k,onDragEnd:G,showContextMenuButton:S,activeMenuNodeId:D,onContextMenu:se,onMoreClick:xe}=t,{isExpanded:j,isSelected:be}=t,fe=(e.children?.length??0)>0,O=fe,De=!fe,ce=b.draggedId===e.id,X=b.dragOverId===e.id,K=X?b.dragOverPosition:null,q=e.metadata,Z=typeof q?.method=="string"?q.method:void 0,ve=q?.deprecated===!0,Ae=q?.required===!0,F=typeof q?.kind=="string"?q.kind:void 0,ee={node:e,depth:a,isExpanded:j,isSelected:be,isBranch:O,isLeaf:De,isDragging:ce,isDragOver:X,dragOverPosition:K},he=(0,p.useCallback)(()=>{O?o(e.id):n(e)},[O,e,n,o]),W=(0,p.useCallback)(T=>{T.target===T.currentTarget&&(T.key==="Enter"||T.key===" "?(T.preventDefault(),he()):(T.key==="ArrowRight"&&O&&!j||T.key==="ArrowLeft"&&O&&j)&&(T.preventDefault(),T.stopPropagation(),o(e.id)))},[he,O,j,e.id,o]),B=f?f(ee):Z?null:(0,s.jsx)("span",{className:g.nodeIcon,children:F==="section"&&q?.section==="components"?(0,s.jsx)(N.LuBraces,{size:14}):F==="section"&&q?.section==="webhooks"?(0,s.jsx)(N.LuZap,{size:14}):F==="schema"||F==="component"||F==="object"?(0,s.jsx)(N.LuBraces,{size:14}):F==="array"||F==="items"?(0,s.jsx)(N.LuList,{size:14}):O?j?(0,s.jsx)(N.LuFolderOpen,{size:14}):(0,s.jsx)(N.LuFolder,{size:14}):Z&&(0,s.jsx)(zt,{method:Z})}),ge=I?I(ee):(0,s.jsx)("span",{className:`${g.nodeLabel} ${O?g.nodeLabelBranch:""} ${ve?g.deprecatedLabel:""}`,children:(0,s.jsx)(Bt,{text:e.name,query:i})}),Ce=c?c(ee):null,le=[g.nodeRow,O?g.branchControl:g.leafItem,be?g.nodeRowSelected:"",ce?g.nodeDragging:"",X&&K==="before"?g.dropIndicatorBefore:"",X&&K==="after"?g.dropIndicatorAfter:"",X&&K==="child"?g.dropIndicatorChild:"",F?`pde-tree-kind-${F}`:""].filter(Boolean).join(" "),Re=(0,p.useCallback)(T=>l(e.id,T),[e.id,l]),C=(0,s.jsxs)("div",{ref:Re,className:le,style:{paddingLeft:`${Math.min(a,20)*12+4}px`},"data-node-id":e.id,role:"treeitem","aria-expanded":O?j:void 0,"aria-label":Z?`${ke(Z)} ${e.name}`:e.name,"aria-selected":be,"aria-level":a+1,"aria-posinset":t.positionInSet,"aria-setsize":t.setSize,"aria-grabbed":M&&P?ce:void 0,tabIndex:t.isFocused?0:-1,onFocus:()=>t.onFocusNode(e.id),onClick:he,onKeyDown:W,onContextMenu:S?T=>se(e,T):void 0,onDragOver:M?T=>te(e,T):void 0,onDragLeave:M?()=>re(e):void 0,onDrop:M?T=>k(e,T):void 0,children:[v&&a>1&&Array.from({length:Math.min(a-1,20)},(T,oe)=>(0,s.jsx)("span",{className:g.indentGuide,style:{left:`${(oe+1)*12+11}px`}},`guide-${oe}`)),M&&P?(0,s.jsx)("span",{className:g.dragHandle,style:{left:`${Math.min(a,20)*12+4}px`},draggable:!0,onDragStart:T=>Y(e,T),onDragEnd:G,title:"Drag to reorder","aria-label":"Drag to reorder",children:(0,s.jsx)(Lt,{})}):null,O?(0,s.jsx)(Rt,{expanded:j}):(0,s.jsx)("span",{className:g.expandIconPlaceholder}),B,ge,Ae&&(0,s.jsx)("span",{className:g.requiredDot,title:"Required"}),(0,s.jsx)("span",{className:g.nodeSuffix,children:Ce}),S&&(0,s.jsx)("button",{type:"button",className:[g.moreButton,D===e.id?g.moreButtonActive:""].filter(Boolean).join(" "),onClick:T=>xe(e,T),title:"More actions","aria-label":`More actions for ${e.name}`,"aria-haspopup":"menu","aria-expanded":D===e.id,tabIndex:-1,children:(0,s.jsx)(Pt,{})})]}),Ee=x?x(ee,C):C;return(0,s.jsx)(s.Fragment,{children:Ee})}var Gt=(0,p.memo)(Ht,At),it=(0,p.forwardRef)(function(e,a){let{nodes:o,onSelect:n,onExpandedChange:l,defaultExpandedIds:i,defaultExpandDepth:v=1,searchable:f=!1,searchPlaceholder:I="Search...",showExpandAll:c=!1,showRefresh:x=!1,onRefresh:M,toolbar:b,searchRowExtra:P,renderNode:Y,renderIcon:te,renderLabel:re,renderSuffix:k,className:G,style:S,size:D="sm",variant:se="default",showIndentGuides:xe=!0,maxHeight:j,rootRef:be,draggable:fe=!1,dragGroupKey:O,onReorder:De,onMove:ce,canDrag:X,canDrop:K,contextMenuItems:q,onContextMenuOpen:Z,onPatch:ve,theme:Ae,virtualized:F="auto"}=e,[ee,he]=(0,p.useState)(null),[W,B]=(0,p.useState)(U),[ge,Ce]=(0,p.useState)(null),le=(0,p.useRef)(null),Re=(0,p.useId)(),C=(0,p.useMemo)(()=>nt(o),[o]),[Ee,T]=(0,p.useState)({top:0,height:400}),[oe,Te]=(0,p.useState)(null),[He,_e]=(0,p.useState)(null),y=Pe(o,{defaultExpandedIds:i,defaultExpandDepth:v,onExpandedChange:l}),L=Oe(o),Ke=L.isSearching?y.allBranchIds:L.expandedBeforeSearch??y.expandedIds,we=(0,p.useMemo)(()=>new Set(Ke),[Ke]),R=(0,p.useMemo)(()=>{let r=[],d=new Set,u=L.filteredNodes.map((h,m,w)=>({node:h,depth:0,parentId:null,positionInSet:m+1,setSize:w.length})).reverse();for(;u.length;){let h=u.pop();if(!d.has(h.node.id)&&(d.add(h.node.id),r.push(h),we.has(h.node.id))){let m=h.node.children??[];for(let w=m.length-1;w>=0;w--)u.push({node:m[w],depth:h.depth+1,parentId:h.node.id,positionInSet:w+1,setSize:m.length})}}return r},[L.filteredNodes,we]),ye=(0,p.useMemo)(()=>new Map(R.map((r,d)=>[r.node.id,d])),[R]),pe=D==="xs"?24:D==="md"?32:28,ne=F!==!1&&se!=="doc"&&!Y&&(F===!0||R.length>500),me=ne?Math.max(0,Math.min(Math.floor(Ee.top/pe)-8,R.length-1)):0,Ie=ne?Math.min(R.length,me+Math.ceil(Ee.height/pe)+16):R.length,Ve=R.slice(me,Ie);(0,p.useEffect)(()=>{let r=le.current;if(!r)return;let d=()=>T({top:r.scrollTop,height:r.clientHeight||400});d();let u=typeof ResizeObserver>"u"?void 0:new ResizeObserver(d);return u?.observe(r),()=>u?.disconnect()},[]),(0,p.useEffect)(()=>{if(!oe)return;let r=ye.get(oe.id);if(r===void 0){Te(null);return}let d=le.current;if(ne&&d&&(r<me||r>=Ie)){let h=d.clientHeight||400,m=Math.min(r*pe,Math.max(0,R.length*pe-h));d.scrollTop=m,T(w=>({...w,top:d.scrollTop}));return}let u=y.nodeElementRefs.current.get(oe.id);oe.focus&&u?.focus({preventScroll:!0}),u?.scrollIntoView?.({block:"nearest"}),Te(null)},[oe,ye,ne,pe,me,Ie,R.length,y.nodeElementRefs]);let Ge=He===null?void 0:ye.get(He),st=Ge!==void 0&&Ge>=me&&Ge<Ie?He:Ve[0]?.node.id,qe=(0,p.useRef)({query:"",time:0}),ct=r=>{if(!(r.target instanceof HTMLElement)||r.target.getAttribute("role")!=="treeitem")return;let d=ye.get(r.target.dataset.nodeId??"");if(d===void 0)return;let u=R[d],h=d;if(r.key==="ArrowDown")h=Math.min(d+1,R.length-1);else if(r.key==="ArrowUp")h=Math.max(0,d-1);else if(r.key==="Home")h=0;else if(r.key==="End")h=R.length-1;else if(r.key==="ArrowRight"&&u.node.children?.length&&we.has(u.node.id))h=Math.min(d+1,R.length-1);else if(r.key==="ArrowLeft"&&(!u.node.children?.length||!we.has(u.node.id)))h=ye.get(u.parentId??"")??d;else if(r.key==="ContextMenu"||r.shiftKey&&r.key==="F10"){let w=r.target.getBoundingClientRect();r.preventDefault(),Se(u.node,w.left+24,w.bottom);return}else if(r.key.length===1&&r.key!==" "&&!r.ctrlKey&&!r.metaKey&&!r.altKey){let w=Date.now(),Q=w-qe.current.time<600?qe.current.query+r.key.toLowerCase():r.key.toLowerCase();qe.current={query:Q,time:w};for(let z=1;z<=R.length;z++){let A=(d+z)%R.length;if(R[A].node.name.toLowerCase().startsWith(Q)){h=A;break}}}else return;r.preventDefault();let m=R[h].node.id;_e(m),Te({id:m,focus:!0})};(0,p.useEffect)(()=>{le.current&&(le.current.scrollTop=0),T(r=>({...r,top:0}))},[L.deferredQuery]);let lt=(0,p.useCallback)(r=>{he(r.id),n?.(r)},[n]),pt=(0,p.useCallback)(r=>{!r.trim()&&L.expandedBeforeSearch&&y.setExpandedIds(L.expandedBeforeSearch),L.handleQueryChange(r,y.expandedIds)},[y.expandedIds,L]),Ne=(0,p.useCallback)(r=>!fe||r.metadata?.kind==="section"?!1:X?X(r):!0,[X,fe]),Me=(0,p.useCallback)((r,d,u)=>{if(r.id===d.id||!Ne(r)||C.path(d.id)?.ancestorIds.includes(r.id))return!1;if(O){let m=z=>{let A=C.path(z)?.nodes??[];for(let V=A.length-1;V>=0;V--){let $=A[V]?.metadata;if($&&typeof $=="object"&&Object.prototype.hasOwnProperty.call($,O))return $[O]}},w=m(r.id),Q=m(d.id);if(w!==void 0&&Q!==void 0&&w!==Q)return!1}return!K||K(r,d,u)},[Ne,K,O,C]),ut=(0,p.useCallback)((r,d)=>{if(!Ne(r)){d.preventDefault();return}d.dataTransfer.effectAllowed="move",d.dataTransfer.setData("text/plain",r.id),B({draggedId:r.id,dragOverId:null,dragOverPosition:null})},[Ne]),ft=(0,p.useCallback)((r,d)=>{if(!W.draggedId||W.draggedId===r.id)return;d.dataTransfer.dropEffect="none";let u=C.byId.get(W.draggedId)?.node;if(!u){B(H=>H.dragOverId===null?H:{...H,dragOverId:null,dragOverPosition:null});return}let h=d.currentTarget.getBoundingClientRect(),m=(d.clientY-h.top)/h.height,w=(r.children?.length??0)>0,Q=m<.5?"before":"after",z,A;m<.25?(z=["before","after"],A=1):m>.75?(z=["after","before"],A=1):(z=[Q],A=0);let V=K?Me(u,r,"child"):!1;(w||V)&&z.splice(A,0,"child");let $=z.find(H=>Me(u,r,H));if(!$){B(H=>H.dragOverId===null?H:{...H,dragOverId:null,dragOverPosition:null});return}d.preventDefault(),d.dataTransfer.dropEffect="move",B(H=>H.dragOverId===r.id&&H.dragOverPosition===$?H:{...H,dragOverId:r.id,dragOverPosition:$})},[Me,K,W.draggedId,C]),ht=(0,p.useCallback)(r=>{B(d=>d.dragOverId!==r.id?d:{...d,dragOverId:null,dragOverPosition:null})},[]),gt=(0,p.useCallback)((r,d)=>{d.preventDefault();let u=W.draggedId,h=W.dragOverPosition;if(!u||!h||u===r.id||W.dragOverId!==r.id){B(U);return}let m=C.byId.get(u)?.node;if(!m||!Me(m,r,h)){B(U);return}if(h==="child"){let ue=C.path(u)?.target;if(!ue){B(U);return}let Ue=Qe(o,u,r.id);Ue&&ce?.(Ue,ue,r.id),B(U);return}let w=C.path(r.id);if(!w){B(U);return}let Q=w.parent?.children??o,z=Q.findIndex(_=>_.id===r.id);if(z===-1){B(U);return}let A=h==="before"?z:z+1,V=C.path(u),$=w.parent?.id??null;if((V?.parent?.id??null)!==$){let _=V?.target,ue=Qe(o,u,$,A);ue&&_&&ce?.(ue,_,$),B(U);return}if(V&&V.parent===w.parent){let _=Q.findIndex(ue=>ue.id===u);_!==-1&&_<A&&(A-=1)}let ae=tt(o,u,A);if(ae&&ae.fromIndex!==ae.toIndex&&(De?.(ae),ve)){let _=Ot(ae.moved,ae.fromIndex,ae.toIndex,Q);_.length>0&&ve(_,{node:ae.moved,type:"reorder"})}B(U)},[W,o,C,Me,ce,ve,De]),mt=(0,p.useCallback)(()=>{B(U)},[]),Se=(0,p.useCallback)((r,d,u)=>{if(q){let h=q(r);if(h.length===0)return;let m=y.nodeElementRefs.current.get(r.id);m&&Ce({x:d,y:u,node:r,items:h,anchor:m});return}Z?.({node:r,x:d,y:u})},[q,Z,y.nodeElementRefs]),xt=(0,p.useCallback)(()=>{Ce(null)},[]),bt=(0,p.useCallback)((r,d)=>{d.preventDefault(),Se(r,d.clientX,d.clientY)},[Se]),vt=(0,p.useCallback)((r,d)=>{d.stopPropagation();let u=d.currentTarget.getBoundingClientRect();Se(r,u.left,u.bottom+4)},[Se]),Je=(0,p.useCallback)(r=>{let d=C.path(r);if(!d)return;let u=d.ancestorIds;y.setExpandedIds([...new Set([...y.expandedIds,...u])]),L.clearSearch(),Te({id:r,focus:!1})},[y,C,L.clearSearch]);(0,p.useImperativeHandle)(a,()=>({expandAll:y.expandAll,collapseAll:y.collapseAll,expandToDepth:y.expandToDepth,getExpandedIds:()=>y.expandedIds,getSelectedNode:()=>ee?C.path(ee)?.target:void 0,scrollToNode:Je,locateNode:r=>{let d=[...o],u=new Set;for(let h=0;h<d.length;h++){let m=d[h];if(!(!m||u.has(m))){if(u.add(m),r(m)){let w=C.path(m.id);return w&&y.setExpandedIds([...new Set([...y.expandedIds,...w.ancestorIds])]),L.clearSearch(),he(m.id),Te({id:m.id,focus:!1}),m}if(m.children?.length)for(let w of m.children)d.push(w)}}}}),[y,Je,ee,o,C,L.clearSearch]);let Tt=(0,p.useMemo)(()=>({...S,...j!==void 0?{maxHeight:j}:{}}),[S,j]),wt=[g.root,se!=="default"?`pde-tree-variant-${se}`:"",G].filter(Boolean).join(" ");return(0,s.jsxs)("div",{ref:be,className:wt,style:Tt,"data-size":D,"data-theme":Ae,children:[b&&(0,s.jsx)("div",{className:g.toolbar,children:b}),(f||c||x||P)&&(0,s.jsxs)("div",{className:g.searchRow,children:[f&&(0,s.jsxs)("div",{className:g.searchInputWrap,children:[(0,s.jsx)("span",{className:g.searchIcon,children:(0,s.jsx)(Et,{})}),(0,s.jsx)("input",{className:g.searchInput,type:"search","aria-controls":Re,placeholder:I,value:L.query,onChange:r=>pt(r.target.value),"aria-label":"Search tree"})]}),P,c&&(0,s.jsx)("button",{type:"button",className:g.iconButton,onClick:y.isAllExpanded?y.collapseAll:y.expandAll,title:y.isAllExpanded?"Collapse all":"Expand all","aria-label":y.isAllExpanded?"Collapse all":"Expand all",children:y.isAllExpanded?(0,s.jsx)(ze.MdUnfoldLess,{size:16,"aria-hidden":"true"}):(0,s.jsx)(ze.MdOutlineUnfoldMore,{size:16,"aria-hidden":"true"})}),x&&(0,s.jsx)("button",{type:"button",className:g.iconButton,onClick:M,title:"Refresh","aria-label":"Refresh",children:(0,s.jsx)(N.LuRefreshCw,{size:14,"aria-hidden":"true"})})]}),(0,s.jsx)("div",{ref:le,className:g.treeContainer,"data-virtualized":ne||void 0,onScroll:r=>{ne&&T({top:r.currentTarget.scrollTop,height:r.currentTarget.clientHeight||400})},id:Re,role:"tree",onKeyDown:ct,"aria-label":"Tree navigation",children:L.filteredNodes.length===0?(0,s.jsx)("div",{className:g.emptyState,children:L.isSearching?"No matching results":"No items"}):(0,s.jsxs)(s.Fragment,{children:[ne&&(0,s.jsx)("div",{role:"presentation",style:{height:me*pe}}),Ve.map(({node:r,depth:d,positionInSet:u,setSize:h})=>(0,s.jsx)(Gt,{node:r,depth:d,positionInSet:u,setSize:h,isFocused:r.id===st,onFocusNode:_e,isExpanded:we.has(r.id),isSelected:ee===r.id,onToggle:y.toggleNode,onSelect:lt,onNodeRef:y.setNodeElementRef,searchQuery:L.deferredQuery,showIndentGuides:xe,renderIcon:te,renderLabel:re,renderSuffix:k,renderNode:Y,draggable:fe,dragState:W,canDragNode:Ne(r),onDragStart:ut,onDragOver:ft,onDragLeave:ht,onDrop:gt,onDragEnd:mt,showContextMenuButton:!!(q||Z),activeMenuNodeId:ge?.node.id??null,onContextMenu:bt,onMoreClick:vt},r.id)),ne&&(0,s.jsx)("div",{role:"presentation",style:{height:(R.length-Ie)*pe}})]})}),ge&&(0,s.jsx)(ot,{state:ge,onClose:xt},ge.node.id)]})});0&&(module.exports={METHOD_LABEL_MAP,Tree,getMethodLabel,useTreeExpansion,useTreeSearch});
|
|
1
|
+
"use strict";var Ke=Object.defineProperty;var Ot=Object.getOwnPropertyDescriptor;var Bt=Object.getOwnPropertyNames;var zt=Object.prototype.hasOwnProperty;var Ht=(t,e)=>{for(var a in e)Ke(t,a,{get:e[a],enumerable:!0})},Ft=(t,e,a,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Bt(e))!zt.call(t,n)&&n!==a&&Ke(t,n,{get:()=>e[n],enumerable:!(o=Ot(e,n))||o.enumerable});return t};var Gt=t=>Ft(Ke({},"__esModule",{value:!0}),t);var Zt={};Ht(Zt,{DEFAULT_TREE_LABELS:()=>Fe,METHOD_LABEL_MAP:()=>Ge,Tree:()=>ut,getMethodLabel:()=>Ee,useTreeExpansion:()=>ze,useTreeSearch:()=>He});module.exports=Gt(Zt);var c=require("react");function*Ue(t,e=1/0){let a=new Set,o=[];for(let n=t.length-1;n>=0;n--)o.push({node:t[n],depth:1});for(;o.length;){let n=o.pop();if(a.has(n.node)||n.depth>e)continue;a.add(n.node),yield n;let p=n.node.children??[];for(let i=p.length-1;i>=0;i--)o.push({node:p[i],parent:n,depth:n.depth+1})}}function Qe(t,e){for(let{node:a}of Ue(t))if(a.id===e)return a}function qt(t,e,a=[]){for(let o of Ue(t)){if(o.node.id!==e)continue;let n=[],p=o;for(;p;)n.push(p.node),p=p.parent;n.reverse();let i=[...a,...n];return{nodes:i,target:o.node,parent:i[i.length-2],ancestorIds:i.slice(0,-1).map(T=>T.id)}}return null}var tr=new Intl.Collator("en-US",{numeric:!0,sensitivity:"base"});function Ve(t,e,a=()=>!0){let o=new Set,n=new Map,p=[{source:t,output:[],index:0}];for(;p.length;){let i=p[p.length-1];if(i.index<i.source.length){let l=i.source[i.index++];if(o.has(l))continue;if(n.has(l)){let x=n.get(l);x&&i.output.push(x)}else if(l.children?.length&&a(l))o.add(l),p.push({source:l.children,output:[],index:0,owner:l});else{let x=e(l);n.set(l,x),x&&i.output.push(x)}continue}p.pop();let T=i.source.length===i.output.length&&i.source.every((l,x)=>l===i.output[x])?i.source:i.output;if(!i.owner)return T;let h=i.owner,N=e(T===h.children?h:{...h,children:T});o.delete(h),n.set(h,N),N&&p[p.length-1].output.push(N)}return t}function rt(t,e){let a=e.query.trim().toLowerCase();return a?Ve(t,o=>o.name.toLowerCase().includes(a)||o.id.toLowerCase().includes(a)||(e.keepAncestors??!0)&&o.children?.length?o:null):t}function Be(t,e={}){let a=[];for(let{node:o,depth:n}of Ue(t,e.maxDepth??1/0))n<=(e.maxDepth??1/0)&&(!(e.onlyWithChildren??!0)||o.children?.length)&&a.push(o.id);return a}function ot(t){return Be(t)}function nt(t,e,a){return Ve(t,o=>o.id===e?a(o):o,o=>o.id!==e)}function jt(t,e){return Ve(t,a=>a.id===e?null:a,a=>a.id!==e)}function at(t,e){return Math.max(0,Math.min(Number.isNaN(t)?0:Math.trunc(t),e))}function dt(t,e,a){let o=qt(t,e);if(!o)return null;let n=o.parent?.children??t,p=n.indexOf(o.target),i=at(a,n.length-1),T={nodes:t,moved:o.target,parentId:o.parent?.id??null,fromIndex:p,toIndex:i};if(i===p)return T;let h=[...n];return h.splice(p,1),h.splice(i,0,o.target),{...T,nodes:o.parent?nt(t,o.parent.id,N=>({...N,children:h})):h}}function Je(t,e,a,o){let n=Qe(t,e);if(!n||a!==null&&(!Qe(t,a)||Qe([n],a)))return null;let p=jt(t,e),i=T=>{let h=[...T];return h.splice(at(o??h.length,h.length),0,n),h};return a===null?i(p):nt(p,a,T=>({...T,children:i(T.children??[])}))}var de=require("react"),it=require("react-dom"),ae=require("react/jsx-runtime");function st({state:t,onClose:e}){let a=(0,de.useRef)(null),[o,n]=(0,de.useState)(null),[p,i]=(0,de.useState)({left:t.x,top:t.y}),[T,h]=(0,de.useState)({}),N=t.anchor.closest("dialog")??t.anchor.ownerDocument.body;return(0,de.useLayoutEffect)(()=>{let l=t.anchor.closest(".pde-tree-root")??t.anchor,x=getComputedStyle(l),I={};for(let k=0;k<x.length;k++){let F=x.item(k);(F.startsWith("--tree-")||F.startsWith("--color-")||F.startsWith("--radius-")||F.startsWith("--font-")||F.startsWith("--shadow-"))&&(I[F]=x.getPropertyValue(F))}h(I);let v=a.current;if(!v)return;let P=()=>{let k=v.getBoundingClientRect();i({left:Math.max(8,Math.min(t.x,document.documentElement.clientWidth-k.width-8)),top:Math.max(8,Math.min(t.y,document.documentElement.clientHeight-k.height-8))})};P();let Y=typeof ResizeObserver>"u"?void 0:new ResizeObserver(P);Y?.observe(v),v.querySelector("button:not(:disabled)")?.focus();let X=k=>{k.target instanceof Node&&!v.contains(k.target)&&e()},te=k=>{k.target instanceof Node&&!v.contains(k.target)&&e()};return document.addEventListener("pointerdown",X),document.addEventListener("scroll",te,!0),window.addEventListener("resize",e),()=>{Y?.disconnect(),document.removeEventListener("pointerdown",X),document.removeEventListener("scroll",te,!0),window.removeEventListener("resize",e),v.contains(document.activeElement)&&t.anchor.isConnected&&t.anchor.focus({preventScroll:!0})}},[t,e]),(0,it.createPortal)((0,ae.jsx)("div",{ref:a,className:"pde-tree-contextMenu",style:{...T,...p},role:"menu","aria-label":t.ariaLabel??`Actions for ${t.node.name}`,tabIndex:-1,onKeyDown:l=>{let x=a.current;if(!x)return;let I=Array.from(x.querySelectorAll("button:not(:disabled)")),v=I.indexOf(document.activeElement);if(l.key==="Escape"||l.key==="Tab"){l.key==="Escape"&&l.preventDefault(),l.stopPropagation(),e();return}let P;if(l.key==="ArrowDown")P=(v+1)%I.length;else if(l.key==="ArrowUp")P=(v-1+I.length)%I.length;else if(l.key==="Home")P=0;else if(l.key==="End")P=I.length-1;else return;l.preventDefault(),I[P]?.focus()},children:t.items.map((l,x)=>(0,ae.jsxs)("div",{role:"presentation",children:[l.separator&&(0,ae.jsx)("div",{className:"pde-tree-contextMenuSeparator",role:"separator"}),(0,ae.jsxs)("button",{type:"button",role:"menuitem",tabIndex:-1,disabled:l.disabled,className:`pde-tree-contextMenuItem${l.danger?" pde-tree-contextMenuItemDanger":""}${o===x?" pde-tree-contextMenuItemConfirming":""}`,onClick:()=>{if(l.confirm&&o!==x){n(x);return}e(),l.onClick(t.node)},children:[l.icon&&(0,ae.jsx)("span",{className:"pde-tree-contextMenuIcon","aria-hidden":"true",children:l.icon}),(0,ae.jsx)("span",{children:l.confirm&&o===x?l.confirmLabel??t.confirmLabel??"Confirm?":l.label})]})]},`${l.label}-${x}`))}),N)}var E=require("react");function ze(t,e={}){let{defaultExpandedIds:a,defaultExpandDepth:o=1,onExpandedChange:n}=e,p=(0,E.useMemo)(()=>a!==void 0?[...a]:o<=1?[]:Be(t,{maxDepth:o-1,onlyWithChildren:!0}),[]),[i,T]=(0,E.useState)(p),h=(0,E.useRef)(new Map),N=(0,E.useMemo)(()=>ot(t),[t]),l=(0,E.useMemo)(()=>new Set(i),[i]),x=(0,E.useRef)(i);x.current=i;let I=(0,E.useMemo)(()=>N.length>0&&N.every(S=>l.has(S)),[N,l]),v=(0,E.useCallback)(S=>{x.current=S,T(S),n?.(S)},[n]),P=(0,E.useCallback)(S=>{let C=x.current,se=C.includes(S)?C.filter(ce=>ce!==S):[...C,S];v(se)},[v]),Y=(0,E.useCallback)(()=>{v([...N])},[N,v]),X=(0,E.useCallback)(()=>{v([])},[v]),te=(0,E.useCallback)(S=>{let C=Be(t,{maxDepth:S,onlyWithChildren:!0});v(C)},[t,v]),k=(0,E.useCallback)((S,C)=>{C?h.current.set(S,C):h.current.delete(S)},[]),F=(0,E.useCallback)(S=>{let C=h.current.get(S);C&&C.scrollIntoView?.({behavior:"auto",block:"nearest"})},[]);return{expandedIds:i,setExpandedIds:v,toggleNode:P,expandAll:Y,collapseAll:X,expandToDepth:te,isAllExpanded:I,allBranchIds:N,setNodeElementRef:k,scrollToNode:F,nodeElementRefs:h}}var V=require("react");function He(t){let[e,a]=(0,V.useState)(""),o=(0,V.useDeferredValue)(e),[n,p]=(0,V.useState)(null),i=o.trim().length>0,T=(0,V.useMemo)(()=>i?rt(t,{query:o,keepAncestors:!0}):t,[t,o,i]),h=(0,V.useCallback)((l,x)=>{let I=e.trim(),v=l.trim();!I&&v&&p(x),I&&!v&&p(null),a(l)},[e]),N=(0,V.useCallback)(()=>{a(""),p(null)},[]);return{query:e,deferredQuery:o,isSearching:i,filteredNodes:T,expandedBeforeSearch:n,handleQueryChange:h,clearSearch:N}}var Fe={search:"Search...",searchTree:"Search tree",expandAll:"Expand all",collapseAll:"Collapse all",refresh:"Refresh",dragToReorder:"Drag to reorder",required:"Required",moreActions:"More actions",moreActionsFor:"More actions for {{name}}",treeNavigation:"Tree navigation",contextMenuFor:"Actions for {{name}}",confirmAction:"Confirm?",noResults:"No matching results",noItems:"No items"};function ct(t){let e=new Map,a=new Set,o=t.map(n=>({node:n,parentId:null})).reverse();for(;o.length;){let n=o.pop();if(a.has(n.node)||e.has(n.node.id))continue;a.add(n.node),e.set(n.node.id,n);let p=n.node.children??[];for(let i=p.length-1;i>=0;i--)o.push({node:p[i],parentId:n.node.id})}return{byId:e,path(n){let p=e.get(n);if(!p)return null;let i=[p.node],T=p.parentId;for(;T!==null;){let h=e.get(T);if(!h)break;i.push(h.node),T=h.parentId}return i.reverse(),{nodes:i,target:p.node,parent:i[i.length-2],ancestorIds:i.slice(0,-1).map(h=>h.id)}}}}var Ge={get:"GET",post:"POST",put:"PUT",delete:"DEL",patch:"PAT",head:"HEAD",options:"OPT",trace:"TRC",connect:"CON"};function Ee(t){let e=t.toLowerCase().trim();return Object.prototype.hasOwnProperty.call(Ge,e)?Ge[e]:e.slice(0,4).toUpperCase()}var M=require("react-icons/lu"),qe=require("react-icons/md"),s=require("react/jsx-runtime"),m={branchControl:"pde-tree-branchControl",deprecatedLabel:"pde-tree-deprecatedLabel",dragHandle:"pde-tree-dragHandle",dropIndicatorAfter:"pde-tree-dropIndicatorAfter",dropIndicatorBefore:"pde-tree-dropIndicatorBefore",dropIndicatorChild:"pde-tree-dropIndicatorChild",emptyState:"pde-tree-emptyState",expandIcon:"pde-tree-expandIcon",expandIconPlaceholder:"pde-tree-expandIconPlaceholder",highlight:"pde-tree-highlight",iconButton:"pde-tree-iconButton",indentGuide:"pde-tree-indentGuide",leafItem:"pde-tree-leafItem",methodBadge:"pde-tree-methodBadge",methodDelete:"pde-tree-methodDelete",methodGet:"pde-tree-methodGet",methodOther:"pde-tree-methodOther",methodPatch:"pde-tree-methodPatch",methodPost:"pde-tree-methodPost",methodPut:"pde-tree-methodPut",moreButton:"pde-tree-moreButton",moreButtonActive:"pde-tree-moreButtonActive",nodeDragging:"pde-tree-nodeDragging",nodeIcon:"pde-tree-nodeIcon",primitiveDot:"pde-tree-primitiveDot",nodeLabel:"pde-tree-nodeLabel",nodeLabelBranch:"pde-tree-nodeLabelBranch",nodeRow:"pde-tree-nodeRow",nodeRowSelected:"pde-tree-nodeRowSelected",nodeSuffix:"pde-tree-nodeSuffix",requiredDot:"pde-tree-requiredDot",root:"pde-tree-root",searchIcon:"pde-tree-searchIcon",searchInput:"pde-tree-searchInput",searchInputWrap:"pde-tree-searchInputWrap",searchRow:"pde-tree-searchRow",toolbar:"pde-tree-toolbar",treeContainer:"pde-tree-treeContainer"};function _t({expanded:t}){return(0,s.jsx)("span",{className:m.expandIcon,children:t?(0,s.jsx)(M.LuChevronDown,{size:14}):(0,s.jsx)(M.LuChevronRight,{size:14})})}function $t(){return(0,s.jsx)(M.LuSearch,{size:14,"aria-hidden":"true"})}function Wt(){return(0,s.jsx)(M.LuGripVertical,{size:14,"aria-hidden":"true"})}function Kt(){return(0,s.jsx)(M.LuEllipsisVertical,{size:14,"aria-hidden":"true"})}function lt(t){let a=t.metadata?.jsonPath;if(Array.isArray(a)&&a.length>0&&a.every(o=>typeof o=="string"||typeof o=="number"&&Number.isInteger(o)&&o>=0))return a}function Qt(t,e,a,o){let n=lt(t);if(!n||n.length===0)return[];let p=JSON.stringify(n.slice(0,-1));if(!o.every((T,h)=>{let N=lt(T);return N&&N[N.length-1]===h&&JSON.stringify(N.slice(0,-1))===p}))return[];let i=n.slice(0,-1);return[{op:"move",from:[...i,e],path:[...i,a]}]}function Ut({text:t,query:e}){if(!e)return(0,s.jsx)(s.Fragment,{children:t});let a=t.toLowerCase(),o=e.toLowerCase(),n=a.indexOf(o);return n===-1?(0,s.jsx)(s.Fragment,{children:t}):(0,s.jsxs)(s.Fragment,{children:[t.slice(0,n),(0,s.jsx)("span",{className:m.highlight,children:t.slice(n,n+e.length)}),t.slice(n+e.length)]})}var pt={get:m.methodGet,post:m.methodPost,put:m.methodPut,patch:m.methodPatch,delete:m.methodDelete};function Vt({method:t}){let e=t.toLowerCase(),a=Object.prototype.hasOwnProperty.call(pt,e)?pt[e]:m.methodOther,o=Ee(t);return(0,s.jsx)("span",{className:`${m.methodBadge} ${a}`,children:o})}var J={draggedId:null,dragOverId:null,dragOverPosition:null};function ie(t){let e=(0,c.useRef)(t);return(0,c.useLayoutEffect)(()=>{e.current=t},[t]),(0,c.useCallback)(((...a)=>e.current(...a)),[])}function Jt(t,e){if(t.isFocused!==e.isFocused||t.positionInSet!==e.positionInSet||t.setSize!==e.setSize||t.node!==e.node||t.depth!==e.depth||t.isExpanded!==e.isExpanded||t.isSelected!==e.isSelected||t.searchQuery!==e.searchQuery||t.showIndentGuides!==e.showIndentGuides||t.canDragNode!==e.canDragNode||t.draggable!==e.draggable||t.showContextMenuButton!==e.showContextMenuButton||t.activeMenuNodeId===t.node.id!=(e.activeMenuNodeId===e.node.id))return!1;let a=t.dragState.draggedId===t.node.id,o=e.dragState.draggedId===e.node.id;if(a!==o)return!1;let n=t.dragState.dragOverId===t.node.id,p=e.dragState.dragOverId===e.node.id;return!(n!==p||n&&p&&t.dragState.dragOverPosition!==e.dragState.dragOverPosition||t.renderIcon!==e.renderIcon||t.renderLabel!==e.renderLabel||t.renderSuffix!==e.renderSuffix||t.renderNode!==e.renderNode||t.onToggle!==e.onToggle||t.onSelect!==e.onSelect||t.onNodeRef!==e.onNodeRef||t.onDragStart!==e.onDragStart||t.onDragOver!==e.onDragOver||t.onDragLeave!==e.onDragLeave||t.onDrop!==e.onDrop||t.onDragEnd!==e.onDragEnd||t.onContextMenu!==e.onContextMenu||t.onMoreClick!==e.onMoreClick||t.labels!==e.labels)}function Yt(t){let{node:e,depth:a,onToggle:o,onSelect:n,onNodeRef:p,searchQuery:i,showIndentGuides:T,renderIcon:h,renderLabel:N,renderSuffix:l,renderNode:x,draggable:I,dragState:v,canDragNode:P,onDragStart:Y,onDragOver:X,onDragLeave:te,onDrop:k,onDragEnd:F,showContextMenuButton:S,activeMenuNodeId:C,onContextMenu:se,onMoreClick:ce,labels:le}=t,{isExpanded:_,isSelected:xe}=t,he=(e.children?.length??0)>0,A=he,Ce=!he,pe=v.draggedId===e.id,Z=v.dragOverId===e.id,Q=Z?v.dragOverPosition:null,G=e.metadata,ee=typeof G?.method=="string"?G.method:void 0,Te=G?.deprecated===!0,je=G?.required===!0,q=typeof G?.kind=="string"?G.kind:void 0,R={node:e,depth:a,isExpanded:_,isSelected:xe,isBranch:A,isLeaf:Ce,isDragging:pe,isDragOver:Z,dragOverPosition:Q},ve=(0,c.useCallback)(()=>{A?o(e.id):n(e)},[A,e,n,o]),ge=(0,c.useCallback)(f=>{f.target===f.currentTarget&&(f.key==="Enter"||f.key===" "?(f.preventDefault(),ve()):(f.key==="ArrowRight"&&A&&!_||f.key==="ArrowLeft"&&A&&_)&&(f.preventDefault(),f.stopPropagation(),o(e.id)))},[ve,A,_,e.id,o]),Le=h?h(R):ee?null:(0,s.jsx)("span",{className:m.nodeIcon,children:q==="section"&&G?.section==="components"?(0,s.jsx)(M.LuBraces,{size:14}):q==="section"&&G?.section==="webhooks"?(0,s.jsx)(M.LuZap,{size:14}):q==="schema"||q==="component"||q==="object"?(0,s.jsx)(M.LuBraces,{size:14}):q==="array"||q==="items"?(0,s.jsx)(M.LuList,{size:14}):A?_?(0,s.jsx)(M.LuFolderOpen,{size:14}):(0,s.jsx)(M.LuFolder,{size:14}):ee&&(0,s.jsx)(Vt,{method:ee})}),$=N?N(R):(0,s.jsx)("span",{className:`${m.nodeLabel} ${A?m.nodeLabelBranch:""} ${Te?m.deprecatedLabel:""}`,children:(0,s.jsx)(Ut,{text:e.name,query:i})}),O=l?l(R):null,me=[m.nodeRow,A?m.branchControl:m.leafItem,xe?m.nodeRowSelected:"",pe?m.nodeDragging:"",Z&&Q==="before"?m.dropIndicatorBefore:"",Z&&Q==="after"?m.dropIndicatorAfter:"",Z&&Q==="child"?m.dropIndicatorChild:"",q?`pde-tree-kind-${q}`:""].filter(Boolean).join(" "),Pe=(0,c.useCallback)(f=>p(e.id,f),[e.id,p]),re=(0,s.jsxs)("div",{ref:Pe,className:me,style:{paddingLeft:`${Math.min(a,20)*12+4}px`},"data-node-id":e.id,role:"treeitem","aria-expanded":A?_:void 0,"aria-label":ee?`${Ee(ee)} ${e.name}`:e.name,"aria-selected":xe,"aria-level":a+1,"aria-posinset":t.positionInSet,"aria-setsize":t.setSize,"aria-grabbed":I&&P?pe:void 0,tabIndex:t.isFocused?0:-1,onFocus:()=>t.onFocusNode(e.id),onClick:ve,onKeyDown:ge,onContextMenu:S?f=>se(e,f):void 0,onDragOver:I?f=>X(e,f):void 0,onDragLeave:I?()=>te(e):void 0,onDrop:I?f=>k(e,f):void 0,children:[T&&a>1&&Array.from({length:Math.min(a-1,20)},(f,we)=>(0,s.jsx)("span",{className:m.indentGuide,style:{left:`${(we+1)*12+11}px`}},`guide-${we}`)),I&&P?(0,s.jsx)("span",{className:m.dragHandle,style:{left:`${Math.min(a,20)*12+4}px`},draggable:!0,onDragStart:f=>Y(e,f),onDragEnd:F,title:le.dragToReorder,"aria-label":le.dragToReorder,children:(0,s.jsx)(Wt,{})}):null,A?(0,s.jsx)(_t,{expanded:_}):(0,s.jsx)("span",{className:m.expandIconPlaceholder}),Le,$,je&&(0,s.jsx)("span",{className:m.requiredDot,title:le.required}),(0,s.jsx)("span",{className:m.nodeSuffix,children:O}),S&&(0,s.jsx)("button",{type:"button",className:[m.moreButton,C===e.id?m.moreButtonActive:""].filter(Boolean).join(" "),onClick:f=>ce(e,f),title:le.moreActions,"aria-label":le.moreActionsFor.split("{{name}}").join(e.name),"aria-haspopup":"menu","aria-expanded":C===e.id,tabIndex:-1,children:(0,s.jsx)(Kt,{})})]}),Ae=x?x(R,re):re;return(0,s.jsx)(s.Fragment,{children:Ae})}var Xt=(0,c.memo)(Yt,Jt),ut=(0,c.forwardRef)(function(e,a){let{nodes:o,onSelect:n,onExpandedChange:p,defaultExpandedIds:i,defaultExpandDepth:T=1,searchable:h=!1,searchPlaceholder:N,labels:l,showExpandAll:x=!1,showRefresh:I=!1,onRefresh:v,toolbar:P,searchRowExtra:Y,renderNode:X,renderIcon:te,renderLabel:k,renderSuffix:F,className:S,style:C,size:se="sm",variant:ce="default",showIndentGuides:le=!0,maxHeight:_,rootRef:xe,draggable:he=!1,dragGroupKey:A,onReorder:Ce,onMove:pe,canDrag:Z,canDrop:Q,contextMenuItems:G,onContextMenuOpen:ee,onPatch:Te,theme:je,virtualized:q="auto"}=e,R=(0,c.useMemo)(()=>({...Fe,...l}),[l]),ve=N??R.search,[ge,Le]=(0,c.useState)(null),[$,O]=(0,c.useState)(J),[me,Pe]=(0,c.useState)(null),re=(0,c.useRef)(null),Ae=(0,c.useId)(),f=(0,c.useMemo)(()=>ct(o),[o]),[we,Oe]=(0,c.useState)({top:0,height:400}),[ye,Ne]=(0,c.useState)(null),[_e,Ye]=(0,c.useState)(null),y=ze(o,{defaultExpandedIds:i,defaultExpandDepth:T,onExpandedChange:p}),L=He(o),Xe=L.isSearching?y.allBranchIds:L.expandedBeforeSearch??y.expandedIds,Ie=(0,c.useMemo)(()=>new Set(Xe),[Xe]),D=(0,c.useMemo)(()=>{let r=[],d=new Set,u=L.filteredNodes.map((g,b,w)=>({node:g,depth:0,parentId:null,positionInSet:b+1,setSize:w.length})).reverse();for(;u.length;){let g=u.pop();if(!d.has(g.node.id)&&(d.add(g.node.id),r.push(g),Ie.has(g.node.id))){let b=g.node.children??[];for(let w=b.length-1;w>=0;w--)u.push({node:b[w],depth:g.depth+1,parentId:g.node.id,positionInSet:w+1,setSize:b.length})}}return r},[L.filteredNodes,Ie]),Me=(0,c.useMemo)(()=>new Map(D.map((r,d)=>[r.node.id,d])),[D]),ue=se==="xs"?24:se==="md"?32:28,oe=q!==!1&&ce!=="doc"&&!X&&(q===!0||D.length>500),be=oe?Math.max(0,Math.min(Math.floor(we.top/ue)-8,D.length-1)):0,Se=oe?Math.min(D.length,be+Math.ceil(we.height/ue)+16):D.length,Ze=D.slice(be,Se);(0,c.useEffect)(()=>{let r=re.current;if(!r)return;let d=()=>Oe({top:r.scrollTop,height:r.clientHeight||400});d();let u=typeof ResizeObserver>"u"?void 0:new ResizeObserver(d);return u?.observe(r),()=>u?.disconnect()},[]),(0,c.useEffect)(()=>{if(!ye)return;let r=Me.get(ye.id);if(r===void 0){Ne(null);return}let d=re.current;if(oe&&d&&(r<be||r>=Se)){let g=d.clientHeight||400,b=Math.min(r*ue,Math.max(0,D.length*ue-g));d.scrollTop=b,Oe(w=>({...w,top:d.scrollTop}));return}let u=y.nodeElementRefs.current.get(ye.id);ye.focus&&u?.focus({preventScroll:!0}),u?.scrollIntoView?.({block:"nearest"}),Ne(null)},[ye,Me,oe,ue,be,Se,D.length,y.nodeElementRefs]);let $e=_e===null?void 0:Me.get(_e),ft=$e!==void 0&&$e>=be&&$e<Se?_e:Ze[0]?.node.id,We=(0,c.useRef)({query:"",time:0}),ht=r=>{if(!(r.target instanceof HTMLElement)||r.target.getAttribute("role")!=="treeitem")return;let d=Me.get(r.target.dataset.nodeId??"");if(d===void 0)return;let u=D[d],g=d;if(r.key==="ArrowDown")g=Math.min(d+1,D.length-1);else if(r.key==="ArrowUp")g=Math.max(0,d-1);else if(r.key==="Home")g=0;else if(r.key==="End")g=D.length-1;else if(r.key==="ArrowRight"&&u.node.children?.length&&Ie.has(u.node.id))g=Math.min(d+1,D.length-1);else if(r.key==="ArrowLeft"&&(!u.node.children?.length||!Ie.has(u.node.id)))g=Me.get(u.parentId??"")??d;else if(r.key==="ContextMenu"||r.shiftKey&&r.key==="F10"){let w=r.target.getBoundingClientRect();r.preventDefault(),De(u.node,w.left+24,w.bottom);return}else if(r.key.length===1&&r.key!==" "&&!r.ctrlKey&&!r.metaKey&&!r.altKey){let w=Date.now(),W=w-We.current.time<600?We.current.query+r.key.toLowerCase():r.key.toLowerCase();We.current={query:W,time:w};for(let B=1;B<=D.length;B++){let z=(d+B)%D.length;if(D[z].node.name.toLowerCase().startsWith(W)){g=z;break}}}else return;r.preventDefault();let b=D[g].node.id;Ye(b),Ne({id:b,focus:!0})};(0,c.useEffect)(()=>{re.current&&(re.current.scrollTop=0),Oe(r=>({...r,top:0}))},[L.deferredQuery]);let gt=(0,c.useCallback)(r=>{Le(r.id),n?.(r)},[n]),mt=(0,c.useCallback)(r=>{!r.trim()&&L.expandedBeforeSearch&&y.setExpandedIds(L.expandedBeforeSearch),L.handleQueryChange(r,y.expandedIds)},[y.expandedIds,L]),Re=(0,c.useCallback)(r=>!he||r.metadata?.kind==="section"?!1:Z?Z(r):!0,[Z,he]),ke=(0,c.useCallback)((r,d,u)=>{if(r.id===d.id||!Re(r)||f.path(d.id)?.ancestorIds.includes(r.id))return!1;if(A){let b=B=>{let z=f.path(B)?.nodes??[];for(let U=z.length-1;U>=0;U--){let j=z[U]?.metadata;if(j&&typeof j=="object"&&Object.prototype.hasOwnProperty.call(j,A))return j[A]}},w=b(r.id),W=b(d.id);if(w!==void 0&&W!==void 0&&w!==W)return!1}return!Q||Q(r,d,u)},[Re,Q,A,f]),bt=(0,c.useCallback)((r,d)=>{if(!Re(r)){d.preventDefault();return}d.dataTransfer.effectAllowed="move",d.dataTransfer.setData("text/plain",r.id),O({draggedId:r.id,dragOverId:null,dragOverPosition:null})},[Re]),xt=(0,c.useCallback)((r,d)=>{if(!$.draggedId||$.draggedId===r.id)return;d.dataTransfer.dropEffect="none";let u=f.byId.get($.draggedId)?.node;if(!u){O(H=>H.dragOverId===null?H:{...H,dragOverId:null,dragOverPosition:null});return}let g=d.currentTarget.getBoundingClientRect(),b=(d.clientY-g.top)/g.height,w=(r.children?.length??0)>0,W=b<.5?"before":"after",B,z;b<.25?(B=["before","after"],z=1):b>.75?(B=["after","before"],z=1):(B=[W],z=0);let U=Q?ke(u,r,"child"):!1;(w||U)&&B.splice(z,0,"child");let j=B.find(H=>ke(u,r,H));if(!j){O(H=>H.dragOverId===null?H:{...H,dragOverId:null,dragOverPosition:null});return}d.preventDefault(),d.dataTransfer.dropEffect="move",O(H=>H.dragOverId===r.id&&H.dragOverPosition===j?H:{...H,dragOverId:r.id,dragOverPosition:j})},[ke,Q,$.draggedId,f]),Tt=(0,c.useCallback)(r=>{O(d=>d.dragOverId!==r.id?d:{...d,dragOverId:null,dragOverPosition:null})},[]),vt=(0,c.useCallback)((r,d)=>{d.preventDefault();let u=$.draggedId,g=$.dragOverPosition;if(!u||!g||u===r.id||$.dragOverId!==r.id){O(J);return}let b=f.byId.get(u)?.node;if(!b||!ke(b,r,g)){O(J);return}if(g==="child"){let fe=f.path(u)?.target;if(!fe){O(J);return}let tt=Je(o,u,r.id);tt&&pe?.(tt,fe,r.id),O(J);return}let w=f.path(r.id);if(!w){O(J);return}let W=w.parent?.children??o,B=W.findIndex(K=>K.id===r.id);if(B===-1){O(J);return}let z=g==="before"?B:B+1,U=f.path(u),j=w.parent?.id??null;if((U?.parent?.id??null)!==j){let K=U?.target,fe=Je(o,u,j,z);fe&&K&&pe?.(fe,K,j),O(J);return}if(U&&U.parent===w.parent){let K=W.findIndex(fe=>fe.id===u);K!==-1&&K<z&&(z-=1)}let ne=dt(o,u,z);if(ne&&ne.fromIndex!==ne.toIndex&&(Ce?.(ne),Te)){let K=Qt(ne.moved,ne.fromIndex,ne.toIndex,W);K.length>0&&Te(K,{node:ne.moved,type:"reorder"})}O(J)},[$,o,f,ke,pe,Te,Ce]),wt=(0,c.useCallback)(()=>{O(J)},[]),De=(0,c.useCallback)((r,d,u)=>{if(G){let g=G(r);if(g.length===0)return;let b=y.nodeElementRefs.current.get(r.id);b&&Pe({x:d,y:u,node:r,items:g,anchor:b,ariaLabel:R.contextMenuFor.split("{{name}}").join(r.name),confirmLabel:R.confirmAction});return}ee?.({node:r,x:d,y:u})},[G,ee,y.nodeElementRefs,R]),yt=(0,c.useCallback)(()=>{Pe(null)},[]),Nt=(0,c.useCallback)((r,d)=>{d.preventDefault(),De(r,d.clientX,d.clientY)},[De]),It=(0,c.useCallback)((r,d)=>{d.stopPropagation();let u=d.currentTarget.getBoundingClientRect();De(r,u.left,u.bottom+4)},[De]),et=(0,c.useCallback)(r=>{let d=f.path(r);if(!d)return;let u=d.ancestorIds;y.setExpandedIds([...new Set([...y.expandedIds,...u])]),L.clearSearch(),Ne({id:r,focus:!1})},[y,f,L.clearSearch]);(0,c.useImperativeHandle)(a,()=>({expandAll:y.expandAll,collapseAll:y.collapseAll,expandToDepth:y.expandToDepth,getExpandedIds:()=>y.expandedIds,getSelectedNode:()=>ge?f.path(ge)?.target:void 0,scrollToNode:et,locateNode:r=>{let d=[...o],u=new Set;for(let g=0;g<d.length;g++){let b=d[g];if(!(!b||u.has(b))){if(u.add(b),r(b)){let w=f.path(b.id);return w&&y.setExpandedIds([...new Set([...y.expandedIds,...w.ancestorIds])]),L.clearSearch(),Le(b.id),Ne({id:b.id,focus:!1}),b}if(b.children?.length)for(let w of b.children)d.push(w)}}}}),[y,et,ge,o,f,L.clearSearch]);let Mt=(0,c.useMemo)(()=>({...C,..._!==void 0?{maxHeight:_}:{}}),[C,_]),St=[m.root,ce!=="default"?`pde-tree-variant-${ce}`:"",S].filter(Boolean).join(" "),Rt=ie(gt),kt=ie(bt),Dt=ie(xt),Et=ie(Tt),Ct=ie(vt),Lt=ie(wt),Pt=ie(Nt),At=ie(It);return(0,s.jsxs)("div",{ref:xe,className:St,style:Mt,"data-size":se,"data-theme":je,children:[P&&(0,s.jsx)("div",{className:m.toolbar,children:P}),(h||x||I||Y)&&(0,s.jsxs)("div",{className:m.searchRow,children:[h&&(0,s.jsxs)("div",{className:m.searchInputWrap,children:[(0,s.jsx)("span",{className:m.searchIcon,children:(0,s.jsx)($t,{})}),(0,s.jsx)("input",{className:m.searchInput,type:"search","aria-controls":Ae,placeholder:ve,value:L.query,onChange:r=>mt(r.target.value),"aria-label":R.searchTree})]}),Y,x&&(0,s.jsx)("button",{type:"button",className:m.iconButton,onClick:y.isAllExpanded?y.collapseAll:y.expandAll,title:y.isAllExpanded?R.collapseAll:R.expandAll,"aria-label":y.isAllExpanded?R.collapseAll:R.expandAll,children:y.isAllExpanded?(0,s.jsx)(qe.MdUnfoldLess,{size:16,"aria-hidden":"true"}):(0,s.jsx)(qe.MdOutlineUnfoldMore,{size:16,"aria-hidden":"true"})}),I&&(0,s.jsx)("button",{type:"button",className:m.iconButton,onClick:v,title:R.refresh,"aria-label":R.refresh,children:(0,s.jsx)(M.LuRefreshCw,{size:14,"aria-hidden":"true"})})]}),(0,s.jsx)("div",{ref:re,className:m.treeContainer,"data-virtualized":oe||void 0,onScroll:r=>{oe&&Oe({top:r.currentTarget.scrollTop,height:r.currentTarget.clientHeight||400})},id:Ae,role:"tree",onKeyDown:ht,"aria-label":R.treeNavigation,children:L.filteredNodes.length===0?(0,s.jsx)("div",{className:m.emptyState,children:L.isSearching?R.noResults:R.noItems}):(0,s.jsxs)(s.Fragment,{children:[oe&&(0,s.jsx)("div",{role:"presentation",style:{height:be*ue}}),Ze.map(({node:r,depth:d,positionInSet:u,setSize:g})=>(0,s.jsx)(Xt,{node:r,depth:d,positionInSet:u,setSize:g,isFocused:r.id===ft,onFocusNode:Ye,isExpanded:Ie.has(r.id),isSelected:ge===r.id,onToggle:y.toggleNode,onSelect:Rt,onNodeRef:y.setNodeElementRef,searchQuery:L.deferredQuery,showIndentGuides:le,renderIcon:te,renderLabel:k,renderSuffix:F,renderNode:X,draggable:he,dragState:$,canDragNode:Re(r),onDragStart:kt,onDragOver:Dt,onDragLeave:Et,onDrop:Ct,onDragEnd:Lt,showContextMenuButton:!!(G||ee),activeMenuNodeId:me?.node.id??null,onContextMenu:Pt,onMoreClick:At,labels:R},r.id)),oe&&(0,s.jsx)("div",{role:"presentation",style:{height:(D.length-Se)*ue}})]})}),me&&(0,s.jsx)(st,{state:me,onClose:yt},me.node.id)]})});0&&(module.exports={DEFAULT_TREE_LABELS,METHOD_LABEL_MAP,Tree,getMethodLabel,useTreeExpansion,useTreeSearch});
|
package/dist/react/index.d.cts
CHANGED
|
@@ -34,6 +34,43 @@ interface ContextMenuItem<TMetadata = unknown> {
|
|
|
34
34
|
/** Label shown when the item is in confirm state. Default "Confirm?". */
|
|
35
35
|
confirmLabel?: string;
|
|
36
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* User-visible strings rendered by the tree. Host applications pass localized
|
|
39
|
+
* values; omitted fields use the English defaults so existing consumers keep
|
|
40
|
+
* working without changes.
|
|
41
|
+
*/
|
|
42
|
+
interface TreeLabels {
|
|
43
|
+
/** Search input placeholder. */
|
|
44
|
+
search: string;
|
|
45
|
+
/** Accessible label for the search input. */
|
|
46
|
+
searchTree: string;
|
|
47
|
+
/** Expand-all button tooltip and accessible label. */
|
|
48
|
+
expandAll: string;
|
|
49
|
+
/** Collapse-all button tooltip and accessible label. */
|
|
50
|
+
collapseAll: string;
|
|
51
|
+
/** Refresh button tooltip and accessible label. */
|
|
52
|
+
refresh: string;
|
|
53
|
+
/** Accessible label for a row drag handle. */
|
|
54
|
+
dragToReorder: string;
|
|
55
|
+
/** Tooltip for the required-parameter indicator. */
|
|
56
|
+
required: string;
|
|
57
|
+
/** Tooltip for the node more-actions button. */
|
|
58
|
+
moreActions: string;
|
|
59
|
+
/** Accessible label for a node more-actions button. Supports {{name}}. */
|
|
60
|
+
moreActionsFor: string;
|
|
61
|
+
/** Accessible label for the tree navigation region. */
|
|
62
|
+
treeNavigation: string;
|
|
63
|
+
/** Accessible label for a node context menu. Supports {{name}}. */
|
|
64
|
+
contextMenuFor: string;
|
|
65
|
+
/** Default label for a menu item in its two-tap confirm state. */
|
|
66
|
+
confirmAction: string;
|
|
67
|
+
/** Empty-state message during an active search. */
|
|
68
|
+
noResults: string;
|
|
69
|
+
/** Empty-state message when the tree has no nodes. */
|
|
70
|
+
noItems: string;
|
|
71
|
+
}
|
|
72
|
+
/** English default labels; merged under any host-provided partial labels. */
|
|
73
|
+
declare const DEFAULT_TREE_LABELS: TreeLabels;
|
|
37
74
|
/**
|
|
38
75
|
* Render context passed to custom render functions.
|
|
39
76
|
*/
|
|
@@ -69,6 +106,8 @@ interface TreeProps<TMetadata = unknown> {
|
|
|
69
106
|
searchable?: boolean;
|
|
70
107
|
/** Placeholder text for the search input. Default "Search...". */
|
|
71
108
|
searchPlaceholder?: string;
|
|
109
|
+
/** Localized, user-visible tree text. Omitted fields fall back to English. */
|
|
110
|
+
labels?: Partial<TreeLabels>;
|
|
72
111
|
/** Show expand/collapse all buttons in the toolbar. Default false. */
|
|
73
112
|
showExpandAll?: boolean;
|
|
74
113
|
/** Show refresh button in the toolbar. When clicked, calls onRefresh. Default false. */
|
|
@@ -228,4 +267,4 @@ declare const METHOD_LABEL_MAP: Record<string, string>;
|
|
|
228
267
|
*/
|
|
229
268
|
declare function getMethodLabel(method: string): string;
|
|
230
269
|
|
|
231
|
-
export { type ContextMenuItem, type JsonPatchOp, METHOD_LABEL_MAP, Tree, type TreeHandle, type TreeProps, type TreeRenderContext, getMethodLabel, useTreeExpansion, useTreeSearch };
|
|
270
|
+
export { type ContextMenuItem, DEFAULT_TREE_LABELS, type JsonPatchOp, METHOD_LABEL_MAP, Tree, type TreeHandle, type TreeLabels, type TreeProps, type TreeRenderContext, getMethodLabel, useTreeExpansion, useTreeSearch };
|
package/dist/react/index.d.ts
CHANGED
|
@@ -34,6 +34,43 @@ interface ContextMenuItem<TMetadata = unknown> {
|
|
|
34
34
|
/** Label shown when the item is in confirm state. Default "Confirm?". */
|
|
35
35
|
confirmLabel?: string;
|
|
36
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* User-visible strings rendered by the tree. Host applications pass localized
|
|
39
|
+
* values; omitted fields use the English defaults so existing consumers keep
|
|
40
|
+
* working without changes.
|
|
41
|
+
*/
|
|
42
|
+
interface TreeLabels {
|
|
43
|
+
/** Search input placeholder. */
|
|
44
|
+
search: string;
|
|
45
|
+
/** Accessible label for the search input. */
|
|
46
|
+
searchTree: string;
|
|
47
|
+
/** Expand-all button tooltip and accessible label. */
|
|
48
|
+
expandAll: string;
|
|
49
|
+
/** Collapse-all button tooltip and accessible label. */
|
|
50
|
+
collapseAll: string;
|
|
51
|
+
/** Refresh button tooltip and accessible label. */
|
|
52
|
+
refresh: string;
|
|
53
|
+
/** Accessible label for a row drag handle. */
|
|
54
|
+
dragToReorder: string;
|
|
55
|
+
/** Tooltip for the required-parameter indicator. */
|
|
56
|
+
required: string;
|
|
57
|
+
/** Tooltip for the node more-actions button. */
|
|
58
|
+
moreActions: string;
|
|
59
|
+
/** Accessible label for a node more-actions button. Supports {{name}}. */
|
|
60
|
+
moreActionsFor: string;
|
|
61
|
+
/** Accessible label for the tree navigation region. */
|
|
62
|
+
treeNavigation: string;
|
|
63
|
+
/** Accessible label for a node context menu. Supports {{name}}. */
|
|
64
|
+
contextMenuFor: string;
|
|
65
|
+
/** Default label for a menu item in its two-tap confirm state. */
|
|
66
|
+
confirmAction: string;
|
|
67
|
+
/** Empty-state message during an active search. */
|
|
68
|
+
noResults: string;
|
|
69
|
+
/** Empty-state message when the tree has no nodes. */
|
|
70
|
+
noItems: string;
|
|
71
|
+
}
|
|
72
|
+
/** English default labels; merged under any host-provided partial labels. */
|
|
73
|
+
declare const DEFAULT_TREE_LABELS: TreeLabels;
|
|
37
74
|
/**
|
|
38
75
|
* Render context passed to custom render functions.
|
|
39
76
|
*/
|
|
@@ -69,6 +106,8 @@ interface TreeProps<TMetadata = unknown> {
|
|
|
69
106
|
searchable?: boolean;
|
|
70
107
|
/** Placeholder text for the search input. Default "Search...". */
|
|
71
108
|
searchPlaceholder?: string;
|
|
109
|
+
/** Localized, user-visible tree text. Omitted fields fall back to English. */
|
|
110
|
+
labels?: Partial<TreeLabels>;
|
|
72
111
|
/** Show expand/collapse all buttons in the toolbar. Default false. */
|
|
73
112
|
showExpandAll?: boolean;
|
|
74
113
|
/** Show refresh button in the toolbar. When clicked, calls onRefresh. Default false. */
|
|
@@ -228,4 +267,4 @@ declare const METHOD_LABEL_MAP: Record<string, string>;
|
|
|
228
267
|
*/
|
|
229
268
|
declare function getMethodLabel(method: string): string;
|
|
230
269
|
|
|
231
|
-
export { type ContextMenuItem, type JsonPatchOp, METHOD_LABEL_MAP, Tree, type TreeHandle, type TreeProps, type TreeRenderContext, getMethodLabel, useTreeExpansion, useTreeSearch };
|
|
270
|
+
export { type ContextMenuItem, DEFAULT_TREE_LABELS, type JsonPatchOp, METHOD_LABEL_MAP, Tree, type TreeHandle, type TreeLabels, type TreeProps, type TreeRenderContext, getMethodLabel, useTreeExpansion, useTreeSearch };
|
package/dist/react/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as Ue,j as He,k as Ye,p as Xe,q as Ge}from"../chunk-AHHDXXHL.js";import{forwardRef as Ct,memo as Rt,useCallback as C,useEffect as Qe,useImperativeHandle as Et,useId as Lt,useMemo as Se,useRef as at,useState as fe}from"react";import{useLayoutEffect as Mt,useRef as Tt,useState as qe}from"react";import{createPortal as St}from"react-dom";import{jsx as Ee,jsxs as Ze}from"react/jsx-runtime";function et({state:r,onClose:t}){let p=Tt(null),[n,i]=qe(null),[b,h]=qe({left:r.x,top:r.y}),[P,w]=qe({}),M=r.anchor.closest("dialog")??r.anchor.ownerDocument.body;return Mt(()=>{let l=r.anchor.closest(".pde-tree-root")??r.anchor,v=getComputedStyle(l),y={};for(let T=0;T<v.length;T++){let A=v.item(T);(A.startsWith("--tree-")||A.startsWith("--color-")||A.startsWith("--radius-")||A.startsWith("--font-")||A.startsWith("--shadow-"))&&(y[A]=v.getPropertyValue(A))}w(y);let f=p.current;if(!f)return;let R=()=>{let T=f.getBoundingClientRect();h({left:Math.max(8,Math.min(r.x,document.documentElement.clientWidth-T.width-8)),top:Math.max(8,Math.min(r.y,document.documentElement.clientHeight-T.height-8))})};R();let _=typeof ResizeObserver>"u"?void 0:new ResizeObserver(R);_?.observe(f),f.querySelector("button:not(:disabled)")?.focus();let X=T=>{T.target instanceof Node&&!f.contains(T.target)&&t()},Z=T=>{T.target instanceof Node&&!f.contains(T.target)&&t()};return document.addEventListener("pointerdown",X),document.addEventListener("scroll",Z,!0),window.addEventListener("resize",t),()=>{_?.disconnect(),document.removeEventListener("pointerdown",X),document.removeEventListener("scroll",Z,!0),window.removeEventListener("resize",t),f.contains(document.activeElement)&&r.anchor.isConnected&&r.anchor.focus({preventScroll:!0})}},[r,t]),St(Ee("div",{ref:p,className:"pde-tree-contextMenu",style:{...P,...b},role:"menu","aria-label":`Actions for ${r.node.name}`,tabIndex:-1,onKeyDown:l=>{let v=p.current;if(!v)return;let y=Array.from(v.querySelectorAll("button:not(:disabled)")),f=y.indexOf(document.activeElement);if(l.key==="Escape"||l.key==="Tab"){l.key==="Escape"&&l.preventDefault(),l.stopPropagation(),t();return}let R;if(l.key==="ArrowDown")R=(f+1)%y.length;else if(l.key==="ArrowUp")R=(f-1+y.length)%y.length;else if(l.key==="Home")R=0;else if(l.key==="End")R=y.length-1;else return;l.preventDefault(),y[R]?.focus()},children:r.items.map((l,v)=>Ze("div",{role:"presentation",children:[l.separator&&Ee("div",{className:"pde-tree-contextMenuSeparator",role:"separator"}),Ze("button",{type:"button",role:"menuitem",tabIndex:-1,disabled:l.disabled,className:`pde-tree-contextMenuItem${l.danger?" pde-tree-contextMenuItemDanger":""}${n===v?" pde-tree-contextMenuItemConfirming":""}`,onClick:()=>{if(l.confirm&&n!==v){i(v);return}t(),l.onClick(r.node)},children:[l.icon&&Ee("span",{className:"pde-tree-contextMenuIcon","aria-hidden":"true",children:l.icon}),Ee("span",{children:l.confirm&&n===v?l.confirmLabel??"Confirm?":l.label})]})]},`${l.label}-${v}`))}),M)}import{useCallback as se,useMemo as Le,useRef as tt,useState as kt}from"react";function $e(r,t={}){let{defaultExpandedIds:p,defaultExpandDepth:n=1,onExpandedChange:i}=t,b=Le(()=>p!==void 0?[...p]:n<=1?[]:He(r,{maxDepth:n-1,onlyWithChildren:!0}),[]),[h,P]=kt(b),w=tt(new Map),M=Le(()=>Ye(r),[r]),l=Le(()=>new Set(h),[h]),v=tt(h);v.current=h;let y=Le(()=>M.length>0&&M.every(I=>l.has(I)),[M,l]),f=se(I=>{v.current=I,P(I),i?.(I)},[i]),R=se(I=>{let S=v.current,oe=S.includes(I)?S.filter(ge=>ge!==I):[...S,I];f(oe)},[f]),_=se(()=>{f([...M])},[M,f]),X=se(()=>{f([])},[f]),Z=se(I=>{let S=He(r,{maxDepth:I,onlyWithChildren:!0});f(S)},[r,f]),T=se((I,S)=>{S?w.current.set(I,S):w.current.delete(I)},[]),A=se(I=>{let S=w.current.get(I);S&&S.scrollIntoView?.({behavior:"auto",block:"nearest"})},[]);return{expandedIds:h,setExpandedIds:f,toggleNode:R,expandAll:_,collapseAll:X,expandToDepth:Z,isAllExpanded:y,allBranchIds:M,setNodeElementRef:T,scrollToNode:A,nodeElementRefs:w}}import{useCallback as rt,useDeferredValue as Nt,useMemo as Dt,useState as ot}from"react";function je(r){let[t,p]=ot(""),n=Nt(t),[i,b]=ot(null),h=n.trim().length>0,P=Dt(()=>h?Ue(r,{query:n,keepAncestors:!0}):r,[r,n,h]),w=rt((l,v)=>{let y=t.trim(),f=l.trim();!y&&f&&b(v),y&&!f&&b(null),p(l)},[t]),M=rt(()=>{p(""),b(null)},[]);return{query:t,deferredQuery:n,isSearching:h,filteredNodes:P,expandedBeforeSearch:i,handleQueryChange:w,clearSearch:M}}function nt(r){let t=new Map,p=new Set,n=r.map(i=>({node:i,parentId:null})).reverse();for(;n.length;){let i=n.pop();if(p.has(i.node)||t.has(i.node.id))continue;p.add(i.node),t.set(i.node.id,i);let b=i.node.children??[];for(let h=b.length-1;h>=0;h--)n.push({node:b[h],parentId:i.node.id})}return{byId:t,path(i){let b=t.get(i);if(!b)return null;let h=[b.node],P=b.parentId;for(;P!==null;){let w=t.get(P);if(!w)break;h.push(w.node),P=w.parentId}return h.reverse(),{nodes:h,target:b.node,parent:h[h.length-2],ancestorIds:h.slice(0,-1).map(w=>w.id)}}}}var Fe={get:"GET",post:"POST",put:"PUT",delete:"DEL",patch:"PAT",head:"HEAD",options:"OPT",trace:"TRC",connect:"CON"};function Pe(r){let t=r.toLowerCase().trim();return Object.prototype.hasOwnProperty.call(Fe,t)?Fe[t]:t.slice(0,4).toUpperCase()}import{LuBraces as dt,LuChevronDown as Pt,LuChevronRight as Ot,LuEllipsisVertical as Bt,LuFolder as zt,LuFolderOpen as At,LuGripVertical as Ht,LuList as Gt,LuRefreshCw as qt,LuSearch as $t,LuZap as jt}from"react-icons/lu";import{MdOutlineUnfoldMore as Ft,MdUnfoldLess as Qt}from"react-icons/md";import{Fragment as ke,jsx as d,jsxs as he}from"react/jsx-runtime";var c={branchControl:"pde-tree-branchControl",deprecatedLabel:"pde-tree-deprecatedLabel",dragHandle:"pde-tree-dragHandle",dropIndicatorAfter:"pde-tree-dropIndicatorAfter",dropIndicatorBefore:"pde-tree-dropIndicatorBefore",dropIndicatorChild:"pde-tree-dropIndicatorChild",emptyState:"pde-tree-emptyState",expandIcon:"pde-tree-expandIcon",expandIconPlaceholder:"pde-tree-expandIconPlaceholder",highlight:"pde-tree-highlight",iconButton:"pde-tree-iconButton",indentGuide:"pde-tree-indentGuide",leafItem:"pde-tree-leafItem",methodBadge:"pde-tree-methodBadge",methodDelete:"pde-tree-methodDelete",methodGet:"pde-tree-methodGet",methodOther:"pde-tree-methodOther",methodPatch:"pde-tree-methodPatch",methodPost:"pde-tree-methodPost",methodPut:"pde-tree-methodPut",moreButton:"pde-tree-moreButton",moreButtonActive:"pde-tree-moreButtonActive",nodeDragging:"pde-tree-nodeDragging",nodeIcon:"pde-tree-nodeIcon",primitiveDot:"pde-tree-primitiveDot",nodeLabel:"pde-tree-nodeLabel",nodeLabelBranch:"pde-tree-nodeLabelBranch",nodeRow:"pde-tree-nodeRow",nodeRowSelected:"pde-tree-nodeRowSelected",nodeSuffix:"pde-tree-nodeSuffix",requiredDot:"pde-tree-requiredDot",root:"pde-tree-root",searchIcon:"pde-tree-searchIcon",searchInput:"pde-tree-searchInput",searchInputWrap:"pde-tree-searchInputWrap",searchRow:"pde-tree-searchRow",toolbar:"pde-tree-toolbar",treeContainer:"pde-tree-treeContainer"};function Wt({expanded:r}){return d("span",{className:c.expandIcon,children:r?d(Pt,{size:14}):d(Ot,{size:14})})}function Kt(){return d($t,{size:14,"aria-hidden":"true"})}function Vt(){return d(Ht,{size:14,"aria-hidden":"true"})}function _t(){return d(Bt,{size:14,"aria-hidden":"true"})}function it(r){let p=r.metadata?.jsonPath;if(Array.isArray(p)&&p.length>0&&p.every(n=>typeof n=="string"||typeof n=="number"&&Number.isInteger(n)&&n>=0))return p}function Jt(r,t,p,n){let i=it(r);if(!i||i.length===0)return[];let b=JSON.stringify(i.slice(0,-1));if(!n.every((P,w)=>{let M=it(P);return M&&M[M.length-1]===w&&JSON.stringify(M.slice(0,-1))===b}))return[];let h=i.slice(0,-1);return[{op:"move",from:[...h,t],path:[...h,p]}]}function Ut({text:r,query:t}){if(!t)return d(ke,{children:r});let p=r.toLowerCase(),n=t.toLowerCase(),i=p.indexOf(n);return i===-1?d(ke,{children:r}):he(ke,{children:[r.slice(0,i),d("span",{className:c.highlight,children:r.slice(i,i+t.length)}),r.slice(i+t.length)]})}var st={get:c.methodGet,post:c.methodPost,put:c.methodPut,patch:c.methodPatch,delete:c.methodDelete};function Yt({method:r}){let t=r.toLowerCase(),p=Object.prototype.hasOwnProperty.call(st,t)?st[t]:c.methodOther,n=Pe(r);return d("span",{className:`${c.methodBadge} ${p}`,children:n})}var V={draggedId:null,dragOverId:null,dragOverPosition:null};function Xt(r,t){if(r.isFocused!==t.isFocused||r.positionInSet!==t.positionInSet||r.setSize!==t.setSize||r.node!==t.node||r.depth!==t.depth||r.isExpanded!==t.isExpanded||r.isSelected!==t.isSelected||r.searchQuery!==t.searchQuery||r.showIndentGuides!==t.showIndentGuides||r.canDragNode!==t.canDragNode||r.draggable!==t.draggable||r.showContextMenuButton!==t.showContextMenuButton||r.activeMenuNodeId===r.node.id!=(t.activeMenuNodeId===t.node.id))return!1;let p=r.dragState.draggedId===r.node.id,n=t.dragState.draggedId===t.node.id;if(p!==n)return!1;let i=r.dragState.dragOverId===r.node.id,b=t.dragState.dragOverId===t.node.id;return!(i!==b||i&&b&&r.dragState.dragOverPosition!==t.dragState.dragOverPosition||r.renderIcon!==t.renderIcon||r.renderLabel!==t.renderLabel||r.renderSuffix!==t.renderSuffix||r.renderNode!==t.renderNode||r.onToggle!==t.onToggle||r.onSelect!==t.onSelect||r.onNodeRef!==t.onNodeRef||r.onDragStart!==t.onDragStart||r.onDragOver!==t.onDragOver||r.onDragLeave!==t.onDragLeave||r.onDrop!==t.onDrop||r.onDragEnd!==t.onDragEnd||r.onContextMenu!==t.onContextMenu||r.onMoreClick!==t.onMoreClick)}function Zt(r){let{node:t,depth:p,onToggle:n,onSelect:i,onNodeRef:b,searchQuery:h,showIndentGuides:P,renderIcon:w,renderLabel:M,renderSuffix:l,renderNode:v,draggable:y,dragState:f,canDragNode:R,onDragStart:_,onDragOver:X,onDragLeave:Z,onDrop:T,onDragEnd:A,showContextMenuButton:I,activeMenuNodeId:S,onContextMenu:oe,onMoreClick:ge}=r,{isExpanded:$,isSelected:me}=r,ce=(t.children?.length??0)>0,E=ce,Ne=!ce,ne=f.draggedId===t.id,J=f.dragOverId===t.id,W=J?f.dragOverPosition:null,H=t.metadata,U=typeof H?.method=="string"?H.method:void 0,xe=H?.deprecated===!0,Oe=H?.required===!0,G=typeof H?.kind=="string"?H.kind:void 0,Y={node:t,depth:p,isExpanded:$,isSelected:me,isBranch:E,isLeaf:Ne,isDragging:ne,isDragOver:J,dragOverPosition:W},le=C(()=>{E?n(t.id):i(t)},[E,t,i,n]),j=C(g=>{g.target===g.currentTarget&&(g.key==="Enter"||g.key===" "?(g.preventDefault(),le()):(g.key==="ArrowRight"&&E&&!$||g.key==="ArrowLeft"&&E&&$)&&(g.preventDefault(),g.stopPropagation(),n(t.id)))},[le,E,$,t.id,n]),L=w?w(Y):U?null:d("span",{className:c.nodeIcon,children:G==="section"&&H?.section==="components"?d(dt,{size:14}):G==="section"&&H?.section==="webhooks"?d(jt,{size:14}):G==="schema"||G==="component"||G==="object"?d(dt,{size:14}):G==="array"||G==="items"?d(Gt,{size:14}):E?$?d(At,{size:14}):d(zt,{size:14}):U&&d(Yt,{method:U})}),pe=M?M(Y):d("span",{className:`${c.nodeLabel} ${E?c.nodeLabelBranch:""} ${xe?c.deprecatedLabel:""}`,children:d(Ut,{text:t.name,query:h})}),De=l?l(Y):null,ae=[c.nodeRow,E?c.branchControl:c.leafItem,me?c.nodeRowSelected:"",ne?c.nodeDragging:"",J&&W==="before"?c.dropIndicatorBefore:"",J&&W==="after"?c.dropIndicatorAfter:"",J&&W==="child"?c.dropIndicatorChild:"",G?`pde-tree-kind-${G}`:""].filter(Boolean).join(" "),Ce=C(g=>b(t.id,g),[t.id,b]),k=he("div",{ref:Ce,className:ae,style:{paddingLeft:`${Math.min(p,20)*12+4}px`},"data-node-id":t.id,role:"treeitem","aria-expanded":E?$:void 0,"aria-label":U?`${Pe(U)} ${t.name}`:t.name,"aria-selected":me,"aria-level":p+1,"aria-posinset":r.positionInSet,"aria-setsize":r.setSize,"aria-grabbed":y&&R?ne:void 0,tabIndex:r.isFocused?0:-1,onFocus:()=>r.onFocusNode(t.id),onClick:le,onKeyDown:j,onContextMenu:I?g=>oe(t,g):void 0,onDragOver:y?g=>X(t,g):void 0,onDragLeave:y?()=>Z(t):void 0,onDrop:y?g=>T(t,g):void 0,children:[P&&p>1&&Array.from({length:Math.min(p-1,20)},(g,ee)=>d("span",{className:c.indentGuide,style:{left:`${(ee+1)*12+11}px`}},`guide-${ee}`)),y&&R?d("span",{className:c.dragHandle,style:{left:`${Math.min(p,20)*12+4}px`},draggable:!0,onDragStart:g=>_(t,g),onDragEnd:A,title:"Drag to reorder","aria-label":"Drag to reorder",children:d(Vt,{})}):null,E?d(Wt,{expanded:$}):d("span",{className:c.expandIconPlaceholder}),L,pe,Oe&&d("span",{className:c.requiredDot,title:"Required"}),d("span",{className:c.nodeSuffix,children:De}),I&&d("button",{type:"button",className:[c.moreButton,S===t.id?c.moreButtonActive:""].filter(Boolean).join(" "),onClick:g=>ge(t,g),title:"More actions","aria-label":`More actions for ${t.name}`,"aria-haspopup":"menu","aria-expanded":S===t.id,tabIndex:-1,children:d(_t,{})})]}),Re=v?v(Y,k):k;return d(ke,{children:Re})}var er=Rt(Zt,Xt),tr=Ct(function(t,p){let{nodes:n,onSelect:i,onExpandedChange:b,defaultExpandedIds:h,defaultExpandDepth:P=1,searchable:w=!1,searchPlaceholder:M="Search...",showExpandAll:l=!1,showRefresh:v=!1,onRefresh:y,toolbar:f,searchRowExtra:R,renderNode:_,renderIcon:X,renderLabel:Z,renderSuffix:T,className:A,style:I,size:S="sm",variant:oe="default",showIndentGuides:ge=!0,maxHeight:$,rootRef:me,draggable:ce=!1,dragGroupKey:E,onReorder:Ne,onMove:ne,canDrag:J,canDrop:W,contextMenuItems:H,onContextMenuOpen:U,onPatch:xe,theme:Oe,virtualized:G="auto"}=t,[Y,le]=fe(null),[j,L]=fe(V),[pe,De]=fe(null),ae=at(null),Ce=Lt(),k=Se(()=>nt(n),[n]),[Re,g]=fe({top:0,height:400}),[ee,be]=fe(null),[Be,We]=fe(null),x=$e(n,{defaultExpandedIds:h,defaultExpandDepth:P,onExpandedChange:b}),D=je(n),Ke=D.isSearching?x.allBranchIds:D.expandedBeforeSearch??x.expandedIds,ve=Se(()=>new Set(Ke),[Ke]),N=Se(()=>{let e=[],o=new Set,a=D.filteredNodes.map((s,u,m)=>({node:s,depth:0,parentId:null,positionInSet:u+1,setSize:m.length})).reverse();for(;a.length;){let s=a.pop();if(!o.has(s.node.id)&&(o.add(s.node.id),e.push(s),ve.has(s.node.id))){let u=s.node.children??[];for(let m=u.length-1;m>=0;m--)a.push({node:u[m],depth:s.depth+1,parentId:s.node.id,positionInSet:m+1,setSize:u.length})}}return e},[D.filteredNodes,ve]),we=Se(()=>new Map(N.map((e,o)=>[e.node.id,o])),[N]),de=S==="xs"?24:S==="md"?32:28,te=G!==!1&&oe!=="doc"&&!_&&(G===!0||N.length>500),ue=te?Math.max(0,Math.min(Math.floor(Re.top/de)-8,N.length-1)):0,ye=te?Math.min(N.length,ue+Math.ceil(Re.height/de)+16):N.length,Ve=N.slice(ue,ye);Qe(()=>{let e=ae.current;if(!e)return;let o=()=>g({top:e.scrollTop,height:e.clientHeight||400});o();let a=typeof ResizeObserver>"u"?void 0:new ResizeObserver(o);return a?.observe(e),()=>a?.disconnect()},[]),Qe(()=>{if(!ee)return;let e=we.get(ee.id);if(e===void 0){be(null);return}let o=ae.current;if(te&&o&&(e<ue||e>=ye)){let s=o.clientHeight||400,u=Math.min(e*de,Math.max(0,N.length*de-s));o.scrollTop=u,g(m=>({...m,top:o.scrollTop}));return}let a=x.nodeElementRefs.current.get(ee.id);ee.focus&&a?.focus({preventScroll:!0}),a?.scrollIntoView?.({block:"nearest"}),be(null)},[ee,we,te,de,ue,ye,N.length,x.nodeElementRefs]);let ze=Be===null?void 0:we.get(Be),ct=ze!==void 0&&ze>=ue&&ze<ye?Be:Ve[0]?.node.id,Ae=at({query:"",time:0}),lt=e=>{if(!(e.target instanceof HTMLElement)||e.target.getAttribute("role")!=="treeitem")return;let o=we.get(e.target.dataset.nodeId??"");if(o===void 0)return;let a=N[o],s=o;if(e.key==="ArrowDown")s=Math.min(o+1,N.length-1);else if(e.key==="ArrowUp")s=Math.max(0,o-1);else if(e.key==="Home")s=0;else if(e.key==="End")s=N.length-1;else if(e.key==="ArrowRight"&&a.node.children?.length&&ve.has(a.node.id))s=Math.min(o+1,N.length-1);else if(e.key==="ArrowLeft"&&(!a.node.children?.length||!ve.has(a.node.id)))s=we.get(a.parentId??"")??o;else if(e.key==="ContextMenu"||e.shiftKey&&e.key==="F10"){let m=e.target.getBoundingClientRect();e.preventDefault(),Te(a.node,m.left+24,m.bottom);return}else if(e.key.length===1&&e.key!==" "&&!e.ctrlKey&&!e.metaKey&&!e.altKey){let m=Date.now(),F=m-Ae.current.time<600?Ae.current.query+e.key.toLowerCase():e.key.toLowerCase();Ae.current={query:F,time:m};for(let O=1;O<=N.length;O++){let B=(o+O)%N.length;if(N[B].node.name.toLowerCase().startsWith(F)){s=B;break}}}else return;e.preventDefault();let u=N[s].node.id;We(u),be({id:u,focus:!0})};Qe(()=>{ae.current&&(ae.current.scrollTop=0),g(e=>({...e,top:0}))},[D.deferredQuery]);let pt=C(e=>{le(e.id),i?.(e)},[i]),ut=C(e=>{!e.trim()&&D.expandedBeforeSearch&&x.setExpandedIds(D.expandedBeforeSearch),D.handleQueryChange(e,x.expandedIds)},[x.expandedIds,D]),Ie=C(e=>!ce||e.metadata?.kind==="section"?!1:J?J(e):!0,[J,ce]),Me=C((e,o,a)=>{if(e.id===o.id||!Ie(e)||k.path(o.id)?.ancestorIds.includes(e.id))return!1;if(E){let u=O=>{let B=k.path(O)?.nodes??[];for(let K=B.length-1;K>=0;K--){let q=B[K]?.metadata;if(q&&typeof q=="object"&&Object.prototype.hasOwnProperty.call(q,E))return q[E]}},m=u(e.id),F=u(o.id);if(m!==void 0&&F!==void 0&&m!==F)return!1}return!W||W(e,o,a)},[Ie,W,E,k]),ft=C((e,o)=>{if(!Ie(e)){o.preventDefault();return}o.dataTransfer.effectAllowed="move",o.dataTransfer.setData("text/plain",e.id),L({draggedId:e.id,dragOverId:null,dragOverPosition:null})},[Ie]),ht=C((e,o)=>{if(!j.draggedId||j.draggedId===e.id)return;o.dataTransfer.dropEffect="none";let a=k.byId.get(j.draggedId)?.node;if(!a){L(z=>z.dragOverId===null?z:{...z,dragOverId:null,dragOverPosition:null});return}let s=o.currentTarget.getBoundingClientRect(),u=(o.clientY-s.top)/s.height,m=(e.children?.length??0)>0,F=u<.5?"before":"after",O,B;u<.25?(O=["before","after"],B=1):u>.75?(O=["after","before"],B=1):(O=[F],B=0);let K=W?Me(a,e,"child"):!1;(m||K)&&O.splice(B,0,"child");let q=O.find(z=>Me(a,e,z));if(!q){L(z=>z.dragOverId===null?z:{...z,dragOverId:null,dragOverPosition:null});return}o.preventDefault(),o.dataTransfer.dropEffect="move",L(z=>z.dragOverId===e.id&&z.dragOverPosition===q?z:{...z,dragOverId:e.id,dragOverPosition:q})},[Me,W,j.draggedId,k]),gt=C(e=>{L(o=>o.dragOverId!==e.id?o:{...o,dragOverId:null,dragOverPosition:null})},[]),mt=C((e,o)=>{o.preventDefault();let a=j.draggedId,s=j.dragOverPosition;if(!a||!s||a===e.id||j.dragOverId!==e.id){L(V);return}let u=k.byId.get(a)?.node;if(!u||!Me(u,e,s)){L(V);return}if(s==="child"){let ie=k.path(a)?.target;if(!ie){L(V);return}let Je=Ge(n,a,e.id);Je&&ne?.(Je,ie,e.id),L(V);return}let m=k.path(e.id);if(!m){L(V);return}let F=m.parent?.children??n,O=F.findIndex(Q=>Q.id===e.id);if(O===-1){L(V);return}let B=s==="before"?O:O+1,K=k.path(a),q=m.parent?.id??null;if((K?.parent?.id??null)!==q){let Q=K?.target,ie=Ge(n,a,q,B);ie&&Q&&ne?.(ie,Q,q),L(V);return}if(K&&K.parent===m.parent){let Q=F.findIndex(ie=>ie.id===a);Q!==-1&&Q<B&&(B-=1)}let re=Xe(n,a,B);if(re&&re.fromIndex!==re.toIndex&&(Ne?.(re),xe)){let Q=Jt(re.moved,re.fromIndex,re.toIndex,F);Q.length>0&&xe(Q,{node:re.moved,type:"reorder"})}L(V)},[j,n,k,Me,ne,xe,Ne]),xt=C(()=>{L(V)},[]),Te=C((e,o,a)=>{if(H){let s=H(e);if(s.length===0)return;let u=x.nodeElementRefs.current.get(e.id);u&&De({x:o,y:a,node:e,items:s,anchor:u});return}U?.({node:e,x:o,y:a})},[H,U,x.nodeElementRefs]),bt=C(()=>{De(null)},[]),vt=C((e,o)=>{o.preventDefault(),Te(e,o.clientX,o.clientY)},[Te]),wt=C((e,o)=>{o.stopPropagation();let a=o.currentTarget.getBoundingClientRect();Te(e,a.left,a.bottom+4)},[Te]),_e=C(e=>{let o=k.path(e);if(!o)return;let a=o.ancestorIds;x.setExpandedIds([...new Set([...x.expandedIds,...a])]),D.clearSearch(),be({id:e,focus:!1})},[x,k,D.clearSearch]);Et(p,()=>({expandAll:x.expandAll,collapseAll:x.collapseAll,expandToDepth:x.expandToDepth,getExpandedIds:()=>x.expandedIds,getSelectedNode:()=>Y?k.path(Y)?.target:void 0,scrollToNode:_e,locateNode:e=>{let o=[...n],a=new Set;for(let s=0;s<o.length;s++){let u=o[s];if(!(!u||a.has(u))){if(a.add(u),e(u)){let m=k.path(u.id);return m&&x.setExpandedIds([...new Set([...x.expandedIds,...m.ancestorIds])]),D.clearSearch(),le(u.id),be({id:u.id,focus:!1}),u}if(u.children?.length)for(let m of u.children)o.push(m)}}}}),[x,_e,Y,n,k,D.clearSearch]);let yt=Se(()=>({...I,...$!==void 0?{maxHeight:$}:{}}),[I,$]),It=[c.root,oe!=="default"?`pde-tree-variant-${oe}`:"",A].filter(Boolean).join(" ");return he("div",{ref:me,className:It,style:yt,"data-size":S,"data-theme":Oe,children:[f&&d("div",{className:c.toolbar,children:f}),(w||l||v||R)&&he("div",{className:c.searchRow,children:[w&&he("div",{className:c.searchInputWrap,children:[d("span",{className:c.searchIcon,children:d(Kt,{})}),d("input",{className:c.searchInput,type:"search","aria-controls":Ce,placeholder:M,value:D.query,onChange:e=>ut(e.target.value),"aria-label":"Search tree"})]}),R,l&&d("button",{type:"button",className:c.iconButton,onClick:x.isAllExpanded?x.collapseAll:x.expandAll,title:x.isAllExpanded?"Collapse all":"Expand all","aria-label":x.isAllExpanded?"Collapse all":"Expand all",children:x.isAllExpanded?d(Qt,{size:16,"aria-hidden":"true"}):d(Ft,{size:16,"aria-hidden":"true"})}),v&&d("button",{type:"button",className:c.iconButton,onClick:y,title:"Refresh","aria-label":"Refresh",children:d(qt,{size:14,"aria-hidden":"true"})})]}),d("div",{ref:ae,className:c.treeContainer,"data-virtualized":te||void 0,onScroll:e=>{te&&g({top:e.currentTarget.scrollTop,height:e.currentTarget.clientHeight||400})},id:Ce,role:"tree",onKeyDown:lt,"aria-label":"Tree navigation",children:D.filteredNodes.length===0?d("div",{className:c.emptyState,children:D.isSearching?"No matching results":"No items"}):he(ke,{children:[te&&d("div",{role:"presentation",style:{height:ue*de}}),Ve.map(({node:e,depth:o,positionInSet:a,setSize:s})=>d(er,{node:e,depth:o,positionInSet:a,setSize:s,isFocused:e.id===ct,onFocusNode:We,isExpanded:ve.has(e.id),isSelected:Y===e.id,onToggle:x.toggleNode,onSelect:pt,onNodeRef:x.setNodeElementRef,searchQuery:D.deferredQuery,showIndentGuides:ge,renderIcon:X,renderLabel:Z,renderSuffix:T,renderNode:_,draggable:ce,dragState:j,canDragNode:Ie(e),onDragStart:ft,onDragOver:ht,onDragLeave:gt,onDrop:mt,onDragEnd:xt,showContextMenuButton:!!(H||U),activeMenuNodeId:pe?.node.id??null,onContextMenu:vt,onMoreClick:wt},e.id)),te&&d("div",{role:"presentation",style:{height:(N.length-ye)*de}})]})}),pe&&d(et,{state:pe,onClose:bt},pe.node.id)]})});export{Fe as METHOD_LABEL_MAP,tr as Tree,Pe as getMethodLabel,$e as useTreeExpansion,je as useTreeSearch};
|
|
1
|
+
import{i as rt,j as je,k as ot,p as nt,q as $e}from"../chunk-AHHDXXHL.js";import{forwardRef as jt,memo as $t,useCallback as R,useEffect as Je,useLayoutEffect as _t,useImperativeHandle as Kt,useId as Qt,useMemo as he,useRef as Ue,useState as ge}from"react";import{useLayoutEffect as Bt,useRef as zt,useState as _e}from"react";import{createPortal as Ht}from"react-dom";import{jsx as Oe,jsxs as at}from"react/jsx-runtime";function dt({state:r,onClose:e}){let p=zt(null),[n,s]=_e(null),[x,h]=_e({left:r.x,top:r.y}),[P,T]=_e({}),I=r.anchor.closest("dialog")??r.anchor.ownerDocument.body;return Bt(()=>{let u=r.anchor.closest(".pde-tree-root")??r.anchor,v=getComputedStyle(u),w={};for(let N=0;N<v.length;N++){let z=v.item(N);(z.startsWith("--tree-")||z.startsWith("--color-")||z.startsWith("--radius-")||z.startsWith("--font-")||z.startsWith("--shadow-"))&&(w[z]=v.getPropertyValue(z))}T(w);let g=p.current;if(!g)return;let C=()=>{let N=g.getBoundingClientRect();h({left:Math.max(8,Math.min(r.x,document.documentElement.clientWidth-N.width-8)),top:Math.max(8,Math.min(r.y,document.documentElement.clientHeight-N.height-8))})};C();let V=typeof ResizeObserver>"u"?void 0:new ResizeObserver(C);V?.observe(g),g.querySelector("button:not(:disabled)")?.focus();let J=N=>{N.target instanceof Node&&!g.contains(N.target)&&e()},X=N=>{N.target instanceof Node&&!g.contains(N.target)&&e()};return document.addEventListener("pointerdown",J),document.addEventListener("scroll",X,!0),window.addEventListener("resize",e),()=>{V?.disconnect(),document.removeEventListener("pointerdown",J),document.removeEventListener("scroll",X,!0),window.removeEventListener("resize",e),g.contains(document.activeElement)&&r.anchor.isConnected&&r.anchor.focus({preventScroll:!0})}},[r,e]),Ht(Oe("div",{ref:p,className:"pde-tree-contextMenu",style:{...P,...x},role:"menu","aria-label":r.ariaLabel??`Actions for ${r.node.name}`,tabIndex:-1,onKeyDown:u=>{let v=p.current;if(!v)return;let w=Array.from(v.querySelectorAll("button:not(:disabled)")),g=w.indexOf(document.activeElement);if(u.key==="Escape"||u.key==="Tab"){u.key==="Escape"&&u.preventDefault(),u.stopPropagation(),e();return}let C;if(u.key==="ArrowDown")C=(g+1)%w.length;else if(u.key==="ArrowUp")C=(g-1+w.length)%w.length;else if(u.key==="Home")C=0;else if(u.key==="End")C=w.length-1;else return;u.preventDefault(),w[C]?.focus()},children:r.items.map((u,v)=>at("div",{role:"presentation",children:[u.separator&&Oe("div",{className:"pde-tree-contextMenuSeparator",role:"separator"}),at("button",{type:"button",role:"menuitem",tabIndex:-1,disabled:u.disabled,className:`pde-tree-contextMenuItem${u.danger?" pde-tree-contextMenuItemDanger":""}${n===v?" pde-tree-contextMenuItemConfirming":""}`,onClick:()=>{if(u.confirm&&n!==v){s(v);return}e(),u.onClick(r.node)},children:[u.icon&&Oe("span",{className:"pde-tree-contextMenuIcon","aria-hidden":"true",children:u.icon}),Oe("span",{children:u.confirm&&n===v?u.confirmLabel??r.confirmLabel??"Confirm?":u.label})]})]},`${u.label}-${v}`))}),I)}import{useCallback as ce,useMemo as Be,useRef as it,useState as Gt}from"react";function Ke(r,e={}){let{defaultExpandedIds:p,defaultExpandDepth:n=1,onExpandedChange:s}=e,x=Be(()=>p!==void 0?[...p]:n<=1?[]:je(r,{maxDepth:n-1,onlyWithChildren:!0}),[]),[h,P]=Gt(x),T=it(new Map),I=Be(()=>ot(r),[r]),u=Be(()=>new Set(h),[h]),v=it(h);v.current=h;let w=Be(()=>I.length>0&&I.every(y=>u.has(y)),[I,u]),g=ce(y=>{v.current=y,P(y),s?.(y)},[s]),C=ce(y=>{let k=v.current,oe=k.includes(y)?k.filter(ne=>ne!==y):[...k,y];g(oe)},[g]),V=ce(()=>{g([...I])},[I,g]),J=ce(()=>{g([])},[g]),X=ce(y=>{let k=je(r,{maxDepth:y,onlyWithChildren:!0});g(k)},[r,g]),N=ce((y,k)=>{k?T.current.set(y,k):T.current.delete(y)},[]),z=ce(y=>{let k=T.current.get(y);k&&k.scrollIntoView?.({behavior:"auto",block:"nearest"})},[]);return{expandedIds:h,setExpandedIds:g,toggleNode:C,expandAll:V,collapseAll:J,expandToDepth:X,isAllExpanded:w,allBranchIds:I,setNodeElementRef:N,scrollToNode:z,nodeElementRefs:T}}import{useCallback as st,useDeferredValue as qt,useMemo as Ft,useState as ct}from"react";function Qe(r){let[e,p]=ct(""),n=qt(e),[s,x]=ct(null),h=n.trim().length>0,P=Ft(()=>h?rt(r,{query:n,keepAncestors:!0}):r,[r,n,h]),T=st((u,v)=>{let w=e.trim(),g=u.trim();!w&&g&&x(v),w&&!g&&x(null),p(u)},[e]),I=st(()=>{p(""),x(null)},[]);return{query:e,deferredQuery:n,isSearching:h,filteredNodes:P,expandedBeforeSearch:s,handleQueryChange:T,clearSearch:I}}var We={search:"Search...",searchTree:"Search tree",expandAll:"Expand all",collapseAll:"Collapse all",refresh:"Refresh",dragToReorder:"Drag to reorder",required:"Required",moreActions:"More actions",moreActionsFor:"More actions for {{name}}",treeNavigation:"Tree navigation",contextMenuFor:"Actions for {{name}}",confirmAction:"Confirm?",noResults:"No matching results",noItems:"No items"};function lt(r){let e=new Map,p=new Set,n=r.map(s=>({node:s,parentId:null})).reverse();for(;n.length;){let s=n.pop();if(p.has(s.node)||e.has(s.node.id))continue;p.add(s.node),e.set(s.node.id,s);let x=s.node.children??[];for(let h=x.length-1;h>=0;h--)n.push({node:x[h],parentId:s.node.id})}return{byId:e,path(s){let x=e.get(s);if(!x)return null;let h=[x.node],P=x.parentId;for(;P!==null;){let T=e.get(P);if(!T)break;h.push(T.node),P=T.parentId}return h.reverse(),{nodes:h,target:x.node,parent:h[h.length-2],ancestorIds:h.slice(0,-1).map(T=>T.id)}}}}var Ve={get:"GET",post:"POST",put:"PUT",delete:"DEL",patch:"PAT",head:"HEAD",options:"OPT",trace:"TRC",connect:"CON"};function ze(r){let e=r.toLowerCase().trim();return Object.prototype.hasOwnProperty.call(Ve,e)?Ve[e]:e.slice(0,4).toUpperCase()}import{LuBraces as pt,LuChevronDown as Wt,LuChevronRight as Vt,LuEllipsisVertical as Jt,LuFolder as Ut,LuFolderOpen as Yt,LuGripVertical as Xt,LuList as Zt,LuRefreshCw as er,LuSearch as tr,LuZap as rr}from"react-icons/lu";import{MdOutlineUnfoldMore as or,MdUnfoldLess as nr}from"react-icons/md";import{Fragment as De,jsx as d,jsxs as me}from"react/jsx-runtime";var l={branchControl:"pde-tree-branchControl",deprecatedLabel:"pde-tree-deprecatedLabel",dragHandle:"pde-tree-dragHandle",dropIndicatorAfter:"pde-tree-dropIndicatorAfter",dropIndicatorBefore:"pde-tree-dropIndicatorBefore",dropIndicatorChild:"pde-tree-dropIndicatorChild",emptyState:"pde-tree-emptyState",expandIcon:"pde-tree-expandIcon",expandIconPlaceholder:"pde-tree-expandIconPlaceholder",highlight:"pde-tree-highlight",iconButton:"pde-tree-iconButton",indentGuide:"pde-tree-indentGuide",leafItem:"pde-tree-leafItem",methodBadge:"pde-tree-methodBadge",methodDelete:"pde-tree-methodDelete",methodGet:"pde-tree-methodGet",methodOther:"pde-tree-methodOther",methodPatch:"pde-tree-methodPatch",methodPost:"pde-tree-methodPost",methodPut:"pde-tree-methodPut",moreButton:"pde-tree-moreButton",moreButtonActive:"pde-tree-moreButtonActive",nodeDragging:"pde-tree-nodeDragging",nodeIcon:"pde-tree-nodeIcon",primitiveDot:"pde-tree-primitiveDot",nodeLabel:"pde-tree-nodeLabel",nodeLabelBranch:"pde-tree-nodeLabelBranch",nodeRow:"pde-tree-nodeRow",nodeRowSelected:"pde-tree-nodeRowSelected",nodeSuffix:"pde-tree-nodeSuffix",requiredDot:"pde-tree-requiredDot",root:"pde-tree-root",searchIcon:"pde-tree-searchIcon",searchInput:"pde-tree-searchInput",searchInputWrap:"pde-tree-searchInputWrap",searchRow:"pde-tree-searchRow",toolbar:"pde-tree-toolbar",treeContainer:"pde-tree-treeContainer"};function ar({expanded:r}){return d("span",{className:l.expandIcon,children:r?d(Wt,{size:14}):d(Vt,{size:14})})}function dr(){return d(tr,{size:14,"aria-hidden":"true"})}function ir(){return d(Xt,{size:14,"aria-hidden":"true"})}function sr(){return d(Jt,{size:14,"aria-hidden":"true"})}function ut(r){let p=r.metadata?.jsonPath;if(Array.isArray(p)&&p.length>0&&p.every(n=>typeof n=="string"||typeof n=="number"&&Number.isInteger(n)&&n>=0))return p}function cr(r,e,p,n){let s=ut(r);if(!s||s.length===0)return[];let x=JSON.stringify(s.slice(0,-1));if(!n.every((P,T)=>{let I=ut(P);return I&&I[I.length-1]===T&&JSON.stringify(I.slice(0,-1))===x}))return[];let h=s.slice(0,-1);return[{op:"move",from:[...h,e],path:[...h,p]}]}function lr({text:r,query:e}){if(!e)return d(De,{children:r});let p=r.toLowerCase(),n=e.toLowerCase(),s=p.indexOf(n);return s===-1?d(De,{children:r}):me(De,{children:[r.slice(0,s),d("span",{className:l.highlight,children:r.slice(s,s+e.length)}),r.slice(s+e.length)]})}var ft={get:l.methodGet,post:l.methodPost,put:l.methodPut,patch:l.methodPatch,delete:l.methodDelete};function pr({method:r}){let e=r.toLowerCase(),p=Object.prototype.hasOwnProperty.call(ft,e)?ft[e]:l.methodOther,n=ze(r);return d("span",{className:`${l.methodBadge} ${p}`,children:n})}var W={draggedId:null,dragOverId:null,dragOverPosition:null};function re(r){let e=Ue(r);return _t(()=>{e.current=r},[r]),R(((...p)=>e.current(...p)),[])}function ur(r,e){if(r.isFocused!==e.isFocused||r.positionInSet!==e.positionInSet||r.setSize!==e.setSize||r.node!==e.node||r.depth!==e.depth||r.isExpanded!==e.isExpanded||r.isSelected!==e.isSelected||r.searchQuery!==e.searchQuery||r.showIndentGuides!==e.showIndentGuides||r.canDragNode!==e.canDragNode||r.draggable!==e.draggable||r.showContextMenuButton!==e.showContextMenuButton||r.activeMenuNodeId===r.node.id!=(e.activeMenuNodeId===e.node.id))return!1;let p=r.dragState.draggedId===r.node.id,n=e.dragState.draggedId===e.node.id;if(p!==n)return!1;let s=r.dragState.dragOverId===r.node.id,x=e.dragState.dragOverId===e.node.id;return!(s!==x||s&&x&&r.dragState.dragOverPosition!==e.dragState.dragOverPosition||r.renderIcon!==e.renderIcon||r.renderLabel!==e.renderLabel||r.renderSuffix!==e.renderSuffix||r.renderNode!==e.renderNode||r.onToggle!==e.onToggle||r.onSelect!==e.onSelect||r.onNodeRef!==e.onNodeRef||r.onDragStart!==e.onDragStart||r.onDragOver!==e.onDragOver||r.onDragLeave!==e.onDragLeave||r.onDrop!==e.onDrop||r.onDragEnd!==e.onDragEnd||r.onContextMenu!==e.onContextMenu||r.onMoreClick!==e.onMoreClick||r.labels!==e.labels)}function fr(r){let{node:e,depth:p,onToggle:n,onSelect:s,onNodeRef:x,searchQuery:h,showIndentGuides:P,renderIcon:T,renderLabel:I,renderSuffix:u,renderNode:v,draggable:w,dragState:g,canDragNode:C,onDragStart:V,onDragOver:J,onDragLeave:X,onDrop:N,onDragEnd:z,showContextMenuButton:y,activeMenuNodeId:k,onContextMenu:oe,onMoreClick:ne,labels:ae}=r,{isExpanded:F,isSelected:be}=r,le=(e.children?.length??0)>0,E=le,Ce=!le,de=g.draggedId===e.id,U=g.dragOverId===e.id,K=U?g.dragOverPosition:null,H=e.metadata,Y=typeof H?.method=="string"?H.method:void 0,xe=H?.deprecated===!0,He=H?.required===!0,G=typeof H?.kind=="string"?H.kind:void 0,M={node:e,depth:p,isExpanded:F,isSelected:be,isBranch:E,isLeaf:Ce,isDragging:de,isDragOver:U,dragOverPosition:K},ve=R(()=>{E?n(e.id):s(e)},[E,e,s,n]),pe=R(i=>{i.target===i.currentTarget&&(i.key==="Enter"||i.key===" "?(i.preventDefault(),ve()):(i.key==="ArrowRight"&&E&&!F||i.key==="ArrowLeft"&&E&&F)&&(i.preventDefault(),i.stopPropagation(),n(e.id)))},[ve,E,F,e.id,n]),Ee=T?T(M):Y?null:d("span",{className:l.nodeIcon,children:G==="section"&&H?.section==="components"?d(pt,{size:14}):G==="section"&&H?.section==="webhooks"?d(rr,{size:14}):G==="schema"||G==="component"||G==="object"?d(pt,{size:14}):G==="array"||G==="items"?d(Zt,{size:14}):E?F?d(Yt,{size:14}):d(Ut,{size:14}):Y&&d(pr,{method:Y})}),j=I?I(M):d("span",{className:`${l.nodeLabel} ${E?l.nodeLabelBranch:""} ${xe?l.deprecatedLabel:""}`,children:d(lr,{text:e.name,query:h})}),L=u?u(M):null,ue=[l.nodeRow,E?l.branchControl:l.leafItem,be?l.nodeRowSelected:"",de?l.nodeDragging:"",U&&K==="before"?l.dropIndicatorBefore:"",U&&K==="after"?l.dropIndicatorAfter:"",U&&K==="child"?l.dropIndicatorChild:"",G?`pde-tree-kind-${G}`:""].filter(Boolean).join(" "),Le=R(i=>x(e.id,i),[e.id,x]),Z=me("div",{ref:Le,className:ue,style:{paddingLeft:`${Math.min(p,20)*12+4}px`},"data-node-id":e.id,role:"treeitem","aria-expanded":E?F:void 0,"aria-label":Y?`${ze(Y)} ${e.name}`:e.name,"aria-selected":be,"aria-level":p+1,"aria-posinset":r.positionInSet,"aria-setsize":r.setSize,"aria-grabbed":w&&C?de:void 0,tabIndex:r.isFocused?0:-1,onFocus:()=>r.onFocusNode(e.id),onClick:ve,onKeyDown:pe,onContextMenu:y?i=>oe(e,i):void 0,onDragOver:w?i=>J(e,i):void 0,onDragLeave:w?()=>X(e):void 0,onDrop:w?i=>N(e,i):void 0,children:[P&&p>1&&Array.from({length:Math.min(p-1,20)},(i,we)=>d("span",{className:l.indentGuide,style:{left:`${(we+1)*12+11}px`}},`guide-${we}`)),w&&C?d("span",{className:l.dragHandle,style:{left:`${Math.min(p,20)*12+4}px`},draggable:!0,onDragStart:i=>V(e,i),onDragEnd:z,title:ae.dragToReorder,"aria-label":ae.dragToReorder,children:d(ir,{})}):null,E?d(ar,{expanded:F}):d("span",{className:l.expandIconPlaceholder}),Ee,j,He&&d("span",{className:l.requiredDot,title:ae.required}),d("span",{className:l.nodeSuffix,children:L}),y&&d("button",{type:"button",className:[l.moreButton,k===e.id?l.moreButtonActive:""].filter(Boolean).join(" "),onClick:i=>ne(e,i),title:ae.moreActions,"aria-label":ae.moreActionsFor.split("{{name}}").join(e.name),"aria-haspopup":"menu","aria-expanded":k===e.id,tabIndex:-1,children:d(sr,{})})]}),Pe=v?v(M,Z):Z;return d(De,{children:Pe})}var hr=$t(fr,ur),gr=jt(function(e,p){let{nodes:n,onSelect:s,onExpandedChange:x,defaultExpandedIds:h,defaultExpandDepth:P=1,searchable:T=!1,searchPlaceholder:I,labels:u,showExpandAll:v=!1,showRefresh:w=!1,onRefresh:g,toolbar:C,searchRowExtra:V,renderNode:J,renderIcon:X,renderLabel:N,renderSuffix:z,className:y,style:k,size:oe="sm",variant:ne="default",showIndentGuides:ae=!0,maxHeight:F,rootRef:be,draggable:le=!1,dragGroupKey:E,onReorder:Ce,onMove:de,canDrag:U,canDrop:K,contextMenuItems:H,onContextMenuOpen:Y,onPatch:xe,theme:He,virtualized:G="auto"}=e,M=he(()=>({...We,...u}),[u]),ve=I??M.search,[pe,Ee]=ge(null),[j,L]=ge(W),[ue,Le]=ge(null),Z=Ue(null),Pe=Qt(),i=he(()=>lt(n),[n]),[we,Ae]=ge({top:0,height:400}),[Te,ye]=ge(null),[Ge,Ye]=ge(null),b=Ke(n,{defaultExpandedIds:h,defaultExpandDepth:P,onExpandedChange:x}),D=Qe(n),Xe=D.isSearching?b.allBranchIds:D.expandedBeforeSearch??b.expandedIds,Ie=he(()=>new Set(Xe),[Xe]),S=he(()=>{let t=[],o=new Set,a=D.filteredNodes.map((c,f,m)=>({node:c,depth:0,parentId:null,positionInSet:f+1,setSize:m.length})).reverse();for(;a.length;){let c=a.pop();if(!o.has(c.node.id)&&(o.add(c.node.id),t.push(c),Ie.has(c.node.id))){let f=c.node.children??[];for(let m=f.length-1;m>=0;m--)a.push({node:f[m],depth:c.depth+1,parentId:c.node.id,positionInSet:m+1,setSize:f.length})}}return t},[D.filteredNodes,Ie]),Me=he(()=>new Map(S.map((t,o)=>[t.node.id,o])),[S]),ie=oe==="xs"?24:oe==="md"?32:28,ee=G!==!1&&ne!=="doc"&&!J&&(G===!0||S.length>500),fe=ee?Math.max(0,Math.min(Math.floor(we.top/ie)-8,S.length-1)):0,Ne=ee?Math.min(S.length,fe+Math.ceil(we.height/ie)+16):S.length,Ze=S.slice(fe,Ne);Je(()=>{let t=Z.current;if(!t)return;let o=()=>Ae({top:t.scrollTop,height:t.clientHeight||400});o();let a=typeof ResizeObserver>"u"?void 0:new ResizeObserver(o);return a?.observe(t),()=>a?.disconnect()},[]),Je(()=>{if(!Te)return;let t=Me.get(Te.id);if(t===void 0){ye(null);return}let o=Z.current;if(ee&&o&&(t<fe||t>=Ne)){let c=o.clientHeight||400,f=Math.min(t*ie,Math.max(0,S.length*ie-c));o.scrollTop=f,Ae(m=>({...m,top:o.scrollTop}));return}let a=b.nodeElementRefs.current.get(Te.id);Te.focus&&a?.focus({preventScroll:!0}),a?.scrollIntoView?.({block:"nearest"}),ye(null)},[Te,Me,ee,ie,fe,Ne,S.length,b.nodeElementRefs]);let qe=Ge===null?void 0:Me.get(Ge),ht=qe!==void 0&&qe>=fe&&qe<Ne?Ge:Ze[0]?.node.id,Fe=Ue({query:"",time:0}),gt=t=>{if(!(t.target instanceof HTMLElement)||t.target.getAttribute("role")!=="treeitem")return;let o=Me.get(t.target.dataset.nodeId??"");if(o===void 0)return;let a=S[o],c=o;if(t.key==="ArrowDown")c=Math.min(o+1,S.length-1);else if(t.key==="ArrowUp")c=Math.max(0,o-1);else if(t.key==="Home")c=0;else if(t.key==="End")c=S.length-1;else if(t.key==="ArrowRight"&&a.node.children?.length&&Ie.has(a.node.id))c=Math.min(o+1,S.length-1);else if(t.key==="ArrowLeft"&&(!a.node.children?.length||!Ie.has(a.node.id)))c=Me.get(a.parentId??"")??o;else if(t.key==="ContextMenu"||t.shiftKey&&t.key==="F10"){let m=t.target.getBoundingClientRect();t.preventDefault(),ke(a.node,m.left+24,m.bottom);return}else if(t.key.length===1&&t.key!==" "&&!t.ctrlKey&&!t.metaKey&&!t.altKey){let m=Date.now(),$=m-Fe.current.time<600?Fe.current.query+t.key.toLowerCase():t.key.toLowerCase();Fe.current={query:$,time:m};for(let A=1;A<=S.length;A++){let O=(o+A)%S.length;if(S[O].node.name.toLowerCase().startsWith($)){c=O;break}}}else return;t.preventDefault();let f=S[c].node.id;Ye(f),ye({id:f,focus:!0})};Je(()=>{Z.current&&(Z.current.scrollTop=0),Ae(t=>({...t,top:0}))},[D.deferredQuery]);let mt=R(t=>{Ee(t.id),s?.(t)},[s]),bt=R(t=>{!t.trim()&&D.expandedBeforeSearch&&b.setExpandedIds(D.expandedBeforeSearch),D.handleQueryChange(t,b.expandedIds)},[b.expandedIds,D]),Se=R(t=>!le||t.metadata?.kind==="section"?!1:U?U(t):!0,[U,le]),Re=R((t,o,a)=>{if(t.id===o.id||!Se(t)||i.path(o.id)?.ancestorIds.includes(t.id))return!1;if(E){let f=A=>{let O=i.path(A)?.nodes??[];for(let Q=O.length-1;Q>=0;Q--){let q=O[Q]?.metadata;if(q&&typeof q=="object"&&Object.prototype.hasOwnProperty.call(q,E))return q[E]}},m=f(t.id),$=f(o.id);if(m!==void 0&&$!==void 0&&m!==$)return!1}return!K||K(t,o,a)},[Se,K,E,i]),xt=R((t,o)=>{if(!Se(t)){o.preventDefault();return}o.dataTransfer.effectAllowed="move",o.dataTransfer.setData("text/plain",t.id),L({draggedId:t.id,dragOverId:null,dragOverPosition:null})},[Se]),vt=R((t,o)=>{if(!j.draggedId||j.draggedId===t.id)return;o.dataTransfer.dropEffect="none";let a=i.byId.get(j.draggedId)?.node;if(!a){L(B=>B.dragOverId===null?B:{...B,dragOverId:null,dragOverPosition:null});return}let c=o.currentTarget.getBoundingClientRect(),f=(o.clientY-c.top)/c.height,m=(t.children?.length??0)>0,$=f<.5?"before":"after",A,O;f<.25?(A=["before","after"],O=1):f>.75?(A=["after","before"],O=1):(A=[$],O=0);let Q=K?Re(a,t,"child"):!1;(m||Q)&&A.splice(O,0,"child");let q=A.find(B=>Re(a,t,B));if(!q){L(B=>B.dragOverId===null?B:{...B,dragOverId:null,dragOverPosition:null});return}o.preventDefault(),o.dataTransfer.dropEffect="move",L(B=>B.dragOverId===t.id&&B.dragOverPosition===q?B:{...B,dragOverId:t.id,dragOverPosition:q})},[Re,K,j.draggedId,i]),wt=R(t=>{L(o=>o.dragOverId!==t.id?o:{...o,dragOverId:null,dragOverPosition:null})},[]),Tt=R((t,o)=>{o.preventDefault();let a=j.draggedId,c=j.dragOverPosition;if(!a||!c||a===t.id||j.dragOverId!==t.id){L(W);return}let f=i.byId.get(a)?.node;if(!f||!Re(f,t,c)){L(W);return}if(c==="child"){let se=i.path(a)?.target;if(!se){L(W);return}let tt=$e(n,a,t.id);tt&&de?.(tt,se,t.id),L(W);return}let m=i.path(t.id);if(!m){L(W);return}let $=m.parent?.children??n,A=$.findIndex(_=>_.id===t.id);if(A===-1){L(W);return}let O=c==="before"?A:A+1,Q=i.path(a),q=m.parent?.id??null;if((Q?.parent?.id??null)!==q){let _=Q?.target,se=$e(n,a,q,O);se&&_&&de?.(se,_,q),L(W);return}if(Q&&Q.parent===m.parent){let _=$.findIndex(se=>se.id===a);_!==-1&&_<O&&(O-=1)}let te=nt(n,a,O);if(te&&te.fromIndex!==te.toIndex&&(Ce?.(te),xe)){let _=cr(te.moved,te.fromIndex,te.toIndex,$);_.length>0&&xe(_,{node:te.moved,type:"reorder"})}L(W)},[j,n,i,Re,de,xe,Ce]),yt=R(()=>{L(W)},[]),ke=R((t,o,a)=>{if(H){let c=H(t);if(c.length===0)return;let f=b.nodeElementRefs.current.get(t.id);f&&Le({x:o,y:a,node:t,items:c,anchor:f,ariaLabel:M.contextMenuFor.split("{{name}}").join(t.name),confirmLabel:M.confirmAction});return}Y?.({node:t,x:o,y:a})},[H,Y,b.nodeElementRefs,M]),It=R(()=>{Le(null)},[]),Mt=R((t,o)=>{o.preventDefault(),ke(t,o.clientX,o.clientY)},[ke]),Nt=R((t,o)=>{o.stopPropagation();let a=o.currentTarget.getBoundingClientRect();ke(t,a.left,a.bottom+4)},[ke]),et=R(t=>{let o=i.path(t);if(!o)return;let a=o.ancestorIds;b.setExpandedIds([...new Set([...b.expandedIds,...a])]),D.clearSearch(),ye({id:t,focus:!1})},[b,i,D.clearSearch]);Kt(p,()=>({expandAll:b.expandAll,collapseAll:b.collapseAll,expandToDepth:b.expandToDepth,getExpandedIds:()=>b.expandedIds,getSelectedNode:()=>pe?i.path(pe)?.target:void 0,scrollToNode:et,locateNode:t=>{let o=[...n],a=new Set;for(let c=0;c<o.length;c++){let f=o[c];if(!(!f||a.has(f))){if(a.add(f),t(f)){let m=i.path(f.id);return m&&b.setExpandedIds([...new Set([...b.expandedIds,...m.ancestorIds])]),D.clearSearch(),Ee(f.id),ye({id:f.id,focus:!1}),f}if(f.children?.length)for(let m of f.children)o.push(m)}}}}),[b,et,pe,n,i,D.clearSearch]);let St=he(()=>({...k,...F!==void 0?{maxHeight:F}:{}}),[k,F]),Rt=[l.root,ne!=="default"?`pde-tree-variant-${ne}`:"",y].filter(Boolean).join(" "),kt=re(mt),Dt=re(xt),Ct=re(vt),Et=re(wt),Lt=re(Tt),Pt=re(yt),At=re(Mt),Ot=re(Nt);return me("div",{ref:be,className:Rt,style:St,"data-size":oe,"data-theme":He,children:[C&&d("div",{className:l.toolbar,children:C}),(T||v||w||V)&&me("div",{className:l.searchRow,children:[T&&me("div",{className:l.searchInputWrap,children:[d("span",{className:l.searchIcon,children:d(dr,{})}),d("input",{className:l.searchInput,type:"search","aria-controls":Pe,placeholder:ve,value:D.query,onChange:t=>bt(t.target.value),"aria-label":M.searchTree})]}),V,v&&d("button",{type:"button",className:l.iconButton,onClick:b.isAllExpanded?b.collapseAll:b.expandAll,title:b.isAllExpanded?M.collapseAll:M.expandAll,"aria-label":b.isAllExpanded?M.collapseAll:M.expandAll,children:b.isAllExpanded?d(nr,{size:16,"aria-hidden":"true"}):d(or,{size:16,"aria-hidden":"true"})}),w&&d("button",{type:"button",className:l.iconButton,onClick:g,title:M.refresh,"aria-label":M.refresh,children:d(er,{size:14,"aria-hidden":"true"})})]}),d("div",{ref:Z,className:l.treeContainer,"data-virtualized":ee||void 0,onScroll:t=>{ee&&Ae({top:t.currentTarget.scrollTop,height:t.currentTarget.clientHeight||400})},id:Pe,role:"tree",onKeyDown:gt,"aria-label":M.treeNavigation,children:D.filteredNodes.length===0?d("div",{className:l.emptyState,children:D.isSearching?M.noResults:M.noItems}):me(De,{children:[ee&&d("div",{role:"presentation",style:{height:fe*ie}}),Ze.map(({node:t,depth:o,positionInSet:a,setSize:c})=>d(hr,{node:t,depth:o,positionInSet:a,setSize:c,isFocused:t.id===ht,onFocusNode:Ye,isExpanded:Ie.has(t.id),isSelected:pe===t.id,onToggle:b.toggleNode,onSelect:kt,onNodeRef:b.setNodeElementRef,searchQuery:D.deferredQuery,showIndentGuides:ae,renderIcon:X,renderLabel:N,renderSuffix:z,renderNode:J,draggable:le,dragState:j,canDragNode:Se(t),onDragStart:Dt,onDragOver:Ct,onDragLeave:Et,onDrop:Lt,onDragEnd:Pt,showContextMenuButton:!!(H||Y),activeMenuNodeId:ue?.node.id??null,onContextMenu:At,onMoreClick:Ot,labels:M},t.id)),ee&&d("div",{role:"presentation",style:{height:(S.length-Ne)*ie}})]})}),ue&&d(dt,{state:ue,onClose:It},ue.node.id)]})});export{We as DEFAULT_TREE_LABELS,Ve as METHOD_LABEL_MAP,gr as Tree,ze as getMethodLabel,Ke as useTreeExpansion,Qe as useTreeSearch};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@powerduck/tree",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.20",
|
|
4
4
|
"description": "Extensible tree component for API navigation, schema exploration, and documentation. Supports OpenAPI 3.2 nested tags, x-tagGroups, and custom data sources.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "powerduck",
|