joplin-plugin-explorer 1.6.1 → 1.6.3

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.
@@ -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 n=document.getElementById("inline-input-overlay");n&&n.remove();var d=document.createElement("div");d.id="inline-input-overlay",d.className="inline-input-overlay",d.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(d);var o=d.querySelector(".inline-input-field");function s(){var e=o.value;d.remove(),a(e)}function i(){d.remove(),a(null)}o.focus(),o.select(),d.querySelector(".inline-input-ok").addEventListener("click",s),d.querySelector(".inline-input-cancel").addEventListener("click",i),o.addEventListener("keydown",function(e){"Enter"===e.key&&s(),"Escape"===e.key&&i()}),d.addEventListener("click",function(e){e.target===d&&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"),n=document.querySelector('.children[data-folder-id="'+t+'"]');n&&n.classList.toggle("collapsed",a),a||animateExpand(n);var d=e.querySelector(".toggle");d&&(d.textContent=a?"▶":"▼",d.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"],["tags-header","tags-body"],["trash-header","trash-children"]],a=!1,n=0;n<t.length;n++){var d=document.getElementById(t[n][0]),o=document.getElementById(t[n][1]);if(d){a=!0,d.classList.toggle("collapsed",e),o&&o.classList.toggle("collapsed",e);var s=d.querySelector(".toggle");s&&(s.textContent=e?"▶":"▼")}}return a}function collapseScope(){var e=document.getElementById("notes-in-list-root");return e&&e.dataset.collapseScope||"notebooksOnly"}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+'"]'),d=n&&n.querySelector(".tree-item.folder"),o=e.querySelector(".toggle");d?(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=[],d=document.getElementById("main-tree");return d?(d.querySelectorAll(".tree-item.folder").forEach(function(e){var a=e.dataset.id,d=document.querySelector('.children[data-folder-id="'+a+'"]'),o=e.querySelector(".toggle"),s=!!t[a];e.classList.toggle("collapsed",s),d&&d.classList.toggle("collapsed",s),o&&(o.textContent=s?"▶":"▼",o.classList.toggle("expanded",!s)),s&&a&&n.push(a)}),n):n}_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 n=document.querySelector('.tree-item.folder:not(.pinned-item)[data-id="'+a.dataset.folderId+'"]');if(n){n.classList.remove("collapsed");var d=n.querySelector(".toggle");d&&(d.textContent="▼",d.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 d=document.createElement("div");d.className="note-preview-title",d.textContent=e.title,n.appendChild(d);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)}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 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 n=document.getElementById("ctx-menu"),d=t.nextElementSibling&&t.nextElementSibling.classList.contains("ctx-export-template")?t.nextElementSibling:n?n.querySelector(".ctx-export-template"):null;return void(n&&d&&(window._ctxMainHtml=n.innerHTML,n.innerHTML='<div class="ctx-item ctx-back">◂ '+(d.dataset.title||"")+'</div><div class="ctx-sep"></div>'+d.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 S=L.classList.toggle("collapsed"),b=document.getElementById("smart-body");b&&b.classList.toggle("collapsed",S),S||animateExpand(b);var E=L.querySelector(".toggle");return E&&(E.textContent=S?"▶":"▼"),void postMsg({name:"toggleSmartSection"})}var I=e.target.closest(".smart-folder");if(I){var w=I.dataset.smartId,M=document.querySelector('.smart-children[data-smart-id="'+w+'"]');if(!M)return;var N=M.classList.toggle("collapsed");I.classList.toggle("collapsed",N),N||animateExpand(M);var C=I.querySelector(".toggle");return C&&(C.textContent=N?"▶":"▼"),void(N||postMsg({name:"smartFolderNotes",smartId:w,query:I.dataset.query}))}var B=e.target.closest(".trash-section-header");if(B){var q=B.classList.toggle("collapsed"),_=document.getElementById("trash-children");_&&_.classList.toggle("collapsed",q),q||animateExpand(_);var D=B.querySelector(".toggle");return D&&(D.textContent=q?"▶":"▼"),postMsg({name:"toggleTrashSection"}),void(q||!_||_.dataset.loaded||postMsg({name:"trashNotes"}))}var A=e.target.closest(".tag-folder");if(A){var k=A.dataset.tagId,F=document.querySelector('.tag-children[data-tag-id="'+k+'"]');if(!F)return;var H=F.classList.toggle("collapsed");A.classList.toggle("collapsed",H),H||animateExpand(F);var R=A.querySelector(".toggle");return R&&(R.textContent=H?"▶":"▼"),void(H||F.dataset.loaded||postMsg({name:"tagFolderNotes",tagId:k}))}var P=e.target.closest(".search-section-header");if(P){var O=document.getElementById("search-section-"+P.dataset.section);if(O){var j=P.querySelector(".section-toggle");O.classList.contains("collapsed")?(O.classList.remove("collapsed"),j&&(j.textContent="▼")):(O.classList.add("collapsed"),j&&(j.textContent="▶"))}}else{var J=e.target.closest(".tree-item");if(J){if("1"===J.dataset.trash){if("folder"===J.dataset.type){var Y=J.querySelector(".toggle");if(!Y||!Y.textContent)return;for(var V=Number(J.dataset.depth||0),W="▼"===Y.textContent,z=document.querySelector('.trash-folder-children[data-folder-id="'+J.dataset.id+'"]'),U=J.nextElementSibling;U;){if(U.classList.contains("trash-folder-children")){var X=Number(U.dataset.depth||0);if(U===z)U.classList.toggle("collapsed",W);else{if(!(X>V))break;U.classList.add("collapsed")}}else{if(!U.classList.contains("tree-item")||"1"!==U.dataset.trash||"folder"!==U.dataset.type)break;var $=Number(U.dataset.depth||0);if($<=V)break;W?U.classList.add("trash-hidden"):U.classList.toggle("trash-hidden",$!==V+1);var K=U.querySelector(".toggle");K&&K.textContent&&(K.textContent="▶")}U=U.nextElementSibling}Y.textContent=W?"▶":"▼",!W&&z&&(animateExpand(z),z.dataset.loaded||postMsg({name:"trashFolderNotes",folderId:J.dataset.id}))}else"note"===J.dataset.type&&postMsg({name:"openNote",id:J.dataset.id});return}var G=J.dataset.type,Q=J.dataset.id,Z=J.classList.contains("pinned-item");if("note"===G)document.querySelectorAll(".tree-item.note.selected").forEach(function(e){e.classList.remove("selected")}),J.classList.add("selected"),postMsg({name:"openNote",id:Q});else if("folder"===G)if(Z)postMsg({name:"locatePinnedFolder",folderId:Q});else if(toggleFolderLocal(J,Q),postMsg({name:"toggleFolder",id:Q}),!J.classList.contains("collapsed")){var ee=document.getElementById("btn-collapse-all");ee&&"expand"===ee.dataset.mode&&(ee.dataset.mode="collapse",ee.textContent="▲",ee.title=T("collapseAll"))}}else{var te=e.target.closest("button");if(te)switch(te.id){case"btn-new":var ae=document.getElementById("ctx-menu");if(ae){ae.remove();break}var ne=document.getElementById("btn-new");if(!ne)break;var de=ne.getBoundingClientRect();document.body.insertAdjacentHTML("beforeend",'<div id="ctx-menu" class="context-menu" style="left:'+de.left+"px;top:"+(de.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 oe=document.getElementById("btn-collapse-all"),se=document.getElementById("notes-in-list-root"),ie=se&&se.dataset.expandMode||"restore",re="allSections"===collapseScope();if("collapseOnly"===ie){collapseAllLocal(),postMsg({name:"collapseAll",sections:!!re&&setSectionsCollapsed(!0)}),oe&&(oe.dataset.mode="collapse",oe.textContent="▲",oe.title=T("collapseAll"));break}if(oe&&"expand"===oe.dataset.mode){var le,ce=document.getElementById("notes-in-list-root"),me=ce&&ce.dataset.expandMode||"restore";if("all"===me)le=applyCollapsedSet([]);else if("restore"===me){var pe=_collapseSnapshot;if(!pe&&ce)try{pe=JSON.parse(ce.dataset.collapseSnapshot||"null")}catch(e){pe=null}le=Array.isArray(pe)?applyCollapsedSet(pe):expandAllLocal()}else le=expandAllLocal();var ve=document.querySelectorAll("#main-tree .tree-item.folder").length;"skeleton"!==me&&ve>0&&le.length>=ve&&(le=applyCollapsedSet([])),postMsg({name:"expandAll",collapsedIds:le,sections:!!re&&setSectionsCollapsed(!1)}),oe.dataset.mode="collapse",oe.textContent="▲",oe.title=T("collapseAll")}else{var ge=[],ue=0;document.querySelectorAll("#main-tree .tree-item.folder").forEach(function(e){e.dataset.id&&(ue++,e.classList.contains("collapsed")&&ge.push(e.dataset.id))}),collapseAllLocal();var fe=!!re&&setSectionsCollapsed(!0);ge.length>=ue&&ue>0?postMsg({name:"collapseAll",sections:fe}):(_collapseSnapshot=ge,postMsg({name:"collapseAll",prevCollapsed:ge,sections:fe})),oe&&(oe.dataset.mode="expand",oe.textContent="▼",oe.title=T("expandAll"))}break;case"btn-reveal":if(_searchMode){var he=document.getElementById("search-input");he&&(he.value=""),exitSearchMode()}else revealSelectedNote();break;case"btn-refresh":postMsg({name:"refreshView"});break;case"btn-sync":te.disabled||(te.disabled=!0,te.classList.add("syncing"),te.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 n=a.dataset.type,d=a.dataset.id;if("smart"!==n){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"===n?"trashFolder":"trashNote";i+='<div class="ctx-item" data-action="restoreItem" data-id="'+d+'" data-type="'+r+'">'+T("ctxRestoreNote")+"</div>",i+='<div class="ctx-sep"></div>',i+='<div class="ctx-item ctx-danger" data-action="permanentDeleteItem" data-id="'+d+'" data-type="'+r+'">'+T("ctxPermanentDelete")+"</div>"}else if("folder"===n){var l=isPinned(d);i+='<div class="ctx-item" data-action="'+(l?"unpinFolder":"pinFolder")+'" data-id="'+d+'" data-type="folder">'+T(l?"ctxUnpin":"ctxPin")+"</div>",i+='<div class="ctx-sep"></div>',i+='<div class="ctx-item" data-action="newNote" data-id="'+d+'" data-type="folder">'+T("ctxNewNoteHere")+"</div>",i+='<div class="ctx-item" data-action="newTodo" data-id="'+d+'" data-type="folder">'+T("ctxNewTodoHere")+"</div>",i+='<div class="ctx-item" data-action="newSubNotebook" data-id="'+d+'" data-type="folder">'+T("ctxNewSubNotebook")+"</div>",i+='<div class="ctx-sep"></div>',i+='<div class="ctx-item" data-action="renameFolder" data-id="'+d+'" data-type="folder" data-title="'+o.replace(/"/g,"&quot;")+'">'+T("ctxRenameFolder")+"</div>",i+='<div class="ctx-item" data-action="copyFolderId" data-id="'+d+'" data-type="folder">'+T("ctxCopyFolderId")+"</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="'+d+'" data-type="folder">JEX</div><div class="ctx-item" data-action="exportFolder" data-format="md" data-id="'+d+'" data-type="folder">Markdown</div><div class="ctx-item" data-action="exportFolder" data-format="md_frontmatter" data-id="'+d+'" data-type="folder">Markdown + Front Matter</div><div class="ctx-item" data-action="exportFolder" data-format="html" data-id="'+d+'" data-type="folder">HTML</div></div>',i+='<div class="ctx-sep"></div>',i+='<div class="ctx-item ctx-danger" data-action="deleteFolder" data-id="'+d+'" data-type="folder">'+T("ctxDeleteFolder")+"</div>"}else if("note"===n){var c=isPinned(d);i+='<div class="ctx-item" data-action="'+(c?"unpinNote":"pinNote")+'" data-id="'+d+'" data-type="note">'+T(c?"ctxUnpin":"ctxPin")+"</div>",i+='<div class="ctx-sep"></div>',i+='<div class="ctx-item" data-action="openNote" data-id="'+d+'" data-type="note">'+T("ctxOpenNote")+"</div>",i+='<div class="ctx-item" data-action="openInNewWindow" data-id="'+d+'" data-type="note">'+T("ctxOpenInNewWindow")+"</div>",i+='<div class="ctx-item" data-action="editExternally" data-id="'+d+'" data-type="note">'+T("ctxEditExternally")+"</div>",i+='<div class="ctx-sep"></div>',i+='<div class="ctx-item" data-action="setTags" data-id="'+d+'" data-type="note">'+T("ctxSetTags")+"</div>",i+='<div class="ctx-item" data-action="switchNoteType" data-id="'+d+'" data-type="note">'+T("ctxSwitchNoteType")+"</div>","1"===a.dataset.todo&&(i+='<div class="ctx-item" data-action="toggleTodo" data-id="'+d+'" data-type="note">'+T("ctxToggleTodo")+"</div>"),i+='<div class="ctx-item" data-action="moveToFolderDialog" data-id="'+d+'" data-type="note">'+T("ctxMoveToFolder")+"</div>",i+='<div class="ctx-item" data-action="duplicateNote" data-id="'+d+'" data-type="note">'+T("ctxDuplicateNote")+"</div>",i+='<div class="ctx-sep"></div>',i+='<div class="ctx-item" data-action="copyLink" data-id="'+d+'" data-type="note">'+T("ctxCopyLink")+"</div>",i+='<div class="ctx-item" data-action="copyExternalLink" data-id="'+d+'" data-type="note">'+T("ctxCopyExternalLink")+"</div>",i+='<div class="ctx-sep"></div>',i+='<div class="ctx-item" data-action="publishNote" data-id="'+d+'" 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="'+d+'" data-type="note">PDF</div><div class="ctx-item" data-action="exportNote" data-format="md" data-id="'+d+'" data-type="note">Markdown</div><div class="ctx-item" data-action="exportNote" data-format="md_frontmatter" data-id="'+d+'" data-type="note">Markdown + Front Matter</div><div class="ctx-item" data-action="exportNote" data-format="jex" data-id="'+d+'" data-type="note">JEX</div><div class="ctx-item" data-action="exportNote" data-format="html" data-id="'+d+'" data-type="note">HTML</div></div>',i+='<div class="ctx-sep"></div>',i+='<div class="ctx-item" data-action="renameNote" data-id="'+d+'" data-type="note" data-title="'+o.replace(/"/g,"&quot;")+'">'+T("ctxRenameNote")+"</div>",i+='<div class="ctx-item" data-action="noteInfo" data-id="'+d+'" data-type="note">'+T("ctxNoteInfo")+"</div>",i+='<div class="ctx-sep"></div>',i+='<div class="ctx-item ctx-danger" data-action="deleteNote" data-id="'+d+'" 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="'+d+'" data-type="note" data-tag-id="'+a.dataset.tagId+'">'+T("ctxUntagNote")+"</div>")}else if("tag"===n){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 n=document.querySelector('.tag-children[data-tag-id="'+t.tagId+'"]');if(n){n.dataset.loaded="1";for(var d="",o=0;o<t.notes.length;o++){var s=t.notes[o],i=s.is_todo?s.todo_completed?"☑":"☐":"📝";d+='<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||(d='<div class="tag-empty">—</div>'),n.innerHTML=d}}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||p.hasSub?"▶":"")+'</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 S=t.notes[L],b=S.is_todo?S.todo_completed?"☑":"☐":"📝";x+='<div class="tree-item note smart-note" style="padding-left:44px" data-id="'+S.id+'" data-type="note" data-todo="'+(S.is_todo?1:0)+'"><span class="icon note-icon">'+b+'</span><span class="label">'+escapeHtml(S.title)+"</span>"+(S.badges||"")+"</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 E=document.querySelector('.trash-folder-children[data-folder-id="'+t.folderId+'"]');if(E){E.dataset.loaded="1";for(var I=34+16*(parseInt(E.dataset.depth||"0",10)+1),w="",M=0;M<t.notes.length;M++){var N=t.notes[M],C=N.is_todo?N.todo_completed?"☑":"☐":"📝";w+='<div class="tree-item note trash-note" style="padding-left:'+I+'px" data-id="'+N.id+'" data-type="note" data-trash="1"><span class="icon note-icon">'+C+'</span><span class="label">'+escapeHtml(N.title)+"</span></div>"}t.notes.length||(w='<div class="tag-empty" style="padding-left:'+I+'px">—</div>'),E.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 B=document.getElementById("search-input");B&&(B.value=""),_searchMode&&exitSearchMode()}else if("exitSearchAndLocate"===t.name){var q=document.getElementById("search-input");q&&(q.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 _=document.createElement("textarea");_.value=t.text,document.body.appendChild(_),_.select(),document.execCommand("copy"),_.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 k=D&&D.contains(A)?expandAncestorsLocal(A):[];requestAnimationFrame(function(){var e=document.getElementById("tree-container");if(e){var t=e.getBoundingClientRect(),a=A.getBoundingClientRect();(a.top<t.top||a.bottom>t.bottom)&&A.scrollIntoView({block:"center",behavior:"instant"}),_savedScrollTop=e.scrollTop}else A.scrollIntoView({block:"nearest",behavior:"instant"})}),k.length&&postMsg({name:"revealNote",folderIds:k})}}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 d=e.querySelector(".note-icon");d&&(d.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&&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(".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"),document.getElementById("pinned-header")||setTimeout(function(){if(document.querySelector(".tree-item.dragging")&&!document.getElementById("pinned-header")&&!document.getElementById("pinned-drop-ph")){var e=document.createElement("div");e.id="pinned-drop-ph",e.className="pinned-section-header",e.textContent="📌 "+T("pinned"),n.insertBefore(e,n.firstChild)}},0))}}});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,d=document.getElementById("drop-zone-empty");if(d&&t.classList.contains("dragging-active")){var o=d.getBoundingClientRect();o.height>0&&o.top>a.top&&(n=o.top)}var s=0;e<a.top+40?s=-Math.ceil((a.top+40-e)/4):e>n?s=0:e>n-40&&(s=Math.ceil((e-(n-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");var t=document.getElementById("pinned-drop-ph");t&&t.remove()}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 n=a.getBoundingClientRect();e.clientY-n.top<.5*n.height?a.classList.add("drop-above"):a.classList.add("drop-below")}}else{var d=t.closest(".tag-folder");if(d)document.querySelector(".tree-item.note.dragging")&&(e.preventDefault(),e.dataTransfer.dropEffect="move",clearDropIndicators(),d.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,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 d=a.id,o=a.type,s=a.pinned;if(t&&t.closest("#drop-zone-empty")&&!s)return postMsg({name:"dragToEmpty",dragId:d,dragType:o}),void endDrag();if(t&&t.closest(".pinned-section-header")&&!s)return"note"===o?postMsg({name:"contextMenu",action:"pinNote",id:d,itemType:"note"}):"folder"===o&&postMsg({name:"contextMenu",action:"pinFolder",id:d,itemType:"folder"}),void endDrag();if(t&&t.closest(".pinned-section-body")&&s){var i=n&&n.classList.contains("pinned-item")?n:null;if(i&&i.dataset.id!==d){var r=i.getBoundingClientRect(),l=e.clientY-r.top<.5*r.height?"before":"after";postMsg({name:"reorderPinned",dragId:d,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:d}),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(n){var m=n.dataset.id,p=n.dataset.type;if(d!==m){var v=n.getBoundingClientRect(),g=e.clientY-v.top,u=v.height;postMsg("folder"===p?g>=.25*u&&g<=.75*u?{name:"dragDrop",dragId:d,dragType:o,targetId:m,position:"into"}:{name:"dragDrop",dragId:d,dragType:o,targetId:m,position:g<.25*u?"above":"below"}:"note"===o?{name:"dragDrop",dragId:d,dragType:o,targetId:m,position:g<.5*u?"above":"below"}:{name:"dragDrop",dragId:d,dragType:o,targetId:m,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 d=document.getElementById("search-results");if(d){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,n)+"</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],n);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,n)+"</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>"}d.innerHTML=s,_searchMode=!0}else d.innerHTML='<div class="search-status">'+T("searchNoResult")+"</div>"}function g(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 d="",o=0;o<t.length;o++)d+=renderNoteItem(t[o],"");0===t.length&&(d='<div class="search-status" style="padding-left:30px;">'+T("searchNoResult")+"</div>"),a.innerHTML=d,(n=document.querySelector('.search-tag-item[data-tag-id="'+e+'"] .tag-expand-arrow'))&&n.classList.add("expanded")}}function revealSelectedNote(){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 d=expandAncestorsLocal(a);d.length&&postMsg({name:"revealNote",folderIds:d}),requestAnimationFrame(function(){a.scrollIntoView({block:"center",behavior:"instant"}),_savedScrollTop=e.scrollTop})}}}function exitSearchMode(){_searchMode=!1,showSearchContainer(!1),revealSelectedNote()}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 n=document.getElementById("search-results");n&&(n.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 n=document.getElementById("inline-input-overlay");n&&n.remove();var d=document.createElement("div");d.id="inline-input-overlay",d.className="inline-input-overlay",d.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(d);var o=d.querySelector(".inline-input-field");function s(){var e=o.value;d.remove(),a(e)}function r(){d.remove(),a(null)}o.focus(),o.select(),d.querySelector(".inline-input-ok").addEventListener("click",s),d.querySelector(".inline-input-cancel").addEventListener("click",r),o.addEventListener("keydown",function(e){"Enter"===e.key&&s(),"Escape"===e.key&&r()}),d.addEventListener("click",function(e){e.target===d&&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 d=e.querySelector(".toggle");d&&(d.textContent=a?"▶":"▼",d.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"]],a=!1,n=0;n<t.length;n++){var d=document.getElementById(t[n][0]),o=document.getElementById(t[n][1]);if(d){a=!0,d.classList.toggle("collapsed",e),o&&o.classList.toggle("collapsed",e);var s=d.querySelector(".toggle");s&&(s.textContent=e?"▶":"▼")}}return a}function collapseScope(){var e=document.getElementById("notes-in-list-root");return e&&e.dataset.collapseScope||"notebooksOnly"}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+'"]'),d=n&&n.querySelector(".tree-item.folder"),o=e.querySelector(".toggle");d?(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=[],d=document.getElementById("main-tree");return d?(d.querySelectorAll(".tree-item.folder").forEach(function(e){var a=e.dataset.id,d=document.querySelector('.children[data-folder-id="'+a+'"]'),o=e.querySelector(".toggle"),s=!!t[a];e.classList.toggle("collapsed",s),d&&d.classList.toggle("collapsed",s),o&&(o.textContent=s?"▶":"▼",o.classList.toggle("expanded",!s)),s&&a&&n.push(a)}),n):n}_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 n=document.querySelector('.tree-item.folder:not(.pinned-item)[data-id="'+a.dataset.folderId+'"]');if(n){n.classList.remove("collapsed");var d=n.querySelector(".toggle");d&&(d.textContent="▼",d.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 d=document.createElement("div");d.className="note-preview-title",d.textContent=e.title,n.appendChild(d);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)}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 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 n=document.getElementById("ctx-menu"),d=t.nextElementSibling&&t.nextElementSibling.classList.contains("ctx-export-template")?t.nextElementSibling:n?n.querySelector(".ctx-export-template"):null;return void(n&&d&&(window._ctxMainHtml=n.innerHTML,n.innerHTML='<div class="ctx-item ctx-back">◂ '+(d.dataset.title||"")+'</div><div class="ctx-sep"></div>'+d.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(".tree-section-header");if(L){var S=L.classList.toggle("collapsed"),b=document.getElementById("main-tree");b&&b.classList.toggle("collapsed",S),S||animateExpand(b);var E=L.querySelector(".toggle");return E&&(E.textContent=S?"▶":"▼"),void postMsg({name:"toggleTreeSection"})}var I=e.target.closest(".smart-section-header");if(I){var w=I.classList.toggle("collapsed"),M=document.getElementById("smart-body");M&&M.classList.toggle("collapsed",w),w||animateExpand(M);var N=I.querySelector(".toggle");return N&&(N.textContent=w?"▶":"▼"),void postMsg({name:"toggleSmartSection"})}var C=e.target.closest(".smart-folder");if(C){var B=C.dataset.smartId,q=document.querySelector('.smart-children[data-smart-id="'+B+'"]');if(!q)return;var _=q.classList.toggle("collapsed");C.classList.toggle("collapsed",_),_||animateExpand(q);var D=C.querySelector(".toggle");return D&&(D.textContent=_?"▶":"▼"),void(_||postMsg({name:"smartFolderNotes",smartId:B,query:C.dataset.query}))}var A=e.target.closest(".trash-section-header");if(A){var k=A.classList.toggle("collapsed"),F=document.getElementById("trash-children");F&&F.classList.toggle("collapsed",k),k||animateExpand(F);var H=A.querySelector(".toggle");return H&&(H.textContent=k?"▶":"▼"),postMsg({name:"toggleTrashSection"}),void(k||!F||F.dataset.loaded||postMsg({name:"trashNotes"}))}var R=e.target.closest(".tag-folder");if(R){var P=R.dataset.tagId,O=document.querySelector('.tag-children[data-tag-id="'+P+'"]');if(!O)return;var j=O.classList.toggle("collapsed");R.classList.toggle("collapsed",j),j||animateExpand(O);var J=R.querySelector(".toggle");return J&&(J.textContent=j?"▶":"▼"),void(j||O.dataset.loaded||postMsg({name:"tagFolderNotes",tagId:P}))}var Y=e.target.closest(".search-section-header");if(Y){var V=document.getElementById("search-section-"+Y.dataset.section);if(V){var W=Y.querySelector(".section-toggle");V.classList.contains("collapsed")?(V.classList.remove("collapsed"),W&&(W.textContent="▼")):(V.classList.add("collapsed"),W&&(W.textContent="▶"))}}else{var z=e.target.closest(".tree-item");if(z){if("1"===z.dataset.trash){if("folder"===z.dataset.type){var U=z.querySelector(".toggle");if(!U||!U.textContent)return;for(var X=Number(z.dataset.depth||0),$="▼"===U.textContent,K=document.querySelector('.trash-folder-children[data-folder-id="'+z.dataset.id+'"]'),G=z.nextElementSibling;G;){if(G.classList.contains("trash-folder-children")){var Q=Number(G.dataset.depth||0);if(G===K)G.classList.toggle("collapsed",$);else{if(!(Q>X))break;G.classList.add("collapsed")}}else{if(!G.classList.contains("tree-item")||"1"!==G.dataset.trash||"folder"!==G.dataset.type)break;var Z=Number(G.dataset.depth||0);if(Z<=X)break;$?G.classList.add("trash-hidden"):G.classList.toggle("trash-hidden",Z!==X+1);var ee=G.querySelector(".toggle");ee&&ee.textContent&&(ee.textContent="▶")}G=G.nextElementSibling}U.textContent=$?"▶":"▼",!$&&K&&(animateExpand(K),K.dataset.loaded||postMsg({name:"trashFolderNotes",folderId:z.dataset.id}))}else"note"===z.dataset.type&&postMsg({name:"openNote",id:z.dataset.id});return}var te=z.dataset.type,ae=z.dataset.id,ne=z.classList.contains("pinned-item");if("note"===te)document.querySelectorAll(".tree-item.note.selected").forEach(function(e){e.classList.remove("selected")}),z.classList.add("selected"),postMsg({name:"openNote",id:ae});else if("folder"===te)if(ne)postMsg({name:"locatePinnedFolder",folderId:ae});else if(toggleFolderLocal(z,ae),postMsg({name:"toggleFolder",id:ae}),!z.classList.contains("collapsed")){var de=document.getElementById("btn-collapse-all");de&&"expand"===de.dataset.mode&&(de.dataset.mode="collapse",de.textContent="▲",de.title=T("collapseAll"))}}else{var oe=e.target.closest("button");if(oe)switch(oe.id){case"btn-new":var se=document.getElementById("ctx-menu");if(se){se.remove();break}var re=document.getElementById("btn-new");if(!re)break;var ie=re.getBoundingClientRect();document.body.insertAdjacentHTML("beforeend",'<div id="ctx-menu" class="context-menu" style="left:'+ie.left+"px;top:"+(ie.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 le=document.getElementById("btn-collapse-all"),ce=document.getElementById("notes-in-list-root"),me=ce&&ce.dataset.expandMode||"restore",pe="allSections"===collapseScope();if("collapseOnly"===me){collapseAllLocal(),postMsg({name:"collapseAll",sections:!!pe&&setSectionsCollapsed(!0)}),le&&(le.dataset.mode="collapse",le.textContent="▲",le.title=T("collapseAll"));break}if(le&&"expand"===le.dataset.mode){var ve,ge=document.getElementById("notes-in-list-root"),ue=ge&&ge.dataset.expandMode||"restore";if("all"===ue)ve=applyCollapsedSet([]);else if("restore"===ue){var fe=_collapseSnapshot;if(!fe&&ge)try{fe=JSON.parse(ge.dataset.collapseSnapshot||"null")}catch(e){fe=null}ve=Array.isArray(fe)?applyCollapsedSet(fe):expandAllLocal()}else ve=expandAllLocal();var he=document.querySelectorAll("#main-tree .tree-item.folder").length;"skeleton"!==ue&&he>0&&ve.length>=he&&(ve=applyCollapsedSet([])),postMsg({name:"expandAll",collapsedIds:ve,sections:!!pe&&setSectionsCollapsed(!1)}),le.dataset.mode="collapse",le.textContent="▲",le.title=T("collapseAll")}else{var ye=[],xe=0;document.querySelectorAll("#main-tree .tree-item.folder").forEach(function(e){e.dataset.id&&(xe++,e.classList.contains("collapsed")&&ye.push(e.dataset.id))}),collapseAllLocal();var Te=!!pe&&setSectionsCollapsed(!0);ye.length>=xe&&xe>0?postMsg({name:"collapseAll",sections:Te}):(_collapseSnapshot=ye,postMsg({name:"collapseAll",prevCollapsed:ye,sections:Te})),le&&(le.dataset.mode="expand",le.textContent="▼",le.title=T("expandAll"))}break;case"btn-reveal":if(_searchMode){var Le=document.getElementById("search-input");Le&&(Le.value=""),exitSearchMode()}else revealSelectedNote();break;case"btn-refresh":postMsg({name:"refreshView"});break;case"btn-sync":oe.disabled||(oe.disabled=!0,oe.classList.add("syncing"),oe.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 n=a.dataset.type,d=a.dataset.id;if("smart"!==n){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"===n?"trashFolder":"trashNote";r+='<div class="ctx-item" data-action="restoreItem" data-id="'+d+'" data-type="'+i+'">'+T("ctxRestoreNote")+"</div>",r+='<div class="ctx-sep"></div>',r+='<div class="ctx-item ctx-danger" data-action="permanentDeleteItem" data-id="'+d+'" data-type="'+i+'">'+T("ctxPermanentDelete")+"</div>"}else if("folder"===n){var l=isPinned(d);r+='<div class="ctx-item" data-action="'+(l?"unpinFolder":"pinFolder")+'" data-id="'+d+'" data-type="folder">'+T(l?"ctxUnpin":"ctxPin")+"</div>",r+='<div class="ctx-sep"></div>',r+='<div class="ctx-item" data-action="newNote" data-id="'+d+'" data-type="folder">'+T("ctxNewNoteHere")+"</div>",r+='<div class="ctx-item" data-action="newTodo" data-id="'+d+'" data-type="folder">'+T("ctxNewTodoHere")+"</div>",r+='<div class="ctx-item" data-action="newSubNotebook" data-id="'+d+'" data-type="folder">'+T("ctxNewSubNotebook")+"</div>",r+='<div class="ctx-sep"></div>',r+='<div class="ctx-item" data-action="renameFolder" data-id="'+d+'" data-type="folder" data-title="'+o.replace(/"/g,"&quot;")+'">'+T("ctxRenameFolder")+"</div>",r+='<div class="ctx-item" data-action="copyFolderId" data-id="'+d+'" data-type="folder">'+T("ctxCopyFolderId")+"</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="'+d+'" data-type="folder">JEX</div><div class="ctx-item" data-action="exportFolder" data-format="md" data-id="'+d+'" data-type="folder">Markdown</div><div class="ctx-item" data-action="exportFolder" data-format="md_frontmatter" data-id="'+d+'" data-type="folder">Markdown + Front Matter</div><div class="ctx-item" data-action="exportFolder" data-format="html" data-id="'+d+'" data-type="folder">HTML</div></div>',r+='<div class="ctx-sep"></div>',r+='<div class="ctx-item ctx-danger" data-action="deleteFolder" data-id="'+d+'" data-type="folder">'+T("ctxDeleteFolder")+"</div>"}else if("note"===n){var c=isPinned(d);r+='<div class="ctx-item" data-action="'+(c?"unpinNote":"pinNote")+'" data-id="'+d+'" data-type="note">'+T(c?"ctxUnpin":"ctxPin")+"</div>",r+='<div class="ctx-sep"></div>',r+='<div class="ctx-item" data-action="openNote" data-id="'+d+'" data-type="note">'+T("ctxOpenNote")+"</div>",r+='<div class="ctx-item" data-action="openInNewWindow" data-id="'+d+'" data-type="note">'+T("ctxOpenInNewWindow")+"</div>",r+='<div class="ctx-item" data-action="editExternally" data-id="'+d+'" data-type="note">'+T("ctxEditExternally")+"</div>",r+='<div class="ctx-sep"></div>',r+='<div class="ctx-item" data-action="setTags" data-id="'+d+'" data-type="note">'+T("ctxSetTags")+"</div>",r+='<div class="ctx-item" data-action="switchNoteType" data-id="'+d+'" data-type="note">'+T("ctxSwitchNoteType")+"</div>","1"===a.dataset.todo&&(r+='<div class="ctx-item" data-action="toggleTodo" data-id="'+d+'" data-type="note">'+T("ctxToggleTodo")+"</div>"),r+='<div class="ctx-item" data-action="moveToFolderDialog" data-id="'+d+'" data-type="note">'+T("ctxMoveToFolder")+"</div>",r+='<div class="ctx-item" data-action="duplicateNote" data-id="'+d+'" data-type="note">'+T("ctxDuplicateNote")+"</div>",r+='<div class="ctx-sep"></div>',r+='<div class="ctx-item" data-action="copyLink" data-id="'+d+'" data-type="note">'+T("ctxCopyLink")+"</div>",r+='<div class="ctx-item" data-action="copyExternalLink" data-id="'+d+'" data-type="note">'+T("ctxCopyExternalLink")+"</div>",r+='<div class="ctx-sep"></div>',r+='<div class="ctx-item" data-action="publishNote" data-id="'+d+'" 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="'+d+'" data-type="note">PDF</div><div class="ctx-item" data-action="exportNote" data-format="md" data-id="'+d+'" data-type="note">Markdown</div><div class="ctx-item" data-action="exportNote" data-format="md_frontmatter" data-id="'+d+'" data-type="note">Markdown + Front Matter</div><div class="ctx-item" data-action="exportNote" data-format="jex" data-id="'+d+'" data-type="note">JEX</div><div class="ctx-item" data-action="exportNote" data-format="html" data-id="'+d+'" data-type="note">HTML</div></div>',r+='<div class="ctx-sep"></div>',r+='<div class="ctx-item" data-action="renameNote" data-id="'+d+'" data-type="note" data-title="'+o.replace(/"/g,"&quot;")+'">'+T("ctxRenameNote")+"</div>",r+='<div class="ctx-item" data-action="noteInfo" data-id="'+d+'" data-type="note">'+T("ctxNoteInfo")+"</div>",r+='<div class="ctx-sep"></div>',r+='<div class="ctx-item ctx-danger" data-action="deleteNote" data-id="'+d+'" 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="'+d+'" data-type="note" data-tag-id="'+a.dataset.tagId+'">'+T("ctxUntagNote")+"</div>")}else if("tag"===n){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 n=document.querySelector('.tag-children[data-tag-id="'+t.tagId+'"]');if(n){n.dataset.loaded="1";for(var d="",o=0;o<t.notes.length;o++){var s=t.notes[o],r=s.is_todo?s.todo_completed?"☑":"☐":"📝";d+='<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||(d='<div class="tag-empty">—</div>'),n.innerHTML=d}}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||p.hasSub?"▶":"")+'</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 S=t.notes[L],b=S.is_todo?S.todo_completed?"☑":"☐":"📝";x+='<div class="tree-item note smart-note" style="padding-left:44px" data-id="'+S.id+'" data-type="note" data-todo="'+(S.is_todo?1:0)+'"><span class="icon note-icon">'+b+'</span><span class="label">'+escapeHtml(S.title)+"</span>"+(S.badges||"")+"</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 E=document.querySelector('.trash-folder-children[data-folder-id="'+t.folderId+'"]');if(E){E.dataset.loaded="1";for(var I=34+16*(parseInt(E.dataset.depth||"0",10)+1),w="",M=0;M<t.notes.length;M++){var N=t.notes[M],C=N.is_todo?N.todo_completed?"☑":"☐":"📝";w+='<div class="tree-item note trash-note" style="padding-left:'+I+'px" data-id="'+N.id+'" data-type="note" data-trash="1"><span class="icon note-icon">'+C+'</span><span class="label">'+escapeHtml(N.title)+"</span></div>"}t.notes.length||(w='<div class="tag-empty" style="padding-left:'+I+'px">—</div>'),E.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 B=document.getElementById("search-input");B&&(B.value=""),_searchMode&&exitSearchMode()}else if("exitSearchAndLocate"===t.name){var q=document.getElementById("search-input");q&&(q.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 _=document.createElement("textarea");_.value=t.text,document.body.appendChild(_),_.select(),document.execCommand("copy"),_.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 k=D&&D.contains(A)?expandAncestorsLocal(A):[];requestAnimationFrame(function(){var e=document.getElementById("tree-container");if(e){var t=e.getBoundingClientRect(),a=A.getBoundingClientRect();(a.top<t.top||a.bottom>t.bottom)&&A.scrollIntoView({block:"center",behavior:"instant"}),_savedScrollTop=e.scrollTop}else A.scrollIntoView({block:"nearest",behavior:"instant"})}),k.length&&postMsg({name:"revealNote",folderIds:k})}}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 d=e.querySelector(".note-icon");d&&(d.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&&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(".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"),document.getElementById("pinned-header")||setTimeout(function(){if(document.querySelector(".tree-item.dragging")&&!document.getElementById("pinned-header")&&!document.getElementById("pinned-drop-ph")){var e=document.createElement("div");e.id="pinned-drop-ph",e.className="pinned-section-header",e.textContent="📌 "+T("pinned"),n.insertBefore(e,n.firstChild)}},0))}}});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,d=document.getElementById("drop-zone-empty");if(d&&t.classList.contains("dragging-active")){var o=d.getBoundingClientRect();o.height>0&&o.top>a.top&&(n=o.top)}var s=0;e<a.top+40?s=-Math.ceil((a.top+40-e)/4):e>n?s=0:e>n-40&&(s=Math.ceil((e-(n-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");var t=document.getElementById("pinned-drop-ph");t&&t.remove()}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 n=a.getBoundingClientRect();e.clientY-n.top<.5*n.height?a.classList.add("drop-above"):a.classList.add("drop-below")}}else{var d=t.closest(".tag-folder");if(d)document.querySelector(".tree-item.note.dragging")&&(e.preventDefault(),e.dataTransfer.dropEffect="move",clearDropIndicators(),d.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,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 d=a.id,o=a.type,s=a.pinned;if(t&&t.closest("#drop-zone-empty")&&!s)return postMsg({name:"dragToEmpty",dragId:d,dragType:o}),void endDrag();if(t&&t.closest(".pinned-section-header")&&!s)return"note"===o?postMsg({name:"contextMenu",action:"pinNote",id:d,itemType:"note"}):"folder"===o&&postMsg({name:"contextMenu",action:"pinFolder",id:d,itemType:"folder"}),void endDrag();if(t&&t.closest(".pinned-section-body")&&s){var r=n&&n.classList.contains("pinned-item")?n:null;if(r&&r.dataset.id!==d){var i=r.getBoundingClientRect(),l=e.clientY-i.top<.5*i.height?"before":"after";postMsg({name:"reorderPinned",dragId:d,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:d}),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(n){var m=n.dataset.id,p=n.dataset.type;if(d!==m){var v=n.getBoundingClientRect(),g=e.clientY-v.top,u=v.height;postMsg("folder"===p?g>=.25*u&&g<=.75*u?{name:"dragDrop",dragId:d,dragType:o,targetId:m,position:"into"}:{name:"dragDrop",dragId:d,dragType:o,targetId:m,position:g<.25*u?"above":"below"}:"note"===o?{name:"dragDrop",dragId:d,dragType:o,targetId:m,position:g<.5*u?"above":"below"}:{name:"dragDrop",dragId:d,dragType:o,targetId:m,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 d=document.getElementById("search-results");if(d){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,n)+"</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],n);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,n)+"</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>"}d.innerHTML=s,_searchMode=!0}else d.innerHTML='<div class="search-status">'+T("searchNoResult")+"</div>"}function g(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 d="",o=0;o<t.length;o++)d+=renderNoteItem(t[o],"");0===t.length&&(d='<div class="search-status" style="padding-left:30px;">'+T("searchNoResult")+"</div>"),a.innerHTML=d,(n=document.querySelector('.search-tag-item[data-tag-id="'+e+'"] .tag-expand-arrow'))&&n.classList.add("expanded")}}function revealSelectedNote(){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 d=expandAncestorsLocal(a);d.length&&postMsg({name:"revealNote",folderIds:d}),requestAnimationFrame(function(){a.scrollIntoView({block:"center",behavior:"instant"}),_savedScrollTop=e.scrollTop})}}}function exitSearchMode(){_searchMode=!1,showSearchContainer(!1),revealSelectedNote()}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 n=document.getElementById("search-results");n&&(n.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())}});