1"use strict";(self.webpackChunknetnr=self.webpackChunknetnr||[]).push([[2283],{92283(e,t,i){i.d(t,{nrcTree:()=>a});let s={data:[],showLines:!0,draggable:!0,contextMenu:!0,lazy:!1,multiSelect:!1,contextMultiSelect:!1,theme:"light",rowHeight:28,bufferSize:5,filterMode:"hide",icons:{},onSelect:null,onRename:null,onBeforeRename:null,onBeforeDelete:null,onDelete:null,onDrop:null,onCreate:null,onBeforeContextMenu:null,onBeforeDrop:null,onLoadChildren:null,onRenderNode:null,onStateChange:null},l={folder:'<svg viewBox="0 0 16 16" fill="currentColor"><path d="M.54 3.87.5 3a2 2 0 0 1 2-2h3.672a2 2 0 0 1 1.414.586l.828.828A2 2 0 0 0 9.828 3h3.982a2 2 0 0 1 1.992 2.181l-.637 7A2 2 0 0 1 13.174 14H2.826a2 2 0 0 1-1.991-1.819l-.637-7a2 2 0 0 1 .342-1.31zM2.19 4a1 1 0 0 0-.996 1.09l.637 7a1 1 0 0 0 .995.91h10.348a1 1 0 0 0 .995-.91l.637-7A1 1 0 0 0 13.81 4zm4.69-1.707A1 1 0 0 0 6.172 2H2.5a1 1 0 0 0-1 .981l.006.139q.323-.119.684-.12h5.396z"/></svg>',folderOpen:'<svg viewBox="0 0 16 16" fill="currentColor"><path d="M1 3.5A1.5 1.5 0 0 1 2.5 2h2.764c.958 0 1.76.56 2.311 1.184C7.985 3.648 8.48 4 9 4h4.5A1.5 1.5 0 0 1 15 5.5v.64c.57.265.94.876.856 1.546l-.64 5.124A2.5 2.5 0 0 1 12.733 15H3.266a2.5 2.5 0 0 1-2.481-2.19l-.64-5.124A1.5 1.5 0 0 1 1 6.14zM2 6h12v-.5a.5.5 0 0 0-.5-.5H9c-.964 0-1.71-.629-2.174-1.154C6.374 3.334 5.82 3 5.264 3H2.5a.5.5 0 0 0-.5.5zm-.367 1a.5.5 0 0 0-.496.562l.64 5.124A1.5 1.5 0 0 0 3.266 14h9.468a1.5 1.5 0 0 0 1.489-1.314l.64-5.124A.5.5 0 0 0 14.367 7z"/></svg>',file:'<svg viewBox="0 0 16 16" fill="currentColor"><path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"/></svg>',chevronRight:'<svg viewBox="0 0 16 16" fill="currentColor"><path fill-rule="evenodd" d="M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708"/></svg>',loading:'<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2" class="nrc-tree-spin"><circle cx="8" cy="8" r="6" stroke-opacity="0.25"/><path d="M8 2a6 6 0 0 1 6 6" stroke-linecap="round"/></svg>',error:'<svg viewBox="0 0 16 16" fill="#ef5350"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z"/></svg>',search:'<svg viewBox="0 0 16 16" fill="currentColor"><path d="M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001q.044.06.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1 1 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0"/></svg>',connection:'<svg viewBox="0 0 16 16" fill="currentColor"><path d="M6 0a.5.5 0 0 1 .5.5V3h3V.5a.5.5 0 0 1 1 0V3h1a.5.5 0 0 1 .5.5v3A3.5 3.5 0 0 1 8.5 10c-.002.434-.01.845-.04 1.22-.041.514-.126 1.003-.317 1.424a2.08 2.08 0 0 1-.97 1.028C6.725 13.9 6.169 14 5.5 14c-.998 0-1.61.33-1.974.718A1.92 1.92 0 0 0 3 16H2c0-.616.232-1.367.797-1.968C3.374 13.42 4.261 13 5.5 13c.581 0 .962-.088 1.218-.219.241-.123.4-.3.514-.55.121-.266.193-.621.23-1.09.027-.34.035-.718.037-1.141A3.5 3.5 0 0 1 4 6.5v-3a.5.5 0 0 1 .5-.5h1V.5A.5.5 0 0 1 6 0M5 4v2.5A2.5 2.5 0 0 0 7.5 9h1A2.5 2.5 0 0 0 11 6.5V4z"/></svg>',database:'<svg viewBox="0 0 16 16" fill="#66BB6A"><path d="M1.333 2.667C1.333 1.194 4.318 0 8 0s6.667 1.194 6.667 2.667V4c0 1.473-2.985 2.667-6.667 2.667S1.333 5.473 1.333 4z"/><path d="M1.333 6.334v3C1.333 10.805 4.318 12 8 12s6.667-1.194 6.667-2.667V6.334a6.5 6.5 0 0 1-1.458.79C11.81 7.684 9.967 8 8 8s-3.809-.317-5.208-.876a6.5 6.5 0 0 1-1.458-.79z"/><path d="M14.667 11.668a6.5 6.5 0 0 1-1.458.789c-1.4.56-3.242.876-5.21.876-1.966 0-3.809-.316-5.208-.876a6.5 6.5 0 0 1-1.458-.79v1.666C1.333 14.806 4.318 16 8 16s6.667-1.194 6.667-2.667z"/></svg>',schema:'<svg viewBox="0 0 16 16" fill="#54b0b0"><path fill-rule="evenodd" d="M6 3.5A1.5 1.5 0 0 1 7.5 2h1A1.5 1.5 0 0 1 10 3.5v1A1.5 1.5 0 0 1 8.5 6v1H11a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-1 0V8h-5v.5a.5.5 0 0 1-1 0v-1A.5.5 0 0 1 5 7h2.5V6A1.5 1.5 0 0 1 6 4.5zm-3 8A1.5 1.5 0 0 1 4.5 10h1A1.5 1.5 0 0 1 7 11.5v1A1.5 1.5 0 0 1 5.5 14h-1A1.5 1.5 0 0 1 3 12.5zm6 0a1.5 1.5 0 0 1 1.5-1.5h1a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1-1.5 1.5h-1A1.5 1.5 0 0 1 9 12.5z"/></svg>',table:'<svg viewBox="0 0 16 16" fill="#42A5F5"><path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 2h-4v3h4zm0 4h-4v3h4zm0 4h-4v3h3a1 1 0 0 0 1-1zm-5 3v-3H6v3zm-5 0v-3H1v2a1 1 0 0 0 1 1zm-4-4h4V8H1zm0-4h4V4H1zm5-3v3h4V4zm4 4H6v3h4z"/></svg>',column:'<svg viewBox="0 0 16 16" fill="#9764f7"><path d="M0 2a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1zm8.5 0v8H15V2zm0 9v3H15v-3zm-1-9H1v3h6.5zM1 14h6.5V6H1z"/></svg>',view:'<svg viewBox="0 0 16 16" fill="currentColor"><path d="M16 8s-3-5.5-8-5.5S0 8 0 8s3 5.5 8 5.5S16 8 16 8M1.173 8a13 13 0 0 1 1.66-2.043C4.12 4.668 5.88 3.5 8 3.5s3.879 1.168 5.168 2.457A13 13 0 0 1 14.828 8q-.086.13-.195.288c-.335.48-.83 1.12-1.465 1.755C11.879 11.332 10.119 12.5 8 12.5s-3.879
1-1.168-5.168-2.457A13 13 0 0 1 1.172 8z"/><path d="M8 5.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5M4.5 8a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0"/></svg>',procedure:'<svg viewBox="0 0 16 16" fill="currentColor"><path d="M2.114 8.063V7.9c1.005-.102 1.497-.615 1.497-1.6V4.503c0-1.094.39-1.538 1.354-1.538h.273V2h-.376C3.25 2 2.49 2.759 2.49 4.352v1.524c0 1.094-.376 1.456-1.49 1.456v1.299c1.114 0 1.49.362 1.49 1.456v1.524c0 1.593.759 2.352 2.372 2.352h.376v-.964h-.273c-.964 0-1.354-.444-1.354-1.538V9.663c0-.984-.492-1.497-1.497-1.6M13.886 7.9v.163c-1.005.103-1.497.616-1.497 1.6v1.798c0 1.094-.39 1.538-1.354 1.538h-.273v.964h.376c1.613 0 2.372-.759 2.372-2.352v-1.524c0-1.094.376-1.456 1.49-1.456V7.332c-1.114 0-1.49-.362-1.49-1.456V4.352C13.51 2.759 12.75 2 11.138 2h-.376v.964h.273c.964 0 1.354.444 1.354 1.538V6.3c0 .984.492 1.497 1.497 1.6"/></svg>',index:'<svg viewBox="0 0 16 16" fill="currentColor"><path d="M8.186 1.113a.5.5 0 0 0-.372 0L1.846 3.5 8 5.961 14.154 3.5zM15 4.239l-6.5 2.6v7.922l6.5-2.6V4.24zM7.5 14.762V6.838L1 4.239v7.923zM7.443.184a1.5 1.5 0 0 1 1.114 0l7.129 2.852A.5.5 0 0 1 16 3.5v8.662a1 1 0 0 1-.629.928l-7.185 2.874a.5.5 0 0 1-.372 0L.63 13.09a1 1 0 0 1-.63-.928V3.5a.5.5 0 0 1 .314-.464z"/></svg>',key:'<svg viewBox="0 0 16 16" fill="currentColor"><path d="M0 8a4 4 0 0 1 7.465-2H14a.5.5 0 0 1 .354.146l1.5 1.5a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0L13 9.207l-.646.647a.5.5 0 0 1-.708 0L11 9.207l-.646.647a.5.5 0 0 1-.708 0L9 9.207l-.646.647A.5.5 0 0 1 8 10h-.535A4 4 0 0 1 0 8m4-3a3 3 0 1 0 2.712 4.285A.5.5 0 0 1 7.163 9h.63l.853-.854a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708 0l.646.647.793-.793-1-1h-6.63a.5.5 0 0 1-.451-.285A3 3 0 0 0 4 5"/><path d="M4 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/></svg>',add:'<svg viewBox="0 0 16 16" fill="currentColor"><path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4"/></svg>',addRoot:'<svg viewBox="0 0 16 16" fill="currentColor"><path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/><path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4"/></svg>',rename:'<svg viewBox="0 0 16 16" fill="currentColor"><path d="M12.146.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1 0 .708l-10 10a.5.5 0 0 1-.168.11l-5 2a.5.5 0 0 1-.65-.65l2-5a.5.5 0 0 1 .11-.168zM11.207 2.5 13.5 4.793 14.793 3.5 12.5 1.207zm1.586 3L10.5 3.207 4 9.707V10h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.293zm-9.761 5.175-.106.106-1.528 3.821 3.821-1.528.106-.106A.5.5 0 0 1 5 12.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.468-.325"/></svg>',delete:'<svg viewBox="0 0 16 16" fill="currentColor"><path d="M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0z"/><path d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1zM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4zM2.5 3h11V2h-11z"/></svg>',copy:'<svg viewBox="0 0 16 16" fill="currentColor"><path d="M13 0H6a2 2 0 0 0-2 2 2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h7a2 2 0 0 0 2-2 2 2 0 0 0 2-2V2a2 2 0 0 0-2-2m0 13V4a2 2 0 0 0-2-2H5a1 1 0 0 1 1-1h7a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1M3 4a1 1 0 0 1 1-1h7a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1z"/></svg>',paste:'<svg viewBox="0 0 16 16" fill="currentColor"><path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1z"/><path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0z"/></svg>',sql:'<svg viewBox="0 0 16 16" fill="currentColor"><path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"/><path d="M8.646 6.646a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L10.293 9 8.646 7.354a.5.5 0 0 1 0-.708m-1.292 0a.5.5 0 0 0-.708 0l-2 2a.5.5 0 0 0 0 .708l2 2a.5.5 0 0 0 .708-.708L5.707 9l1.647-1.646a.5.5 0 0 0 0-.708"/></svg>',code:'<svg viewBox="0 0 16 16" fill="currentColor"><path d="M10.478 1.647a.5.5 0 1 0-.956-.294l-4 13a.5.5 0 0 0 .956.294zM4.854 4.146a.5.5 0 0 1 0 .708L1.707 8l3.147 3.146a.5.5 0 0 1-.708.708l-3.5-3.5a.5.5 0 0 1 0-.708l3.5-3.5a.5.5 0 0 1 .708 0m6.292 0a.5.5 0 0 0 0 .708L14.293 8l-3.147 3.146a.5.5 0 0 0 .708.708l3.5-3.5a.5.5 0 0 0 0-.708l-3.5-3.5a.5.5 0 0 0-.708 0"/></svg>',link:'<svg viewBox="0 0 16 16" fill="currentColor"><path d="M4.715 6.542 3.343 7.914a3 3 0 1 0 4.243 4.243l1.828-1.829A3 3 0 0 0 8.586 5.5L8 6.086a1 1 0 0 0-.154.199 2 2 0 0 1 .861 3.337L6.88 11.45a2 2 0 1 1-2.83-2.83l.793-.792a4 4 0 0 1-.128-1.287z"/><path d="M6.586 4.672A3 3 0 0 0 7.414 9.5l.775-.776a2 2 0 0 1-.896-3.346L9.12 3.55a2 2 0 1 1 2.83 2.83l-.793.792c.112.42.155.855.128 1.287l1.372-1.372a3 3 0 1 0-4.243-4.243z"/></svg>',refresh:'<svg viewBox="0 0 16 16" fill="currentColor"><path fill-rule="evenodd" d="M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2z"/>
1<path d="M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466"/></svg>',info:'<svg viewBox="0 0 16 16" fill="currentColor"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533zM9 4.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/></svg>',eye:'<svg viewBox="0 0 16 16" fill="currentColor"><path d="M16 8s-3-5.5-8-5.5S0 8 0 8s3 5.5 8 5.5S16 8 16 8M1.173 8a13 13 0 0 1 1.66-2.043C4.12 4.668 5.88 3.5 8 3.5s3.879 1.168 5.168 2.457A13 13 0 0 1 14.828 8q-.086.13-.195.288c-.335.48-.83 1.12-1.465 1.755C11.879 11.332 10.119 12.5 8 12.5s-3.879-1.168-5.168-2.457A13 13 0 0 1 1.172 8z"/><path d="M8 5.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5M4.5 8a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0"/></svg>',empty:'<svg viewBox="0 0 16 16"></svg>'},n={add:{icon:"add",text:"æ°å»ºåèç¹",action:e=>e.tree.addNode(e.node)},addRoot:{icon:"addRoot",text:"æ°å»ºæ ¹èç¹",action:e=>e.tree.addNode(null)},rename:{icon:"rename",text:"éå½å",shortcut:"F2",action:e=>e.tree.startRename(e.node)},delete:{icon:"delete",text:"å é¤",shortcut:"Del",danger:!0,action:e=>e.tree.deleteNode(e.node)},copy:{icon:"copy",text:"å¤å¶",action:e=>{if(e.node){var t;null==(t=navigator.clipboard)||t.writeText(e.node.text)}}}},r=i(17544).l.htmlEscape;function d(e,t){return!e.isLeaf&&(!!t&&!e.loaded||e.children&&e.children.length>0)}class o{constructor(e,t={}){this.container=e,this.rowHeight=t.rowHeight||28,this.bufferSize=t.bufferSize||5,this._totalCount=0,this._scrollCallback=null,this._rafId=null,this._lastScrollTop=-1,this._spacer=document.createElement("div"),this._spacer.className="nrc-tree-vscroll-spacer",this._spacer.style.position="relative",this.container.appendChild(this._spacer),this._abortController=new AbortController,this.container.addEventListener("scroll",()=>this._onScroll(),{signal:this._abortController.signal,passive:!0})}update(e){this._totalCount=Math.max(0,e);let t=this._totalCount*this.rowHeight;this._spacer.style.height=t+"px"}getVisibleRange(e){void 0===e&&(e=this.container.scrollTop);let t=this.container.clientHeight,i=Math.floor(e/this.rowHeight),s=Math.ceil((e+t)/this.rowHeight),l=Math.max(0,i-this.bufferSize),n=Math.min(this._totalCount,s+this.bufferSize);return{start:Math.max(0,i),end:Math.min(this._totalCount,s),renderStart:l,renderEnd:n}}getOffset(e){return e*this.rowHeight}scrollTo(e,t="start"){let i=e*this.rowHeight;"center"===t?i-=(this.container.clientHeight-this.rowHeight)/2:"end"===t&&(i-=this.container.clientHeight-this.rowHeight),i=Math.max(0,Math.min(i,this._spacer.offsetHeight-this.container.clientHeight)),this.container.scrollTop=i}get scrollTop(){return this.container.scrollTop}set scrollTop(e){this.container.scrollTop=e}onScroll(e){this._scrollCallback=e}_onScroll(){this._rafId||(this._rafId=requestAnimationFrame(()=>{this._rafId=null;let e=this.container.scrollTop;if(e!==this._lastScrollTop&&(this._lastScrollTop=e,this._scrollCallback)){let t=this.getVisibleRange(e);this._scrollCallback(t)}}))}flush(){if(this._scrollCallback){let e=this.getVisibleRange();this._scrollCallback(e)}}get totalCount(){return this._totalCount}get spacer(){return this._spacer}destroy(){this._abortController&&(this._abortController.abort(),this._abortController=null),this._rafId&&(cancelAnimationFrame(this._rafId),this._rafId=null),this._spacer&&this._spacer.parentNode&&this._spacer.parentNode.removeChild(this._spacer),this._scrollCallback=null,this._spacer=null}}class a{constructor(e,t={}){this.container="string"==typeof e?document.querySelector(e):e,this.options={...s,...t},this.icons={...l,...this.options.icons},this.data=[],this._index=new Map,this.selectedNode=null,this._selectedIds=new Set,this._anchorId=null,this.editingNode=null,this.dragNode=null,this.dragPreview=null,this.contextMenu=null,this._vscroll=null,this._flatList=[],this._renderContainer=null,this._filterKeyword="",this._filterMatchIds=new Set,this._abortController=new AbortController,this._visibleObserver=null,this._init()}_init(){this.container.classList.add("nrc-tree"),"dark"===this.options.theme&&this.container.classList.add("nrc-tree-dark"),this.container.hasAttribute("tabindex")||this.container.setAttribute("tabindex","0"),this.data=this._normalizeData(this.options.data),this._vscroll=ne
1w o(this.container,{rowHeight:this.options.rowHeight,bufferSize:this.options.bufferSize}),this._vscroll.onScroll(()=>this._renderVisible()),this._bindEvents(),this.render(),this._visibleObserver=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&requestAnimationFrame(()=>this._renderVisible())},{threshold:0}),this._visibleObserver.observe(this.container)}_getOrCreateRenderContainer(){return this._renderContainer||(this._renderContainer=this._vscroll.spacer),this._renderContainer}_normalizeData(e,t=null){return e&&0!==e.length?e.some(e=>"pid"in e)?this._buildTreeFromFlat(e):e.map(e=>this._createNode(e,t)):[]}_createNode(e,t=null){let i=e.children&&e.children.length>0,s=this.options.lazy,l=s?!0===e.expanded||i&&!1!==e.expanded:!1!==e.expanded,n={id:void 0!==e.id&&null!==e.id?e.id:this._generateId(),text:e.text||"æ°èç¹",icon:e.icon||(i?"folder":"file"),expanded:l,children:[],pid:t,data:e.data||{},loading:!1,loaded:!s||i,isLeaf:e.isLeaf||!1,description:e.description||"",badge:e.badge||"",badgeType:e.badgeType||"default",title:e.title||"",textHtml:e.textHtml||""};return this._index.set(n.id,n),e.children&&e.children.length>0&&(n.children=e.children.map(e=>this._createNode(e,n.id))),n}_buildTreeFromFlat(e){let t=new Map,i=[],s=this.options.lazy;return e.forEach(e=>{let i={id:void 0!==e.id&&null!==e.id?e.id:this._generateId(),text:e.text||"æ°èç¹",icon:e.icon||"file",expanded:s?!0===e.expanded:!1!==e.expanded,children:[],pid:void 0!==e.pid&&null!==e.pid?e.pid:null,data:e.data||{},loading:!1,loaded:!s,isLeaf:e.isLeaf||!1,description:e.description||"",badge:e.badge||"",badgeType:e.badgeType||"default",title:e.title||"",textHtml:e.textHtml||""};t.set(i.id,i),this._index.set(i.id,i)}),t.forEach(e=>{null!=e.pid&&t.has(e.pid)?t.get(e.pid).children.push(e):i.push(e)}),t.forEach(t=>{var i;!(t.children.length>0)||(null==(i=e.find(e=>e.id===t.id))?void 0:i.icon)||(t.icon="folder")}),i}_generateId(){return`_${Date.now()}_${Math.random().toString(36).substring(2,6)}`}findNode(e){let t=this._index.get(e);if(!t&&"string"==typeof e){let i=Number(e);isNaN(i)||String(i)!==e||(t=this._index.get(i))}return t||null}findParent(e){return e&&null!=e.pid&&this._index.get(e.pid)||null}_getSiblings(e){let t=this.findParent(e);return t?t.children:this.data}_rebuildIndex(){this._index.clear();let e=t=>{for(let i of t)this._index.set(i.id,i),i.children.length>0&&e(i.children)};e(this.data)}_computeFlatList(e=this.data,t=0,i=[],s=[]){for(let l=0;l<e.length;l++){let n=e[l];if(this._filterKeyword&&"hide"===this.options.filterMode&&!this._isNodeVisible(n))continue;let r=!!(this._filterKeyword&&"hide"===this.options.filterMode),d=l===e.length-1;if(r&&!d){d=!0;for(let t=l+1;t<e.length;t++)if(this._isNodeVisible(e[t])){d=!1;break}}let o=null;if(this.options.showLines){let e=[];for(let i=0;i<t;i++){if(s[i])continue;let t=12*i+8;e.push({left:t,isLast:!1})}if(t>0){let i=12*t+8;e.push({left:i,isLast:d})}e.length>0&&(o={verticalLines:e})}if(i.push({node:n,depth:t,lines:o}),n.expanded){if(n.loading&&!n.loaded){let e=null;if(o){let i=[];for(let e of o.verticalLines)i.push({left:e.left,isLast:!1});let s=12*t+8;i.push({left:s,isLast:!1}),e={verticalLines:i}}i.push({node:{_isLoading:!0,id:"_loading_"+n.id},depth:t+1,lines:e})}else if(n.children&&n.children.length>0){let e=[...s,d];this._computeFlatList(n.children,t+1,i,e)}}}return i}_isNodeVisible(e){if(this._filterMatchIds.has(e.id))return!0;for(let t of e.children||[])if(this._isNodeVisible(t))return!0;return!1}render(){if(this.editingNode)return;this._flatList=this._computeFlatList();let e=this._getOrCreateRenderContainer();if(0===this._flatList.length&&!this._filterKeyword){this._vscroll.update(0),e.innerHTML=`<div class="nrc-tree-empty"> 2 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1"> 3 <path d="M10 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8l-2-2z"/> 4 </svg> 5 <p>ææ æ°æ®</p> 6</div>`;return}e.querySelectorAll(".nrc-tree-node").forEach(e=>e.remove()),this._vscroll.update(this._flatList.length),0!==this._flatList.length&&this._renderVisible()}_renderVisible(){if(0===this._flatList.length)return;let e=this._vscroll.getVisibleRange(),t=this._getOrCreateRenderContainer();
6t.querySelectorAll(".nrc-tree-node").forEach(e=>e.remove());let{renderStart:i,renderEnd:s}=e,n=[];for(let e=i;e<s&&e<this._flatList.length;e++){let{node:t,depth:i,lines:s}=this._flatList[e];if(t._isLoading){let t=function(e=0,t={},i=null){let s=t.loading||l.loading,n="";if(i&&i.verticalLines){let e=[];for(let t of i.verticalLines){let i=t.isLast?"nrc-tree-vline nrc-tree-vline-last":"nrc-tree-vline";e.push(`<span class="${i}" style="left:${t.left}px"></span>`)}e.length>0&&(n=`<div class="nrc-tree-lines">${e.join("")}</div>`)}return`<div class="nrc-tree-node nrc-tree-loading" data-loading="true"> 7 <div class="nrc-tree-item" style="padding-left:${12*e}px"> 8 ${n} 9 <div class="nrc-tree-toggle empty"></div> 10 <div class="nrc-tree-icon">${s}</div> 11 <span class="nrc-tree-text nrc-tree-text-loading">å è½½ä¸...</span> 12 </div> 13</div>`}(i,this.icons,s),r=this._htmlToElement(t);r.style.position="absolute",r.style.top=e*this.options.rowHeight+"px",r.style.left="0",r.style.right="0",n.push(r);continue}let o=this.options.onRenderNode?this.options.onRenderNode(t):null,a=this._selectedIds.has(t.id),h=e*this.options.rowHeight,c=function(e,t={}){var i;let s,{depth:n=0,selected:o=!1,lazy:a=!1,icons:h={},customRender:c=null,filterKeyword:g="",filterMode:u="hide",filterMatch:p=!0,top:f=null,lines:v=null}=t,_=function(e,t){if(e.loading)return t.loading||l.loading;let i=e.icon;return i&&t[i]?"folder"===i&&e.expanded&&!e.isLeaf?t.folderOpen||l.folderOpen:t[i]:!e.isLeaf&&e.children&&e.children.length>0?e.expanded?t.folderOpen||l.folderOpen:t.folder||l.folder:t.file||l.file}(c?{...e,icon:c.icon||e.icon}:e,h),m=d(e,a),x=["nrc-tree-toggle",e.expanded?"expanded":"",!m?"empty":""].filter(Boolean).join(" "),b=["nrc-tree-item",o?"selected":"",g&&!p&&"hide"===u?"filtered-out":""].filter(Boolean).join(" "),w=null!=(i=null==c?void 0:c.textHtml)?i:e.textHtml;w?s=w:(s=r(e.text),g&&"highlight"===u&&p&&(s=function(e,t){if(!t)return r(e);let i=r(e),s=r(t),l=RegExp(`(${s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")})`,"gi");return i.replace(l,"<mark>$1</mark>")}(e.text,g)));let L=(null==c?void 0:c.description)||e.description||"",C=L?`<span class="nrc-tree-desc">${r(L)}</span>`:"",N=(null==c?void 0:c.badge)||e.badge||"",y=(null==c?void 0:c.badgeType)||e.badgeType||"default",M=N?`<span class="nrc-tree-badge nrc-tree-badge-${r(y)}">${r(N)}</span>`:"",S=null!==f?`style="position:absolute;top:${f}px;left:0;right:0"`:"",A="";if(v&&v.verticalLines){let e=[];for(let t of v.verticalLines){let i=t.isLast?"nrc-tree-vline nrc-tree-vline-last":"nrc-tree-vline";e.push(`<span class="${i}" style="left:${t.left}px"></span>`)}e.length>0&&(A=`<div class="nrc-tree-lines">${e.join("")}</div>`)}let z=(null==c?void 0:c.title)||e.title||"",H=z?` title="${null==z?"":r(z).replace(/"/g,""").replace(/\n/g," ").replace(/\r/g,"")}"`:"";return`<div class="nrc-tree-node" data-id="${r(e.id)}" ${S}> 14 <div class="${b}" draggable="${!1!==t.draggable?"true":"false"}" 15 style="--depth:${n};padding-left:${12*n}px"${H}> 16 ${A} 17 <div class="${x}"> 18 ${h.chevronRight||l.chevronRight} 19 </div> 20 <div class="nrc-tree-icon">${_}</div> 21 <span class="nrc-tree-text">${s}</span> 22 ${C} 23 ${M} 24 </div> 25</div>`}(t,{depth:i,selected:a,lazy:this.options.lazy,icons:this.icons,customRender:o,filterKeyword:this._filterKeyword,filterMode:this.options.filterMode,filterMatch:!this._filterKeyword||this._filterMatchIds.has(t.id),draggable:this.options.draggable,top:h,lines:s});n.push(this._htmlToElement(c))}let o=document.createDocumentFragment();n.forEach(e=>o.appendChild(e)),t.appendChild(o)}_htmlToElement(e){let t=document.createElement("template");return t.innerHTML=e.trim(),t.content.firstElementChild}toggleNode(e){if(!e||e._isLoading||e.loading)return;let t=!e.expanded;if(this.options.lazy&&t&&!e.loaded&&!e.isLeaf){e.expanded=!0,this._loadChildren(e);return}e.expanded=!e.expanded,this.render(),this._emitStateChange()}async _loadChildren(e){if(!this.options.onLoadChildren){e.loaded=!0,this.render();return}e.loading=!0,this.render();try{let t=await this.options.onLoadChildren(e),i=Array.isArray(t)?t:[];for(let t of e.children)this._removeFromIndex(t);e.children=i.map(t=>this._createNode(t,e.id)),e.loaded=!0}catch(e){console.error("nrcTree: loadChildren failed",e)}finally{e.loading=!1}this.render()}_removeFromIndex(e){for(let t of(this._index.delete(e.id),e.children||[]))this._removeFromIndex(t)}reloadNode(e){e&&(e.loaded=!1,e.children=[],e.expanded=!0,this.options.lazy?this._loadChildren(e):this.render())}setChildren(e,t){if(e){for(let t of e.children)this._removeFromIndex(t);e.children=(t||[]).map(t=>this._createNode(t,e.id)),e.loaded=!0,e.loading=!1,e.expanded&&this.render()}}selectNode(e,t={}){if(!e||e._isLoading)return;let{ctrlKey:i=!1,shiftKey:s=!1}=t;if(!this.options.multiSelect&&!i&&!s&&1===this._selectedIds.size&&this._selectedIds.has(e.id)){this.options.onSelect&&this.options.onSelect(e);return}let l=new Set(this._selectedIds);this.options.multiSelect?s&&null!=this._anchorId?this._rangeSelect(this._anchorId,e.id):(i?this._toggleSelect(e.id):(this._selectedIds.clear(),this._selectedIds.add(e.id)),this._anchorId=e.id):(this._selectedIds.clear(),this._selectedIds.add(e.id)),this.selectedNode=e;let n=new Set([...l,...this._selectedIds]);if(s)this._renderVisible();else for(let e of n){let t=this.container.querySelector(`[data-id="${CSS.escape(String(e))}"]`);if(t){let i=t.querySelector(".nrc-tree-item");i&&i.classList.toggle("selected",this._selectedIds.has(e))}}this.options.onSelect&&this.options.onSelect(e),this._emitStateChange()}addNode(e=null,t={}){let i={id:void 0!==t.id&&null!==t.id?t.id:this._generateId(),text:t.text||"æ°å»ºèç¹",icon:t.icon||"file",expanded:void 0===t.expanded||t.expanded,children:[],pid:e?e.id:null,data:t.data||{},loading:!1,loaded:!0,isLeaf:t.isLeaf||!1,description:t.description||"",badge:t.badge||"",badgeType:t.badgeType||"default",title:t.title||"",textHtml:t.textHtml||""};return this._index.set(i.id,i),e?(e.children.push(i),e.expanded=!0,"file"===e.icon&&(e.icon="folder")):this.data.push(i),this.render(),this.scrollToNode(i),this.selectNode(i),this.startRename(i),this.options.onCreate&&this.options.onCreate(i),i}deleteNode(e){if(!e||e._isLoading||this.options.onBeforeDelete&&!1===this.options.onBeforeDelete(e))return;let t=this._getSiblings(e),i=t.indexOf(e);i>-1&&t.splice(i,1),this._removeFromIndex(e),this._selectedIds.delete(e.id),this.selectedNode&&this.selectedNode.id===e.id&&(this.selectedNode=null),this.render(),this.options.onDelete&&this.options.onDelete(e)}moveNode(e,t,i){if(!this._isDescendant(e,t)&&(!this.options.onBeforeDrop||!1!==this.options.onBeforeDrop(e,t,i))){if(this._removeFromSiblings(e),"inside"===i)t.children.push(e),e.pid=t.id,t.expanded=!0,"file"===t.icon&&(t.icon="folder");else{let s=this._getSiblings(t),l=s.indexOf(t);s.splice("before"===i?l:l+1,0,e);let n=this.findParent(t);e.pid=n?n.id:null}this.render(),this.selectNode(e),this.options.onDrop&&this.options.onDrop(e,t,i)}}_removeFromSiblings(e){let t=this._getSiblings(e),i=t.indexOf(e);i>-1&&t.splice(i,1)}_isDescendant(e,t){if(e.id===t.id)return!0;for(let i of e.children)if(this._isDescendant(i,t))return!0;return!1}_toggleSelect(e){this._selectedIds.has(e)?this._selectedIds.delete(e):this._selectedIds.add(e)}_rangeSelect(e,t){let i=!1;for(let{node:s}of this._flatList)if(!s._isLoading)if(s.id===e||s.id===t)if(i){this._selectedIds.add(s.id);break}else i=!0,this._selectedIds.add(s.id);else i&&this._selectedIds.add(s.id)}getSelectedNodes(){return[...this._selectedIds].map(e=>
25this.findNode(e)).filter(Boolean)}selectAll(){for(let{node:e}of this._flatList)e._isLoading||this._selectedIds.add(e.id);this._renderVisible()}deselectAll(){this._selectedIds.clear(),this.selectedNode=null,this._renderVisible()}isSelected(e){return!!e&&this._selectedIds.has(e.id)}isFolder(e){return!!e&&("folder"===e.icon||"folderOpen"===e.icon)}expandAll(e=this.data,t=!0){for(let t of e)t.expanded=!0,t.children.length>0&&this.expandAll(t.children,!1);t&&this.render()}collapseAll(e=this.data,t=!0){for(let t of e)t.expanded=!1,t.children.length>0&&this.collapseAll(t.children,!1);t&&this.render()}startRename(e){if(!e||e._isLoading)return;this.editingNode=e;let t=this.container.querySelector(`[data-id="${CSS.escape(String(e.id))}"]`);if(!t)return;let i=t.querySelector(".nrc-tree-item"),s=t.querySelector(".nrc-tree-text");if(!s||!i)return;let l=e.text;i.removeAttribute("draggable"),s.outerHTML=`<input class="nrc-tree-input" type="text" value="${r(l)}">`;let n=t.querySelector(".nrc-tree-input");n&&(n.focus(),n.select(),this._finishRenameHandler=()=>{this.editingNode&&this.finishRename()},n.addEventListener("blur",this._finishRenameHandler),n.addEventListener("keydown",e=>{"Enter"===e.key?(e.preventDefault(),n.blur()):"Escape"===e.key&&this.cancelRename()}))}finishRename(e=null){if(!this.editingNode)return;let t=this.container.querySelector(`[data-id="${CSS.escape(String(this.editingNode.id))}"]`);if(!t)return;let i=t.querySelector(".nrc-tree-input");if(!i||(this._finishRenameHandler&&(i.removeEventListener("blur",this._finishRenameHandler),this._finishRenameHandler=null),!t.querySelector(".nrc-tree-item")))return;let s=this.editingNode.text,l=i.value.trim()||s;if(this.options.onBeforeRename&&!1===this.options.onBeforeRename(this.editingNode,l,s)){this.editingNode=null,this.render(),this.selectedNode&&this.selectNode(this.selectedNode);return}this.editingNode.text=l;let n=this.editingNode;this.editingNode=null,this.render(),this.selectNode(e||n),this.options.onRename&&this.options.onRename(n,l,s)}cancelRename(){if(this.editingNode){let e=this.container.querySelector(`[data-id="${CSS.escape(String(this.editingNode.id))}"]`),t=null==e?void 0:e.querySelector(".nrc-tree-input");t&&this._finishRenameHandler&&t.removeEventListener("blur",this._finishRenameHandler)}this.editingNode=null,this.render(),this.selectedNode&&this.selectNode(this.selectedNode)}_showContextMenu(e,t,i){this.hideContextMenu();let s=[{cmd:"add",disabled:!i},{cmd:"addRoot"},{divider:!0},{cmd:"rename",disabled:!i},{divider:!0},{cmd:"delete",disabled:!i}];if(this.options.onBeforeContextMenu){let e=this.options.onBeforeContextMenu(i,s);e&&(s=e)}if(!(s=this._resolveBuiltinCmds(s,i))||0===s.length)return;let n=function e(t,i="light",s={},n=0){let d="dark"===i?" nrc-tree-dark":"",o={...l,...s},a=`<div class="${0===n?"nrc-tree-context-menu":"nrc-tree-context-submenu"}${d}">`;return t.forEach((t,d)=>{if(t.divider)a+='<div class="nrc-tree-context-menu-divider"></div>';else{let h=t.icon&&o[t.icon]?o[t.icon]:o.empty||l.empty,c=t.children&&t.children.length>0,g=["nrc-tree-context-menu-item",t.disabled?"disabled":"",t.danger?"danger":"",c?"has-children":""].filter(Boolean).join(" ");a+=`<div class="${g}" data-index="${d}" data-level="${n}"> 26 ${h} 27 <span>${r(t.text)}</span> 28 ${t.shortcut?`<span class="shortcut">${r(t.shortcut)}</span>`:""} 29 ${c?'<svg class="submenu-arrow" width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><path d="M6 4l4 4-4 4"/></svg>':""} 30 </div>`,c&&(a+=e(t.children,i,s,n+1))}}),a+="</div>"}(s,this.options.theme,this.icons),d=document.createElement("template");d.innerHTML=n.trim();let o=d.content.firstElementChild;document.body.appendChild(o),o.style.left=e+"px",o.style.top=t+"px",requestAnimationFrame(()=>{let i=o.getBoundingClientRect(),s=e,l=t;i.right>window.innerWidth&&(s=window.innerWidth-i.width-10),i.bottom>window.innerHeight&&(l=window.innerHeight-i.height-10),l<10&&(l=10),s<10&&(s=10),o.style.left=s+"px",o.style.top=l+"px"});let a=[],h=(e,t=0)=>{e.forEach((e,i)=>{!e.divider&&(a.push({...e,level:t,index:i}),e.children&&h(e.children,t+1))})};h(s);let c=new Map;o.querySelectorAll(".nrc-tree-context-menu-item:not(.disabled)").forEach(e
30=>{let t=parseInt(e.getAttribute("data-index")),i=parseInt(e.getAttribute("data-level")),s=a.find(e=>e.index===t&&e.level===i);s&&s.children&&(e.addEventListener("mouseenter",()=>{let t=c.get(e);t&&(clearTimeout(t),c.delete(e)),e.closest(".nrc-tree-context-menu, .nrc-tree-context-submenu").querySelectorAll(".nrc-tree-context-submenu.show").forEach(t=>{t.previousElementSibling!==e&&t.classList.remove("show")});let i=e.nextElementSibling;if(i&&i.classList.contains("nrc-tree-context-submenu")){i.classList.add("show");let t=e.getBoundingClientRect(),s=t.right,l=t.top;i.style.left=`${s}px`,i.style.top=`${l}px`,requestAnimationFrame(()=>{let e=i.getBoundingClientRect();if(e.right>window.innerWidth&&(s=t.left-e.width,i.style.left=`${s}px`),e.bottom>window.innerHeight){let s=e.bottom-window.innerHeight;(l=t.top-s)<0&&(l=0),i.style.top=`${l}px`}})}}),e.addEventListener("mouseleave",()=>{let t=e.nextElementSibling;if(t&&t.classList.contains("nrc-tree-context-submenu")){let i=setTimeout(()=>{t.matches(":hover")||t.classList.remove("show"),c.delete(e)},100);c.set(e,i)}})),e.addEventListener("click",()=>{s&&s.action&&!s.children&&(s.action(),this.hideContextMenu())})}),this.contextMenu=o}hideContextMenu(){this.contextMenu&&(this.contextMenu.remove(),this.contextMenu=null)}_resolveBuiltinCmds(e,t){let i={tree:this,node:t};return e.map(e=>{if(e.divider||!e.cmd)return e;let s=n[e.cmd];if(!s)return e;let l={...e};return void 0===e.icon&&(l.icon=s.icon),void 0===e.text&&(l.text=s.text),void 0===e.shortcut&&s.shortcut&&(l.shortcut=s.shortcut),void 0===e.danger&&s.danger&&(l.danger=s.danger),void 0===e.action&&(l.action=()=>s.action(i)),delete l.cmd,l.children&&(l.children=this._resolveBuiltinCmds(l.children,t)),l})}_createDragPreview(e){let t=this.icons[e.icon]||this.icons.file,i=function(e,t,i="light"){return`<div class="nrc-tree-drag-preview${"dark"===i?" nrc-tree-dark":""}"> 31 ${t} 32 <span>${r(e.text)}</span> 33 </div>`}(e,t,this.options.theme);this.dragPreview=this._htmlToElement(i),document.body.appendChild(this.dragPreview)}_updateDragPreview(e,t){this.dragPreview&&(this.dragPreview.style.left=e+10+"px",this.dragPreview.style.top=t+10+"px")}_removeDragPreview(){this.dragPreview&&(this.dragPreview.remove(),this.dragPreview=null)}_clearDragStyles(){this.container.querySelectorAll(".nrc-tree-item").forEach(e=>{e.classList.remove("dragging","drag-over","drag-over-top","drag-over-bottom")})}filter(e){this._filterKeyword=(e||"").trim(),this._filterMatchIds.clear(),this._filterKeyword&&this._walkFilter(this.data,this._filterKeyword.toLowerCase()),this.render()}_walkFilter(e,t){for(let i of e){let e=i.text.toLowerCase().includes(t),s=!1;if(i.children&&i.children.length>0&&(s=this._walkFilter(i.children,t)),e||s)return this._filterMatchIds.add(i.id),s&&!i.expanded&&(i.expanded=!0),!0}return!1}clearFilter(){this._filterKeyword="",this._filterMatchIds.clear(),this.render()}getExpandedIds(){let e=[],t=i=>{for(let s of i)s.expanded&&s.children.length>0&&(e.push(s.id),t(s.children))};return t(this.data),e}restoreExpanded(e){if(!e||!e.length)return;let t=new Set(e),i=e=>{for(let s of e)t.has(s.id)&&s.children.length>0&&(s.expanded=!0,i(s.children))};i(this.data),this.render()}getState(){return{expandedIds:this.getExpandedIds(),selectedIds:[...this._selectedIds],scrollTop:this._vscroll?this._vscroll.
33scrollTop:0}}restoreState(e){if(e){if(e.expandedIds&&this.restoreExpanded(e.expandedIds),e.selectedIds){this._selectedIds=new Set(e.selectedIds);let t=e.selectedIds[e.selectedIds.length-1];t&&(this.selectedNode=this.findNode(t),this._anchorId=t)}null!=e.scrollTop&&this._vscroll&&(this._vscroll.scrollTop=e.scrollTop),this.render()}}_emitStateChange(){this.options.onStateChange&&this.options.onStateChange(this.getState())}_selectPreviousNode(){if(!this.selectedNode)return;let e=this._flatList.findIndex(e=>e.node.id===this.selectedNode.id);if(e>0){let t=this._flatList[e-1];t.node._isLoading||(this.selectNode(t.node),this._scrollToVisible(e-1))}}_selectNextNode(){if(!this.selectedNode){let e=this._flatList.find(e=>!e.node._isLoading);e&&(this.selectNode(e.node),this._scrollToVisible(0));return}let e=this._flatList.findIndex(e=>e.node.id===this.selectedNode.id);if(e<this._flatList.length-1){let t=this._flatList[e+1];t.node._isLoading||(this.selectNode(t.node),this._scrollToVisible(e+1))}}_scrollToVisible(e){this._vscroll&&this._vscroll.
33scrollTo(e,"center")}_bindEvents(){let e=this._abortController.signal;this.container.addEventListener("click",e=>{let t=e.target.closest(".nrc-tree-item");if(!t)return;let i=t.closest(".nrc-tree-node");if(!i||!i.dataset.id)return;let s=this.findNode(i.dataset.id);if(!s||s._isLoading)return;this.editingNode&&this.editingNode.id!==s.id&&this.finishRename();let l=e.target.closest(".nrc-tree-toggle");l&&!l.classList.contains("empty")?this.toggleNode(s):this.editingNode&&this.editingNode.id===s.id||this.selectNode(s,{ctrlKey:e.ctrlKey||e.metaKey,shiftKey:e.shiftKey})},{signal:e}),this.container.addEventListener("dblclick",e=>{let t=e.target.closest(".nrc-tree-item");if(!t||(e.preventDefault(),e.target.closest(".nrc-tree-toggle")))return;let i=t.closest(".nrc-tree-node");if(!i||!i.dataset.id)return;let s=this.findNode(i.dataset.id);s&&!s._isLoading&&d(s,this.options.lazy)&&this.toggleNode(s)},{signal:e}),this.options.contextMenu&&this.container.addEventListener("contextmenu",e=>{e.preventDefault();let t=e.target.closest(".nrc-tree-item");
33if(t){let i=t.closest(".nrc-tree-node");if(i&&i.dataset.id){let t=this.findNode(i.dataset.id);t&&!t._isLoading&&(this.options.contextMultiSelect&&this._selectedIds.has(t.id)||this.selectNode(t),this._showContextMenu(e.clientX,e.clientY,t))}}else this._showContextMenu(e.clientX,e.clientY,null)},{signal:e}),this.options.draggable&&this._bindDragEvents(e),this.container.addEventListener("keydown",e=>{if(this.editingNode){"Escape"===e.key&&this.cancelRename();return}if(!this.selectedNode)return;let t=document.activeElement;if(!(t&&["INPUT","TEXTAREA","SELECT"].includes(t.tagName)))switch(e.key){case"F2":e.preventDefault(),this.startRename(this.selectedNode);break;case"Delete":e.preventDefault(),this.deleteNode(this.selectedNode);break;case"ArrowUp":e.preventDefault(),this._selectPreviousNode();break;case"ArrowDown":e.preventDefault(),this._selectNextNode();break;case"ArrowRight":!this.selectedNode.expanded&&d(this.selectedNode,this.options.lazy)&&this.toggleNode(this.selectedNode);break;case"ArrowLeft":this.selectedNode.expanded&&this.toggleNode(this.selectedNode);break;case"a":(e.ctrlKey||e.metaKey)&&this.options.multiSelect&&(e.preventDefault(),this.selectAll());break;case" ":this.options.multiSelect&&(e.preventDefault(),this._toggleSelect(this.selectedNode.id),this._renderVisible())}},{signal:e}),document.addEventListener("click",()=>this.hideContextMenu(),{signal:e})}_bindDragEvents(e){let t=null,i=null,s=null;this.container.addEventListener("dragstart",t=>{if(this.editingNode||t.target.classList.contains("nrc-tree-input"))return void t.preventDefault();let i=t.target.closest(".nrc-tree-item");if(!i)return;let l=i.closest(".nrc-tree-node");if(!l||(this.dragNode=this.findNode(l.dataset.id),!this.dragNode))return;i.classList.add("dragging"),t.dataTransfer.effectAllowed="move",t.dataTransfer.setData("text/plain",String(this.dragNode.id));let n=document.createElement("canvas");n.width=1,n.height=1,t.dataTransfer.setDragImage(n,0,0),this._createDragPreview(this.dragNode),this._updateDragPreview(t.clientX,t.clientY),s=e=>{this._updateDragPreview(e.clientX,e.clientY)},document.addEventListener("dragover",s,{signal:e})},{signal:e}),this.container.addEventListener("dragover",e=>{if(e.preventDefault(),!this.dragNode)return;let s=e.target.closest(".nrc-tree-item");if(!s)return;let l=s.closest(".nrc-tree-node");if(!l||l.dataset.id===String(this.dragNode.id))return;let n=s.getBoundingClientRect(),r=e.clientY-n.top,d=n.height;this._clearDragStyles(),t=s,r<.25*d?(i="before",s.classList.add("drag-over-top")):r>.75*d?(i="after",s.classList.add("drag-over-bottom")):(i="inside",s.classList.add("drag-over"))},{signal:e}),this.container.addEventListener("dragleave",e=>{let t=e.target.closest(".nrc-tree-item");t&&t.classList.remove("drag-over","drag-over-top","drag-over-bottom")},{signal:e}),this.container.addEventListener("drop",e=>{if(e.preventDefault(),!this.dragNode||!t)return;
33let s=t.closest(".nrc-tree-node");if(!s)return;let l=this.findNode(s.dataset.id);l&&l.id!==this.dragNode.id&&this.moveNode(this.dragNode,l,i),this._clearDragStyles(),this._removeDragPreview()},{signal:e}),this.container.addEventListener("dragend",()=>{s&&(document.removeEventListener("dragover",s),s=null),this._clearDragStyles(),this._removeDragPreview(),this.dragNode=null},{signal:e})}getData(e=!1){return e?this._flattenData(this.data):JSON.parse(JSON.stringify(this.data))}_flattenData(e,t=[]){for(let i of e)t.push({id:i.id,text:i.text,icon:i.icon,pid:i.pid,expanded:i.expanded,data:i.data,description:i.description,badge:i.badge,badgeType:i.badgeType,isLeaf:i.isLeaf,title:i.title,textHtml:i.textHtml,loaded:i.loaded}),i.children.length>0&&this._flattenData(i.children,t);return t}setData(e){this._index.clear(),this._selectedIds.clear(),this.selectedNode=null,this.data=this._normalizeData(e),this.render()}_countNodes(e=this.data){let t=e.length;for(let i of e)t+=this._countNodes(i.children);return t}toggleLines(){this.options.showLines=!this.options.showLines,this.render()}toggleTheme(e){e?this.options.theme=e:this.options.theme="dark"===this.options.theme?"light":"dark",this.container.classList.toggle("nrc-tree-dark","dark"===this.options.theme)}getVisibleNodes(){return this._flatList.filter(e=>!e.node._isLoading).map(e=>e.node)}scrollToNode(e,t="center"){if(!e||!this._vscroll)return;let i=!1,s=this.findParent(e);for(;s;)s.expanded||(s.expanded=!0,i=!0),s=this.findParent(s);i&&(this._flatList=this._computeFlatList(),this._vscroll.update(this._flatList.length));let l=this._flatList.findIndex(t=>t.node===e||t.node.id===e.id);l>
33=0&&(this._vscroll.scrollTo(l,t),this._renderVisible())}destroy(){this._abortController.abort(),this._abortController=null,this._visibleObserver&&(this._visibleObserver.disconnect(),this._visibleObserver=null),this.hideContextMenu(),this._removeDragPreview(),this._vscroll&&(this._vscroll.destroy(),this._vscroll=null),this.container&&(this.container.innerHTML="",this.container.classList.remove("nrc-tree","nrc-tree-dark"),this.container.style.position=""),this._renderContainer=null,this.data=[],this._index.clear(),this._selectedIds.clear(),this.selectedNode=null,this.editingNode=null,this.dragNode=null}}Object.assign(window,{nrcTree:a})}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.