joplin-plugin-explorer 1.9.0 → 1.9.1

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/README.md CHANGED
@@ -27,7 +27,7 @@ A unified sidebar plugin for [Joplin](https://joplinapp.org/) that displays note
27
27
  - **Sidebar Toggle** — A toolbar button, a **View** menu entry and an assignable keyboard shortcut hide and show the panel, so you can reclaim the width without disabling the plugin
28
28
  - **Row Density** — Row font size and row height are adjustable (Advanced settings), for fitting more of a large tree on screen
29
29
  - **Conflicts** — Sync conflicts are listed in their own section, which only appears while there are any
30
- - **Keyboard Shortcuts** — With focus in the panel: **F2** renames the row you last clicked, **F5** refreshes, **Delete** deletes (after confirming)
30
+ - **Keyboard** — With focus in the panel: **↑ ↓** move between rows without opening anything, **→** expands (or steps into an expanded notebook), **←** collapses (or steps out to the parent), **Enter** / **Space** open the note or fold the notebook, **Home** / **End** jump to the first / last row, **Tab** / **Shift+Tab** jump between sections. **F2** renames, **F5** refreshes, **Delete** deletes (after confirming). A click moves the keyboard cursor too
31
31
  - **Sync Button** — Trigger synchronization with status feedback (syncing → done); becomes **Cancel** while a sync is running
32
32
  - **Auto Expand** — Automatically expands to the currently selected note on startup
33
33
  - **Collapse All** — One-click collapse all notebooks
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "joplin-plugin-explorer",
3
- "version": "1.9.0",
3
+ "version": "1.9.1",
4
4
  "description": "A unified sidebar that displays notebooks and notes together in a single tree view",
5
5
  "author": "lim0513",
6
6
  "homepage": "https://github.com/lim0513/joplin-explorer",
@@ -2,7 +2,7 @@
2
2
  "manifest_version": 1,
3
3
  "id": "com.github.joplin-explorer",
4
4
  "app_min_version": "2.6.0",
5
- "version": "1.9.0",
5
+ "version": "1.9.1",
6
6
  "name": "Joplin Explorer",
7
7
  "description": "A unified sidebar that displays notebooks and notes together in a single tree view",
8
8
  "author": "lim0513",
Binary file
@@ -182,6 +182,13 @@ html, body {
182
182
  background: var(--joplin-selected-color, rgba(74, 156, 245, 0.2));
183
183
  }
184
184
 
185
+ /* Keyboard cursor (#47): drawn only after a key moved it, never on click. */
186
+ .kb-cursor:focus { outline: none; }
187
+ body.kb-active .kb-cursor {
188
+ outline: 1px solid var(--joplin-url-color, #4a9cf5);
189
+ outline-offset: -1px;
190
+ }
191
+
185
192
  /* Toggle arrow */
186
193
  .toggle {
187
194
  width: 14px;
@@ -1 +1 @@
1
- var _savedScrollTop=0,_isFirstRender=!0;function postMsg(e){webviewApi.postMessage(e)}function cssEscapeAttr(e){return String(null==e?"":e).replace(/(["\\])/g,"\\$1")}function currentSortMode(){var e=document.getElementById("notes-in-list-root");return e&&e.dataset.sort||""}postMsg({name:"panelReady"}),document.addEventListener("scroll",function(e){e.target&&"tree-container"===e.target.id&&(_savedScrollTop=e.target.scrollTop)},!0);var _observer=new MutationObserver(function(){var e=document.getElementById("tree-container");if(e){if(_isFirstRender){_isFirstRender=!1;var t=e.querySelector(".tree-item.note.selected");t&&setTimeout(function(){t.scrollIntoView({block:"nearest",behavior:"instant"})},30)}else e.scrollTop=_savedScrollTop;applyHeaderStacking(),restoreSearchAfterRefresh()}});function loadI18n(){var e=document.getElementById("notes-in-list-root");if(e&&e.dataset.i18n)try{window._i18n=JSON.parse(e.dataset.i18n)}catch(e){}}function T(e){return window._i18n||loadI18n(),window._i18n&&window._i18n[e]||e}function getPinnedData(){var e=document.getElementById("notes-in-list-root");if(e&&e.dataset.pinned)try{return JSON.parse(e.dataset.pinned)}catch(e){}return[]}function isPinned(e){for(var t=getPinnedData(),a=0;a<t.length;a++)if(t[a].id===e)return!0;return!1}function showInlineInput(e,t,a){var n=document.getElementById("inline-input-overlay");n&&n.remove();var s=document.createElement("div");s.id="inline-input-overlay",s.className="inline-input-overlay",s.innerHTML='<div class="inline-input-dialog"><div class="inline-input-label">'+e+'</div><input class="inline-input-field" type="text" value="'+(t||"").replace(/"/g,"&quot;")+'" /><div class="inline-input-buttons"><button class="inline-input-ok">OK</button><button class="inline-input-cancel">'+(T("cancel")||"Cancel")+"</button></div></div>",document.body.appendChild(s);var o=s.querySelector(".inline-input-field");function d(){var e=o.value;s.remove(),a(e)}function r(){s.remove(),a(null)}o.focus(),o.select(),s.querySelector(".inline-input-ok").addEventListener("click",d),s.querySelector(".inline-input-cancel").addEventListener("click",r),o.addEventListener("keydown",function(e){"Enter"===e.key&&d(),"Escape"===e.key&&r()}),s.addEventListener("click",function(e){e.target===s&&r()})}function animateExpand(e){e&&(e.classList.remove("anim-expand"),e.offsetWidth,e.classList.add("anim-expand"))}function toggleFolderLocal(e,t){var a=e.classList.toggle("collapsed"),n=document.querySelector('.children[data-folder-id="'+t+'"]');n&&n.classList.toggle("collapsed",a),a||animateExpand(n);var s=e.querySelector(".toggle");s&&(s.textContent=a?"▶":"▼",s.classList.toggle("expanded",!a))}function collapseAllLocal(){var e=document.getElementById("main-tree");e&&(e.querySelectorAll(".tree-item.folder").forEach(function(e){e.classList.add("collapsed");var t=e.querySelector(".toggle");t&&(t.textContent="▶",t.classList.remove("expanded"))}),e.querySelectorAll(".children").forEach(function(e){e.classList.add("collapsed")}))}function setSectionsCollapsed(e){for(var t=[["pinned-header","pinned-body"],["smart-header","smart-body"],["tree-header","main-tree"],["tags-header","tags-body"],["trash-header","trash-children"],["conflicts-header","conflict-children"]],a=!1,n=0;n<t.length;n++){var s=document.getElementById(t[n][0]),o=document.getElementById(t[n][1]);if(s){a=!0,s.classList.toggle("collapsed",e),o&&o.classList.toggle("collapsed",e);var d=s.querySelector(".toggle");d&&(d.textContent=e?"▶":"▼")}}return a}function collapseScope(){var e=document.getElementById("notes-in-list-root");return e&&e.dataset.collapseScope||"notebooksOnly"}function applyHeaderStacking(){var e=document.getElementById("notes-in-list-root"),t=e&&"1"===e.dataset.stackHeaders,a=[];if(document.querySelectorAll(".pinned-section-header, .smart-section-header, .tree-section-header, .tags-section-header, .trash-section-header, .conflicts-section-header").forEach(function(e){a.push(e)}),t)for(var n=a.map(function(e){return e.offsetHeight}),s=0;s<a.length;s++){for(var o=0,d=0;d<s;d++)o+=n[d];for(var r=0,i=s+1;i<a.length;i++)r+=n[i];a[s].style.top=o+"px",a[s].style.bottom=r+"px"}else a.forEach(function(e){e.style.top="",e.style.bottom=""})}function expandAllLocal(){var e=document.getElementById("main-tree");if(!e)return[];var t=[];return e.querySelectorAll(".tree-item.folder").forEach(function(e){var a=e.dataset.id,n=document.querySelector('.children[data-folder-id="'+a+'"]'),s=n&&n.querySelector(".tree-item.folder"),o=e.querySelector(".toggle");s?(e.classList.remove("collapsed"),n&&n.classList.remove("collapsed"),o&&(o.textContent="▼",o.classList.add("expanded"))):(e.classList.add("collapsed"),n&&n.classList.add("collapsed"),o&&(o.textContent="▶",o.classList.remove("expanded")),a&&t.push(a))}),t}function applyCollapsedSet(e){for(var t={},a=0;a<e.length;a++)t[e[a]]=!0;var n=[],s=document.getElementById("main-tree");return s?(s.querySelectorAll(".tree-item.folder").forEach(function(e){var a=e.dataset.id,s=document.querySelector('.children[data-folder-id="'+a+'"]'),o=e.querySelector(".toggle"),d=!!t[a];e.classList.toggle("collapsed",d),s&&s.classList.toggle("collapsed",d),o&&(o.textContent=d?"▶":"▼",o.classList.toggle("expanded",!d)),d&&a&&n.push(a)}),n):n}_observer.observe(document.body,{childList:!0,subtree:!0}),document.addEventListener("click",function(e){e.target&&e.target.closest&&e.target.closest(".pinned-section-header, .smart-section-header, .tree-section-header, .tags-section-header, .trash-section-header, .conflicts-section-header")&&requestAnimationFrame(applyHeaderStacking)});var _collapseSnapshot=null;function expandAncestorsLocal(e){for(var t=[],a=e.closest(".children");a;){a.classList.contains("collapsed")&&(a.classList.remove("collapsed"),a.dataset.folderId&&t.push(a.dataset.folderId));var n=document.querySelector('.tree-item.folder:not(.pinned-item)[data-id="'+a.dataset.folderId+'"]');if(n){n.classList.remove("collapsed");var s=n.querySelector(".toggle");s&&(s.textContent="▼",s.classList.add("expanded"))}a=a.parentElement?a.parentElement.closest(".children"):null}return t}var _hoverTimer=null,_hoverNoteId="";function hidePreview(){_hoverTimer&&(clearTimeout(_hoverTimer),_hoverTimer=null),_hoverNoteId="";var e=document.getElementById("note-preview");e&&e.remove()}function hoverPreviewEnabled(){var e=document.getElementById("notes-in-list-root");return!e||"0"!==e.dataset.hoverPreview}function showPreview(e){if(e.id===_hoverNoteId&&!document.getElementById("ctx-menu")){var t=document.querySelector('.tree-item.note[data-id="'+e.id+'"]');if(t&&t.matches(":hover")){var a=document.getElementById("note-preview");a&&a.remove();var n=document.createElement("div");n.id="note-preview";var s=document.createElement("div");s.className="note-preview-title",s.textContent=e.title,n.appendChild(s);var o=document.createElement("div");o.className="note-preview-meta";for(var d=[T("pvType")+": "+(e.isTodo?T("pvTodo"):T("pvNote"))+" · "+T("pvSize")+": "+(e.size||0)+" "+T("pvChars"),T("pvCreated")+": "+g(e.created),T("pvUpdated")+": "+g(e.updated)],r=0;r<d.length;r++){var i=document.createElement("div");i.textContent=d[r],o.appendChild(i)}n.appendChild(o);var l=document.createElement("div");l.className="note-preview-body",l.textContent=e.snippet||"",e.snippet&&n.appendChild(l),document.body.appendChild(n);var c=t.getBoundingClientRect(),m=n.getBoundingClientRect(),p=c.bottom+4;p+m.height>window.innerHeight-8&&(p=Math.max(8,c.top-m.height-4)),n.style.top=p+"px",n.style.left=Math.max(8,Math.min(c.left+20,window.innerWidth-m.width-8))+"px"}}function g(e){if(!e)return"";var t=new Date(e);return t.getFullYear()+"-"+("0"+(t.getMonth()+1)).slice(-2)+"-"+("0"+t.getDate()).slice(-2)+" "+("0"+t.getHours()).slice(-2)+":"+("0"+t.getMinutes()).slice(-2)}}document.addEventListener("mouseover",function(e){if(hoverPreviewEnabled())if(document.getElementById("ctx-menu"))hidePreview();else{var t=e.target.closest?e.target.closest(".tree-item.note"):null;if(t){var a=t.dataset.id;a&&a!==_hoverNoteId&&(hidePreview(),_hoverNoteId=a,_hoverTimer=setTimeout(function(){_hoverNoteId!==a||document.querySelector(".tree-item.dragging")||postMsg({name:"notePreview",id:a})},450))}else hidePreview()}}),document.addEventListener("scroll",function(){hidePreview()},!0),document.addEventListener("mousedown",function(){hidePreview()}),document.addEventListener("dragstart",function(){hidePreview()}),window.addEventListener("blur",function(){var e=document.getElementById("ctx-menu");e&&e.remove(),hidePreview()}),document.addEventListener("click",function(e){var t=e.target.closest(".ctx-item");if(t){if(t.dataset.smartOpen){var a=document.getElementById("ctx-menu");return a&&a.remove(),void runSearch(t.dataset.query||"","1"===t.dataset.custom&&t.dataset.title||"")}if(t.dataset.msg){postMsg({name:t.dataset.msg});var n=document.getElementById("ctx-menu");return void(n&&n.remove())}if(t.classList.contains("ctx-drill")){var s=document.getElementById("ctx-menu"),o=t.nextElementSibling&&t.nextElementSibling.classList.contains("ctx-export-template")?t.nextElementSibling:s?s.querySelector(".ctx-export-template"):null;return void(s&&o&&(window._ctxMainHtml=s.innerHTML,s.innerHTML='<div class="ctx-item ctx-back">◂ '+(o.dataset.title||"")+'</div><div class="ctx-sep"></div>'+o.innerHTML))}if(t.classList.contains("ctx-back")){var d=document.getElementById("ctx-menu");return void(d&&window._ctxMainHtml&&(d.innerHTML=window._ctxMainHtml))}if(!t.dataset.action)return;postMsg({name:"contextMenu",action:t.dataset.action,id:t.dataset.id,itemType:t.dataset.type,tagId:t.dataset.tagId,format:t.dataset.format});var r=document.getElementById("ctx-menu");r&&r.remove()}else{var i=document.getElementById("ctx-menu");i&&i.remove();var l=e.target.closest(".shared-badge");if(l){var c=l.closest(".tree-item");c&&c.dataset.id&&postMsg({name:"contextMenu",action:"publishNote",id:c.dataset.id,itemType:"note"})}else{var m=e.target.closest(".search-tag-item");if(m)m.dataset.tagId&&postMsg({name:"loadTagNotes",tagId:m.dataset.tagId});else{var p=e.target.closest(".search-folder-item");if(p)p.dataset.folderId&&postMsg({name:"locateFolder",folderId:p.dataset.folderId});else{var g=e.target.closest(".pinned-section-header");if(g){var v=g.classList.toggle("collapsed"),u=document.getElementById("pinned-body");u&&u.classList.toggle("collapsed",v),v||(animateExpand(u),_e(g));var f=g.querySelector(".toggle");return f&&(f.textContent=v?"▶":"▼"),void postMsg({name:"togglePinnedCollapse"})}var h=e.target.closest(".tags-section-header");if(h){var y=h.classList.toggle("collapsed"),x=document.getElementById("tags-body");x&&x.classList.toggle("collapsed",y),y||(animateExpand(x),_e(h));var S=h.querySelector(".toggle");return S&&(S.textContent=y?"▶":"▼"),void postMsg({name:"toggleTagsSection"})}var E=e.target.closest(".tree-section-header");if(E){var L=E.classList.toggle("collapsed"),b=document.getElementById("main-tree");b&&b.classList.toggle("collapsed",L),L||(animateExpand(b),_e(E));var I=E.querySelector(".toggle");return I&&(I.textContent=L?"▶":"▼"),void postMsg({name:"toggleTreeSection"})}var w=e.target.closest(".smart-section-header");if(w){var M=w.classList.toggle("collapsed"),_=document.getElementById("smart-body");_&&_.classList.toggle("collapsed",M),M||(animateExpand(_),_e(w));var C=w.querySelector(".toggle");return C&&(C.textContent=M?"▶":"▼"),void postMsg({name:"toggleSmartSection"})}var N=e.target.closest(".smart-folder");if(N){var q=N.dataset.smartId,B=document.querySelector('.smart-children[data-smart-id="'+q+'"]');if(!B)return;var k=B.classList.toggle("collapsed");N.classList.toggle("collapsed",k),k||animateExpand(B);var F=N.querySelector(".toggle");return F&&(F.textContent=k?"▶":"▼"),void(k||postMsg({name:"smartFolderNotes",smartId:q,query:N.dataset.query}))}var A=e.target.closest(".conflicts-section-header");if(A){var D=A.classList.toggle("collapsed"),H=document.getElementById("conflict-children");H&&H.classList.toggle("collapsed",D),D||(animateExpand(H),_e(A));var R=A.querySelector(".toggle");return R&&(R.textContent=D?"▶":"▼"),void postMsg({name:"toggleConflictsSection"})}var P=e.target.closest(".trash-section-header");if(P){var O=P.classList.toggle("collapsed"),j=document.getElementById("trash-children");j&&j.classList.toggle("collapsed",O),O||(animateExpand(j),_e(P));var Y=P.querySelector(".toggle");return Y&&(Y.textContent=O?"▶":"▼"),postMsg({name:"toggleTrashSection"}),void(O||!j||j.dataset.loaded||postMsg({name:"trashNotes"}))}var J=e.target.closest(".tag-folder");if(J){var Q=J.dataset.tagId,W=J.dataset.tagPath,X=W?document.querySelector('.tag-children[data-tag-path="'+cssEscapeAttr(W)+'"]'):document.querySelector('.tag-children[data-tag-id="'+Q+'"]');if(!X)return;var V=X.classList.toggle("collapsed");J.classList.toggle("collapsed",V),V||animateExpand(X);var z=J.querySelector(".toggle");return z&&(z.textContent=V?"▶":"▼"),void(V||!Q||X.dataset.loaded||postMsg({name:"tagFolderNotes",tagId:Q}))}var K=e.target.closest(".search-section-header");if(K){var U=document.getElementById("search-section-"+K.dataset.section);if(U){var $=K.querySelector(".section-toggle");U.classList.contains("collapsed")?(U.classList.remove("collapsed"),$&&($.textContent="▼")):(U.classList.add("collapsed"),$&&($.textContent="▶"))}}else{var G=e.target.closest(".tree-item");if(G){if("1"===G.dataset.conflict)return document.querySelectorAll(".tree-item.note.selected").forEach(function(e){e.classList.remove("selected")}),G.classList.add("selected"),void postMsg({name:"openConflictNote",id:G.dataset.id});if("1"===G.dataset.trash){if("folder"===G.dataset.type){var Z=G.querySelector(".toggle");if(!Z||!Z.textContent)return;for(var ee=Number(G.dataset.depth||0),te="▼"===Z.textContent,ae=document.querySelector('.trash-folder-children[data-folder-id="'+G.dataset.id+'"]'),ne=G.nextElementSibling;ne;){if(ne.classList.contains("trash-folder-children")){var se=Number(ne.dataset.depth||0);if(ne===ae)ne.classList.toggle("collapsed",te);else{if(!(se>ee))break;ne.classList.add("collapsed")}}else{if(!ne.classList.contains("tree-item")||"1"!==ne.dataset.trash||"folder"!==ne.dataset.type)break;var oe=Number(ne.dataset.depth||0);if(oe<=ee)break;te?ne.classList.add("trash-hidden"):ne.classList.toggle("trash-hidden",oe!==ee+1);var de=ne.querySelector(".toggle");de&&de.textContent&&(de.textContent="▶")}ne=ne.nextElementSibling}Z.textContent=te?"▶":"▼",!te&&ae&&(animateExpand(ae),ae.dataset.loaded||postMsg({name:"trashFolderNotes",folderId:G.dataset.id}))}else"note"===G.dataset.type&&postMsg({name:"openNote",id:G.dataset.id});return}var re=G.dataset.type,ie=G.dataset.id,le=G.classList.contains("pinned-item");if("note"===re)document.querySelectorAll(".tree-item.note.selected").forEach(function(e){e.classList.remove("selected")}),G.classList.add("selected"),postMsg({name:"openNote",id:ie});else if("folder"===re)if(le)postMsg({name:"locatePinnedFolder",folderId:ie});else if(toggleFolderLocal(G,ie),postMsg({name:"toggleFolder",id:ie}),!G.classList.contains("collapsed")){var ce=document.getElementById("btn-collapse-all");ce&&"expand"===ce.dataset.mode&&(ce.dataset.mode="collapse",ce.textContent="▲",ce.title=T("collapseAll"))}}else{var me=e.target.closest("button");if(me)switch(me.id){case"btn-new":var pe=document.getElementById("ctx-menu");if(pe){pe.remove();break}var ge=document.getElementById("btn-new");if(!ge)break;var ve=ge.getBoundingClientRect();document.body.insertAdjacentHTML("beforeend",'<div id="ctx-menu" class="context-menu" style="left:'+ve.left+"px;top:"+(ve.bottom+2)+'px;"><div class="ctx-item" data-msg="newNotebook"><span class="ctx-icon">📁</span>'+T("newNotebook")+'</div><div class="ctx-item" data-msg="newNote"><span class="ctx-icon">📝</span>'+T("newNote")+'</div><div class="ctx-item" data-msg="newTodo"><span class="ctx-icon">☐</span>'+T("newTodo")+"</div></div>");break;case"btn-sort":postMsg({name:"cycleSort"});break;case"btn-collapse-all":var ue=document.getElementById("btn-collapse-all"),fe=document.getElementById("notes-in-list-root"),he=fe&&fe.dataset.expandMode||"restore",ye="allSections"===collapseScope();if("collapseOnly"===he){collapseAllLocal(),postMsg({name:"collapseAll",sections:!!ye&&setSectionsCollapsed(!0)}),ue&&(ue.dataset.mode="collapse",ue.textContent="▲",ue.title=T("collapseAll"));break}if(ue&&"expand"===ue.dataset.mode){var xe,Te=document.getElementById("notes-in-list-root"),Se=Te&&Te.dataset.expandMode||"restore";if("all"===Se)xe=applyCollapsedSet([]);else if("restore"===Se){var Ee=_collapseSnapshot;if(!Ee&&Te)try{Ee=JSON.parse(Te.dataset.collapseSnapshot||"null")}catch(e){Ee=null}xe=Array.isArray(Ee)?applyCollapsedSet(Ee):expandAllLocal()}else xe=expandAllLocal();var Le=document.querySelectorAll("#main-tree .tree-item.folder").length;"skeleton"!==Se&&Le>0&&xe.length>=Le&&(xe=applyCollapsedSet([])),postMsg({name:"expandAll",collapsedIds:xe,sections:!!ye&&setSectionsCollapsed(!1)}),ue.dataset.mode="collapse",ue.textContent="▲",ue.title=T("collapseAll")}else{var be=[],Ie=0;document.querySelectorAll("#main-tree .tree-item.folder").forEach(function(e){e.dataset.id&&(Ie++,e.classList.contains("collapsed")&&be.push(e.dataset.id))}),collapseAllLocal();var we=!!ye&&setSectionsCollapsed(!0);be.length>=Ie&&Ie>0?postMsg({name:"collapseAll",sections:we}):(_collapseSnapshot=be,postMsg({name:"collapseAll",prevCollapsed:be,sections:we})),ue&&(ue.dataset.mode="expand",ue.textContent="▼",ue.title=T("expandAll"))}break;case"btn-reveal":if(_searchMode){var Me=document.getElementById("search-input");Me&&(Me.value=""),exitSearchMode()}else revealSelectedNote();break;case"btn-refresh":postMsg({name:"refreshView"});break;case"btn-sync":me.classList.contains("syncing")?(me.disabled=!0,me.textContent=T("syncCancelling"),postMsg({name:"syncCancel"})):me.disabled||(me.classList.add("syncing"),me.textContent="✕ "+T("syncCancel"),postMsg({name:"sync"}))}}}}}}}function _e(e){var t=document.getElementById("tree-container");if(t&&e){var a=parseInt(e.style.top||"",10);(!isFinite(a)||a<0)&&(a=0);var n=e.style.position;e.style.position="static";var s=e.getBoundingClientRect().top-t.getBoundingClientRect().top+t.scrollTop;e.style.position=n;var o=s-a,d=t.scrollHeight-t.clientHeight;o>d&&(o=d),o<0&&(o=0);var r=t.scrollTop,i=o-r;if(!(Math.abs(i)<2)){var l=performance.now();requestAnimationFrame(function e(a){var n=Math.min(1,(a-l)/260),s=n<.5?2*n*n:1-Math.pow(-2*n+2,2)/2,o=r+i*s;t.scrollTop=o,_savedScrollTop=o,n<1&&requestAnimationFrame(e)})}}}}),document.addEventListener("contextmenu",function(e){hidePreview();var t=document.getElementById("ctx-menu");if(t&&t.remove(),e.target.closest(".smart-section-header"))return e.preventDefault(),void document.body.insertAdjacentHTML("beforeend",'<div id="ctx-menu" class="context-menu" style="left:'+e.pageX+"px;top:"+e.pageY+'px;"><div class="ctx-item" data-msg="manageSmartFolders">'+T("smartManage")+"</div></div>");if(e.target.closest(".trash-section-header"))return e.preventDefault(),void document.body.insertAdjacentHTML("beforeend",'<div id="ctx-menu" class="context-menu" style="left:'+e.pageX+"px;top:"+e.pageY+'px;"><div class="ctx-item ctx-danger" data-action="emptyTrash" data-type="trashSection" data-id="trash">'+T("ctxEmptyTrash")+"</div></div>");var a=e.target.closest(".tree-item");if(a){e.preventDefault();var n=a.dataset.type,s=a.dataset.id;if("smart"===n){var o='<div id="ctx-menu" class="context-menu" style="left:'+e.pageX+"px;top:"+e.pageY+'px;"><div class="ctx-item" data-smart-open="1" data-query="'+escapeHtml(a.dataset.query||"")+'" data-title="'+escapeHtml(a.dataset.title||"")+'" data-custom="'+(a.dataset.custom||"0")+'">'+T("ctxSmartOpenSearch")+"</div>";if("1"===a.dataset.custom){var d=a.dataset.smartId;o+='<div class="ctx-sep"></div><div class="ctx-item" data-action="smartEditQuery" data-id="'+d+'" data-type="smart">'+T("ctxSmartEditQuery")+'</div><div class="ctx-item" data-action="smartRename" data-id="'+d+'" data-type="smart">'+T("ctxSmartRename")+'</div><div class="ctx-sep"></div><div class="ctx-item ctx-danger" data-action="smartDelete" data-id="'+d+'" data-type="smart">'+T("ctxSmartDelete")+"</div>"}o+='<div class="ctx-sep"></div><div class="ctx-item" data-msg="manageSmartFolders">'+T("smartManage")+"</div>",o+="</div>",document.body.insertAdjacentHTML("beforeend",o);var r=document.getElementById("ctx-menu"),i=r.getBoundingClientRect();return i.right>window.innerWidth&&(r.style.left=window.innerWidth-i.width-4+"px"),void(i.bottom>window.innerHeight&&(r.style.top=window.innerHeight-i.height-4+"px"))}var l="",c=a.querySelector(".label");c&&(l=c.textContent);var m='<div id="ctx-menu" class="context-menu" style="left:'+e.pageX+"px;top:"+e.pageY+'px;">';if("1"===a.dataset.trash){var p="folder"===n?"trashFolder":"trashNote";m+='<div class="ctx-item" data-action="restoreItem" data-id="'+s+'" data-type="'+p+'">'+T("ctxRestoreNote")+"</div>",m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item ctx-danger" data-action="permanentDeleteItem" data-id="'+s+'" data-type="'+p+'">'+T("ctxPermanentDelete")+"</div>"}else if("1"===a.dataset.conflict)m+='<div class="ctx-item" data-action="openConflict" data-id="'+s+'" data-type="note">'+T("ctxOpenNote")+"</div>",m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item ctx-danger" data-action="deleteNote" data-id="'+s+'" data-type="note">'+T("ctxDeleteNote")+"</div>";else if("folder"===n){var g=isPinned(s);m+='<div class="ctx-item" data-action="'+(g?"unpinFolder":"pinFolder")+'" data-id="'+s+'" data-type="folder">'+T(g?"ctxUnpin":"ctxPin")+"</div>",m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item" data-action="newNote" data-id="'+s+'" data-type="folder">'+T("ctxNewNoteHere")+"</div>",m+='<div class="ctx-item" data-action="newTodo" data-id="'+s+'" data-type="folder">'+T("ctxNewTodoHere")+"</div>",m+='<div class="ctx-item" data-action="newSubNotebook" data-id="'+s+'" data-type="folder">'+T("ctxNewSubNotebook")+"</div>",m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item" data-action="renameFolder" data-id="'+s+'" data-type="folder" data-title="'+l.replace(/"/g,"&quot;")+'">'+T("ctxRenameFolder")+"</div>",m+='<div class="ctx-item" data-action="copyFolderId" data-id="'+s+'" data-type="folder">'+T("ctxCopyFolderId")+"</div>",m+='<div class="ctx-item ctx-drill">'+T("ctxExportFolder")+'<span class="ctx-sub-arrow">▶</span></div>',m+='<div class="ctx-export-template" style="display:none" data-title="'+T("ctxExportFolder")+'"><div class="ctx-item" data-action="exportFolder" data-format="jex" data-id="'+s+'" data-type="folder">JEX</div><div class="ctx-item" data-action="exportFolder" data-format="md" data-id="'+s+'" data-type="folder">Markdown</div><div class="ctx-item" data-action="exportFolder" data-format="md_frontmatter" data-id="'+s+'" data-type="folder">Markdown + Front Matter</div><div class="ctx-item" data-action="exportFolder" data-format="html" data-id="'+s+'" data-type="folder">HTML</div></div>',m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item ctx-danger" data-action="deleteFolder" data-id="'+s+'" data-type="folder">'+T("ctxDeleteFolder")+"</div>"}else if("note"===n){var v=isPinned(s);m+='<div class="ctx-item" data-action="'+(v?"unpinNote":"pinNote")+'" data-id="'+s+'" data-type="note">'+T(v?"ctxUnpin":"ctxPin")+"</div>",m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item" data-action="openNote" data-id="'+s+'" data-type="note">'+T("ctxOpenNote")+"</div>",m+='<div class="ctx-item" data-action="openInNewWindow" data-id="'+s+'" data-type="note">'+T("ctxOpenInNewWindow")+"</div>";var u=document.getElementById("notes-in-list-root");u&&"1"===u.dataset.noteTabs&&(m+='<div class="ctx-item" data-action="pinToTabs" data-id="'+s+'" data-type="note">'+T("ctxPinToTabs")+"</div>"),m+='<div class="ctx-item" data-action="editExternally" data-id="'+s+'" data-type="note">'+T("ctxEditExternally")+"</div>",m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item" data-action="setTags" data-id="'+s+'" data-type="note">'+T("ctxSetTags")+"</div>",m+='<div class="ctx-item" data-action="switchNoteType" data-id="'+s+'" data-type="note">'+T("ctxSwitchNoteType")+"</div>","1"===a.dataset.todo&&(m+='<div class="ctx-item" data-action="toggleTodo" data-id="'+s+'" data-type="note">'+T("ctxToggleTodo")+"</div>"),m+='<div class="ctx-item" data-action="moveToFolderDialog" data-id="'+s+'" data-type="note">'+T("ctxMoveToFolder")+"</div>",m+='<div class="ctx-item" data-action="duplicateNote" data-id="'+s+'" data-type="note">'+T("ctxDuplicateNote")+"</div>",m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item" data-action="copyLink" data-id="'+s+'" data-type="note">'+T("ctxCopyLink")+"</div>",m+='<div class="ctx-item" data-action="copyExternalLink" data-id="'+s+'" data-type="note">'+T("ctxCopyExternalLink")+"</div>",m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item" data-action="publishNote" data-id="'+s+'" data-type="note">'+T("ctxPublishNote")+"</div>",m+='<div class="ctx-item ctx-drill">'+T("ctxExport")+'<span class="ctx-sub-arrow">▶</span></div>',m+='<div class="ctx-export-template" style="display:none" data-title="'+T("ctxExport")+'"><div class="ctx-item" data-action="exportPdf" data-id="'+s+'" data-type="note">PDF</div><div class="ctx-item" data-action="exportNote" data-format="md" data-id="'+s+'" data-type="note">Markdown</div><div class="ctx-item" data-action="exportNote" data-format="md_frontmatter" data-id="'+s+'" data-type="note">Markdown + Front Matter</div><div class="ctx-item" data-action="exportNote" data-format="jex" data-id="'+s+'" data-type="note">JEX</div><div class="ctx-item" data-action="exportNote" data-format="html" data-id="'+s+'" data-type="note">HTML</div></div>',m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item" data-action="renameNote" data-id="'+s+'" data-type="note" data-title="'+l.replace(/"/g,"&quot;")+'">'+T("ctxRenameNote")+"</div>",m+='<div class="ctx-item" data-action="noteInfo" data-id="'+s+'" data-type="note">'+T("ctxNoteInfo")+"</div>",m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item ctx-danger" data-action="deleteNote" data-id="'+s+'" data-type="note">'+T("ctxDeleteNote")+"</div>",a.dataset.tagId&&(m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item" data-action="untagNote" data-id="'+s+'" data-type="note" data-tag-id="'+a.dataset.tagId+'">'+T("ctxUntagNote")+"</div>")}else if("tag"===n){var f=a.dataset.tagId;f&&(m+='<div class="ctx-item" data-action="renameTag" data-id="'+f+'" data-type="tag">'+T("ctxRenameTag")+"</div>",m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item ctx-danger" data-action="deleteTag" data-id="'+f+'" data-type="tag">'+T("ctxDeleteTag")+"</div>")}if(!((m+="</div>").indexOf("ctx-item")<0)){document.body.insertAdjacentHTML("beforeend",m);var h=document.getElementById("ctx-menu"),y=h.getBoundingClientRect();y.right>window.innerWidth&&(h.style.left=window.innerWidth-y.width-4+"px"),y.bottom>window.innerHeight&&(h.style.top=window.innerHeight-y.height-4+"px")}}}),document.addEventListener("mousedown",function(e){if(!e.target.closest("#ctx-menu")){var t=document.getElementById("ctx-menu");t&&t.remove()}}),webviewApi.onMessage(function(e){if(e&&e.message){var t=e.message;if("syncState"===t.name){var a=document.getElementById("btn-sync");if(!a)return;"syncing"===t.state?(a.disabled=!1,a.classList.remove("sync-done","sync-error"),a.classList.add("syncing"),a.textContent="✕ "+T("syncCancel")):"done"===t.state?(a.classList.remove("syncing","sync-error"),a.classList.add("sync-done"),a.textContent=T("syncDone"),setTimeout(function(){var e=document.getElementById("btn-sync");e&&(e.disabled=!1,e.classList.remove("sync-done"),e.textContent="🔄 "+T("sync"))},2e3)):"error"===t.state&&(a.classList.remove("syncing","sync-done"),a.classList.add("sync-error"),a.textContent=T("syncFailed"),setTimeout(function(){var e=document.getElementById("btn-sync");e&&(e.disabled=!1,e.classList.remove("sync-error"),e.textContent="🔄 "+T("sync"))},4e3))}else if("searchResults"===t.name){if(void 0!==t.searchId&&t.searchId!==_searchId)return;t.notes||t.tags||t.folders?renderSearchResults(t.notes||[],t.tags||[],t.folders||[],t.query):_searchMode&&exitSearchMode()}else if("tagFolderNotes"===t.name){var n=document.querySelector('.tag-children[data-tag-id="'+t.tagId+'"]');if(n){n.dataset.loaded="1";for(var s=n.dataset.noteIndent,o=s?' style="padding-left:'+s+'px"':"",d="",r=0;r<t.notes.length;r++){var i=t.notes[r],l=i.is_todo?i.todo_completed?"☑":"☐":"📝";d+='<div class="tree-item note tag-note"'+o+' data-id="'+i.id+'" data-type="note" data-tag-id="'+t.tagId+'" data-todo="'+(i.is_todo?1:0)+'"><span class="icon note-icon">'+l+'</span><span class="label">'+escapeHtml(i.title)+"</span></div>"}t.notes.length||n.children.length||(d='<div class="tag-empty">—</div>'),n.insertAdjacentHTML("beforeend",d)}}else if("trashNotes"===t.name){var c=document.getElementById("trash-children");if(c){c.dataset.loaded="1";for(var m="",p=t.folders||[],g=0;g<p.length;g++){var v=p[g],u=v.depth||0;m+='<div class="tree-item folder trash-note" style="padding-left:'+(34+16*u)+'px" data-id="'+v.id+'" data-type="folder" data-trash="1" data-depth="'+u+'"><span class="toggle">'+(v.hasNotes||v.hasSub?"▶":"")+'</span><span class="icon">📁</span><span class="label">'+escapeHtml(v.title)+"</span></div>",v.hasNotes&&(m+='<div class="trash-folder-children collapsed" data-folder-id="'+v.id+'" data-depth="'+u+'"></div>')}for(var f=t.notes||[],h=0;h<f.length;h++){var y=f[h],x=y.is_todo?y.todo_completed?"☑":"☐":"📝";m+='<div class="tree-item note trash-note" style="padding-left:34px" data-id="'+y.id+'" data-type="note" data-trash="1"><span class="icon note-icon">'+x+'</span><span class="label">'+escapeHtml(y.title)+"</span></div>"}m||(m='<div class="tag-empty">—</div>'),c.innerHTML=m}}else if("smartFolderNotes"===t.name){var S=document.querySelector('.smart-children[data-smart-id="'+t.smartId+'"]');if(S){for(var E="",L=0;L<t.notes.length;L++){var b=t.notes[L],I=b.is_todo?b.todo_completed?"☑":"☐":"📝";E+='<div class="tree-item note smart-note" style="padding-left:44px" data-id="'+b.id+'" data-type="note" data-todo="'+(b.is_todo?1:0)+'"><span class="icon note-icon">'+I+'</span><span class="label">'+escapeHtml(b.title)+"</span>"+(b.badges||"")+"</div>"}t.notes.length||(E='<div class="tag-empty">—</div>'),S.innerHTML=E}}else if("notePreview"===t.name)showPreview(t);else if("trashFolderNotes"===t.name){var w=document.querySelector('.trash-folder-children[data-folder-id="'+t.folderId+'"]');if(w){w.dataset.loaded="1";for(var M=34+16*(parseInt(w.dataset.depth||"0",10)+1),_="",C=0;C<t.notes.length;C++){var N=t.notes[C],q=N.is_todo?N.todo_completed?"☑":"☐":"📝";_+='<div class="tree-item note trash-note" style="padding-left:'+M+'px" data-id="'+N.id+'" data-type="note" data-trash="1"><span class="icon note-icon">'+q+'</span><span class="label">'+escapeHtml(N.title)+"</span></div>"}t.notes.length||(_='<div class="tag-empty" style="padding-left:'+M+'px">—</div>'),w.innerHTML=_}}else if("tagNotes"===t.name)expandTagNotes(t.tagId,t.notes);else if("scrollToFolder"===t.name)setTimeout(function(){locateFolderInTree(t.folderId)},80);else if("exitSearch"===t.name){var B=document.getElementById("search-input");B&&(B.value=""),syncSearchClear(),_searchMode&&exitSearchMode()}else if("exitSearchAndLocate"===t.name){var k=document.getElementById("search-input");k&&(k.value=""),syncSearchClear(),_searchMode=!1,showSearchContainer(!1),setTimeout(function(){locateFolderInTree(t.folderId)},80)}else if("copyText"===t.name)if(navigator.clipboard&&navigator.clipboard.writeText)navigator.clipboard.writeText(t.text);else{var F=document.createElement("textarea");F.value=t.text,document.body.appendChild(F),F.select(),document.execCommand("copy"),F.remove()}else if("selectNote"===t.name){document.querySelectorAll(".tree-item.note.selected").forEach(function(e){e.classList.remove("selected")});var A=document.getElementById("main-tree"),D=A?A.querySelector('.tree-item.note[data-id="'+t.id+'"]'):null;if(D||(D=document.querySelector('.tree-item.note[data-id="'+t.id+'"]')),D){D.classList.add("selected"),A&&A.contains(D)&&ensureTreeSectionExpanded();var H=A&&A.contains(D)?expandAncestorsLocal(D):[];requestAnimationFrame(function(){var e=document.getElementById("tree-container");if(e){var t=e.getBoundingClientRect(),a=D.getBoundingClientRect();a.top<t.top||a.bottom>t.bottom?D.scrollIntoView({block:"center",behavior:"smooth"}):_savedScrollTop=e.scrollTop}else D.scrollIntoView({block:"nearest",behavior:"instant"})}),H.length&&postMsg({name:"revealNote",folderIds:H})}}else"updateNote"===t.name&&document.querySelectorAll('.tree-item.note[data-id="'+t.id+'"]').forEach(function(e){var a=e.querySelector(".label");a&&(a.textContent=t.title);var n=e.querySelector(".search-result-title");n&&(n.textContent=t.title);var s=e.querySelector(".note-icon");s&&(s.textContent=t.icon),e.querySelectorAll(".todo-pie, .shared-badge").forEach(function(e){e.remove()}),t.badges&&e.insertAdjacentHTML("beforeend",t.badges)})}}),document.addEventListener("dblclick",function(e){var t=e.target;if(!t||!t.closest||!t.closest("#ctx-menu")&&!t.closest("#note-preview")){var a=t.closest?t.closest(".tree-item.note"):null;a&&"1"!==a.dataset.trash&&"1"!==a.dataset.conflict&&a.dataset.id&&postMsg({name:"contextMenu",action:"openInNewWindow",id:a.dataset.id,itemType:"note"})}}),document.addEventListener("mousedown",function(e){var t=e.target.closest(".tree-item");t&&0===e.button&&t.setAttribute("draggable","true")}),document.addEventListener("dragstart",function(e){var t=e.target.closest(".tree-item");if(t)if(t.closest(".trash-children")||t.closest(".conflict-children")||t.closest(".smart-section-body")||t.classList.contains("tag-folder"))e.preventDefault();else{var a=t.classList.contains("pinned-item");if(e.dataTransfer.setData("text/x-je-item",JSON.stringify({id:t.dataset.id,type:t.dataset.type,pinned:a})),"note"===t.dataset.type?e.dataTransfer.setData("text/x-jop-note-ids",JSON.stringify([t.dataset.id])):"folder"===t.dataset.type&&e.dataTransfer.setData("text/x-jop-folder-ids",JSON.stringify([t.dataset.id])),e.dataTransfer.effectAllowed="move",t.classList.add("dragging"),!a){var n=document.getElementById("tree-container");n&&n.classList.add("dragging-active")}}});var _dragScrollDir=0,_dragScrollRaf=null;function dragScrollStep(){var e=document.getElementById("tree-container");e&&_dragScrollDir?(e.scrollTop+=_dragScrollDir,_dragScrollRaf=requestAnimationFrame(dragScrollStep)):_dragScrollRaf=null}function updateDragScroll(e){var t=document.getElementById("tree-container");if(t){var a=t.getBoundingClientRect(),n=a.bottom,s=document.getElementById("drop-zone-empty");if(s&&t.classList.contains("dragging-active")){var o=s.getBoundingClientRect();o.height>0&&o.top>a.top&&(n=o.top)}var d=0;e<a.top+40?d=-Math.ceil((a.top+40-e)/4):e>n?d=0:e>n-40&&(d=Math.ceil((e-(n-40))/4)),_dragScrollDir=d,d&&!_dragScrollRaf&&(_dragScrollRaf=requestAnimationFrame(dragScrollStep))}else _dragScrollDir=0}function clearDropIndicators(){document.querySelectorAll(".drop-target").forEach(function(e){e.classList.remove("drop-target")}),document.querySelectorAll(".drop-above").forEach(function(e){e.classList.remove("drop-above")}),document.querySelectorAll(".drop-below").forEach(function(e){e.classList.remove("drop-below")})}function endDrag(){_dragScrollDir=0,springCancel(),_dragHoverEl=null,clearDropIndicators();var e=document.getElementById("tree-container");e&&e.classList.remove("dragging-active")}document.addEventListener("dragend",function(e){var t=e.target.closest(".tree-item");t&&(t.classList.remove("dragging"),t.removeAttribute("draggable")),endDrag()});var SPRING_EXPAND_MS=2e3,_springEl=null,_springTimer=null,_dragHoverEl=null;function springCancel(){_springTimer&&clearTimeout(_springTimer),_springTimer=null,_springEl=null}function springSchedule(e,t){_springEl!==e&&(springCancel(),_springEl=e,_springTimer=setTimeout(function(){var a=document.querySelector(".tree-item.dragging")&&document.contains(e)&&_dragHoverEl&&e.contains(_dragHoverEl);springCancel(),a&&t()},SPRING_EXPAND_MS))}document.addEventListener("dragover",function(e){document.querySelector(".tree-item.dragging")&&updateDragScroll(e.clientY);var t=e.target;if(t&&3===t.nodeType&&(t=t.parentElement),t){_dragHoverEl=t;var a=t.closest(".tree-item");if(document.getElementById("tree-container"),t.closest("#drop-zone-empty"))document.querySelector(".tree-item.dragging.pinned-item")||(e.preventDefault(),e.dataTransfer.dropEffect="move");else{var n=t.closest(".pinned-section-header");if(n)return e.preventDefault(),e.dataTransfer.dropEffect="move",clearDropIndicators(),void(n.classList.contains("collapsed")&&springSchedule(n,function(){n.classList.remove("collapsed");var e=document.getElementById("pinned-body");e&&e.classList.remove("collapsed");var t=n.querySelector(".toggle");t&&(t.textContent="▼"),postMsg({name:"togglePinnedCollapse"})}));if(t.closest(".pinned-section-body")){var s=document.querySelector(".tree-item.dragging.pinned-item"),o=document.querySelector(".tree-item.dragging");if(s&&a&&a.classList.contains("pinned-item")){e.preventDefault(),e.dataTransfer.dropEffect="move",clearDropIndicators();var d=a.getBoundingClientRect();e.clientY-d.top<.5*d.height?a.classList.add("drop-above"):a.classList.add("drop-below")}else if(o&&!s&&(e.preventDefault(),e.dataTransfer.dropEffect="move",clearDropIndicators(),a&&a.classList.contains("pinned-item"))){var r=a.getBoundingClientRect();e.clientY-r.top<.5*r.height?a.classList.add("drop-above"):a.classList.add("drop-below")}}else{var i=t.closest(".tag-folder");if(i)document.querySelector(".tree-item.note.dragging")&&i.dataset.tagId&&(e.preventDefault(),e.dataTransfer.dropEffect="move",clearDropIndicators(),i.classList.add("drop-target"));else{var l=t.closest(".tree-section-header, .tags-section-header");if(l&&l.classList.contains("collapsed"))springSchedule(l,function(){var e=l.classList.contains("tree-section-header"),t=document.getElementById(e?"main-tree":"tags-body");l.classList.remove("collapsed"),t&&t.classList.remove("collapsed");var a=l.querySelector(".toggle");a&&(a.textContent="▼"),postMsg({name:e?"toggleTreeSection":"toggleTagsSection"})});else if(!(t.closest(".tags-section-body")||t.closest(".tags-section-header")||t.closest(".trash-children")||t.closest(".trash-section-header")||t.closest(".conflict-children")||t.closest(".conflicts-section-header")||t.closest(".smart-section-body")||t.closest(".smart-section-header"))&&a){var c=document.querySelector(".tree-item.dragging");if(!c||!c.classList.contains("pinned-item")){e.preventDefault(),e.dataTransfer.dropEffect="move",clearDropIndicators();var m=a.dataset.type,p=a.getBoundingClientRect(),g=e.clientY-p.top,v=p.height;"folder"===m?g<.25*v?(a.classList.add("drop-above"),springCancel()):g>.75*v?(a.classList.add("drop-below"),springCancel()):(a.classList.add("drop-target"),a.classList.contains("collapsed")&&a!==c&&springSchedule(a,function(){toggleFolderLocal(a,a.dataset.id),postMsg({name:"toggleFolder",id:a.dataset.id})})):"manual"===currentSortMode()?g<.5*v?a.classList.add("drop-above"):a.classList.add("drop-below"):a.classList.add("drop-target")}}}}}}}),document.addEventListener("dragleave",function(e){var t=e.target.closest(".tree-item");t&&(t.classList.remove("drop-target"),t.classList.remove("drop-above"),t.classList.remove("drop-below"));var a=document.getElementById("tree-container");a&&e.target===a&&a.classList.remove("drop-empty")}),document.addEventListener("drop",function(e){e.preventDefault();var t=e.target;t&&3===t.nodeType&&(t=t.parentElement);var a,n=t?t.closest(".tree-item"):null;document.getElementById("tree-container");try{a=JSON.parse(e.dataTransfer.getData("text/x-je-item"))}catch(e){return void endDrag()}if(a&&a.id){var s=a.id,o=a.type,d=a.pinned;if(t&&t.closest("#drop-zone-empty")&&!d)return postMsg({name:"dragToEmpty",dragId:s,dragType:o}),void endDrag();if(t&&t.closest(".pinned-section-header")&&!d)return"note"===o?postMsg({name:"contextMenu",action:"pinNote",id:s,itemType:"note"}):"folder"===o&&postMsg({name:"contextMenu",action:"pinFolder",id:s,itemType:"folder"}),void endDrag();if(t&&t.closest(".pinned-section-body")){var r=n&&n.classList.contains("pinned-item")?n:null;if(d){if(r&&r.dataset.id!==s){var i=r.getBoundingClientRect(),l=e.clientY-i.top<.5*i.height?"before":"after";postMsg({name:"reorderPinned",dragId:s,dragType:o,targetId:r.dataset.id,position:l})}}else{var c={name:"pinItemAt",dragId:s,dragType:o};if(r&&r.dataset.id!==s){var m=r.getBoundingClientRect();c.targetId=r.dataset.id,c.position=e.clientY-m.top<.5*m.height?"before":"after"}postMsg(c)}endDrag()}else{var p=t?t.closest(".tag-folder"):null;if(p)return"note"===o&&p.dataset.tagId&&postMsg({name:"tagNoteAdd",tagId:p.dataset.tagId,noteId:s}),void endDrag();if(t&&(t.closest(".tags-section-body")||t.closest(".tags-section-header")||t.closest(".trash-children")||t.closest(".trash-section-header")||t.closest(".conflict-children")||t.closest(".conflicts-section-header")||t.closest(".smart-section-body")||t.closest(".smart-section-header")))endDrag();else if(d)endDrag();else if(n){var g=n.dataset.id,v=n.dataset.type;if(s!==g){var u=n.getBoundingClientRect(),f=e.clientY-u.top,h=u.height;postMsg("folder"===v?f>=.25*h&&f<=.75*h?{name:"dragDrop",dragId:s,dragType:o,targetId:g,position:"into"}:{name:"dragDrop",dragId:s,dragType:o,targetId:g,position:f<.25*h?"above":"below"}:"note"===o?{name:"dragDrop",dragId:s,dragType:o,targetId:g,position:f<.5*h?"above":"below"}:{name:"dragDrop",dragId:s,dragType:o,targetId:g,position:"into"}),endDrag()}else endDrag()}else endDrag()}}else endDrag()});var _searchTimer=null,_searchMode=!1,_searchId=0;function escapeRegex(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function escapeHtml(e){return String(null==e?"":e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function highlightText(e,t){var a=escapeHtml(e);if(!t)return a;var n=new RegExp("("+escapeRegex(t)+")","gi");return a.replace(n,'<mark class="search-highlight">$1</mark>')}function showSearchContainer(e){var t=document.getElementById("tree-container"),a=document.getElementById("search-results");t&&(t.style.display=e?"none":""),a&&(a.style.display=e?"":"none")}function renderNoteItem(e,t){var a="📝";e.is_todo&&(a=e.todo_completed?"☑":"☐");var n='<div class="search-result-item tree-item note" data-id="'+e.id+'" data-type="note" data-todo="'+(e.is_todo?1:0)+'">';return n+='<span class="icon note-icon">'+a+"</span>",n+='<div class="search-result-content">',n+='<div class="search-result-title">'+highlightText(e.title,t)+"</div>",e.folderName&&(n+='<div class="search-result-folder">📂 '+escapeHtml(e.folderName)+"</div>"),e.snippet&&(n+='<div class="search-result-snippet">'+highlightText(e.snippet,t)+"</div>"),n+"</div></div>"}function renderSearchResults(e,t,a,n){var s=document.getElementById("search-results");if(s){showSearchContainer(!0);var o=e.length+t.length+a.length,d='<button class="search-save-smart" title="'+escapeHtml(T("smartSaveSearch"))+'">💾 '+escapeHtml(T("smartSaveSearch"))+"</button>";if(0!==o){var r='<div class="search-status search-status-row"><span>'+T("searchResultCount").replace("{count}",o)+"</span>"+d+"</div>";if(a.length>0){r+=f("📁",T("searchSectionFolders"),a.length,"folders"),r+='<div class="search-section-body" id="search-section-folders">';for(var i=0;i<a.length;i++){var l=a[i],c=l.icon,m=c&&"image"===c.type?'<img class="custom-icon" src="'+escapeHtml(c.value)+'" />':escapeHtml(c&&c.value||"📁");r+='<div class="search-result-item search-folder-item" data-folder-id="'+l.id+'">',r+='<span class="icon">'+m+"</span>",r+='<div class="search-result-content">',r+='<div class="search-result-title">'+highlightText(l.title,n)+"</div>",r+="</div></div>"}r+="</div>"}if(e.length>0){r+=f("📝",T("searchSectionNotes"),e.length,"notes"),r+='<div class="search-section-body" id="search-section-notes">';for(var p=0;p<e.length;p++)r+=renderNoteItem(e[p],n);r+="</div>"}if(t.length>0){r+=f("🏷️",T("searchSectionTags"),t.length,"tags"),r+='<div class="search-section-body" id="search-section-tags">';for(var g=0;g<t.length;g++){var v=t[g],u=T("searchTagNoteCount").replace("{count}",v.noteCount);r+='<div class="search-result-item search-tag-item" data-tag-id="'+v.id+'">',r+='<span class="icon">🏷️</span>',r+='<div class="search-result-content">',r+='<div class="search-result-title">'+highlightText(v.title,n)+"</div>",r+='<div class="search-result-folder">'+u+"</div>",r+="</div>",r+='<span class="tag-expand-arrow">▶</span>',r+="</div>",r+='<div class="tag-notes-container" id="tag-notes-'+v.id+'"></div>'}r+="</div>"}s.innerHTML=r,_searchMode=!0}else s.innerHTML='<div class="search-status search-status-row"><span>'+T("searchNoResult")+"</span>"+d+"</div>"}function f(e,t,a,n){return'<div class="search-section-header" data-section="'+n+'"><span class="section-toggle">▼</span> '+e+" "+t+" ("+a+")</div>"}}function expandTagNotes(e,t){var a=document.getElementById("tag-notes-"+e);if(a){var n;if(a.children.length>0)return a.innerHTML="",void((n=document.querySelector('.search-tag-item[data-tag-id="'+e+'"] .tag-expand-arrow'))&&n.classList.remove("expanded"));for(var s="",o=0;o<t.length;o++)s+=renderNoteItem(t[o],"");0===t.length&&(s='<div class="search-status" style="padding-left:30px;">'+T("searchNoResult")+"</div>"),a.innerHTML=s,(n=document.querySelector('.search-tag-item[data-tag-id="'+e+'"] .tag-expand-arrow'))&&n.classList.add("expanded")}}function locateFolderInTree(e){ensureTreeSectionExpanded();var t=document.getElementById("main-tree"),a=t?t.querySelector('.tree-item.folder[data-id="'+e+'"]'):null;a&&(expandAncestorsLocal(a),requestAnimationFrame(function(){a.scrollIntoView({block:"center",behavior:"smooth"}),a.classList.add("locate-flash"),setTimeout(function(){a.classList.remove("locate-flash")},1500)}))}function ensureTreeSectionExpanded(){var e=document.getElementById("main-tree");if(e&&e.classList.contains("collapsed")){e.classList.remove("collapsed");var t=document.getElementById("tree-header");if(t){t.classList.remove("collapsed");var a=t.querySelector(".toggle");a&&(a.textContent="▼")}postMsg({name:"toggleTreeSection"})}}function revealSelectedNote(){ensureTreeSectionExpanded();var e=document.getElementById("tree-container"),t=document.getElementById("main-tree");if(e&&t){var a=t.querySelector(".tree-item.note.selected");if(!a){var n=document.querySelector(".tree-item.note.selected");n&&n.dataset.id&&(a=t.querySelector('.tree-item.note[data-id="'+n.dataset.id+'"]'))&&a.classList.add("selected")}if(a){var s=expandAncestorsLocal(a);s.length&&postMsg({name:"revealNote",folderIds:s}),requestAnimationFrame(function(){a.scrollIntoView({block:"center",behavior:"smooth"})})}}}var _lastQuery="",_searchFromSmart="";function runSearch(e,t){var a=document.getElementById("search-input");a&&(a.value=e,syncSearchClear(),_searchFromSmart=t||"",startSearch(e,0),a.focus())}function startSearch(e,t){_searchTimer&&clearTimeout(_searchTimer);var a=++_searchId;_lastQuery=e,_searchMode=!0;var n=document.getElementById("search-results");n&&(n.innerHTML='<div class="search-status">'+T("searching")+"</div>"),showSearchContainer(!0),_searchTimer=setTimeout(function(){postMsg({name:"search",query:e,searchId:a})},t)}function restoreSearchAfterRefresh(){if(_searchMode&&_lastQuery){var e=document.getElementById("search-input");e&&!e.value&&(e.value=_lastQuery,syncSearchClear(),startSearch(_lastQuery,0))}}function exitSearchMode(){_searchMode=!1,_lastQuery="",_searchFromSmart="",showSearchContainer(!1),revealSelectedNote()}function syncSearchClear(){var e=document.querySelector(".search-bar"),t=document.getElementById("search-input");e&&t&&e.classList.toggle("has-text",!!t.value)}document.addEventListener("input",function(e){if("search-input"===e.target.id){syncSearchClear();var t=e.target.value.trim();if(!t)return _searchTimer&&clearTimeout(_searchTimer),_searchId++,void(_searchMode&&exitSearchMode());startSearch(t,400)}}),document.addEventListener("click",function(e){if(e.target.closest&&e.target.closest(".search-save-smart")){var t=document.getElementById("search-input"),a=t?t.value.trim():_lastQuery;a&&postMsg({name:"saveSmartFolder",query:a,defaultName:_searchFromSmart})}}),document.addEventListener("keydown",function(e){if("Escape"===e.key){var t=document.getElementById("search-input");t&&t.value&&(t.value="",syncSearchClear(),_searchMode&&exitSearchMode())}});var _kbRow=null;function keyboardTargetRow(){if(!_kbRow)return null;var e="tag"===_kbRow.type?'.tree-item[data-tag-id="'+_kbRow.tagId+'"]':'.tree-item[data-id="'+_kbRow.id+'"][data-type="'+_kbRow.type+'"]';return document.querySelector(e)}function keyboardAction(e,t){var a=t.dataset.type;return"1"===t.dataset.trash?null:"tag"===a?t.dataset.tagId?{action:"F2"===e?"renameTag":"deleteTag",id:t.dataset.tagId,itemType:"tag"}:null:"note"===a?"F2"===e&&"1"===t.dataset.conflict?null:{action:"F2"===e?"renameNote":"deleteNote",id:t.dataset.id,itemType:"note"}:"folder"===a?{action:"F2"===e?"renameFolder":"deleteFolder",id:t.dataset.id,itemType:"folder"}:null}document.addEventListener("mousedown",function(e){var t=e.target.closest?e.target.closest(".tree-item"):null;if(t)_kbRow={id:t.dataset.id,type:t.dataset.type,tagId:t.dataset.tagId};else{if(e.target.closest&&e.target.closest("#ctx-menu"))return;_kbRow=null}},!0),document.addEventListener("keydown",function(e){if(("F2"===e.key||"F5"===e.key||"Delete"===e.key)&&!(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey||e.repeat)){var t=e.target;if(!t||"INPUT"!==t.tagName&&"TEXTAREA"!==t.tagName&&!t.isContentEditable){if("F5"===e.key)return e.preventDefault(),void postMsg({name:"refreshView"});var a=keyboardTargetRow(),n=a?keyboardAction(e.key,a):null;n&&(e.preventDefault(),postMsg({name:"contextMenu",action:n.action,id:n.id,itemType:n.itemType}))}}}),document.addEventListener("click",function(e){if(e.target.closest&&e.target.closest("#search-clear")){var t=document.getElementById("search-input");t&&(t.value="",_searchMode&&exitSearchMode(),t.focus()),syncSearchClear()}});
1
+ var _savedScrollTop=0,_isFirstRender=!0;function postMsg(e){webviewApi.postMessage(e)}function cssEscapeAttr(e){return String(null==e?"":e).replace(/(["\\])/g,"\\$1")}function currentSortMode(){var e=document.getElementById("notes-in-list-root");return e&&e.dataset.sort||""}postMsg({name:"panelReady"}),document.addEventListener("scroll",function(e){e.target&&"tree-container"===e.target.id&&(_savedScrollTop=e.target.scrollTop)},!0);var _observer=new MutationObserver(function(){var e=document.getElementById("tree-container");if(e){if(_isFirstRender){_isFirstRender=!1;var t=e.querySelector(".tree-item.note.selected");t&&setTimeout(function(){t.scrollIntoView({block:"nearest",behavior:"instant"})},30)}else e.scrollTop=_savedScrollTop;applyHeaderStacking(),restoreSearchAfterRefresh()}});function loadI18n(){var e=document.getElementById("notes-in-list-root");if(e&&e.dataset.i18n)try{window._i18n=JSON.parse(e.dataset.i18n)}catch(e){}}function T(e){return window._i18n||loadI18n(),window._i18n&&window._i18n[e]||e}function getPinnedData(){var e=document.getElementById("notes-in-list-root");if(e&&e.dataset.pinned)try{return JSON.parse(e.dataset.pinned)}catch(e){}return[]}function isPinned(e){for(var t=getPinnedData(),a=0;a<t.length;a++)if(t[a].id===e)return!0;return!1}function showInlineInput(e,t,a){var n=document.getElementById("inline-input-overlay");n&&n.remove();var o=document.createElement("div");o.id="inline-input-overlay",o.className="inline-input-overlay",o.innerHTML='<div class="inline-input-dialog"><div class="inline-input-label">'+e+'</div><input class="inline-input-field" type="text" value="'+(t||"").replace(/"/g,"&quot;")+'" /><div class="inline-input-buttons"><button class="inline-input-ok">OK</button><button class="inline-input-cancel">'+(T("cancel")||"Cancel")+"</button></div></div>",document.body.appendChild(o);var s=o.querySelector(".inline-input-field");function r(){var e=s.value;o.remove(),a(e)}function d(){o.remove(),a(null)}s.focus(),s.select(),o.querySelector(".inline-input-ok").addEventListener("click",r),o.querySelector(".inline-input-cancel").addEventListener("click",d),s.addEventListener("keydown",function(e){"Enter"===e.key&&r(),"Escape"===e.key&&d()}),o.addEventListener("click",function(e){e.target===o&&d()})}function animateExpand(e){e&&(e.classList.remove("anim-expand"),e.offsetWidth,e.classList.add("anim-expand"))}function toggleFolderLocal(e,t){var a=e.classList.toggle("collapsed"),n=document.querySelector('.children[data-folder-id="'+t+'"]');n&&n.classList.toggle("collapsed",a),a||animateExpand(n);var o=e.querySelector(".toggle");o&&(o.textContent=a?"▶":"▼",o.classList.toggle("expanded",!a))}function collapseAllLocal(){var e=document.getElementById("main-tree");e&&(e.querySelectorAll(".tree-item.folder").forEach(function(e){e.classList.add("collapsed");var t=e.querySelector(".toggle");t&&(t.textContent="▶",t.classList.remove("expanded"))}),e.querySelectorAll(".children").forEach(function(e){e.classList.add("collapsed")}))}function setSectionsCollapsed(e){for(var t=[["pinned-header","pinned-body"],["smart-header","smart-body"],["tree-header","main-tree"],["tags-header","tags-body"],["trash-header","trash-children"],["conflicts-header","conflict-children"]],a=!1,n=0;n<t.length;n++){var o=document.getElementById(t[n][0]),s=document.getElementById(t[n][1]);if(o){a=!0,o.classList.toggle("collapsed",e),s&&s.classList.toggle("collapsed",e);var r=o.querySelector(".toggle");r&&(r.textContent=e?"▶":"▼")}}return a}function collapseScope(){var e=document.getElementById("notes-in-list-root");return e&&e.dataset.collapseScope||"notebooksOnly"}function applyHeaderStacking(){var e=document.getElementById("notes-in-list-root"),t=e&&"1"===e.dataset.stackHeaders,a=[];if(document.querySelectorAll(".pinned-section-header, .smart-section-header, .tree-section-header, .tags-section-header, .trash-section-header, .conflicts-section-header").forEach(function(e){a.push(e)}),t)for(var n=a.map(function(e){return e.offsetHeight}),o=0;o<a.length;o++){for(var s=0,r=0;r<o;r++)s+=n[r];for(var d=0,i=o+1;i<a.length;i++)d+=n[i];a[o].style.top=s+"px",a[o].style.bottom=d+"px"}else a.forEach(function(e){e.style.top="",e.style.bottom=""})}function expandAllLocal(){var e=document.getElementById("main-tree");if(!e)return[];var t=[];return e.querySelectorAll(".tree-item.folder").forEach(function(e){var a=e.dataset.id,n=document.querySelector('.children[data-folder-id="'+a+'"]'),o=n&&n.querySelector(".tree-item.folder"),s=e.querySelector(".toggle");o?(e.classList.remove("collapsed"),n&&n.classList.remove("collapsed"),s&&(s.textContent="▼",s.classList.add("expanded"))):(e.classList.add("collapsed"),n&&n.classList.add("collapsed"),s&&(s.textContent="▶",s.classList.remove("expanded")),a&&t.push(a))}),t}function applyCollapsedSet(e){for(var t={},a=0;a<e.length;a++)t[e[a]]=!0;var n=[],o=document.getElementById("main-tree");return o?(o.querySelectorAll(".tree-item.folder").forEach(function(e){var a=e.dataset.id,o=document.querySelector('.children[data-folder-id="'+a+'"]'),s=e.querySelector(".toggle"),r=!!t[a];e.classList.toggle("collapsed",r),o&&o.classList.toggle("collapsed",r),s&&(s.textContent=r?"▶":"▼",s.classList.toggle("expanded",!r)),r&&a&&n.push(a)}),n):n}_observer.observe(document.body,{childList:!0,subtree:!0}),document.addEventListener("click",function(e){e.target&&e.target.closest&&e.target.closest(".pinned-section-header, .smart-section-header, .tree-section-header, .tags-section-header, .trash-section-header, .conflicts-section-header")&&requestAnimationFrame(applyHeaderStacking)});var _collapseSnapshot=null;function expandAncestorsLocal(e){for(var t=[],a=e.closest(".children");a;){a.classList.contains("collapsed")&&(a.classList.remove("collapsed"),a.dataset.folderId&&t.push(a.dataset.folderId));var n=document.querySelector('.tree-item.folder:not(.pinned-item)[data-id="'+a.dataset.folderId+'"]');if(n){n.classList.remove("collapsed");var o=n.querySelector(".toggle");o&&(o.textContent="▼",o.classList.add("expanded"))}a=a.parentElement?a.parentElement.closest(".children"):null}return t}var _hoverTimer=null,_hoverNoteId="";function hidePreview(){_hoverTimer&&(clearTimeout(_hoverTimer),_hoverTimer=null),_hoverNoteId="";var e=document.getElementById("note-preview");e&&e.remove()}function hoverPreviewEnabled(){var e=document.getElementById("notes-in-list-root");return!e||"0"!==e.dataset.hoverPreview}function showPreview(e){if(e.id===_hoverNoteId&&!document.getElementById("ctx-menu")){var t=document.querySelector('.tree-item.note[data-id="'+e.id+'"]');if(t&&t.matches(":hover")){var a=document.getElementById("note-preview");a&&a.remove();var n=document.createElement("div");n.id="note-preview";var o=document.createElement("div");o.className="note-preview-title",o.textContent=e.title,n.appendChild(o);var s=document.createElement("div");s.className="note-preview-meta";for(var r=[T("pvType")+": "+(e.isTodo?T("pvTodo"):T("pvNote"))+" · "+T("pvSize")+": "+(e.size||0)+" "+T("pvChars"),T("pvCreated")+": "+u(e.created),T("pvUpdated")+": "+u(e.updated)],d=0;d<r.length;d++){var i=document.createElement("div");i.textContent=r[d],s.appendChild(i)}n.appendChild(s);var l=document.createElement("div");l.className="note-preview-body",l.textContent=e.snippet||"",e.snippet&&n.appendChild(l),document.body.appendChild(n);var c=t.getBoundingClientRect(),m=n.getBoundingClientRect(),p=c.bottom+4;p+m.height>window.innerHeight-8&&(p=Math.max(8,c.top-m.height-4)),n.style.top=p+"px",n.style.left=Math.max(8,Math.min(c.left+20,window.innerWidth-m.width-8))+"px"}}function u(e){if(!e)return"";var t=new Date(e);return t.getFullYear()+"-"+("0"+(t.getMonth()+1)).slice(-2)+"-"+("0"+t.getDate()).slice(-2)+" "+("0"+t.getHours()).slice(-2)+":"+("0"+t.getMinutes()).slice(-2)}}document.addEventListener("mouseover",function(e){if(hoverPreviewEnabled())if(document.getElementById("ctx-menu"))hidePreview();else{var t=e.target.closest?e.target.closest(".tree-item.note"):null;if(t){var a=t.dataset.id;a&&a!==_hoverNoteId&&(hidePreview(),_hoverNoteId=a,_hoverTimer=setTimeout(function(){_hoverNoteId!==a||document.querySelector(".tree-item.dragging")||postMsg({name:"notePreview",id:a})},450))}else hidePreview()}}),document.addEventListener("scroll",function(){hidePreview()},!0),document.addEventListener("mousedown",function(){hidePreview()}),document.addEventListener("dragstart",function(){hidePreview()}),window.addEventListener("blur",function(){var e=document.getElementById("ctx-menu");e&&e.remove(),hidePreview()}),document.addEventListener("click",function(e){var t=e.target.closest(".ctx-item");if(t){if(t.dataset.smartOpen){var a=document.getElementById("ctx-menu");return a&&a.remove(),void runSearch(t.dataset.query||"","1"===t.dataset.custom&&t.dataset.title||"")}if(t.dataset.msg){postMsg({name:t.dataset.msg});var n=document.getElementById("ctx-menu");return void(n&&n.remove())}if(t.classList.contains("ctx-drill")){var o=document.getElementById("ctx-menu"),s=t.nextElementSibling&&t.nextElementSibling.classList.contains("ctx-export-template")?t.nextElementSibling:o?o.querySelector(".ctx-export-template"):null;return void(o&&s&&(window._ctxMainHtml=o.innerHTML,o.innerHTML='<div class="ctx-item ctx-back">◂ '+(s.dataset.title||"")+'</div><div class="ctx-sep"></div>'+s.innerHTML))}if(t.classList.contains("ctx-back")){var r=document.getElementById("ctx-menu");return void(r&&window._ctxMainHtml&&(r.innerHTML=window._ctxMainHtml))}if(!t.dataset.action)return;postMsg({name:"contextMenu",action:t.dataset.action,id:t.dataset.id,itemType:t.dataset.type,tagId:t.dataset.tagId,format:t.dataset.format});var d=document.getElementById("ctx-menu");d&&d.remove()}else{var i=document.getElementById("ctx-menu");i&&i.remove();var l=e.target.closest(".shared-badge");if(l){var c=l.closest(".tree-item");c&&c.dataset.id&&postMsg({name:"contextMenu",action:"publishNote",id:c.dataset.id,itemType:"note"})}else{var m=e.target.closest(".search-tag-item");if(m)m.dataset.tagId&&postMsg({name:"loadTagNotes",tagId:m.dataset.tagId});else{var p=e.target.closest(".search-folder-item");if(p)p.dataset.folderId&&postMsg({name:"locateFolder",folderId:p.dataset.folderId});else{var u=e.target.closest(".pinned-section-header");if(u){var g=u.classList.toggle("collapsed"),v=document.getElementById("pinned-body");v&&v.classList.toggle("collapsed",g),g||(animateExpand(v),_e(u));var f=u.querySelector(".toggle");return f&&(f.textContent=g?"▶":"▼"),void postMsg({name:"togglePinnedCollapse"})}var h=e.target.closest(".tags-section-header");if(h){var y=h.classList.toggle("collapsed"),x=document.getElementById("tags-body");x&&x.classList.toggle("collapsed",y),y||(animateExpand(x),_e(h));var b=h.querySelector(".toggle");return b&&(b.textContent=y?"▶":"▼"),void postMsg({name:"toggleTagsSection"})}var S=e.target.closest(".tree-section-header");if(S){var E=S.classList.toggle("collapsed"),L=document.getElementById("main-tree");L&&L.classList.toggle("collapsed",E),E||(animateExpand(L),_e(S));var I=S.querySelector(".toggle");return I&&(I.textContent=E?"▶":"▼"),void postMsg({name:"toggleTreeSection"})}var w=e.target.closest(".smart-section-header");if(w){var M=w.classList.toggle("collapsed"),_=document.getElementById("smart-body");_&&_.classList.toggle("collapsed",M),M||(animateExpand(_),_e(w));var k=w.querySelector(".toggle");return k&&(k.textContent=M?"▶":"▼"),void postMsg({name:"toggleSmartSection"})}var C=e.target.closest(".smart-folder");if(C){var N=C.dataset.smartId,B=document.querySelector('.smart-children[data-smart-id="'+N+'"]');if(!B)return;var q=B.classList.toggle("collapsed");C.classList.toggle("collapsed",q),q||animateExpand(B);var A=C.querySelector(".toggle");return A&&(A.textContent=q?"▶":"▼"),void(q||postMsg({name:"smartFolderNotes",smartId:N,query:C.dataset.query}))}var D=e.target.closest(".conflicts-section-header");if(D){var R=D.classList.toggle("collapsed"),F=document.getElementById("conflict-children");F&&F.classList.toggle("collapsed",R),R||(animateExpand(F),_e(D));var H=D.querySelector(".toggle");return H&&(H.textContent=R?"▶":"▼"),void postMsg({name:"toggleConflictsSection"})}var P=e.target.closest(".trash-section-header");if(P){var K=P.classList.toggle("collapsed"),O=document.getElementById("trash-children");O&&O.classList.toggle("collapsed",K),K||(animateExpand(O),_e(P));var Y=P.querySelector(".toggle");return Y&&(Y.textContent=K?"▶":"▼"),postMsg({name:"toggleTrashSection"}),void(K||!O||O.dataset.loaded||postMsg({name:"trashNotes"}))}var j=e.target.closest(".tag-folder");if(j){var V=j.dataset.tagId,U=j.dataset.tagPath,W=U?document.querySelector('.tag-children[data-tag-path="'+cssEscapeAttr(U)+'"]'):document.querySelector('.tag-children[data-tag-id="'+V+'"]');if(!W)return;var X=W.classList.toggle("collapsed");j.classList.toggle("collapsed",X),X||animateExpand(W);var J=j.querySelector(".toggle");return J&&(J.textContent=X?"▶":"▼"),void(X||!V||W.dataset.loaded||postMsg({name:"tagFolderNotes",tagId:V}))}var Q=e.target.closest(".search-section-header");if(Q){var z=document.getElementById("search-section-"+Q.dataset.section);if(z){var $=Q.querySelector(".section-toggle");z.classList.contains("collapsed")?(z.classList.remove("collapsed"),$&&($.textContent="▼")):(z.classList.add("collapsed"),$&&($.textContent="▶"))}}else{var G=e.target.closest(".tree-item");if(G){if("1"===G.dataset.conflict)return document.querySelectorAll(".tree-item.note.selected").forEach(function(e){e.classList.remove("selected")}),G.classList.add("selected"),void postMsg({name:"openConflictNote",id:G.dataset.id});if("1"===G.dataset.trash){if("folder"===G.dataset.type){var Z=G.querySelector(".toggle");if(!Z||!Z.textContent)return;for(var ee=Number(G.dataset.depth||0),te="▼"===Z.textContent,ae=document.querySelector('.trash-folder-children[data-folder-id="'+G.dataset.id+'"]'),ne=G.nextElementSibling;ne;){if(ne.classList.contains("trash-folder-children")){var oe=Number(ne.dataset.depth||0);if(ne===ae)ne.classList.toggle("collapsed",te);else{if(!(oe>ee))break;ne.classList.add("collapsed")}}else{if(!ne.classList.contains("tree-item")||"1"!==ne.dataset.trash||"folder"!==ne.dataset.type)break;var se=Number(ne.dataset.depth||0);if(se<=ee)break;te?ne.classList.add("trash-hidden"):ne.classList.toggle("trash-hidden",se!==ee+1);var re=ne.querySelector(".toggle");re&&re.textContent&&(re.textContent="▶")}ne=ne.nextElementSibling}Z.textContent=te?"▶":"▼",!te&&ae&&(animateExpand(ae),ae.dataset.loaded||postMsg({name:"trashFolderNotes",folderId:G.dataset.id}))}else"note"===G.dataset.type&&postMsg({name:"openNote",id:G.dataset.id});return}var de=G.dataset.type,ie=G.dataset.id,le=G.classList.contains("pinned-item");if("note"===de)document.querySelectorAll(".tree-item.note.selected").forEach(function(e){e.classList.remove("selected")}),G.classList.add("selected"),postMsg({name:"openNote",id:ie});else if("folder"===de)if(le)postMsg({name:"locatePinnedFolder",folderId:ie});else if(toggleFolderLocal(G,ie),postMsg({name:"toggleFolder",id:ie}),!G.classList.contains("collapsed")){var ce=document.getElementById("btn-collapse-all");ce&&"expand"===ce.dataset.mode&&(ce.dataset.mode="collapse",ce.textContent="▲",ce.title=T("collapseAll"))}}else{var me=e.target.closest("button");if(me)switch(me.id){case"btn-new":var pe=document.getElementById("ctx-menu");if(pe){pe.remove();break}var ue=document.getElementById("btn-new");if(!ue)break;var ge=ue.getBoundingClientRect();document.body.insertAdjacentHTML("beforeend",'<div id="ctx-menu" class="context-menu" style="left:'+ge.left+"px;top:"+(ge.bottom+2)+'px;"><div class="ctx-item" data-msg="newNotebook"><span class="ctx-icon">📁</span>'+T("newNotebook")+'</div><div class="ctx-item" data-msg="newNote"><span class="ctx-icon">📝</span>'+T("newNote")+'</div><div class="ctx-item" data-msg="newTodo"><span class="ctx-icon">☐</span>'+T("newTodo")+"</div></div>");break;case"btn-sort":postMsg({name:"cycleSort"});break;case"btn-collapse-all":var ve=document.getElementById("btn-collapse-all"),fe=document.getElementById("notes-in-list-root"),he=fe&&fe.dataset.expandMode||"restore",ye="allSections"===collapseScope();if("collapseOnly"===he){collapseAllLocal(),postMsg({name:"collapseAll",sections:!!ye&&setSectionsCollapsed(!0)}),ve&&(ve.dataset.mode="collapse",ve.textContent="▲",ve.title=T("collapseAll"));break}if(ve&&"expand"===ve.dataset.mode){var xe,Te=document.getElementById("notes-in-list-root"),be=Te&&Te.dataset.expandMode||"restore";if("all"===be)xe=applyCollapsedSet([]);else if("restore"===be){var Se=_collapseSnapshot;if(!Se&&Te)try{Se=JSON.parse(Te.dataset.collapseSnapshot||"null")}catch(e){Se=null}xe=Array.isArray(Se)?applyCollapsedSet(Se):expandAllLocal()}else xe=expandAllLocal();var Ee=document.querySelectorAll("#main-tree .tree-item.folder").length;"skeleton"!==be&&Ee>0&&xe.length>=Ee&&(xe=applyCollapsedSet([])),postMsg({name:"expandAll",collapsedIds:xe,sections:!!ye&&setSectionsCollapsed(!1)}),ve.dataset.mode="collapse",ve.textContent="▲",ve.title=T("collapseAll")}else{var Le=[],Ie=0;document.querySelectorAll("#main-tree .tree-item.folder").forEach(function(e){e.dataset.id&&(Ie++,e.classList.contains("collapsed")&&Le.push(e.dataset.id))}),collapseAllLocal();var we=!!ye&&setSectionsCollapsed(!0);Le.length>=Ie&&Ie>0?postMsg({name:"collapseAll",sections:we}):(_collapseSnapshot=Le,postMsg({name:"collapseAll",prevCollapsed:Le,sections:we})),ve&&(ve.dataset.mode="expand",ve.textContent="▼",ve.title=T("expandAll"))}break;case"btn-reveal":if(_searchMode){var Me=document.getElementById("search-input");Me&&(Me.value=""),exitSearchMode()}else revealSelectedNote();break;case"btn-refresh":postMsg({name:"refreshView"});break;case"btn-sync":me.classList.contains("syncing")?(me.disabled=!0,me.textContent=T("syncCancelling"),postMsg({name:"syncCancel"})):me.disabled||(me.classList.add("syncing"),me.textContent="✕ "+T("syncCancel"),postMsg({name:"sync"}))}}}}}}}function _e(e){var t=document.getElementById("tree-container");if(t&&e){var a=parseInt(e.style.top||"",10);(!isFinite(a)||a<0)&&(a=0);var n=e.style.position;e.style.position="static";var o=e.getBoundingClientRect().top-t.getBoundingClientRect().top+t.scrollTop;e.style.position=n;var s=o-a,r=t.scrollHeight-t.clientHeight;s>r&&(s=r),s<0&&(s=0);var d=t.scrollTop,i=s-d;if(!(Math.abs(i)<2)){var l=performance.now();requestAnimationFrame(function e(a){var n=Math.min(1,(a-l)/260),o=n<.5?2*n*n:1-Math.pow(-2*n+2,2)/2,s=d+i*o;t.scrollTop=s,_savedScrollTop=s,n<1&&requestAnimationFrame(e)})}}}}),document.addEventListener("contextmenu",function(e){hidePreview();var t=document.getElementById("ctx-menu");if(t&&t.remove(),e.target.closest(".smart-section-header"))return e.preventDefault(),void document.body.insertAdjacentHTML("beforeend",'<div id="ctx-menu" class="context-menu" style="left:'+e.pageX+"px;top:"+e.pageY+'px;"><div class="ctx-item" data-msg="manageSmartFolders">'+T("smartManage")+"</div></div>");if(e.target.closest(".trash-section-header"))return e.preventDefault(),void document.body.insertAdjacentHTML("beforeend",'<div id="ctx-menu" class="context-menu" style="left:'+e.pageX+"px;top:"+e.pageY+'px;"><div class="ctx-item ctx-danger" data-action="emptyTrash" data-type="trashSection" data-id="trash">'+T("ctxEmptyTrash")+"</div></div>");var a=e.target.closest(".tree-item");if(a){e.preventDefault();var n=a.dataset.type,o=a.dataset.id;if("smart"===n){var s='<div id="ctx-menu" class="context-menu" style="left:'+e.pageX+"px;top:"+e.pageY+'px;"><div class="ctx-item" data-smart-open="1" data-query="'+escapeHtml(a.dataset.query||"")+'" data-title="'+escapeHtml(a.dataset.title||"")+'" data-custom="'+(a.dataset.custom||"0")+'">'+T("ctxSmartOpenSearch")+"</div>";if("1"===a.dataset.custom){var r=a.dataset.smartId;s+='<div class="ctx-sep"></div><div class="ctx-item" data-action="smartEditQuery" data-id="'+r+'" data-type="smart">'+T("ctxSmartEditQuery")+'</div><div class="ctx-item" data-action="smartRename" data-id="'+r+'" data-type="smart">'+T("ctxSmartRename")+'</div><div class="ctx-sep"></div><div class="ctx-item ctx-danger" data-action="smartDelete" data-id="'+r+'" data-type="smart">'+T("ctxSmartDelete")+"</div>"}s+='<div class="ctx-sep"></div><div class="ctx-item" data-msg="manageSmartFolders">'+T("smartManage")+"</div>",s+="</div>",document.body.insertAdjacentHTML("beforeend",s);var d=document.getElementById("ctx-menu"),i=d.getBoundingClientRect();return i.right>window.innerWidth&&(d.style.left=window.innerWidth-i.width-4+"px"),void(i.bottom>window.innerHeight&&(d.style.top=window.innerHeight-i.height-4+"px"))}var l="",c=a.querySelector(".label");c&&(l=c.textContent);var m='<div id="ctx-menu" class="context-menu" style="left:'+e.pageX+"px;top:"+e.pageY+'px;">';if("1"===a.dataset.trash){var p="folder"===n?"trashFolder":"trashNote";m+='<div class="ctx-item" data-action="restoreItem" data-id="'+o+'" data-type="'+p+'">'+T("ctxRestoreNote")+"</div>",m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item ctx-danger" data-action="permanentDeleteItem" data-id="'+o+'" data-type="'+p+'">'+T("ctxPermanentDelete")+"</div>"}else if("1"===a.dataset.conflict)m+='<div class="ctx-item" data-action="openConflict" data-id="'+o+'" data-type="note">'+T("ctxOpenNote")+"</div>",m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item ctx-danger" data-action="deleteNote" data-id="'+o+'" data-type="note">'+T("ctxDeleteNote")+"</div>";else if("folder"===n){var u=isPinned(o);m+='<div class="ctx-item" data-action="'+(u?"unpinFolder":"pinFolder")+'" data-id="'+o+'" data-type="folder">'+T(u?"ctxUnpin":"ctxPin")+"</div>",m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item" data-action="newNote" data-id="'+o+'" data-type="folder">'+T("ctxNewNoteHere")+"</div>",m+='<div class="ctx-item" data-action="newTodo" data-id="'+o+'" data-type="folder">'+T("ctxNewTodoHere")+"</div>",m+='<div class="ctx-item" data-action="newSubNotebook" data-id="'+o+'" data-type="folder">'+T("ctxNewSubNotebook")+"</div>",m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item" data-action="renameFolder" data-id="'+o+'" data-type="folder" data-title="'+l.replace(/"/g,"&quot;")+'">'+T("ctxRenameFolder")+"</div>",m+='<div class="ctx-item" data-action="copyFolderId" data-id="'+o+'" data-type="folder">'+T("ctxCopyFolderId")+"</div>",m+='<div class="ctx-item ctx-drill">'+T("ctxExportFolder")+'<span class="ctx-sub-arrow">▶</span></div>',m+='<div class="ctx-export-template" style="display:none" data-title="'+T("ctxExportFolder")+'"><div class="ctx-item" data-action="exportFolder" data-format="jex" data-id="'+o+'" data-type="folder">JEX</div><div class="ctx-item" data-action="exportFolder" data-format="md" data-id="'+o+'" data-type="folder">Markdown</div><div class="ctx-item" data-action="exportFolder" data-format="md_frontmatter" data-id="'+o+'" data-type="folder">Markdown + Front Matter</div><div class="ctx-item" data-action="exportFolder" data-format="html" data-id="'+o+'" data-type="folder">HTML</div></div>',m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item ctx-danger" data-action="deleteFolder" data-id="'+o+'" data-type="folder">'+T("ctxDeleteFolder")+"</div>"}else if("note"===n){var g=isPinned(o);m+='<div class="ctx-item" data-action="'+(g?"unpinNote":"pinNote")+'" data-id="'+o+'" data-type="note">'+T(g?"ctxUnpin":"ctxPin")+"</div>",m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item" data-action="openNote" data-id="'+o+'" data-type="note">'+T("ctxOpenNote")+"</div>",m+='<div class="ctx-item" data-action="openInNewWindow" data-id="'+o+'" data-type="note">'+T("ctxOpenInNewWindow")+"</div>";var v=document.getElementById("notes-in-list-root");v&&"1"===v.dataset.noteTabs&&(m+='<div class="ctx-item" data-action="pinToTabs" data-id="'+o+'" data-type="note">'+T("ctxPinToTabs")+"</div>"),m+='<div class="ctx-item" data-action="editExternally" data-id="'+o+'" data-type="note">'+T("ctxEditExternally")+"</div>",m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item" data-action="setTags" data-id="'+o+'" data-type="note">'+T("ctxSetTags")+"</div>",m+='<div class="ctx-item" data-action="switchNoteType" data-id="'+o+'" data-type="note">'+T("ctxSwitchNoteType")+"</div>","1"===a.dataset.todo&&(m+='<div class="ctx-item" data-action="toggleTodo" data-id="'+o+'" data-type="note">'+T("ctxToggleTodo")+"</div>"),m+='<div class="ctx-item" data-action="moveToFolderDialog" data-id="'+o+'" data-type="note">'+T("ctxMoveToFolder")+"</div>",m+='<div class="ctx-item" data-action="duplicateNote" data-id="'+o+'" data-type="note">'+T("ctxDuplicateNote")+"</div>",m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item" data-action="copyLink" data-id="'+o+'" data-type="note">'+T("ctxCopyLink")+"</div>",m+='<div class="ctx-item" data-action="copyExternalLink" data-id="'+o+'" data-type="note">'+T("ctxCopyExternalLink")+"</div>",m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item" data-action="publishNote" data-id="'+o+'" data-type="note">'+T("ctxPublishNote")+"</div>",m+='<div class="ctx-item ctx-drill">'+T("ctxExport")+'<span class="ctx-sub-arrow">▶</span></div>',m+='<div class="ctx-export-template" style="display:none" data-title="'+T("ctxExport")+'"><div class="ctx-item" data-action="exportPdf" data-id="'+o+'" data-type="note">PDF</div><div class="ctx-item" data-action="exportNote" data-format="md" data-id="'+o+'" data-type="note">Markdown</div><div class="ctx-item" data-action="exportNote" data-format="md_frontmatter" data-id="'+o+'" data-type="note">Markdown + Front Matter</div><div class="ctx-item" data-action="exportNote" data-format="jex" data-id="'+o+'" data-type="note">JEX</div><div class="ctx-item" data-action="exportNote" data-format="html" data-id="'+o+'" data-type="note">HTML</div></div>',m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item" data-action="renameNote" data-id="'+o+'" data-type="note" data-title="'+l.replace(/"/g,"&quot;")+'">'+T("ctxRenameNote")+"</div>",m+='<div class="ctx-item" data-action="noteInfo" data-id="'+o+'" data-type="note">'+T("ctxNoteInfo")+"</div>",m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item ctx-danger" data-action="deleteNote" data-id="'+o+'" data-type="note">'+T("ctxDeleteNote")+"</div>",a.dataset.tagId&&(m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item" data-action="untagNote" data-id="'+o+'" data-type="note" data-tag-id="'+a.dataset.tagId+'">'+T("ctxUntagNote")+"</div>")}else if("tag"===n){var f=a.dataset.tagId;f&&(m+='<div class="ctx-item" data-action="renameTag" data-id="'+f+'" data-type="tag">'+T("ctxRenameTag")+"</div>",m+='<div class="ctx-sep"></div>',m+='<div class="ctx-item ctx-danger" data-action="deleteTag" data-id="'+f+'" data-type="tag">'+T("ctxDeleteTag")+"</div>")}if(!((m+="</div>").indexOf("ctx-item")<0)){document.body.insertAdjacentHTML("beforeend",m);var h=document.getElementById("ctx-menu"),y=h.getBoundingClientRect();y.right>window.innerWidth&&(h.style.left=window.innerWidth-y.width-4+"px"),y.bottom>window.innerHeight&&(h.style.top=window.innerHeight-y.height-4+"px")}}}),document.addEventListener("mousedown",function(e){if(!e.target.closest("#ctx-menu")){var t=document.getElementById("ctx-menu");t&&t.remove()}}),webviewApi.onMessage(function(e){if(e&&e.message){var t=e.message;if("syncState"===t.name){var a=document.getElementById("btn-sync");if(!a)return;"syncing"===t.state?(a.disabled=!1,a.classList.remove("sync-done","sync-error"),a.classList.add("syncing"),a.textContent="✕ "+T("syncCancel")):"done"===t.state?(a.classList.remove("syncing","sync-error"),a.classList.add("sync-done"),a.textContent=T("syncDone"),setTimeout(function(){var e=document.getElementById("btn-sync");e&&(e.disabled=!1,e.classList.remove("sync-done"),e.textContent="🔄 "+T("sync"))},2e3)):"error"===t.state&&(a.classList.remove("syncing","sync-done"),a.classList.add("sync-error"),a.textContent=T("syncFailed"),setTimeout(function(){var e=document.getElementById("btn-sync");e&&(e.disabled=!1,e.classList.remove("sync-error"),e.textContent="🔄 "+T("sync"))},4e3))}else if("searchResults"===t.name){if(void 0!==t.searchId&&t.searchId!==_searchId)return;t.notes||t.tags||t.folders?renderSearchResults(t.notes||[],t.tags||[],t.folders||[],t.query):_searchMode&&exitSearchMode()}else if("tagFolderNotes"===t.name){var n=document.querySelector('.tag-children[data-tag-id="'+t.tagId+'"]');if(n){n.dataset.loaded="1";for(var o=n.dataset.noteIndent,s=o?' style="padding-left:'+o+'px"':"",r="",d=0;d<t.notes.length;d++){var i=t.notes[d],l=i.is_todo?i.todo_completed?"☑":"☐":"📝";r+='<div class="tree-item note tag-note"'+s+' data-id="'+i.id+'" data-type="note" data-tag-id="'+t.tagId+'" data-todo="'+(i.is_todo?1:0)+'"><span class="icon note-icon">'+l+'</span><span class="label">'+escapeHtml(i.title)+"</span></div>"}t.notes.length||n.children.length||(r='<div class="tag-empty">—</div>'),n.insertAdjacentHTML("beforeend",r)}}else if("trashNotes"===t.name){var c=document.getElementById("trash-children");if(c){c.dataset.loaded="1";for(var m="",p=t.folders||[],u=0;u<p.length;u++){var g=p[u],v=g.depth||0;m+='<div class="tree-item folder trash-note" style="padding-left:'+(34+16*v)+'px" data-id="'+g.id+'" data-type="folder" data-trash="1" data-depth="'+v+'"><span class="toggle">'+(g.hasNotes||g.hasSub?"▶":"")+'</span><span class="icon">📁</span><span class="label">'+escapeHtml(g.title)+"</span></div>",g.hasNotes&&(m+='<div class="trash-folder-children collapsed" data-folder-id="'+g.id+'" data-depth="'+v+'"></div>')}for(var f=t.notes||[],h=0;h<f.length;h++){var y=f[h],x=y.is_todo?y.todo_completed?"☑":"☐":"📝";m+='<div class="tree-item note trash-note" style="padding-left:34px" data-id="'+y.id+'" data-type="note" data-trash="1"><span class="icon note-icon">'+x+'</span><span class="label">'+escapeHtml(y.title)+"</span></div>"}m||(m='<div class="tag-empty">—</div>'),c.innerHTML=m}}else if("smartFolderNotes"===t.name){var b=document.querySelector('.smart-children[data-smart-id="'+t.smartId+'"]');if(b){for(var S="",E=0;E<t.notes.length;E++){var L=t.notes[E],I=L.is_todo?L.todo_completed?"☑":"☐":"📝";S+='<div class="tree-item note smart-note" style="padding-left:44px" data-id="'+L.id+'" data-type="note" data-todo="'+(L.is_todo?1:0)+'"><span class="icon note-icon">'+I+'</span><span class="label">'+escapeHtml(L.title)+"</span>"+(L.badges||"")+"</div>"}t.notes.length||(S='<div class="tag-empty">—</div>'),b.innerHTML=S}}else if("notePreview"===t.name)showPreview(t);else if("trashFolderNotes"===t.name){var w=document.querySelector('.trash-folder-children[data-folder-id="'+t.folderId+'"]');if(w){w.dataset.loaded="1";for(var M=34+16*(parseInt(w.dataset.depth||"0",10)+1),_="",k=0;k<t.notes.length;k++){var C=t.notes[k],N=C.is_todo?C.todo_completed?"☑":"☐":"📝";_+='<div class="tree-item note trash-note" style="padding-left:'+M+'px" data-id="'+C.id+'" data-type="note" data-trash="1"><span class="icon note-icon">'+N+'</span><span class="label">'+escapeHtml(C.title)+"</span></div>"}t.notes.length||(_='<div class="tag-empty" style="padding-left:'+M+'px">—</div>'),w.innerHTML=_}}else if("tagNotes"===t.name)expandTagNotes(t.tagId,t.notes);else if("scrollToFolder"===t.name)setTimeout(function(){locateFolderInTree(t.folderId)},80);else if("exitSearch"===t.name){var B=document.getElementById("search-input");B&&(B.value=""),syncSearchClear(),_searchMode&&exitSearchMode()}else if("exitSearchAndLocate"===t.name){var q=document.getElementById("search-input");q&&(q.value=""),syncSearchClear(),_searchMode=!1,showSearchContainer(!1),setTimeout(function(){locateFolderInTree(t.folderId)},80)}else if("copyText"===t.name)if(navigator.clipboard&&navigator.clipboard.writeText)navigator.clipboard.writeText(t.text);else{var A=document.createElement("textarea");A.value=t.text,document.body.appendChild(A),A.select(),document.execCommand("copy"),A.remove()}else if("selectNote"===t.name){document.querySelectorAll(".tree-item.note.selected").forEach(function(e){e.classList.remove("selected")});var D=document.getElementById("main-tree"),R=D?D.querySelector('.tree-item.note[data-id="'+t.id+'"]'):null;if(R||(R=document.querySelector('.tree-item.note[data-id="'+t.id+'"]')),R){R.classList.add("selected"),D&&D.contains(R)&&ensureTreeSectionExpanded();var F=D&&D.contains(R)?expandAncestorsLocal(R):[];requestAnimationFrame(function(){var e=document.getElementById("tree-container");if(e){var t=e.getBoundingClientRect(),a=R.getBoundingClientRect();a.top<t.top||a.bottom>t.bottom?R.scrollIntoView({block:"center",behavior:"smooth"}):_savedScrollTop=e.scrollTop}else R.scrollIntoView({block:"nearest",behavior:"instant"})}),F.length&&postMsg({name:"revealNote",folderIds:F})}}else"updateNote"===t.name&&document.querySelectorAll('.tree-item.note[data-id="'+t.id+'"]').forEach(function(e){var a=e.querySelector(".label");a&&(a.textContent=t.title);var n=e.querySelector(".search-result-title");n&&(n.textContent=t.title);var o=e.querySelector(".note-icon");o&&(o.textContent=t.icon),e.querySelectorAll(".todo-pie, .shared-badge").forEach(function(e){e.remove()}),t.badges&&e.insertAdjacentHTML("beforeend",t.badges)})}}),document.addEventListener("dblclick",function(e){var t=e.target;if(!t||!t.closest||!t.closest("#ctx-menu")&&!t.closest("#note-preview")){var a=t.closest?t.closest(".tree-item.note"):null;a&&"1"!==a.dataset.trash&&"1"!==a.dataset.conflict&&a.dataset.id&&postMsg({name:"contextMenu",action:"openInNewWindow",id:a.dataset.id,itemType:"note"})}}),document.addEventListener("mousedown",function(e){var t=e.target.closest(".tree-item");t&&0===e.button&&t.setAttribute("draggable","true")}),document.addEventListener("dragstart",function(e){var t=e.target.closest(".tree-item");if(t)if(t.closest(".trash-children")||t.closest(".conflict-children")||t.closest(".smart-section-body")||t.classList.contains("tag-folder"))e.preventDefault();else{var a=t.classList.contains("pinned-item");if(e.dataTransfer.setData("text/x-je-item",JSON.stringify({id:t.dataset.id,type:t.dataset.type,pinned:a})),"note"===t.dataset.type?e.dataTransfer.setData("text/x-jop-note-ids",JSON.stringify([t.dataset.id])):"folder"===t.dataset.type&&e.dataTransfer.setData("text/x-jop-folder-ids",JSON.stringify([t.dataset.id])),e.dataTransfer.effectAllowed="move",t.classList.add("dragging"),!a){var n=document.getElementById("tree-container");n&&n.classList.add("dragging-active")}}});var _dragScrollDir=0,_dragScrollRaf=null;function dragScrollStep(){var e=document.getElementById("tree-container");e&&_dragScrollDir?(e.scrollTop+=_dragScrollDir,_dragScrollRaf=requestAnimationFrame(dragScrollStep)):_dragScrollRaf=null}function updateDragScroll(e){var t=document.getElementById("tree-container");if(t){var a=t.getBoundingClientRect(),n=a.bottom,o=document.getElementById("drop-zone-empty");if(o&&t.classList.contains("dragging-active")){var s=o.getBoundingClientRect();s.height>0&&s.top>a.top&&(n=s.top)}var r=0;e<a.top+40?r=-Math.ceil((a.top+40-e)/4):e>n?r=0:e>n-40&&(r=Math.ceil((e-(n-40))/4)),_dragScrollDir=r,r&&!_dragScrollRaf&&(_dragScrollRaf=requestAnimationFrame(dragScrollStep))}else _dragScrollDir=0}function clearDropIndicators(){document.querySelectorAll(".drop-target").forEach(function(e){e.classList.remove("drop-target")}),document.querySelectorAll(".drop-above").forEach(function(e){e.classList.remove("drop-above")}),document.querySelectorAll(".drop-below").forEach(function(e){e.classList.remove("drop-below")})}function endDrag(){_dragScrollDir=0,springCancel(),_dragHoverEl=null,clearDropIndicators();var e=document.getElementById("tree-container");e&&e.classList.remove("dragging-active")}document.addEventListener("dragend",function(e){var t=e.target.closest(".tree-item");t&&(t.classList.remove("dragging"),t.removeAttribute("draggable")),endDrag()});var SPRING_EXPAND_MS=2e3,_springEl=null,_springTimer=null,_dragHoverEl=null;function springCancel(){_springTimer&&clearTimeout(_springTimer),_springTimer=null,_springEl=null}function springSchedule(e,t){_springEl!==e&&(springCancel(),_springEl=e,_springTimer=setTimeout(function(){var a=document.querySelector(".tree-item.dragging")&&document.contains(e)&&_dragHoverEl&&e.contains(_dragHoverEl);springCancel(),a&&t()},SPRING_EXPAND_MS))}document.addEventListener("dragover",function(e){document.querySelector(".tree-item.dragging")&&updateDragScroll(e.clientY);var t=e.target;if(t&&3===t.nodeType&&(t=t.parentElement),t){_dragHoverEl=t;var a=t.closest(".tree-item");if(document.getElementById("tree-container"),t.closest("#drop-zone-empty"))document.querySelector(".tree-item.dragging.pinned-item")||(e.preventDefault(),e.dataTransfer.dropEffect="move");else{var n=t.closest(".pinned-section-header");if(n)return e.preventDefault(),e.dataTransfer.dropEffect="move",clearDropIndicators(),void(n.classList.contains("collapsed")&&springSchedule(n,function(){n.classList.remove("collapsed");var e=document.getElementById("pinned-body");e&&e.classList.remove("collapsed");var t=n.querySelector(".toggle");t&&(t.textContent="▼"),postMsg({name:"togglePinnedCollapse"})}));if(t.closest(".pinned-section-body")){var o=document.querySelector(".tree-item.dragging.pinned-item"),s=document.querySelector(".tree-item.dragging");if(o&&a&&a.classList.contains("pinned-item")){e.preventDefault(),e.dataTransfer.dropEffect="move",clearDropIndicators();var r=a.getBoundingClientRect();e.clientY-r.top<.5*r.height?a.classList.add("drop-above"):a.classList.add("drop-below")}else if(s&&!o&&(e.preventDefault(),e.dataTransfer.dropEffect="move",clearDropIndicators(),a&&a.classList.contains("pinned-item"))){var d=a.getBoundingClientRect();e.clientY-d.top<.5*d.height?a.classList.add("drop-above"):a.classList.add("drop-below")}}else{var i=t.closest(".tag-folder");if(i)document.querySelector(".tree-item.note.dragging")&&i.dataset.tagId&&(e.preventDefault(),e.dataTransfer.dropEffect="move",clearDropIndicators(),i.classList.add("drop-target"));else{var l=t.closest(".tree-section-header, .tags-section-header");if(l&&l.classList.contains("collapsed"))springSchedule(l,function(){var e=l.classList.contains("tree-section-header"),t=document.getElementById(e?"main-tree":"tags-body");l.classList.remove("collapsed"),t&&t.classList.remove("collapsed");var a=l.querySelector(".toggle");a&&(a.textContent="▼"),postMsg({name:e?"toggleTreeSection":"toggleTagsSection"})});else if(!(t.closest(".tags-section-body")||t.closest(".tags-section-header")||t.closest(".trash-children")||t.closest(".trash-section-header")||t.closest(".conflict-children")||t.closest(".conflicts-section-header")||t.closest(".smart-section-body")||t.closest(".smart-section-header"))&&a){var c=document.querySelector(".tree-item.dragging");if(!c||!c.classList.contains("pinned-item")){e.preventDefault(),e.dataTransfer.dropEffect="move",clearDropIndicators();var m=a.dataset.type,p=a.getBoundingClientRect(),u=e.clientY-p.top,g=p.height;"folder"===m?u<.25*g?(a.classList.add("drop-above"),springCancel()):u>.75*g?(a.classList.add("drop-below"),springCancel()):(a.classList.add("drop-target"),a.classList.contains("collapsed")&&a!==c&&springSchedule(a,function(){toggleFolderLocal(a,a.dataset.id),postMsg({name:"toggleFolder",id:a.dataset.id})})):"manual"===currentSortMode()?u<.5*g?a.classList.add("drop-above"):a.classList.add("drop-below"):a.classList.add("drop-target")}}}}}}}),document.addEventListener("dragleave",function(e){var t=e.target.closest(".tree-item");t&&(t.classList.remove("drop-target"),t.classList.remove("drop-above"),t.classList.remove("drop-below"));var a=document.getElementById("tree-container");a&&e.target===a&&a.classList.remove("drop-empty")}),document.addEventListener("drop",function(e){e.preventDefault();var t=e.target;t&&3===t.nodeType&&(t=t.parentElement);var a,n=t?t.closest(".tree-item"):null;document.getElementById("tree-container");try{a=JSON.parse(e.dataTransfer.getData("text/x-je-item"))}catch(e){return void endDrag()}if(a&&a.id){var o=a.id,s=a.type,r=a.pinned;if(t&&t.closest("#drop-zone-empty")&&!r)return postMsg({name:"dragToEmpty",dragId:o,dragType:s}),void endDrag();if(t&&t.closest(".pinned-section-header")&&!r)return"note"===s?postMsg({name:"contextMenu",action:"pinNote",id:o,itemType:"note"}):"folder"===s&&postMsg({name:"contextMenu",action:"pinFolder",id:o,itemType:"folder"}),void endDrag();if(t&&t.closest(".pinned-section-body")){var d=n&&n.classList.contains("pinned-item")?n:null;if(r){if(d&&d.dataset.id!==o){var i=d.getBoundingClientRect(),l=e.clientY-i.top<.5*i.height?"before":"after";postMsg({name:"reorderPinned",dragId:o,dragType:s,targetId:d.dataset.id,position:l})}}else{var c={name:"pinItemAt",dragId:o,dragType:s};if(d&&d.dataset.id!==o){var m=d.getBoundingClientRect();c.targetId=d.dataset.id,c.position=e.clientY-m.top<.5*m.height?"before":"after"}postMsg(c)}endDrag()}else{var p=t?t.closest(".tag-folder"):null;if(p)return"note"===s&&p.dataset.tagId&&postMsg({name:"tagNoteAdd",tagId:p.dataset.tagId,noteId:o}),void endDrag();if(t&&(t.closest(".tags-section-body")||t.closest(".tags-section-header")||t.closest(".trash-children")||t.closest(".trash-section-header")||t.closest(".conflict-children")||t.closest(".conflicts-section-header")||t.closest(".smart-section-body")||t.closest(".smart-section-header")))endDrag();else if(r)endDrag();else if(n){var u=n.dataset.id,g=n.dataset.type;if(o!==u){var v=n.getBoundingClientRect(),f=e.clientY-v.top,h=v.height;postMsg("folder"===g?f>=.25*h&&f<=.75*h?{name:"dragDrop",dragId:o,dragType:s,targetId:u,position:"into"}:{name:"dragDrop",dragId:o,dragType:s,targetId:u,position:f<.25*h?"above":"below"}:"note"===s?{name:"dragDrop",dragId:o,dragType:s,targetId:u,position:f<.5*h?"above":"below"}:{name:"dragDrop",dragId:o,dragType:s,targetId:u,position:"into"}),endDrag()}else endDrag()}else endDrag()}}else endDrag()});var _searchTimer=null,_searchMode=!1,_searchId=0;function escapeRegex(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function escapeHtml(e){return String(null==e?"":e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function highlightText(e,t){var a=escapeHtml(e);if(!t)return a;var n=new RegExp("("+escapeRegex(t)+")","gi");return a.replace(n,'<mark class="search-highlight">$1</mark>')}function showSearchContainer(e){var t=document.getElementById("tree-container"),a=document.getElementById("search-results");t&&(t.style.display=e?"none":""),a&&(a.style.display=e?"":"none")}function renderNoteItem(e,t){var a="📝";e.is_todo&&(a=e.todo_completed?"☑":"☐");var n='<div class="search-result-item tree-item note" data-id="'+e.id+'" data-type="note" data-todo="'+(e.is_todo?1:0)+'">';return n+='<span class="icon note-icon">'+a+"</span>",n+='<div class="search-result-content">',n+='<div class="search-result-title">'+highlightText(e.title,t)+"</div>",e.folderName&&(n+='<div class="search-result-folder">📂 '+escapeHtml(e.folderName)+"</div>"),e.snippet&&(n+='<div class="search-result-snippet">'+highlightText(e.snippet,t)+"</div>"),n+"</div></div>"}function renderSearchResults(e,t,a,n){var o=document.getElementById("search-results");if(o){showSearchContainer(!0);var s=e.length+t.length+a.length,r='<button class="search-save-smart" title="'+escapeHtml(T("smartSaveSearch"))+'">💾 '+escapeHtml(T("smartSaveSearch"))+"</button>";if(0!==s){var d='<div class="search-status search-status-row"><span>'+T("searchResultCount").replace("{count}",s)+"</span>"+r+"</div>";if(a.length>0){d+=f("📁",T("searchSectionFolders"),a.length,"folders"),d+='<div class="search-section-body" id="search-section-folders">';for(var i=0;i<a.length;i++){var l=a[i],c=l.icon,m=c&&"image"===c.type?'<img class="custom-icon" src="'+escapeHtml(c.value)+'" />':escapeHtml(c&&c.value||"📁");d+='<div class="search-result-item search-folder-item" data-folder-id="'+l.id+'">',d+='<span class="icon">'+m+"</span>",d+='<div class="search-result-content">',d+='<div class="search-result-title">'+highlightText(l.title,n)+"</div>",d+="</div></div>"}d+="</div>"}if(e.length>0){d+=f("📝",T("searchSectionNotes"),e.length,"notes"),d+='<div class="search-section-body" id="search-section-notes">';for(var p=0;p<e.length;p++)d+=renderNoteItem(e[p],n);d+="</div>"}if(t.length>0){d+=f("🏷️",T("searchSectionTags"),t.length,"tags"),d+='<div class="search-section-body" id="search-section-tags">';for(var u=0;u<t.length;u++){var g=t[u],v=T("searchTagNoteCount").replace("{count}",g.noteCount);d+='<div class="search-result-item search-tag-item" data-tag-id="'+g.id+'">',d+='<span class="icon">🏷️</span>',d+='<div class="search-result-content">',d+='<div class="search-result-title">'+highlightText(g.title,n)+"</div>",d+='<div class="search-result-folder">'+v+"</div>",d+="</div>",d+='<span class="tag-expand-arrow">▶</span>',d+="</div>",d+='<div class="tag-notes-container" id="tag-notes-'+g.id+'"></div>'}d+="</div>"}o.innerHTML=d,_searchMode=!0}else o.innerHTML='<div class="search-status search-status-row"><span>'+T("searchNoResult")+"</span>"+r+"</div>"}function f(e,t,a,n){return'<div class="search-section-header" data-section="'+n+'"><span class="section-toggle">▼</span> '+e+" "+t+" ("+a+")</div>"}}function expandTagNotes(e,t){var a=document.getElementById("tag-notes-"+e);if(a){var n;if(a.children.length>0)return a.innerHTML="",void((n=document.querySelector('.search-tag-item[data-tag-id="'+e+'"] .tag-expand-arrow'))&&n.classList.remove("expanded"));for(var o="",s=0;s<t.length;s++)o+=renderNoteItem(t[s],"");0===t.length&&(o='<div class="search-status" style="padding-left:30px;">'+T("searchNoResult")+"</div>"),a.innerHTML=o,(n=document.querySelector('.search-tag-item[data-tag-id="'+e+'"] .tag-expand-arrow'))&&n.classList.add("expanded")}}function locateFolderInTree(e){ensureTreeSectionExpanded();var t=document.getElementById("main-tree"),a=t?t.querySelector('.tree-item.folder[data-id="'+e+'"]'):null;a&&(expandAncestorsLocal(a),requestAnimationFrame(function(){a.scrollIntoView({block:"center",behavior:"smooth"}),a.classList.add("locate-flash"),setTimeout(function(){a.classList.remove("locate-flash")},1500)}))}function ensureTreeSectionExpanded(){var e=document.getElementById("main-tree");if(e&&e.classList.contains("collapsed")){e.classList.remove("collapsed");var t=document.getElementById("tree-header");if(t){t.classList.remove("collapsed");var a=t.querySelector(".toggle");a&&(a.textContent="▼")}postMsg({name:"toggleTreeSection"})}}function revealSelectedNote(){ensureTreeSectionExpanded();var e=document.getElementById("tree-container"),t=document.getElementById("main-tree");if(e&&t){var a=t.querySelector(".tree-item.note.selected");if(!a){var n=document.querySelector(".tree-item.note.selected");n&&n.dataset.id&&(a=t.querySelector('.tree-item.note[data-id="'+n.dataset.id+'"]'))&&a.classList.add("selected")}if(a){var o=expandAncestorsLocal(a);o.length&&postMsg({name:"revealNote",folderIds:o}),requestAnimationFrame(function(){a.scrollIntoView({block:"center",behavior:"smooth"})})}}}var _lastQuery="",_searchFromSmart="";function runSearch(e,t){var a=document.getElementById("search-input");a&&(a.value=e,syncSearchClear(),_searchFromSmart=t||"",startSearch(e,0),a.focus())}function startSearch(e,t){_searchTimer&&clearTimeout(_searchTimer);var a=++_searchId;_lastQuery=e,_searchMode=!0;var n=document.getElementById("search-results");n&&(n.innerHTML='<div class="search-status">'+T("searching")+"</div>"),showSearchContainer(!0),_searchTimer=setTimeout(function(){postMsg({name:"search",query:e,searchId:a})},t)}function restoreSearchAfterRefresh(){if(_searchMode&&_lastQuery){var e=document.getElementById("search-input");e&&!e.value&&(e.value=_lastQuery,syncSearchClear(),startSearch(_lastQuery,0))}}function exitSearchMode(){_searchMode=!1,_lastQuery="",_searchFromSmart="",showSearchContainer(!1),revealSelectedNote()}function syncSearchClear(){var e=document.querySelector(".search-bar"),t=document.getElementById("search-input");e&&t&&e.classList.toggle("has-text",!!t.value)}document.addEventListener("input",function(e){if("search-input"===e.target.id){syncSearchClear();var t=e.target.value.trim();if(!t)return _searchTimer&&clearTimeout(_searchTimer),_searchId++,void(_searchMode&&exitSearchMode());startSearch(t,400)}}),document.addEventListener("click",function(e){if(e.target.closest&&e.target.closest(".search-save-smart")){var t=document.getElementById("search-input"),a=t?t.value.trim():_lastQuery;a&&postMsg({name:"saveSmartFolder",query:a,defaultName:_searchFromSmart})}}),document.addEventListener("keydown",function(e){if("Escape"===e.key){var t=document.getElementById("search-input");t&&t.value&&(t.value="",syncSearchClear(),_searchMode&&exitSearchMode())}});var KB_HEADERS=".pinned-section-header, .smart-section-header, .tree-section-header, .tags-section-header, .trash-section-header, .conflicts-section-header, .search-section-header",KB_ITEMS=".tree-item, .search-folder-item, .search-tag-item, "+KB_HEADERS,KB_KEY_ATTRS=["id","type","tagId","tagPath","smartId","folderId","section","trash"],_kbRow=null;function kbKeyFor(e){var t;if(e.id)t="#"+e.id;else{t="."+e.classList[0];for(var a=0;a<KB_KEY_ATTRS.length;a++){var n=KB_KEY_ATTRS[a];void 0!==e.dataset[n]&&(t+="[data-"+n.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()})+'="'+cssEscapeAttr(e.dataset[n])+'"]')}}var o=Array.prototype.indexOf.call(document.querySelectorAll(t),e);return{sel:t,idx:o<0?0:o}}function keyboardTargetRow(){if(!_kbRow)return null;var e=document.querySelectorAll(_kbRow.sel);return e[_kbRow.idx]||e[0]||null}function kbVisibleItems(){var e=[];return document.querySelectorAll(KB_ITEMS).forEach(function(t){null!==t.offsetParent&&e.push(t)}),e}function kbLevel(e){return e.matches(KB_HEADERS)?-1:parseFloat(getComputedStyle(e).paddingLeft)||0}function kbExpandState(e){if(e.classList.contains("search-section-header")){var t=document.getElementById("search-section-"+e.dataset.section);return t?t.classList.contains("collapsed")?"collapsed":"expanded":null}if(e.matches(KB_HEADERS))return e.classList.contains("collapsed")?"collapsed":"expanded";if(!e.classList.contains("tree-item")||"note"===e.dataset.type)return null;if("1"===e.dataset.trash){var a=e.querySelector(".toggle"),n=a?a.textContent:"";return"▼"===n?"expanded":"▶"===n?"collapsed":null}if(e.classList.contains("pinned-item"))return null;var o=null;return e.classList.contains("smart-folder")?o=document.querySelector('.smart-children[data-smart-id="'+e.dataset.smartId+'"]'):e.classList.contains("tag-folder")?o=e.dataset.tagPath?document.querySelector('.tag-children[data-tag-path="'+cssEscapeAttr(e.dataset.tagPath)+'"]'):document.querySelector('.tag-children[data-tag-id="'+e.dataset.tagId+'"]'):(o=document.querySelector('.children[data-folder-id="'+e.dataset.id+'"]'))&&!o.firstElementChild&&(o=null),o?e.classList.contains("collapsed")?"collapsed":"expanded":null}function kbScrollParent(e){for(var t=e.parentElement;t&&t!==document.body;){var a=getComputedStyle(t).overflowY;if(("auto"===a||"scroll"===a)&&t.scrollHeight>t.clientHeight)return t;t=t.parentElement}return null}function kbReveal(e){if(e.scrollIntoView({block:"nearest",behavior:"instant"}),!e.matches(KB_HEADERS)){var t=kbScrollParent(e);if(t){var a=e.getBoundingClientRect(),n=t.getBoundingClientRect(),o=n.top,s=n.bottom;t.querySelectorAll(KB_HEADERS).forEach(function(t){if(null!==t.offsetParent){var a=t.getBoundingClientRect();t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING?o=Math.max(o,a.bottom):s=Math.min(s,a.top)}}),a.top<o?t.scrollTop-=o-a.top:a.bottom>s&&(t.scrollTop+=a.bottom-s),"tree-container"===t.id&&(_savedScrollTop=t.scrollTop)}}}function kbPaint(){document.querySelectorAll(".kb-cursor").forEach(function(e){e.classList.remove("kb-cursor"),e.removeAttribute("tabindex")});var e=keyboardTargetRow();if(!e||!document.body.classList.contains("kb-active"))return null;e.classList.add("kb-cursor"),e.setAttribute("tabindex","-1");var t=document.activeElement;return!(t&&("INPUT"===t.tagName||"TEXTAREA"===t.tagName||t.isContentEditable))&&t!==e&&document.hasFocus()&&e.focus({preventScroll:!0}),e}function kbMoveTo(e){_kbRow=kbKeyFor(e),document.body.classList.add("kb-active"),kbPaint(),kbReveal(e)}function keyboardAction(e,t){var a=t.dataset.type;return"1"===t.dataset.trash?null:"tag"===a?t.dataset.tagId?{action:"F2"===e?"renameTag":"deleteTag",id:t.dataset.tagId,itemType:"tag"}:null:"note"===a?"F2"===e&&"1"===t.dataset.conflict?null:{action:"F2"===e?"renameNote":"deleteNote",id:t.dataset.id,itemType:"note"}:"folder"===a?{action:"F2"===e?"renameFolder":"deleteFolder",id:t.dataset.id,itemType:"folder"}:null}function keyboardNavigate(e){var t=kbVisibleItems();if(!t.length)return!1;var a,n=keyboardTargetRow(),o=n?t.indexOf(n):-1;if("Tab"===e.key){if(o<0)return!1;for(var s=e.shiftKey?-1:1,r=o+s;r>=0&&r<t.length;r+=s)if(t[r].matches(KB_HEADERS))return kbMoveTo(t[r]),!0;return!1}if(o<0)return"Enter"!==e.key&&" "!==e.key&&(kbMoveTo(t.filter(function(e){return e.classList.contains("selected")})[0]||t[0]),!0);switch(e.key){case"ArrowDown":return o<t.length-1?kbMoveTo(t[o+1]):kbMoveTo(n),!0;case"ArrowUp":return kbMoveTo(o>0?t[o-1]:n),!0;case"Home":return kbMoveTo(t[0]),!0;case"End":return kbMoveTo(t[t.length-1]),!0;case"Enter":case" ":return kbMoveTo(n),n.click(),!0;case"ArrowRight":return a=kbExpandState(n),kbMoveTo(n),"collapsed"===a?n.click():"expanded"===a&&t[o+1]&&kbLevel(t[o+1])>kbLevel(n)&&kbMoveTo(t[o+1]),!0;case"ArrowLeft":if(a=kbExpandState(n),kbMoveTo(n),"expanded"===a)return n.click(),!0;for(var d=kbLevel(n),i=o-1;i>=0;i--)if(kbLevel(t[i])<d){kbMoveTo(t[i]);break}return!0}return!1}new MutationObserver(function(){_kbRow&&document.body.classList.contains("kb-active")&&kbPaint()}).observe(document.body,{childList:!0,subtree:!0}),document.addEventListener("mousedown",function(e){document.body.classList.remove("kb-active");var t=e.target.closest?e.target.closest(KB_ITEMS):null;if(!t){if(e.target.closest&&e.target.closest("#ctx-menu"))return;return _kbRow=null,void kbPaint()}_kbRow=kbKeyFor(t),kbPaint()},!0);var KB_NAV_KEYS={ArrowUp:1,ArrowDown:1,ArrowLeft:1,ArrowRight:1,Home:1,End:1,Enter:1," ":1,Tab:1};document.addEventListener("keydown",function(e){var t=1===KB_NAV_KEYS[e.key];if((t||"F2"===e.key||"F5"===e.key||"Delete"===e.key)&&!(e.ctrlKey||e.altKey||e.metaKey||e.shiftKey&&"Tab"!==e.key)){var a=e.target;if((!a||"INPUT"!==a.tagName&&"TEXTAREA"!==a.tagName&&!a.isContentEditable)&&!(a&&"BUTTON"===a.tagName||document.getElementById("ctx-menu")))if(t)keyboardNavigate(e)&&e.preventDefault();else if(!e.repeat){if("F5"===e.key)return e.preventDefault(),void postMsg({name:"refreshView"});var n=keyboardTargetRow(),o=n?keyboardAction(e.key,n):null;o&&(e.preventDefault(),postMsg({name:"contextMenu",action:o.action,id:o.id,itemType:o.itemType}))}}}),document.addEventListener("click",function(e){if(e.target.closest&&e.target.closest("#search-clear")){var t=document.getElementById("search-input");t&&(t.value="",_searchMode&&exitSearchMode(),t.focus()),syncSearchClear()}});