joplin-plugin-explorer 1.5.12 → 1.5.13

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "joplin-plugin-explorer",
3
- "version": "1.5.12",
3
+ "version": "1.5.13",
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.5.12",
5
+ "version": "1.5.13",
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
@@ -1 +1 @@
1
- var _savedScrollTop=0,_isFirstRender=!0;function postMsg(e){webviewApi.postMessage(e)}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});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 d=document.getElementById("inline-input-overlay");d&&d.remove();var n=document.createElement("div");n.id="inline-input-overlay",n.className="inline-input-overlay",n.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(n);var o=n.querySelector(".inline-input-field");function s(){var e=o.value;n.remove(),a(e)}function r(){n.remove(),a(null)}o.focus(),o.select(),n.querySelector(".inline-input-ok").addEventListener("click",s),n.querySelector(".inline-input-cancel").addEventListener("click",r),o.addEventListener("keydown",function(e){"Enter"===e.key&&s(),"Escape"===e.key&&r()}),n.addEventListener("click",function(e){e.target===n&&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"),d=document.querySelector('.children[data-folder-id="'+t+'"]');d&&d.classList.toggle("collapsed",a),a||animateExpand(d);var n=e.querySelector(".toggle");n&&(n.textContent=a?"▶":"▼",n.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 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,d=document.querySelector('.children[data-folder-id="'+a+'"]'),n=d&&d.querySelector(".tree-item.folder"),o=e.querySelector(".toggle");n?(e.classList.remove("collapsed"),d&&d.classList.remove("collapsed"),o&&(o.textContent="▼",o.classList.add("expanded"))):(e.classList.add("collapsed"),d&&d.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 d=[],n=document.getElementById("main-tree");return n?(n.querySelectorAll(".tree-item.folder").forEach(function(e){var a=e.dataset.id,n=document.querySelector('.children[data-folder-id="'+a+'"]'),o=e.querySelector(".toggle"),s=!!t[a];e.classList.toggle("collapsed",s),n&&n.classList.toggle("collapsed",s),o&&(o.textContent=s?"▶":"▼",o.classList.toggle("expanded",!s)),s&&a&&d.push(a)}),d):d}_observer.observe(document.body,{childList:!0,subtree:!0});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 d=document.querySelector('.tree-item.folder:not(.pinned-item)[data-id="'+a.dataset.folderId+'"]');if(d){d.classList.remove("collapsed");var n=d.querySelector(".toggle");n&&(n.textContent="▼",n.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 d=document.createElement("div");d.id="note-preview";var n=document.createElement("div");n.className="note-preview-title",n.textContent=e.title,d.appendChild(n);var o=document.createElement("div");o.className="note-preview-meta";for(var s=[T("pvType")+": "+(e.isTodo?T("pvTodo"):T("pvNote"))+" · "+T("pvSize")+": "+(e.size||0)+" "+T("pvChars"),T("pvCreated")+": "+v(e.created),T("pvUpdated")+": "+v(e.updated)],r=0;r<s.length;r++){var i=document.createElement("div");i.textContent=s[r],o.appendChild(i)}d.appendChild(o);var l=document.createElement("div");l.className="note-preview-body",l.textContent=e.snippet||"",e.snippet&&d.appendChild(l),document.body.appendChild(d);var c=t.getBoundingClientRect(),m=d.getBoundingClientRect(),p=c.bottom+4;p+m.height>window.innerHeight-8&&(p=Math.max(8,c.top-m.height-4)),d.style.top=p+"px",d.style.left=Math.max(8,Math.min(c.left+20,window.innerWidth-m.width-8))+"px"}}function v(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.msg){postMsg({name:t.dataset.msg});var a=document.getElementById("ctx-menu");return void(a&&a.remove())}if(t.classList.contains("ctx-drill")){var d=document.getElementById("ctx-menu"),n=d?d.querySelector(".ctx-export-template"):null;return void(d&&n&&(window._ctxMainHtml=d.innerHTML,d.innerHTML='<div class="ctx-item ctx-back">◂ '+(n.dataset.title||"")+'</div><div class="ctx-sep"></div>'+n.innerHTML))}if(t.classList.contains("ctx-back")){var o=document.getElementById("ctx-menu");return void(o&&window._ctxMainHtml&&(o.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 s=document.getElementById("ctx-menu");s&&s.remove()}else{var r=document.getElementById("ctx-menu");r&&r.remove();var i=e.target.closest(".shared-badge");if(i){var l=i.closest(".tree-item");l&&l.dataset.id&&postMsg({name:"contextMenu",action:"publishNote",id:l.dataset.id,itemType:"note"})}else{var c=e.target.closest(".search-tag-item");if(c)c.dataset.tagId&&postMsg({name:"loadTagNotes",tagId:c.dataset.tagId});else{var m=e.target.closest(".search-folder-item");if(m)m.dataset.folderId&&postMsg({name:"locateFolder",folderId:m.dataset.folderId});else{var p=e.target.closest(".pinned-section-header");if(p){var v=p.classList.toggle("collapsed"),g=document.getElementById("pinned-body");g&&g.classList.toggle("collapsed",v),v||animateExpand(g);var u=p.querySelector(".toggle");return u&&(u.textContent=v?"▶":"▼"),void postMsg({name:"togglePinnedCollapse"})}var f=e.target.closest(".tags-section-header");if(f){var h=f.classList.toggle("collapsed"),y=document.getElementById("tags-body");y&&y.classList.toggle("collapsed",h),h||animateExpand(y);var x=f.querySelector(".toggle");return x&&(x.textContent=h?"▶":"▼"),void postMsg({name:"toggleTagsSection"})}var L=e.target.closest(".smart-section-header");if(L){var I=L.classList.toggle("collapsed"),E=document.getElementById("smart-body");E&&E.classList.toggle("collapsed",I),I||animateExpand(E);var S=L.querySelector(".toggle");return S&&(S.textContent=I?"▶":"▼"),void postMsg({name:"toggleSmartSection"})}var b=e.target.closest(".smart-folder");if(b){var w=b.dataset.smartId,M=document.querySelector('.smart-children[data-smart-id="'+w+'"]');if(!M)return;var N=M.classList.toggle("collapsed");b.classList.toggle("collapsed",N),N||animateExpand(M);var _=b.querySelector(".toggle");return _&&(_.textContent=N?"▶":"▼"),void(N||postMsg({name:"smartFolderNotes",smartId:w,query:b.dataset.query}))}var q=e.target.closest(".trash-section-header");if(q){var C=q.classList.toggle("collapsed"),B=document.getElementById("trash-children");B&&B.classList.toggle("collapsed",C),C||animateExpand(B);var D=q.querySelector(".toggle");return D&&(D.textContent=C?"▶":"▼"),postMsg({name:"toggleTrashSection"}),void(C||!B||B.dataset.loaded||postMsg({name:"trashNotes"}))}var A=e.target.closest(".tag-folder");if(A){var F=A.dataset.tagId,k=document.querySelector('.tag-children[data-tag-id="'+F+'"]');if(!k)return;var H=k.classList.toggle("collapsed");A.classList.toggle("collapsed",H),H||animateExpand(k);var R=A.querySelector(".toggle");return R&&(R.textContent=H?"▶":"▼"),void(H||k.dataset.loaded||postMsg({name:"tagFolderNotes",tagId:F}))}var P=e.target.closest(".search-section-header");if(P){var O=document.getElementById("search-section-"+P.dataset.section);if(O){var Y=P.querySelector(".section-toggle");O.classList.contains("collapsed")?(O.classList.remove("collapsed"),Y&&(Y.textContent="▼")):(O.classList.add("collapsed"),Y&&(Y.textContent="▶"))}}else{var j=e.target.closest(".tree-item");if(j){if("1"===j.dataset.trash){if("folder"===j.dataset.type){var J=document.querySelector('.trash-folder-children[data-folder-id="'+j.dataset.id+'"]');if(J){var W=J.classList.toggle("collapsed");W||animateExpand(J);var z=j.querySelector(".toggle");z&&(z.textContent=W?"▶":"▼"),W||J.dataset.loaded||postMsg({name:"trashFolderNotes",folderId:j.dataset.id})}}else"note"===j.dataset.type&&postMsg({name:"openNote",id:j.dataset.id});return}var V=j.dataset.type,U=j.dataset.id,X=j.classList.contains("pinned-item");"note"===V?(document.querySelectorAll(".tree-item.note.selected").forEach(function(e){e.classList.remove("selected")}),j.classList.add("selected"),postMsg({name:"openNote",id:U})):"folder"===V&&(X?postMsg({name:"locatePinnedFolder",folderId:U}):(toggleFolderLocal(j,U),postMsg({name:"toggleFolder",id:U})))}else{var $=e.target.closest("button");if($)switch($.id){case"btn-new":var K=document.getElementById("ctx-menu");if(K){K.remove();break}var G=document.getElementById("btn-new");if(!G)break;var Q=G.getBoundingClientRect();document.body.insertAdjacentHTML("beforeend",'<div id="ctx-menu" class="context-menu" style="left:'+Q.left+"px;top:"+(Q.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 Z=document.getElementById("btn-collapse-all");if(Z&&"expand"===Z.dataset.mode){var ee,te=document.getElementById("notes-in-list-root"),ae=te&&te.dataset.expandMode||"restore";if("all"===ae)ee=applyCollapsedSet([]);else if("restore"===ae){var de=_collapseSnapshot;if(!de&&te)try{de=JSON.parse(te.dataset.collapseSnapshot||"null")}catch(e){de=null}ee=Array.isArray(de)?applyCollapsedSet(de):expandAllLocal()}else ee=expandAllLocal();var ne=document.querySelectorAll("#main-tree .tree-item.folder").length;ne>0&&ee.length>=ne&&(ee=applyCollapsedSet([])),postMsg({name:"expandAll",collapsedIds:ee}),Z.dataset.mode="collapse",Z.textContent="▲",Z.title=T("collapseAll")}else{var oe=[],se=0;document.querySelectorAll("#main-tree .tree-item.folder").forEach(function(e){e.dataset.id&&(se++,e.classList.contains("collapsed")&&oe.push(e.dataset.id))}),collapseAllLocal(),oe.length>=se&&se>0?postMsg({name:"collapseAll"}):(_collapseSnapshot=oe,postMsg({name:"collapseAll",prevCollapsed:oe})),Z&&(Z.dataset.mode="expand",Z.textContent="▼",Z.title=T("expandAll"))}break;case"btn-refresh":postMsg({name:"refreshView"});break;case"btn-sync":$.disabled||($.disabled=!0,$.classList.add("syncing"),$.textContent="🔄 "+T("syncing"),postMsg({name:"sync"}))}}}}}}}}),document.addEventListener("contextmenu",function(e){hidePreview();var t=document.getElementById("ctx-menu");if(t&&t.remove(),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 d=a.dataset.type,n=a.dataset.id;if("smart"!==d){var o="",s=a.querySelector(".label");s&&(o=s.textContent);var r='<div id="ctx-menu" class="context-menu" style="left:'+e.pageX+"px;top:"+e.pageY+'px;">';if("1"===a.dataset.trash){var i="folder"===d?"trashFolder":"trashNote";r+='<div class="ctx-item" data-action="restoreItem" data-id="'+n+'" data-type="'+i+'">'+T("ctxRestoreNote")+"</div>",r+='<div class="ctx-sep"></div>',r+='<div class="ctx-item ctx-danger" data-action="permanentDeleteItem" data-id="'+n+'" data-type="'+i+'">'+T("ctxPermanentDelete")+"</div>"}else if("folder"===d){var l=isPinned(n);r+='<div class="ctx-item" data-action="'+(l?"unpinFolder":"pinFolder")+'" data-id="'+n+'" data-type="folder">'+T(l?"ctxUnpin":"ctxPin")+"</div>",r+='<div class="ctx-sep"></div>',r+='<div class="ctx-item" data-action="newNote" data-id="'+n+'" data-type="folder">'+T("ctxNewNoteHere")+"</div>",r+='<div class="ctx-item" data-action="newTodo" data-id="'+n+'" data-type="folder">'+T("ctxNewTodoHere")+"</div>",r+='<div class="ctx-item" data-action="newSubNotebook" data-id="'+n+'" data-type="folder">'+T("ctxNewSubNotebook")+"</div>",r+='<div class="ctx-item" data-action="importFiles" data-id="'+n+'" data-type="folder">'+T("ctxImportFiles")+"</div>",r+='<div class="ctx-sep"></div>',r+='<div class="ctx-item" data-action="renameFolder" data-id="'+n+'" data-type="folder" data-title="'+o.replace(/"/g,"&quot;")+'">'+T("ctxRenameFolder")+"</div>",r+='<div class="ctx-item ctx-drill">'+T("ctxExportFolder")+'<span class="ctx-sub-arrow">▸</span></div>',r+='<div class="ctx-export-template" style="display:none" data-title="'+T("ctxExportFolder")+'"><div class="ctx-item" data-action="exportFolder" data-format="jex" data-id="'+n+'" data-type="folder">JEX</div><div class="ctx-item" data-action="exportFolder" data-format="md" data-id="'+n+'" data-type="folder">Markdown</div><div class="ctx-item" data-action="exportFolder" data-format="md_frontmatter" data-id="'+n+'" data-type="folder">Markdown + Front Matter</div><div class="ctx-item" data-action="exportFolder" data-format="html" data-id="'+n+'" data-type="folder">HTML</div></div>',r+='<div class="ctx-sep"></div>',r+='<div class="ctx-item ctx-danger" data-action="deleteFolder" data-id="'+n+'" data-type="folder">'+T("ctxDeleteFolder")+"</div>"}else if("note"===d){var c=isPinned(n);r+='<div class="ctx-item" data-action="'+(c?"unpinNote":"pinNote")+'" data-id="'+n+'" data-type="note">'+T(c?"ctxUnpin":"ctxPin")+"</div>",r+='<div class="ctx-sep"></div>',r+='<div class="ctx-item" data-action="openNote" data-id="'+n+'" data-type="note">'+T("ctxOpenNote")+"</div>",r+='<div class="ctx-item" data-action="openInNewWindow" data-id="'+n+'" data-type="note">'+T("ctxOpenInNewWindow")+"</div>",r+='<div class="ctx-sep"></div>',r+='<div class="ctx-item" data-action="setTags" data-id="'+n+'" data-type="note">'+T("ctxSetTags")+"</div>",r+='<div class="ctx-item" data-action="switchNoteType" data-id="'+n+'" data-type="note">'+T("ctxSwitchNoteType")+"</div>","1"===a.dataset.todo&&(r+='<div class="ctx-item" data-action="toggleTodo" data-id="'+n+'" data-type="note">'+T("ctxToggleTodo")+"</div>"),r+='<div class="ctx-item" data-action="moveToFolderDialog" data-id="'+n+'" data-type="note">'+T("ctxMoveToFolder")+"</div>",r+='<div class="ctx-item" data-action="duplicateNote" data-id="'+n+'" data-type="note">'+T("ctxDuplicateNote")+"</div>",r+='<div class="ctx-sep"></div>',r+='<div class="ctx-item" data-action="copyLink" data-id="'+n+'" data-type="note">'+T("ctxCopyLink")+"</div>",r+='<div class="ctx-item" data-action="copyExternalLink" data-id="'+n+'" data-type="note">'+T("ctxCopyExternalLink")+"</div>",r+='<div class="ctx-sep"></div>',r+='<div class="ctx-item" data-action="publishNote" data-id="'+n+'" data-type="note">'+T("ctxPublishNote")+"</div>",r+='<div class="ctx-item ctx-drill">'+T("ctxExport")+'<span class="ctx-sub-arrow">▸</span></div>',r+='<div class="ctx-export-template" style="display:none" data-title="'+T("ctxExport")+'"><div class="ctx-item" data-action="exportPdf" data-id="'+n+'" data-type="note">PDF</div><div class="ctx-item" data-action="exportNote" data-format="md" data-id="'+n+'" data-type="note">Markdown</div><div class="ctx-item" data-action="exportNote" data-format="md_frontmatter" data-id="'+n+'" data-type="note">Markdown + Front Matter</div><div class="ctx-item" data-action="exportNote" data-format="jex" data-id="'+n+'" data-type="note">JEX</div><div class="ctx-item" data-action="exportNote" data-format="html" data-id="'+n+'" data-type="note">HTML</div></div>',r+='<div class="ctx-sep"></div>',r+='<div class="ctx-item" data-action="renameNote" data-id="'+n+'" data-type="note" data-title="'+o.replace(/"/g,"&quot;")+'">'+T("ctxRenameNote")+"</div>",r+='<div class="ctx-item" data-action="noteInfo" data-id="'+n+'" data-type="note">'+T("ctxNoteInfo")+"</div>",r+='<div class="ctx-sep"></div>',r+='<div class="ctx-item ctx-danger" data-action="deleteNote" data-id="'+n+'" data-type="note">'+T("ctxDeleteNote")+"</div>",a.dataset.tagId&&(r+='<div class="ctx-sep"></div>',r+='<div class="ctx-item" data-action="untagNote" data-id="'+n+'" data-type="note" data-tag-id="'+a.dataset.tagId+'">'+T("ctxUntagNote")+"</div>")}else if("tag"===d){var m=a.dataset.tagId;r+='<div class="ctx-item" data-action="renameTag" data-id="'+m+'" data-type="tag">'+T("ctxRenameTag")+"</div>",r+='<div class="ctx-sep"></div>',r+='<div class="ctx-item ctx-danger" data-action="deleteTag" data-id="'+m+'" data-type="tag">'+T("ctxDeleteTag")+"</div>"}if(!((r+="</div>").indexOf("ctx-item")<0)){document.body.insertAdjacentHTML("beforeend",r);var p=document.getElementById("ctx-menu"),v=p.getBoundingClientRect();v.right>window.innerWidth&&(p.style.left=window.innerWidth-v.width-4+"px"),v.bottom>window.innerHeight&&(p.style.top=window.innerHeight-v.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=!0,a.classList.remove("sync-done","sync-error"),a.classList.add("syncing"),a.textContent="🔄 "+T("syncing")):"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 d=document.querySelector('.tag-children[data-tag-id="'+t.tagId+'"]');if(d){d.dataset.loaded="1";for(var n="",o=0;o<t.notes.length;o++){var s=t.notes[o],r=s.is_todo?s.todo_completed?"☑":"☐":"📝";n+='<div class="tree-item note tag-note" data-id="'+s.id+'" data-type="note" data-tag-id="'+t.tagId+'" data-todo="'+(s.is_todo?1:0)+'"><span class="icon note-icon">'+r+'</span><span class="label">'+escapeHtml(s.title)+"</span></div>"}t.notes.length||(n='<div class="tag-empty">—</div>'),d.innerHTML=n}}else if("trashNotes"===t.name){var i=document.getElementById("trash-children");if(i){i.dataset.loaded="1";for(var l="",c=t.folders||[],m=0;m<c.length;m++){var p=c[m],v=p.depth||0;l+='<div class="tree-item folder trash-note" style="padding-left:'+(34+16*v)+'px" data-id="'+p.id+'" data-type="folder" data-trash="1" data-depth="'+v+'"><span class="toggle">'+(p.hasNotes?"▶":"")+'</span><span class="icon">📁</span><span class="label">'+escapeHtml(p.title)+"</span></div>",p.hasNotes&&(l+='<div class="trash-folder-children collapsed" data-folder-id="'+p.id+'" data-depth="'+v+'"></div>')}for(var g=t.notes||[],u=0;u<g.length;u++){var f=g[u],h=f.is_todo?f.todo_completed?"☑":"☐":"📝";l+='<div class="tree-item note trash-note" style="padding-left:34px" data-id="'+f.id+'" data-type="note" data-trash="1"><span class="icon note-icon">'+h+'</span><span class="label">'+escapeHtml(f.title)+"</span></div>"}l||(l='<div class="tag-empty">—</div>'),i.innerHTML=l}}else if("smartFolderNotes"===t.name){var y=document.querySelector('.smart-children[data-smart-id="'+t.smartId+'"]');if(y){for(var x="",L=0;L<t.notes.length;L++){var I=t.notes[L],E=I.is_todo?I.todo_completed?"☑":"☐":"📝";x+='<div class="tree-item note smart-note" style="padding-left:44px" data-id="'+I.id+'" data-type="note" data-todo="'+(I.is_todo?1:0)+'"><span class="icon note-icon">'+E+'</span><span class="label">'+escapeHtml(I.title)+"</span></div>"}t.notes.length||(x='<div class="tag-empty">—</div>'),y.innerHTML=x}}else if("notePreview"===t.name)showPreview(t);else if("trashFolderNotes"===t.name){var S=document.querySelector('.trash-folder-children[data-folder-id="'+t.folderId+'"]');if(S){S.dataset.loaded="1";for(var b=34+16*(parseInt(S.dataset.depth||"0",10)+1),w="",M=0;M<t.notes.length;M++){var N=t.notes[M],_=N.is_todo?N.todo_completed?"☑":"☐":"📝";w+='<div class="tree-item note trash-note" style="padding-left:'+b+'px" data-id="'+N.id+'" data-type="note" data-trash="1"><span class="icon note-icon">'+_+'</span><span class="label">'+escapeHtml(N.title)+"</span></div>"}t.notes.length||(w='<div class="tag-empty" style="padding-left:'+b+'px">—</div>'),S.innerHTML=w}}else if("tagNotes"===t.name)expandTagNotes(t.tagId,t.notes);else if("scrollToFolder"===t.name)setTimeout(function(){var e=document.querySelector('.tree-item.folder:not(.pinned-item)[data-id="'+t.folderId+'"]');e&&(expandAncestorsLocal(e),e.scrollIntoView({block:"center",behavior:"smooth"}),e.classList.add("locate-flash"),setTimeout(function(){e.classList.remove("locate-flash")},1500))},80);else if("exitSearch"===t.name){var q=document.getElementById("search-input");q&&(q.value=""),_searchMode&&exitSearchMode()}else if("exitSearchAndLocate"===t.name){var C=document.getElementById("search-input");C&&(C.value=""),_searchMode=!1,showSearchContainer(!1),setTimeout(function(){var e=document.querySelector('.tree-item.folder[data-id="'+t.folderId+'"]');e&&(expandAncestorsLocal(e),e.scrollIntoView({block:"center",behavior:"smooth"}),e.classList.add("locate-flash"),setTimeout(function(){e.classList.remove("locate-flash")},1500))},80)}else if("copyText"===t.name)if(navigator.clipboard&&navigator.clipboard.writeText)navigator.clipboard.writeText(t.text);else{var B=document.createElement("textarea");B.value=t.text,document.body.appendChild(B),B.select(),document.execCommand("copy"),B.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"),A=D?D.querySelector('.tree-item.note[data-id="'+t.id+'"]'):null;if(A||(A=document.querySelector('.tree-item.note[data-id="'+t.id+'"]')),A){A.classList.add("selected");var F=D&&D.contains(A)?expandAncestorsLocal(A):[];A.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 d=e.querySelector(".search-result-title");d&&(d.textContent=t.title);var n=e.querySelector(".note-icon");n&&(n.textContent=t.icon),e.querySelectorAll(".todo-pie, .shared-badge").forEach(function(e){e.remove()}),t.badges&&e.insertAdjacentHTML("beforeend",t.badges)})}}),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(".smart-section-body")||t.classList.contains("tag-folder"))e.preventDefault();else{var a=t.classList.contains("pinned-item");if(e.dataTransfer.setData("text/plain",JSON.stringify({id:t.dataset.id,type:t.dataset.type,pinned:a})),e.dataTransfer.effectAllowed="move",t.classList.add("dragging"),!a){var d=document.getElementById("tree-container");d&&d.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(),d=a.bottom,n=document.getElementById("drop-zone-empty");if(n&&t.classList.contains("dragging-active")){var o=n.getBoundingClientRect();o.height>0&&o.top>a.top&&(d=o.top)}var s=0;e<a.top+40?s=-Math.ceil((a.top+40-e)/4):e>d?s=0:e>d-40&&(s=Math.ceil((e-(d-40))/4)),_dragScrollDir=s,s&&!_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,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()}),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){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{if(t.closest(".pinned-section-header"))return e.preventDefault(),e.dataTransfer.dropEffect="move",void clearDropIndicators();if(t.closest(".pinned-section-body")){if(document.querySelector(".tree-item.dragging.pinned-item")&&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{var n=t.closest(".tag-folder");if(n)document.querySelector(".tree-item.note.dragging")&&(e.preventDefault(),e.dataTransfer.dropEffect="move",clearDropIndicators(),n.classList.add("drop-target"));else if(!(t.closest(".tags-section-body")||t.closest(".tags-section-header")||t.closest(".trash-children")||t.closest(".trash-section-header")||t.closest(".smart-section-body")||t.closest(".smart-section-header"))&&a){var o=document.querySelector(".tree-item.dragging");if(!o||!o.classList.contains("pinned-item")){e.preventDefault(),e.dataTransfer.dropEffect="move",clearDropIndicators();var s=a.dataset.type,r=a.getBoundingClientRect(),i=e.clientY-r.top,l=r.height;"folder"===s?i<.25*l?a.classList.add("drop-above"):i>.75*l?a.classList.add("drop-below"):a.classList.add("drop-target"):"manual"===currentSortMode()?i<.5*l?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,d=t?t.closest(".tree-item"):null;document.getElementById("tree-container");try{a=JSON.parse(e.dataTransfer.getData("text/plain"))}catch(e){return void endDrag()}var n=a.id,o=a.type,s=a.pinned;if(t&&t.closest("#drop-zone-empty")&&!s)return postMsg({name:"dragToEmpty",dragId:n,dragType:o}),void endDrag();if(t&&t.closest(".pinned-section-header")&&!s)return"note"===o?postMsg({name:"contextMenu",action:"pinNote",id:n,itemType:"note"}):"folder"===o&&postMsg({name:"contextMenu",action:"pinFolder",id:n,itemType:"folder"}),void endDrag();if(t&&t.closest(".pinned-section-body")&&s){var r=d&&d.classList.contains("pinned-item")?d:null;if(r&&r.dataset.id!==n){var i=r.getBoundingClientRect(),l=e.clientY-i.top<.5*i.height?"before":"after";postMsg({name:"reorderPinned",dragId:n,dragType:o,targetId:r.dataset.id,position:l})}endDrag()}else{var c=t?t.closest(".tag-folder"):null;if(c)return"note"===o&&postMsg({name:"tagNoteAdd",tagId:c.dataset.tagId,noteId:n}),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(".smart-section-body")||t.closest(".smart-section-header")))endDrag();else if(s)endDrag();else if(d){var m=d.dataset.id,p=d.dataset.type;if(n!==m){var v=d.getBoundingClientRect(),g=e.clientY-v.top,u=v.height;postMsg("folder"===p?g>=.25*u&&g<=.75*u?{name:"dragDrop",dragId:n,dragType:o,targetId:m,position:"into"}:{name:"dragDrop",dragId:n,dragType:o,targetId:m,position:g<.25*u?"above":"below"}:"note"===o?{name:"dragDrop",dragId:n,dragType:o,targetId:m,position:g<.5*u?"above":"below"}:{name:"dragDrop",dragId:n,dragType:o,targetId:m,position:"into"}),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 d=new RegExp("("+escapeRegex(t)+")","gi");return a.replace(d,'<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 d='<div class="search-result-item tree-item note" data-id="'+e.id+'" data-type="note" data-todo="'+(e.is_todo?1:0)+'">';return d+='<span class="icon note-icon">'+a+"</span>",d+='<div class="search-result-content">',d+='<div class="search-result-title">'+highlightText(e.title,t)+"</div>",e.folderName&&(d+='<div class="search-result-folder">📂 '+escapeHtml(e.folderName)+"</div>"),e.snippet&&(d+='<div class="search-result-snippet">'+highlightText(e.snippet,t)+"</div>"),d+"</div></div>"}function renderSearchResults(e,t,a,d){var n=document.getElementById("search-results");if(n){showSearchContainer(!0);var o=e.length+t.length+a.length;if(0!==o){var s='<div class="search-status">'+T("searchResultCount").replace("{count}",o)+"</div>";if(a.length>0){s+=g("📁",T("searchSectionFolders"),a.length,"folders"),s+='<div class="search-section-body" id="search-section-folders">';for(var r=0;r<a.length;r++){var i=a[r],l=i.iconEmoji||"📁";s+='<div class="search-result-item search-folder-item" data-folder-id="'+i.id+'">',s+='<span class="icon">'+l+"</span>",s+='<div class="search-result-content">',s+='<div class="search-result-title">'+highlightText(i.title,d)+"</div>",s+="</div></div>"}s+="</div>"}if(e.length>0){s+=g("📝",T("searchSectionNotes"),e.length,"notes"),s+='<div class="search-section-body" id="search-section-notes">';for(var c=0;c<e.length;c++)s+=renderNoteItem(e[c],d);s+="</div>"}if(t.length>0){s+=g("🏷️",T("searchSectionTags"),t.length,"tags"),s+='<div class="search-section-body" id="search-section-tags">';for(var m=0;m<t.length;m++){var p=t[m],v=T("searchTagNoteCount").replace("{count}",p.noteCount);s+='<div class="search-result-item search-tag-item" data-tag-id="'+p.id+'">',s+='<span class="icon">🏷️</span>',s+='<div class="search-result-content">',s+='<div class="search-result-title">'+highlightText(p.title,d)+"</div>",s+='<div class="search-result-folder">'+v+"</div>",s+="</div>",s+='<span class="tag-expand-arrow">▶</span>',s+="</div>",s+='<div class="tag-notes-container" id="tag-notes-'+p.id+'"></div>'}s+="</div>"}n.innerHTML=s,_searchMode=!0}else n.innerHTML='<div class="search-status">'+T("searchNoResult")+"</div>"}function g(e,t,a,d){return'<div class="search-section-header" data-section="'+d+'"><span class="section-toggle">▼</span> '+e+" "+t+" ("+a+")</div>"}}function expandTagNotes(e,t){var a=document.getElementById("tag-notes-"+e);if(a){var d;if(a.children.length>0)return a.innerHTML="",void((d=document.querySelector('.search-tag-item[data-tag-id="'+e+'"] .tag-expand-arrow'))&&d.classList.remove("expanded"));for(var n="",o=0;o<t.length;o++)n+=renderNoteItem(t[o],"");0===t.length&&(n='<div class="search-status" style="padding-left:30px;">'+T("searchNoResult")+"</div>"),a.innerHTML=n,(d=document.querySelector('.search-tag-item[data-tag-id="'+e+'"] .tag-expand-arrow'))&&d.classList.add("expanded")}}function exitSearchMode(){_searchMode=!1,showSearchContainer(!1)}document.addEventListener("input",function(e){if("search-input"===e.target.id){var t=e.target.value.trim();_searchTimer&&clearTimeout(_searchTimer);var a=++_searchId;if(t){_searchMode=!0;var d=document.getElementById("search-results");d&&(d.innerHTML='<div class="search-status">'+T("searching")+"</div>"),showSearchContainer(!0),_searchTimer=setTimeout(function(){postMsg({name:"search",query:t,searchId:a})},400)}else _searchMode&&exitSearchMode()}}),document.addEventListener("keydown",function(e){if("Escape"===e.key){var t=document.getElementById("search-input");t&&t.value&&(t.value="",_searchMode&&exitSearchMode())}});
1
+ var _savedScrollTop=0,_isFirstRender=!0;function postMsg(e){webviewApi.postMessage(e)}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});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 d=document.getElementById("inline-input-overlay");d&&d.remove();var n=document.createElement("div");n.id="inline-input-overlay",n.className="inline-input-overlay",n.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(n);var o=n.querySelector(".inline-input-field");function s(){var e=o.value;n.remove(),a(e)}function i(){n.remove(),a(null)}o.focus(),o.select(),n.querySelector(".inline-input-ok").addEventListener("click",s),n.querySelector(".inline-input-cancel").addEventListener("click",i),o.addEventListener("keydown",function(e){"Enter"===e.key&&s(),"Escape"===e.key&&i()}),n.addEventListener("click",function(e){e.target===n&&i()})}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"),d=document.querySelector('.children[data-folder-id="'+t+'"]');d&&d.classList.toggle("collapsed",a),a||animateExpand(d);var n=e.querySelector(".toggle");n&&(n.textContent=a?"▶":"▼",n.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 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,d=document.querySelector('.children[data-folder-id="'+a+'"]'),n=d&&d.querySelector(".tree-item.folder"),o=e.querySelector(".toggle");n?(e.classList.remove("collapsed"),d&&d.classList.remove("collapsed"),o&&(o.textContent="▼",o.classList.add("expanded"))):(e.classList.add("collapsed"),d&&d.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 d=[],n=document.getElementById("main-tree");return n?(n.querySelectorAll(".tree-item.folder").forEach(function(e){var a=e.dataset.id,n=document.querySelector('.children[data-folder-id="'+a+'"]'),o=e.querySelector(".toggle"),s=!!t[a];e.classList.toggle("collapsed",s),n&&n.classList.toggle("collapsed",s),o&&(o.textContent=s?"▶":"▼",o.classList.toggle("expanded",!s)),s&&a&&d.push(a)}),d):d}_observer.observe(document.body,{childList:!0,subtree:!0});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 d=document.querySelector('.tree-item.folder:not(.pinned-item)[data-id="'+a.dataset.folderId+'"]');if(d){d.classList.remove("collapsed");var n=d.querySelector(".toggle");n&&(n.textContent="▼",n.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 d=document.createElement("div");d.id="note-preview";var n=document.createElement("div");n.className="note-preview-title",n.textContent=e.title,d.appendChild(n);var o=document.createElement("div");o.className="note-preview-meta";for(var s=[T("pvType")+": "+(e.isTodo?T("pvTodo"):T("pvNote"))+" · "+T("pvSize")+": "+(e.size||0)+" "+T("pvChars"),T("pvCreated")+": "+v(e.created),T("pvUpdated")+": "+v(e.updated)],i=0;i<s.length;i++){var r=document.createElement("div");r.textContent=s[i],o.appendChild(r)}d.appendChild(o);var l=document.createElement("div");l.className="note-preview-body",l.textContent=e.snippet||"",e.snippet&&d.appendChild(l),document.body.appendChild(d);var c=t.getBoundingClientRect(),m=d.getBoundingClientRect(),p=c.bottom+4;p+m.height>window.innerHeight-8&&(p=Math.max(8,c.top-m.height-4)),d.style.top=p+"px",d.style.left=Math.max(8,Math.min(c.left+20,window.innerWidth-m.width-8))+"px"}}function v(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.msg){postMsg({name:t.dataset.msg});var a=document.getElementById("ctx-menu");return void(a&&a.remove())}if(t.classList.contains("ctx-drill")){var d=document.getElementById("ctx-menu"),n=d?d.querySelector(".ctx-export-template"):null;return void(d&&n&&(window._ctxMainHtml=d.innerHTML,d.innerHTML='<div class="ctx-item ctx-back">◂ '+(n.dataset.title||"")+'</div><div class="ctx-sep"></div>'+n.innerHTML))}if(t.classList.contains("ctx-back")){var o=document.getElementById("ctx-menu");return void(o&&window._ctxMainHtml&&(o.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 s=document.getElementById("ctx-menu");s&&s.remove()}else{var i=document.getElementById("ctx-menu");i&&i.remove();var r=e.target.closest(".shared-badge");if(r){var l=r.closest(".tree-item");l&&l.dataset.id&&postMsg({name:"contextMenu",action:"publishNote",id:l.dataset.id,itemType:"note"})}else{var c=e.target.closest(".search-tag-item");if(c)c.dataset.tagId&&postMsg({name:"loadTagNotes",tagId:c.dataset.tagId});else{var m=e.target.closest(".search-folder-item");if(m)m.dataset.folderId&&postMsg({name:"locateFolder",folderId:m.dataset.folderId});else{var p=e.target.closest(".pinned-section-header");if(p){var v=p.classList.toggle("collapsed"),g=document.getElementById("pinned-body");g&&g.classList.toggle("collapsed",v),v||animateExpand(g);var u=p.querySelector(".toggle");return u&&(u.textContent=v?"▶":"▼"),void postMsg({name:"togglePinnedCollapse"})}var f=e.target.closest(".tags-section-header");if(f){var h=f.classList.toggle("collapsed"),y=document.getElementById("tags-body");y&&y.classList.toggle("collapsed",h),h||animateExpand(y);var x=f.querySelector(".toggle");return x&&(x.textContent=h?"▶":"▼"),void postMsg({name:"toggleTagsSection"})}var L=e.target.closest(".smart-section-header");if(L){var I=L.classList.toggle("collapsed"),E=document.getElementById("smart-body");E&&E.classList.toggle("collapsed",I),I||animateExpand(E);var S=L.querySelector(".toggle");return S&&(S.textContent=I?"▶":"▼"),void postMsg({name:"toggleSmartSection"})}var b=e.target.closest(".smart-folder");if(b){var w=b.dataset.smartId,M=document.querySelector('.smart-children[data-smart-id="'+w+'"]');if(!M)return;var N=M.classList.toggle("collapsed");b.classList.toggle("collapsed",N),N||animateExpand(M);var _=b.querySelector(".toggle");return _&&(_.textContent=N?"▶":"▼"),void(N||postMsg({name:"smartFolderNotes",smartId:w,query:b.dataset.query}))}var q=e.target.closest(".trash-section-header");if(q){var C=q.classList.toggle("collapsed"),B=document.getElementById("trash-children");B&&B.classList.toggle("collapsed",C),C||animateExpand(B);var D=q.querySelector(".toggle");return D&&(D.textContent=C?"▶":"▼"),postMsg({name:"toggleTrashSection"}),void(C||!B||B.dataset.loaded||postMsg({name:"trashNotes"}))}var A=e.target.closest(".tag-folder");if(A){var F=A.dataset.tagId,k=document.querySelector('.tag-children[data-tag-id="'+F+'"]');if(!k)return;var H=k.classList.toggle("collapsed");A.classList.toggle("collapsed",H),H||animateExpand(k);var R=A.querySelector(".toggle");return R&&(R.textContent=H?"▶":"▼"),void(H||k.dataset.loaded||postMsg({name:"tagFolderNotes",tagId:F}))}var P=e.target.closest(".search-section-header");if(P){var O=document.getElementById("search-section-"+P.dataset.section);if(O){var Y=P.querySelector(".section-toggle");O.classList.contains("collapsed")?(O.classList.remove("collapsed"),Y&&(Y.textContent="▼")):(O.classList.add("collapsed"),Y&&(Y.textContent="▶"))}}else{var j=e.target.closest(".tree-item");if(j){if("1"===j.dataset.trash){if("folder"===j.dataset.type){var J=document.querySelector('.trash-folder-children[data-folder-id="'+j.dataset.id+'"]');if(J){var W=J.classList.toggle("collapsed");W||animateExpand(J);var z=j.querySelector(".toggle");z&&(z.textContent=W?"▶":"▼"),W||J.dataset.loaded||postMsg({name:"trashFolderNotes",folderId:j.dataset.id})}}else"note"===j.dataset.type&&postMsg({name:"openNote",id:j.dataset.id});return}var V=j.dataset.type,U=j.dataset.id,X=j.classList.contains("pinned-item");if("note"===V)document.querySelectorAll(".tree-item.note.selected").forEach(function(e){e.classList.remove("selected")}),j.classList.add("selected"),postMsg({name:"openNote",id:U});else if("folder"===V)if(X)postMsg({name:"locatePinnedFolder",folderId:U});else if(toggleFolderLocal(j,U),postMsg({name:"toggleFolder",id:U}),!j.classList.contains("collapsed")){var $=document.getElementById("btn-collapse-all");$&&"expand"===$.dataset.mode&&($.dataset.mode="collapse",$.textContent="▲",$.title=T("collapseAll"))}}else{var K=e.target.closest("button");if(K)switch(K.id){case"btn-new":var G=document.getElementById("ctx-menu");if(G){G.remove();break}var Q=document.getElementById("btn-new");if(!Q)break;var Z=Q.getBoundingClientRect();document.body.insertAdjacentHTML("beforeend",'<div id="ctx-menu" class="context-menu" style="left:'+Z.left+"px;top:"+(Z.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 ee=document.getElementById("btn-collapse-all");if(ee&&"expand"===ee.dataset.mode){var te,ae=document.getElementById("notes-in-list-root"),de=ae&&ae.dataset.expandMode||"restore";if("all"===de)te=applyCollapsedSet([]);else if("restore"===de){var ne=_collapseSnapshot;if(!ne&&ae)try{ne=JSON.parse(ae.dataset.collapseSnapshot||"null")}catch(e){ne=null}te=Array.isArray(ne)?applyCollapsedSet(ne):expandAllLocal()}else te=expandAllLocal();var oe=document.querySelectorAll("#main-tree .tree-item.folder").length;oe>0&&te.length>=oe&&(te=applyCollapsedSet([])),postMsg({name:"expandAll",collapsedIds:te}),ee.dataset.mode="collapse",ee.textContent="▲",ee.title=T("collapseAll")}else{var se=[],ie=0;document.querySelectorAll("#main-tree .tree-item.folder").forEach(function(e){e.dataset.id&&(ie++,e.classList.contains("collapsed")&&se.push(e.dataset.id))}),collapseAllLocal(),se.length>=ie&&ie>0?postMsg({name:"collapseAll"}):(_collapseSnapshot=se,postMsg({name:"collapseAll",prevCollapsed:se})),ee&&(ee.dataset.mode="expand",ee.textContent="▼",ee.title=T("expandAll"))}break;case"btn-refresh":postMsg({name:"refreshView"});break;case"btn-sync":K.disabled||(K.disabled=!0,K.classList.add("syncing"),K.textContent="🔄 "+T("syncing"),postMsg({name:"sync"}))}}}}}}}}),document.addEventListener("contextmenu",function(e){hidePreview();var t=document.getElementById("ctx-menu");if(t&&t.remove(),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 d=a.dataset.type,n=a.dataset.id;if("smart"!==d){var o="",s=a.querySelector(".label");s&&(o=s.textContent);var i='<div id="ctx-menu" class="context-menu" style="left:'+e.pageX+"px;top:"+e.pageY+'px;">';if("1"===a.dataset.trash){var r="folder"===d?"trashFolder":"trashNote";i+='<div class="ctx-item" data-action="restoreItem" data-id="'+n+'" data-type="'+r+'">'+T("ctxRestoreNote")+"</div>",i+='<div class="ctx-sep"></div>',i+='<div class="ctx-item ctx-danger" data-action="permanentDeleteItem" data-id="'+n+'" data-type="'+r+'">'+T("ctxPermanentDelete")+"</div>"}else if("folder"===d){var l=isPinned(n);i+='<div class="ctx-item" data-action="'+(l?"unpinFolder":"pinFolder")+'" data-id="'+n+'" data-type="folder">'+T(l?"ctxUnpin":"ctxPin")+"</div>",i+='<div class="ctx-sep"></div>',i+='<div class="ctx-item" data-action="newNote" data-id="'+n+'" data-type="folder">'+T("ctxNewNoteHere")+"</div>",i+='<div class="ctx-item" data-action="newTodo" data-id="'+n+'" data-type="folder">'+T("ctxNewTodoHere")+"</div>",i+='<div class="ctx-item" data-action="newSubNotebook" data-id="'+n+'" data-type="folder">'+T("ctxNewSubNotebook")+"</div>",i+='<div class="ctx-item" data-action="importFiles" data-id="'+n+'" data-type="folder">'+T("ctxImportFiles")+"</div>",i+='<div class="ctx-sep"></div>',i+='<div class="ctx-item" data-action="renameFolder" data-id="'+n+'" data-type="folder" data-title="'+o.replace(/"/g,"&quot;")+'">'+T("ctxRenameFolder")+"</div>",i+='<div class="ctx-item ctx-drill">'+T("ctxExportFolder")+'<span class="ctx-sub-arrow">▸</span></div>',i+='<div class="ctx-export-template" style="display:none" data-title="'+T("ctxExportFolder")+'"><div class="ctx-item" data-action="exportFolder" data-format="jex" data-id="'+n+'" data-type="folder">JEX</div><div class="ctx-item" data-action="exportFolder" data-format="md" data-id="'+n+'" data-type="folder">Markdown</div><div class="ctx-item" data-action="exportFolder" data-format="md_frontmatter" data-id="'+n+'" data-type="folder">Markdown + Front Matter</div><div class="ctx-item" data-action="exportFolder" data-format="html" data-id="'+n+'" data-type="folder">HTML</div></div>',i+='<div class="ctx-sep"></div>',i+='<div class="ctx-item ctx-danger" data-action="deleteFolder" data-id="'+n+'" data-type="folder">'+T("ctxDeleteFolder")+"</div>"}else if("note"===d){var c=isPinned(n);i+='<div class="ctx-item" data-action="'+(c?"unpinNote":"pinNote")+'" data-id="'+n+'" data-type="note">'+T(c?"ctxUnpin":"ctxPin")+"</div>",i+='<div class="ctx-sep"></div>',i+='<div class="ctx-item" data-action="openNote" data-id="'+n+'" data-type="note">'+T("ctxOpenNote")+"</div>",i+='<div class="ctx-item" data-action="openInNewWindow" data-id="'+n+'" data-type="note">'+T("ctxOpenInNewWindow")+"</div>",i+='<div class="ctx-sep"></div>',i+='<div class="ctx-item" data-action="setTags" data-id="'+n+'" data-type="note">'+T("ctxSetTags")+"</div>",i+='<div class="ctx-item" data-action="switchNoteType" data-id="'+n+'" data-type="note">'+T("ctxSwitchNoteType")+"</div>","1"===a.dataset.todo&&(i+='<div class="ctx-item" data-action="toggleTodo" data-id="'+n+'" data-type="note">'+T("ctxToggleTodo")+"</div>"),i+='<div class="ctx-item" data-action="moveToFolderDialog" data-id="'+n+'" data-type="note">'+T("ctxMoveToFolder")+"</div>",i+='<div class="ctx-item" data-action="duplicateNote" data-id="'+n+'" data-type="note">'+T("ctxDuplicateNote")+"</div>",i+='<div class="ctx-sep"></div>',i+='<div class="ctx-item" data-action="copyLink" data-id="'+n+'" data-type="note">'+T("ctxCopyLink")+"</div>",i+='<div class="ctx-item" data-action="copyExternalLink" data-id="'+n+'" data-type="note">'+T("ctxCopyExternalLink")+"</div>",i+='<div class="ctx-sep"></div>',i+='<div class="ctx-item" data-action="publishNote" data-id="'+n+'" data-type="note">'+T("ctxPublishNote")+"</div>",i+='<div class="ctx-item ctx-drill">'+T("ctxExport")+'<span class="ctx-sub-arrow">▸</span></div>',i+='<div class="ctx-export-template" style="display:none" data-title="'+T("ctxExport")+'"><div class="ctx-item" data-action="exportPdf" data-id="'+n+'" data-type="note">PDF</div><div class="ctx-item" data-action="exportNote" data-format="md" data-id="'+n+'" data-type="note">Markdown</div><div class="ctx-item" data-action="exportNote" data-format="md_frontmatter" data-id="'+n+'" data-type="note">Markdown + Front Matter</div><div class="ctx-item" data-action="exportNote" data-format="jex" data-id="'+n+'" data-type="note">JEX</div><div class="ctx-item" data-action="exportNote" data-format="html" data-id="'+n+'" data-type="note">HTML</div></div>',i+='<div class="ctx-sep"></div>',i+='<div class="ctx-item" data-action="renameNote" data-id="'+n+'" data-type="note" data-title="'+o.replace(/"/g,"&quot;")+'">'+T("ctxRenameNote")+"</div>",i+='<div class="ctx-item" data-action="noteInfo" data-id="'+n+'" data-type="note">'+T("ctxNoteInfo")+"</div>",i+='<div class="ctx-sep"></div>',i+='<div class="ctx-item ctx-danger" data-action="deleteNote" data-id="'+n+'" data-type="note">'+T("ctxDeleteNote")+"</div>",a.dataset.tagId&&(i+='<div class="ctx-sep"></div>',i+='<div class="ctx-item" data-action="untagNote" data-id="'+n+'" data-type="note" data-tag-id="'+a.dataset.tagId+'">'+T("ctxUntagNote")+"</div>")}else if("tag"===d){var m=a.dataset.tagId;i+='<div class="ctx-item" data-action="renameTag" data-id="'+m+'" data-type="tag">'+T("ctxRenameTag")+"</div>",i+='<div class="ctx-sep"></div>',i+='<div class="ctx-item ctx-danger" data-action="deleteTag" data-id="'+m+'" data-type="tag">'+T("ctxDeleteTag")+"</div>"}if(!((i+="</div>").indexOf("ctx-item")<0)){document.body.insertAdjacentHTML("beforeend",i);var p=document.getElementById("ctx-menu"),v=p.getBoundingClientRect();v.right>window.innerWidth&&(p.style.left=window.innerWidth-v.width-4+"px"),v.bottom>window.innerHeight&&(p.style.top=window.innerHeight-v.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=!0,a.classList.remove("sync-done","sync-error"),a.classList.add("syncing"),a.textContent="🔄 "+T("syncing")):"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 d=document.querySelector('.tag-children[data-tag-id="'+t.tagId+'"]');if(d){d.dataset.loaded="1";for(var n="",o=0;o<t.notes.length;o++){var s=t.notes[o],i=s.is_todo?s.todo_completed?"☑":"☐":"📝";n+='<div class="tree-item note tag-note" data-id="'+s.id+'" data-type="note" data-tag-id="'+t.tagId+'" data-todo="'+(s.is_todo?1:0)+'"><span class="icon note-icon">'+i+'</span><span class="label">'+escapeHtml(s.title)+"</span></div>"}t.notes.length||(n='<div class="tag-empty">—</div>'),d.innerHTML=n}}else if("trashNotes"===t.name){var r=document.getElementById("trash-children");if(r){r.dataset.loaded="1";for(var l="",c=t.folders||[],m=0;m<c.length;m++){var p=c[m],v=p.depth||0;l+='<div class="tree-item folder trash-note" style="padding-left:'+(34+16*v)+'px" data-id="'+p.id+'" data-type="folder" data-trash="1" data-depth="'+v+'"><span class="toggle">'+(p.hasNotes?"▶":"")+'</span><span class="icon">📁</span><span class="label">'+escapeHtml(p.title)+"</span></div>",p.hasNotes&&(l+='<div class="trash-folder-children collapsed" data-folder-id="'+p.id+'" data-depth="'+v+'"></div>')}for(var g=t.notes||[],u=0;u<g.length;u++){var f=g[u],h=f.is_todo?f.todo_completed?"☑":"☐":"📝";l+='<div class="tree-item note trash-note" style="padding-left:34px" data-id="'+f.id+'" data-type="note" data-trash="1"><span class="icon note-icon">'+h+'</span><span class="label">'+escapeHtml(f.title)+"</span></div>"}l||(l='<div class="tag-empty">—</div>'),r.innerHTML=l}}else if("smartFolderNotes"===t.name){var y=document.querySelector('.smart-children[data-smart-id="'+t.smartId+'"]');if(y){for(var x="",L=0;L<t.notes.length;L++){var I=t.notes[L],E=I.is_todo?I.todo_completed?"☑":"☐":"📝";x+='<div class="tree-item note smart-note" style="padding-left:44px" data-id="'+I.id+'" data-type="note" data-todo="'+(I.is_todo?1:0)+'"><span class="icon note-icon">'+E+'</span><span class="label">'+escapeHtml(I.title)+"</span></div>"}t.notes.length||(x='<div class="tag-empty">—</div>'),y.innerHTML=x}}else if("notePreview"===t.name)showPreview(t);else if("trashFolderNotes"===t.name){var S=document.querySelector('.trash-folder-children[data-folder-id="'+t.folderId+'"]');if(S){S.dataset.loaded="1";for(var b=34+16*(parseInt(S.dataset.depth||"0",10)+1),w="",M=0;M<t.notes.length;M++){var N=t.notes[M],_=N.is_todo?N.todo_completed?"☑":"☐":"📝";w+='<div class="tree-item note trash-note" style="padding-left:'+b+'px" data-id="'+N.id+'" data-type="note" data-trash="1"><span class="icon note-icon">'+_+'</span><span class="label">'+escapeHtml(N.title)+"</span></div>"}t.notes.length||(w='<div class="tag-empty" style="padding-left:'+b+'px">—</div>'),S.innerHTML=w}}else if("tagNotes"===t.name)expandTagNotes(t.tagId,t.notes);else if("scrollToFolder"===t.name)setTimeout(function(){var e=document.querySelector('.tree-item.folder:not(.pinned-item)[data-id="'+t.folderId+'"]');e&&(expandAncestorsLocal(e),e.scrollIntoView({block:"center",behavior:"smooth"}),e.classList.add("locate-flash"),setTimeout(function(){e.classList.remove("locate-flash")},1500))},80);else if("exitSearch"===t.name){var q=document.getElementById("search-input");q&&(q.value=""),_searchMode&&exitSearchMode()}else if("exitSearchAndLocate"===t.name){var C=document.getElementById("search-input");C&&(C.value=""),_searchMode=!1,showSearchContainer(!1),setTimeout(function(){var e=document.querySelector('.tree-item.folder[data-id="'+t.folderId+'"]');e&&(expandAncestorsLocal(e),e.scrollIntoView({block:"center",behavior:"smooth"}),e.classList.add("locate-flash"),setTimeout(function(){e.classList.remove("locate-flash")},1500))},80)}else if("copyText"===t.name)if(navigator.clipboard&&navigator.clipboard.writeText)navigator.clipboard.writeText(t.text);else{var B=document.createElement("textarea");B.value=t.text,document.body.appendChild(B),B.select(),document.execCommand("copy"),B.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"),A=D?D.querySelector('.tree-item.note[data-id="'+t.id+'"]'):null;if(A||(A=document.querySelector('.tree-item.note[data-id="'+t.id+'"]')),A){A.classList.add("selected");var F=D&&D.contains(A)?expandAncestorsLocal(A):[];A.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 d=e.querySelector(".search-result-title");d&&(d.textContent=t.title);var n=e.querySelector(".note-icon");n&&(n.textContent=t.icon),e.querySelectorAll(".todo-pie, .shared-badge").forEach(function(e){e.remove()}),t.badges&&e.insertAdjacentHTML("beforeend",t.badges)})}}),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(".smart-section-body")||t.classList.contains("tag-folder"))e.preventDefault();else{var a=t.classList.contains("pinned-item");if(e.dataTransfer.setData("text/plain",JSON.stringify({id:t.dataset.id,type:t.dataset.type,pinned:a})),e.dataTransfer.effectAllowed="move",t.classList.add("dragging"),!a){var d=document.getElementById("tree-container");d&&d.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(),d=a.bottom,n=document.getElementById("drop-zone-empty");if(n&&t.classList.contains("dragging-active")){var o=n.getBoundingClientRect();o.height>0&&o.top>a.top&&(d=o.top)}var s=0;e<a.top+40?s=-Math.ceil((a.top+40-e)/4):e>d?s=0:e>d-40&&(s=Math.ceil((e-(d-40))/4)),_dragScrollDir=s,s&&!_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,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()}),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){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{if(t.closest(".pinned-section-header"))return e.preventDefault(),e.dataTransfer.dropEffect="move",void clearDropIndicators();if(t.closest(".pinned-section-body")){if(document.querySelector(".tree-item.dragging.pinned-item")&&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{var n=t.closest(".tag-folder");if(n)document.querySelector(".tree-item.note.dragging")&&(e.preventDefault(),e.dataTransfer.dropEffect="move",clearDropIndicators(),n.classList.add("drop-target"));else if(!(t.closest(".tags-section-body")||t.closest(".tags-section-header")||t.closest(".trash-children")||t.closest(".trash-section-header")||t.closest(".smart-section-body")||t.closest(".smart-section-header"))&&a){var o=document.querySelector(".tree-item.dragging");if(!o||!o.classList.contains("pinned-item")){e.preventDefault(),e.dataTransfer.dropEffect="move",clearDropIndicators();var s=a.dataset.type,i=a.getBoundingClientRect(),r=e.clientY-i.top,l=i.height;"folder"===s?r<.25*l?a.classList.add("drop-above"):r>.75*l?a.classList.add("drop-below"):a.classList.add("drop-target"):"manual"===currentSortMode()?r<.5*l?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,d=t?t.closest(".tree-item"):null;document.getElementById("tree-container");try{a=JSON.parse(e.dataTransfer.getData("text/plain"))}catch(e){return void endDrag()}var n=a.id,o=a.type,s=a.pinned;if(t&&t.closest("#drop-zone-empty")&&!s)return postMsg({name:"dragToEmpty",dragId:n,dragType:o}),void endDrag();if(t&&t.closest(".pinned-section-header")&&!s)return"note"===o?postMsg({name:"contextMenu",action:"pinNote",id:n,itemType:"note"}):"folder"===o&&postMsg({name:"contextMenu",action:"pinFolder",id:n,itemType:"folder"}),void endDrag();if(t&&t.closest(".pinned-section-body")&&s){var i=d&&d.classList.contains("pinned-item")?d:null;if(i&&i.dataset.id!==n){var r=i.getBoundingClientRect(),l=e.clientY-r.top<.5*r.height?"before":"after";postMsg({name:"reorderPinned",dragId:n,dragType:o,targetId:i.dataset.id,position:l})}endDrag()}else{var c=t?t.closest(".tag-folder"):null;if(c)return"note"===o&&postMsg({name:"tagNoteAdd",tagId:c.dataset.tagId,noteId:n}),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(".smart-section-body")||t.closest(".smart-section-header")))endDrag();else if(s)endDrag();else if(d){var m=d.dataset.id,p=d.dataset.type;if(n!==m){var v=d.getBoundingClientRect(),g=e.clientY-v.top,u=v.height;postMsg("folder"===p?g>=.25*u&&g<=.75*u?{name:"dragDrop",dragId:n,dragType:o,targetId:m,position:"into"}:{name:"dragDrop",dragId:n,dragType:o,targetId:m,position:g<.25*u?"above":"below"}:"note"===o?{name:"dragDrop",dragId:n,dragType:o,targetId:m,position:g<.5*u?"above":"below"}:{name:"dragDrop",dragId:n,dragType:o,targetId:m,position:"into"}),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 d=new RegExp("("+escapeRegex(t)+")","gi");return a.replace(d,'<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 d='<div class="search-result-item tree-item note" data-id="'+e.id+'" data-type="note" data-todo="'+(e.is_todo?1:0)+'">';return d+='<span class="icon note-icon">'+a+"</span>",d+='<div class="search-result-content">',d+='<div class="search-result-title">'+highlightText(e.title,t)+"</div>",e.folderName&&(d+='<div class="search-result-folder">📂 '+escapeHtml(e.folderName)+"</div>"),e.snippet&&(d+='<div class="search-result-snippet">'+highlightText(e.snippet,t)+"</div>"),d+"</div></div>"}function renderSearchResults(e,t,a,d){var n=document.getElementById("search-results");if(n){showSearchContainer(!0);var o=e.length+t.length+a.length;if(0!==o){var s='<div class="search-status">'+T("searchResultCount").replace("{count}",o)+"</div>";if(a.length>0){s+=g("📁",T("searchSectionFolders"),a.length,"folders"),s+='<div class="search-section-body" id="search-section-folders">';for(var i=0;i<a.length;i++){var r=a[i],l=r.iconEmoji||"📁";s+='<div class="search-result-item search-folder-item" data-folder-id="'+r.id+'">',s+='<span class="icon">'+l+"</span>",s+='<div class="search-result-content">',s+='<div class="search-result-title">'+highlightText(r.title,d)+"</div>",s+="</div></div>"}s+="</div>"}if(e.length>0){s+=g("📝",T("searchSectionNotes"),e.length,"notes"),s+='<div class="search-section-body" id="search-section-notes">';for(var c=0;c<e.length;c++)s+=renderNoteItem(e[c],d);s+="</div>"}if(t.length>0){s+=g("🏷️",T("searchSectionTags"),t.length,"tags"),s+='<div class="search-section-body" id="search-section-tags">';for(var m=0;m<t.length;m++){var p=t[m],v=T("searchTagNoteCount").replace("{count}",p.noteCount);s+='<div class="search-result-item search-tag-item" data-tag-id="'+p.id+'">',s+='<span class="icon">🏷️</span>',s+='<div class="search-result-content">',s+='<div class="search-result-title">'+highlightText(p.title,d)+"</div>",s+='<div class="search-result-folder">'+v+"</div>",s+="</div>",s+='<span class="tag-expand-arrow">▶</span>',s+="</div>",s+='<div class="tag-notes-container" id="tag-notes-'+p.id+'"></div>'}s+="</div>"}n.innerHTML=s,_searchMode=!0}else n.innerHTML='<div class="search-status">'+T("searchNoResult")+"</div>"}function g(e,t,a,d){return'<div class="search-section-header" data-section="'+d+'"><span class="section-toggle">▼</span> '+e+" "+t+" ("+a+")</div>"}}function expandTagNotes(e,t){var a=document.getElementById("tag-notes-"+e);if(a){var d;if(a.children.length>0)return a.innerHTML="",void((d=document.querySelector('.search-tag-item[data-tag-id="'+e+'"] .tag-expand-arrow'))&&d.classList.remove("expanded"));for(var n="",o=0;o<t.length;o++)n+=renderNoteItem(t[o],"");0===t.length&&(n='<div class="search-status" style="padding-left:30px;">'+T("searchNoResult")+"</div>"),a.innerHTML=n,(d=document.querySelector('.search-tag-item[data-tag-id="'+e+'"] .tag-expand-arrow'))&&d.classList.add("expanded")}}function exitSearchMode(){_searchMode=!1,showSearchContainer(!1)}document.addEventListener("input",function(e){if("search-input"===e.target.id){var t=e.target.value.trim();_searchTimer&&clearTimeout(_searchTimer);var a=++_searchId;if(t){_searchMode=!0;var d=document.getElementById("search-results");d&&(d.innerHTML='<div class="search-status">'+T("searching")+"</div>"),showSearchContainer(!0),_searchTimer=setTimeout(function(){postMsg({name:"search",query:t,searchId:a})},400)}else _searchMode&&exitSearchMode()}}),document.addEventListener("keydown",function(e){if("Escape"===e.key){var t=document.getElementById("search-input");t&&t.value&&(t.value="",_searchMode&&exitSearchMode())}});