/* THIS IS A GENERATED/BUNDLED FILE BY ESBUILD */ var $=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var z=Object.getOwnPropertyNames;var H=Object.prototype.hasOwnProperty;var U=(k,p)=>{for(var t in p)$(k,t,{get:p[t],enumerable:!0})},X=(k,p,t,a)=>{if(p&&typeof p=="object"||typeof p=="function")for(let n of z(p))!H.call(k,n)&&n!==t&&$(k,n,{get:()=>p[n],enumerable:!(a=j(p,n))||a.enumerable});return k};var K=k=>X($({},"__esModule",{value:!0}),k);var ee={};U(ee,{default:()=>O});module.exports=K(ee);var f=require("obsidian");var _={calendar:{firstDayOfWeek:1,showNoteIndicators:!0},daily:{folder:"periodic/daily",templateFile:"Templates/Daily note",nameFormat:"YYYY-MM-DD",typeProperty:"daily-note"},weekly:{folder:"periodic/weekly",templateFile:"Templates/Weekly note",nameFormat:"GGGG-[W]WW",typeProperty:"weekly-note"},monthly:{folder:"periodic/monthly",templateFile:"Templates/Monthly note",nameFormat:"YYYY-MM",typeProperty:"monthly-note"},quarterly:{folder:"periodic/quarterly",templateFile:"Templates/Quarterly note",nameFormat:"YYYY-[Q]Q",typeProperty:"quarterly-note"},yearly:{folder:"periodic/yearly",templateFile:"Templates/Yearly note",nameFormat:"YYYY",typeProperty:"yearly-note"},recentFiles:{maxItems:50,updateOn:"file-open",omittedPaths:[],omittedTags:[]}};var y=require("obsidian"),R=class extends y.PluginSettingTab{constructor(p,t,a,n){super(p,t),this.plugin=t,this.settings=a,this.onSettingsChange=n}display(){let{containerEl:p}=this;p.empty(),new y.Setting(p).setHeading().setName("Calendar"),new y.Setting(p).setName("First day of week").setDesc("Which day the calendar week starts on.").addDropdown(n=>{n.addOption("0","Sunday").addOption("1","Monday").setValue(String(this.settings.calendar.firstDayOfWeek)).onChange(o=>{this.settings.calendar.firstDayOfWeek=parseInt(o,10),this.saveAndRefresh()})}),new y.Setting(p).setName("Show note indicators").setDesc("Show a dot on days that have existing notes.").addToggle(n=>{n.setValue(this.settings.calendar.showNoteIndicators).onChange(o=>{this.settings.calendar.showNoteIndicators=o,this.saveAndRefresh()})}),new y.Setting(p).setHeading().setName("Periodic Note Paths"),this.addPeriodNoteSettings("Daily",this.settings.daily),this.addPeriodNoteSettings("Weekly",this.settings.weekly),this.addPeriodNoteSettings("Monthly",this.settings.monthly),this.addPeriodNoteSettings("Quarterly",this.settings.quarterly),this.addPeriodNoteSettings("Yearly",this.settings.yearly),new y.Setting(p).setHeading().setName("Recent Files"),new y.Setting(p).setName("Max items").setDesc("Maximum number of recent files to track.").addText(n=>{n.inputEl.setAttr("type","number"),n.inputEl.setAttr("placeholder","50"),n.setValue(String(this.settings.recentFiles.maxItems)),n.inputEl.onblur=()=>{let o=parseInt(n.getValue(),10);!isNaN(o)&&o>0&&(this.settings.recentFiles.maxItems=o,this.saveAndRefresh())}}),new y.Setting(p).setName("Update on").setDesc("When to add a file to the recent list.").addDropdown(n=>{n.addOption("file-open","File opened").addOption("file-edit","File changed").setValue(this.settings.recentFiles.updateOn).onChange(o=>{this.settings.recentFiles.updateOn=o,this.saveAndRefresh()})});let t=new DocumentFragment;t.appendText("Regex patterns for paths to exclude. One per line."),new y.Setting(p).setName("Omitted paths").setDesc(t).addTextArea(n=>{n.inputEl.setAttr("rows",4),n.setPlaceholder(`^archives/ \\.png$`),n.setValue(this.settings.recentFiles.omittedPaths.join(` `)),n.inputEl.onblur=()=>{this.settings.recentFiles.omittedPaths=n.getValue().split(` `).filter(o=>o.trim()),this.saveAndRefresh()}});let a=new DocumentFragment;a.appendText("Regex patterns for frontmatter tags to exclude. One per line."),new y.Setting(p).setName("Omitted tags").setDesc(a).addTextArea(n=>{n.inputEl.setAttr("rows",4),n.setPlaceholder(`ignore archive`),n.setValue(this.settings.recentFiles.omittedTags.join(` `)),n.inputEl.onblur=()=>{this.settings.recentFiles.omittedTags=n.getValue().split(` `).filter(o=>o.trim()),this.saveAndRefresh()}})}addPeriodNoteSettings(p,t){new y.Setting(this.containerEl).setHeading().setName(p),new y.Setting(this.containerEl).setName("Folder").setDesc(`Folder path for ${p.toLowerCase()} notes.`).addText(a=>{a.setPlaceholder("periodic/daily"),a.setValue(t.folder),a.onChange(n=>{t.folder=n,this.saveAndRefresh()})}),new y.Setting(this.containerEl).setName("Name format").setDesc(`Date format for ${p.toLowerCase()} note filenames (moment.js format).`).addText(a=>{a.setPlaceholder("yyyy-MM-dd"),a.setValue(t.nameFormat),a.onChange(n=>{t.nameFormat=n,this.saveAndRefresh()})}),new y.Setting(this.containerEl).setName("Template file").setDesc("Path to the template file (without .md extension).").addText(a=>{a.setPlaceholder("Templates/Daily note"),a.setValue(t.templateFile),a.onChange(n=>{t.templateFile=n,this.saveAndRefresh()})}),new y.Setting(this.containerEl).setName("Type property").setDesc("Value for the 'type' frontmatter property.").addText(a=>{a.setPlaceholder("daily-note"),a.setValue(t.typeProperty),a.onChange(n=>{t.typeProperty=n,this.saveAndRefresh()})})}async saveAndRefresh(){await this.plugin.saveData(this.settings),this.onSettingsChange()}};var h=require("obsidian");var T=require("obsidian");function Q(k,p,t){let a=(0,T.moment)({year:k,month:p,day:1}),n=(0,T.moment)(a).endOf("month"),o=(0,T.moment)(a).subtract((a.day()-t+7)%7,"days"),e=(0,T.moment)().startOf("day"),r=[],i=(0,T.moment)(o);for(;i.isBefore(n)||i.month()===p;){let c=[];for(let s=0;s<7;s++)c.push({date:(0,T.moment)(i),dayOfMonth:i.date(),isToday:i.isSame(e,"day"),isCurrentMonth:i.month()===p,isoWeekNumber:i.isoWeek()}),i.add(1,"day");if(r.push({weekNumber:c[0].isoWeekNumber,days:c}),r.length>=6)break}return r}var I="waypoint-view",N=class extends h.ItemView{constructor(t,a){super(t);this.redraw=()=>{this.contentEl.empty(),this.contentEl.addClass("waypoint-view"),this.renderFavorites(),this.renderRecentFiles(),this.renderCalendar()};this.currentDisplayMonth=(0,h.moment)().month();this.currentDisplayYear=(0,h.moment)().year();this.dragId=null;this.plugin=a}getViewType(){return I}getDisplayText(){return"Waypoint"}getIcon(){return"compass"}async onOpen(){this.redraw()}async onClose(){}renderCalendar(){let t=this.contentEl.createDiv({cls:"waypoint-section"});t.createDiv({cls:"waypoint-section-header",text:"Calendar"});let a=t.createDiv({cls:"waypoint-calendar"}),n=(0,h.moment)(),o=(0,h.moment)({year:this.currentDisplayYear,month:this.currentDisplayMonth,day:1}),e=a.createDiv({cls:"waypoint-calendar-top"}),r=e.createDiv({cls:"waypoint-calendar-breadcrumb"}),i=o.format("[Q]Q"),c=r.createSpan({cls:"waypoint-clickable",text:i});c.addEventListener("click",()=>{this.plugin.openPeriodNote("quarter",o)}),c.addEventListener("mousedown",g=>{g.button===1&&(g.preventDefault(),this.plugin.openPeriodNoteInLeaf("quarter",o,this.app.workspace.getLeaf("tab")))});let s=o.format("MMMM"),l=r.createSpan({cls:"waypoint-clickable",text:s});l.addEventListener("click",()=>{this.plugin.openPeriodNote("month",o)}),l.addEventListener("mousedown",g=>{g.button===1&&(g.preventDefault(),this.plugin.openPeriodNoteInLeaf("month",o,this.app.workspace.getLeaf("tab")))});let d=o.format("YYYY"),m=r.createSpan({cls:"waypoint-clickable",text:d});m.addEventListener("click",()=>{this.plugin.openPeriodNote("year",o)}),m.addEventListener("mousedown",g=>{g.button===1&&(g.preventDefault(),this.plugin.openPeriodNoteInLeaf("year",o,this.app.workspace.getLeaf("tab")))});let u=e.createDiv({cls:"waypoint-calendar-today-group"}),w=u.createEl("button",{cls:"waypoint-calendar-nav-btn"});(0,h.setIcon)(w,"chevron-left"),w.addEventListener("click",()=>this.navigateMonth(-1)),u.createEl("button",{cls:"waypoint-calendar-today-btn",text:"Today"}).addEventListener("click",()=>{this.currentDisplayMonth=(0,h.moment)().month(),this.currentDisplayYear=(0,h.moment)().year(),this.redraw()});let M=u.createEl("button",{cls:"waypoint-calendar-nav-btn"});(0,h.setIcon)(M,"chevron-right"),M.addEventListener("click",()=>this.navigateMonth(1));let L=a.createEl("table"),C=L.createEl("thead").createEl("tr");C.createEl("th",{text:""});let v=["sun","mon","tue","wed","thu","fri","sat"],W=this.plugin.settings.calendar.firstDayOfWeek;for(let g=0;g<7;g++){let S=(W+g)%7;C.createEl("th",{text:v[S]})}let b=L.createEl("tbody"),E=Q(this.currentDisplayYear,this.currentDisplayMonth,this.plugin.settings.calendar.firstDayOfWeek);for(let g of E){let S=b.createEl("tr"),A=S.createEl("td",{cls:"waypoint-weeknum"});A.setText(String(g.weekNumber)),A.addEventListener("click",()=>{let D=g.days[0].date;this.plugin.openPeriodNote("week",D)}),A.addEventListener("mousedown",D=>{if(D.button===1){D.preventDefault();let x=this.app.workspace.getLeaf("tab");this.plugin.openPeriodNoteInLeaf("week",monday,x)}});for(let D of g.days){let x=S.createEl("td",{cls:"waypoint-day"});if(x.setText(String(D.dayOfMonth)),D.isCurrentMonth||x.addClass("other-month"),D.isToday&&x.addClass("today"),this.plugin.settings.calendar.showNoteIndicators){let Y=D.date.format("YYYY-MM-DD");this.plugin.app.vault.getFiles().some(G=>G.extension==="md"&&G.basename===Y)&&x.addClass("has-note")}x.addEventListener("click",()=>{this.plugin.openPeriodNote("day",D.date)}),x.addEventListener("mousedown",Y=>{if(Y.button===1){Y.preventDefault();let F=this.app.workspace.getLeaf("tab");this.plugin.openPeriodNoteInLeaf("day",D.date,F)}})}}}navigateMonth(t){let a=(0,h.moment)({year:this.currentDisplayYear,month:this.currentDisplayMonth}).add(t,"month");this.currentDisplayMonth=a.month(),this.currentDisplayYear=a.year(),this.redraw()}renderRecentFiles(){let t=this.contentEl.createDiv({cls:"waypoint-section waypoint-recent-files"});if(t.createDiv({cls:"waypoint-section-header",text:"Recent Files"}),this.plugin.recentFiles.length===0){t.createDiv({cls:"nav-file",text:"No recent files"});return}let a=this.app.workspace.getActiveFile(),n=t.createDiv({cls:"nav-folder mod-root"}),o=n.createDiv({cls:"nav-folder-children"});for(let e of this.plugin.recentFiles){let r=o.createDiv({cls:"tree-item nav-file"}),i=r.createDiv({cls:"tree-item-self is-clickable nav-file-title"});i.createDiv({cls:"tree-item-inner nav-file-title-content"}).setText(e.basename);let s=i.createDiv({cls:"tree-item-spacer"}),l=i.createDiv({cls:"waypoint-recent-remove"});(0,h.setIcon)(l,"x"),l.addEventListener("click",d=>{d.stopPropagation(),this.plugin.recentFiles=this.plugin.recentFiles.filter(m=>m.path!==e.path),this.plugin.saveSettings(),this.redraw()}),(0,h.setTooltip)(r,e.path),a&&e.path===a.path&&i.addClass("is-active"),i.setAttr("draggable","true"),i.addEventListener("dragstart",d=>{let m=this.app.metadataCache.getFirstLinkpathDest(e.path,"");m&&(this.app.dragManager.dragFile(d,m),this.app.dragManager.onDragStart(d,this.app.dragManager.dragFile(d,m)))}),i.addEventListener("mouseover",d=>{this.app.workspace.trigger("hover-link",{event:d,source:I,hoverParent:n,targetEl:r,linktext:e.path})}),i.addEventListener("contextmenu",d=>{let m=new h.Menu;m.addItem(w=>w.setSection("action").setTitle("Open in new tab").setIcon("file-plus").onClick(()=>this.focusFile(e,"tab"))),m.addItem(w=>w.setSection("action").setTitle("Add to bookmarks").setIcon("bookmark").onClick(()=>{this.plugin.addBookmark(e.path,e.basename,"file"),new h.Notice(`Bookmarked: ${e.basename}`)}));let u=this.app.vault.getAbstractFileByPath(e.path);u&&this.app.workspace.trigger("file-menu",m,u,"link-context-menu"),m.showAtPosition({x:d.clientX,y:d.clientY})}),i.addEventListener("click",d=>{let m=h.Keymap.isModEvent(d);this.focusFile(e,m)}),i.addEventListener("mousedown",d=>{d.button===1&&(d.preventDefault(),this.focusFile(e,"tab"))})}}focusFile(t,a){let n=this.app.vault.getFiles().find(o=>o.path===t.path);n?this.app.workspace.getLeaf(a).openFile(n):(new h.Notice("Cannot find file"),this.plugin.recentFiles=this.plugin.recentFiles.filter(o=>o.path!==t.path),this.plugin.saveSettings(),this.redraw())}renderFavorites(){let t=this.contentEl.createDiv({cls:"waypoint-section waypoint-favorites"}),a=t.createDiv({cls:"waypoint-section-header"});a.setText("Waypoint Bookmarks");let n=a.createEl("button",{cls:"waypoint-header-more"});if((0,h.setIcon)(n,"more-horizontal"),(0,h.setTooltip)(n,"Add bookmark"),n.addEventListener("click",o=>{let e=new h.Menu;e.addItem(r=>{r.setTitle("Add current file").setIcon("file-plus").onClick(()=>{let i=this.app.workspace.getActiveFile();i&&this.plugin.addBookmark(i.path,i.basename,"file")})}),e.addItem(r=>{r.setTitle("Add as parent note").setIcon("folder-plus").onClick(()=>{let i=this.app.workspace.getActiveFile();if(!i)return;let c=this.plugin.addBookmark(i.path,i.basename,"group","");c.filePath=i.path,this.plugin.saveWaypointData(),this.redraw()})}),e.addItem(r=>{r.setTitle("New group").setIcon("folder-plus").onClick(()=>{this.plugin.addBookmark("","New Group","group","")})}),e.addSeparator(),e.addItem(r=>{r.setTitle("Add separator").setIcon("minus").onClick(()=>{this.plugin.addBookmark("","","separator")})}),e.addItem(r=>{r.setTitle("Add spacer").setIcon("space").onClick(()=>{this.plugin.addBookmark("","","spacer")})}),e.showAtPosition({x:o.clientX,y:o.clientY})}),this.plugin.waypointData.bookmarks.length===0){t.createDiv({cls:"waypoint-bookmark-item",text:"No bookmarks"});return}this.renderBookmarkList(t,this.plugin.waypointData.bookmarks,0)}renderBookmarkList(t,a,n){for(let o=0;o{this.dragId=e.id,l.dataTransfer.effectAllowed="move",l.dataTransfer.setData("text/plain",e.id),s.addClass("waypoint-bm-dragging")}),s.addEventListener("dragend",()=>{this.dragId=null,t.querySelectorAll(".waypoint-bm-dragging, .waypoint-bm-drop-line, .waypoint-bm-drop-below, .waypoint-bm-drop-into").forEach(l=>{l.removeClass("waypoint-bm-dragging"),l.removeClass("waypoint-bm-drop-line"),l.removeClass("waypoint-bm-drop-below")})}),s.addEventListener("dragenter",l=>{l.preventDefault(),!(!this.dragId||this.dragId===e.id)&&this.showDropIndicator(s,l,!1)}),s.addEventListener("dragover",l=>{l.preventDefault(),!(!this.dragId||this.dragId===e.id)&&this.showDropIndicator(s,l,!1)}),s.addEventListener("dragleave",()=>{s.removeClass("waypoint-bm-drop-line"),s.removeClass("waypoint-bm-drop-below"),s.removeClass("waypoint-bm-drop-into")}),s.addEventListener("drop",l=>{var u;l.preventDefault(),this.dragId=null,s.removeClass("waypoint-bm-drop-line"),s.removeClass("waypoint-bm-drop-below");let d=(u=l.dataTransfer)==null?void 0:u.getData("text/plain");if(!d||d===e.id)return;let m=s.__dropAbove;this.moveBookmarkToPosition(d,e.id,m)}),s.addEventListener("contextmenu",l=>{l.stopPropagation(),l.preventDefault(),this.showBookmarkContextMenu(l,e)});continue}if(e.type==="spacer"){let s=t.createDiv({cls:"waypoint-bookmark-item waypoint-bookmark-spacer"});s.setAttr("draggable","true"),s.setAttr("data-bm-id",e.id),s.style.paddingLeft=`${8+n*16}px`,s.style.cursor="grab",s.addEventListener("dragstart",l=>{this.dragId=e.id,l.dataTransfer.effectAllowed="move",l.dataTransfer.setData("text/plain",e.id),s.addClass("waypoint-bm-dragging")}),s.addEventListener("dragend",()=>{this.dragId=null,t.querySelectorAll(".waypoint-bm-dragging, .waypoint-bm-drop-line, .waypoint-bm-drop-below, .waypoint-bm-drop-into").forEach(l=>{l.removeClass("waypoint-bm-dragging"),l.removeClass("waypoint-bm-drop-line"),l.removeClass("waypoint-bm-drop-below")})}),s.addEventListener("dragenter",l=>{l.preventDefault(),!(!this.dragId||this.dragId===e.id)&&this.showDropIndicator(s,l,!1)}),s.addEventListener("dragover",l=>{l.preventDefault(),!(!this.dragId||this.dragId===e.id)&&this.showDropIndicator(s,l,!1)}),s.addEventListener("dragleave",()=>{s.removeClass("waypoint-bm-drop-line"),s.removeClass("waypoint-bm-drop-below"),s.removeClass("waypoint-bm-drop-into")}),s.addEventListener("drop",l=>{var u;l.preventDefault(),this.dragId=null,s.removeClass("waypoint-bm-drop-line"),s.removeClass("waypoint-bm-drop-below");let d=(u=l.dataTransfer)==null?void 0:u.getData("text/plain");if(!d||d===e.id)return;let m=s.__dropAbove;this.moveBookmarkToPosition(d,e.id,m)}),s.addEventListener("contextmenu",l=>{l.stopPropagation(),l.preventDefault(),this.showBookmarkContextMenu(l,e)});continue}let r=e.type==="group",i=t.createDiv({cls:`waypoint-bookmark-item${r?" waypoint-bookmark-group":""}${e.collapsed?" collapsed":""}`});i.setAttr("draggable","true"),i.setAttr("data-bm-id",e.id),r||(i.style.paddingLeft=`${8+n*16}px`),i.addEventListener("dragstart",s=>{this.dragId=e.id,s.dataTransfer.effectAllowed="move",s.dataTransfer.setData("text/plain",e.id),i.addClass("waypoint-bm-dragging")});let c=r||e.children&&e.children.length>0;if(i.addEventListener("dragend",()=>{this.dragId=null,t.querySelectorAll(".waypoint-bm-dragging, .waypoint-bm-drop-line, .waypoint-bm-drop-below, .waypoint-bm-drop-into").forEach(s=>{s.removeClass("waypoint-bm-dragging"),s.removeClass("waypoint-bm-drop-line"),s.removeClass("waypoint-bm-drop-below"),s.removeClass("waypoint-bm-drop-into")})}),i.addEventListener("dragenter",s=>{s.preventDefault(),!(!this.dragId||this.dragId===e.id)&&this.showDropIndicator(i,s,c)}),i.addEventListener("dragover",s=>{s.preventDefault(),!(!this.dragId||this.dragId===e.id)&&this.showDropIndicator(i,s,c)}),i.addEventListener("dragleave",()=>{i.removeClass("waypoint-bm-drop-line"),i.removeClass("waypoint-bm-drop-below"),i.removeClass("waypoint-bm-drop-into")}),i.addEventListener("drop",s=>{var m;s.preventDefault(),this.dragId=null,i.removeClass("waypoint-bm-drop-line"),i.removeClass("waypoint-bm-drop-below"),i.removeClass("waypoint-bm-drop-into");let l=(m=s.dataTransfer)==null?void 0:m.getData("text/plain");if(!l||l===e.id)return;if(i.__dropInto&&c)this.moveBookmarkToGroup(l,e.id);else{let u=i.__dropAbove;this.moveBookmarkToPosition(l,e.id,u)}}),r){let s=i.createDiv({cls:"waypoint-bm-chevron"});(0,h.setIcon)(s,"chevron-down"),s.addEventListener("click",u=>{u.stopPropagation(),this.plugin.updateBookmark(e.id,{collapsed:!e.collapsed})});let l=i.createDiv({cls:"waypoint-bm-icon"});e.icon&&(0,h.setIcon)(l,e.icon);let d=i.createDiv({cls:"waypoint-bm-label",text:e.label});i.addEventListener("click",u=>{if(e.filePath){let w=this.app.vault.getFileByPath(e.filePath);if(w){let P=h.Keymap.isModEvent(u);this.app.workspace.getLeaf(P).openFile(w);return}}this.plugin.updateBookmark(e.id,{collapsed:!e.collapsed})}),i.addEventListener("mousedown",u=>{if(u.button===1&&e.filePath){u.preventDefault();let w=this.app.vault.getFileByPath(e.filePath);w&&this.app.workspace.getLeaf("tab").openFile(w)}});let m=t.createDiv({cls:`waypoint-bookmark-children${e.collapsed?" collapsed":""}`});e.children&&e.children.length>0&&this.renderBookmarkList(m,e.children,n+1)}else{if(e.children&&e.children.length>0){let d=i.createDiv({cls:"waypoint-bm-chevron"});(0,h.setIcon)(d,"chevron-down"),d.addEventListener("click",m=>{m.stopPropagation(),this.plugin.updateBookmark(e.id,{collapsed:!e.collapsed})}),e.collapsed&&(i.addClass("collapsed"),d.style.transform="rotate(-90deg)")}let s=i.createDiv({cls:"waypoint-bm-icon"});e.icon&&(0,h.setIcon)(s,e.icon);let l=i.createDiv({cls:"waypoint-bm-label",text:e.label});if((0,h.setTooltip)(i,e.filePath),i.addEventListener("click",d=>{if(e.filePath){let m=this.app.vault.getFileByPath(e.filePath);if(m){let u=h.Keymap.isModEvent(d);this.app.workspace.getLeaf(u).openFile(m)}else new h.Notice("File not found"),this.plugin.removeBookmark(e.id)}}),i.addEventListener("mousedown",d=>{if(d.button===1&&e.filePath){d.preventDefault();let m=this.app.vault.getFileByPath(e.filePath);m&&this.app.workspace.getLeaf("tab").openFile(m)}}),e.children&&e.children.length>0){let d=t.createDiv({cls:`waypoint-bookmark-children${e.collapsed?" collapsed":""}`});this.renderBookmarkList(d,e.children,n+1)}}i.addEventListener("contextmenu",s=>{s.stopPropagation(),s.preventDefault(),this.showBookmarkContextMenu(s,e)})}}showBookmarkContextMenu(t,a){let n=new h.Menu;if(a.type==="separator"||a.type==="spacer"){n.addItem(o=>o.setTitle("Remove").setIcon("trash").onClick(()=>this.plugin.removeBookmark(a.id))),n.showAtPosition({x:t.clientX,y:t.clientY});return}a.type==="file"?(n.addItem(o=>o.setTitle("Open in new tab").setIcon("file-plus").onClick(()=>{let e=this.app.vault.getFileByPath(a.filePath);e&&this.app.workspace.getLeaf("tab").openFile(e)})),n.addSeparator(),n.addItem(o=>o.setTitle("Rename").setIcon("pencil").onClick(()=>this.promptRename(a))),n.addItem(o=>o.setTitle("Change icon").setIcon("image").onClick(()=>this.promptIcon(a))),n.addSeparator(),n.addItem(o=>o.setTitle("Remove").setIcon("trash").onClick(()=>this.plugin.removeBookmark(a.id)))):a.type==="group"&&(a.filePath&&(n.addItem(o=>o.setTitle("Open in new tab").setIcon("file-plus").onClick(()=>{let e=this.app.vault.getFileByPath(a.filePath);e&&this.app.workspace.getLeaf("tab").openFile(e)})),n.addSeparator()),n.addItem(o=>o.setTitle("Rename").setIcon("pencil").onClick(()=>this.promptRename(a))),n.addItem(o=>o.setTitle("Change icon").setIcon("image").onClick(()=>this.promptIcon(a))),n.addItem(o=>o.setTitle(a.collapsed?"Expand":"Collapse").setIcon(a.collapsed?"chevron-down":"chevron-up").onClick(()=>this.plugin.updateBookmark(a.id,{collapsed:!a.collapsed}))),n.addSeparator(),n.addItem(o=>o.setTitle("Add child bookmark").setIcon("file-plus").onClick(()=>{let e=this.app.workspace.getActiveFile();if(!e){new h.Notice("No active file");return}let r={id:`bm-${Date.now()}-${Math.random().toString(36).slice(2,6)}`,type:"file",label:e.basename,filePath:e.path,icon:"",children:[],collapsed:!1,indent:a.indent+1};a.children.push(r),this.plugin.saveWaypointData(),this.redraw()})),n.addItem(o=>o.setTitle("Add child note").setIcon("folder-plus").onClick(()=>{let e=this.app.workspace.getActiveFile();if(!e){new h.Notice("No active file");return}let r={id:`bm-${Date.now()}-${Math.random().toString(36).slice(2,6)}`,type:"group",label:e.basename,filePath:e.path,icon:"",children:[],collapsed:!1,indent:a.indent+1};a.children.push(r),this.plugin.saveWaypointData(),this.redraw()})),n.addItem(o=>o.setTitle("New sub-group").setIcon("folder-plus").onClick(()=>{let e={id:`bm-${Date.now()}-${Math.random().toString(36).slice(2,6)}`,type:"group",label:"New Group",filePath:"",icon:"",children:[],collapsed:!1,indent:a.indent+1};a.children.push(e),this.plugin.saveWaypointData(),this.redraw()})),n.addSeparator(),n.addItem(o=>o.setTitle("Remove").setIcon("trash").onClick(()=>this.plugin.removeBookmark(a.id)))),n.showAtPosition({x:t.clientX,y:t.clientY})}showDropIndicator(t,a,n){let o=t.parentElement;o&&o.querySelectorAll(".waypoint-bm-drop-line, .waypoint-bm-drop-below, .waypoint-bm-drop-into").forEach(i=>{i.removeClass("waypoint-bm-drop-line"),i.removeClass("waypoint-bm-drop-below"),i.removeClass("waypoint-bm-drop-into")});let e=t.getBoundingClientRect(),r=a.clientY;if(n){let i=e.top+e.height*.25,c=e.top+e.height*.75;rc?(t.addClass("waypoint-bm-drop-line"),t.addClass("waypoint-bm-drop-below"),t.__dropAbove=!1,t.__dropInto=!1):(t.addClass("waypoint-bm-drop-into"),t.__dropAbove=!1,t.__dropInto=!0)}else{let i=r{let r=e.findIndex(i=>i.id===t);if(r>=0){let[i]=e.splice(r,1);return i}for(let i of e){let c=n(i.children);if(c)return c}return null},o=n(this.plugin.waypointData.bookmarks);if(o){if(a){let e=(r,i)=>r.id===i?!0:r.children.some(c=>e(c,i));if(o.id===a||e(o,a))return}if(a){let e=i=>{for(let c of i){if(c.id===a)return c;let s=e(c.children);if(s)return s}return null},r=e(this.plugin.waypointData.bookmarks);r&&(o.indent=r.indent+1,r.children.push(o))}else o.indent=0,this.plugin.waypointData.bookmarks.push(o);this.plugin.saveWaypointData(),this.redraw()}}moveBookmarkToPosition(t,a,n){let o=c=>{let s=c.findIndex(l=>l.id===t);if(s>=0){let[l]=c.splice(s,1);return{item:l,parent:c}}for(let l of c)if(l.children){let d=o(l.children);if(d.item)return d}return{item:null,parent:[]}},{item:e}=o(this.plugin.waypointData.bookmarks);if(!e)return;let r=c=>{let s=c.findIndex(l=>l.id===a);if(s>=0)return{parent:c,idx:s};for(let l of c)if(l.children){let d=r(l.children);if(d)return d}return null},i=r(this.plugin.waypointData.bookmarks);if(!i)e.indent=0,this.plugin.waypointData.bookmarks.push(e);else{let c=n?i.idx:i.idx+1;i.parent.splice(c,0,e)}this.plugin.saveWaypointData(),this.redraw()}promptRename(t){new q(this.app,t.label,a=>{a&&a.trim()&&this.plugin.updateBookmark(t.id,{label:a.trim()})}).open()}promptIcon(t){new V(this.app,t.icon,a=>{a&&this.plugin.updateBookmark(t.id,{icon:a})}).open()}},q=class extends h.Modal{constructor(p,t,a){super(p),this.currentValue=t,this.onSubmit=a}onOpen(){this.titleEl.setText("Rename bookmark");let p=this.contentEl.createEl("input",{type:"text",value:this.currentValue});p.style.width="100%",p.style.marginBottom="12px",p.focus(),p.select();let t=this.contentEl.createDiv({cls:"modal-button-container"}),a=t.createEl("button",{text:"Cancel",cls:"mod-cta"});a.style.marginRight="8px",a.addEventListener("click",()=>this.close()),t.createEl("button",{text:"Save",cls:"mod-cta"}).addEventListener("click",()=>{this.onSubmit(p.value),this.close()}),p.addEventListener("keydown",o=>{o.key==="Enter"&&(this.onSubmit(p.value),this.close())})}onClose(){this.contentEl.empty()}},V=class extends h.Modal{constructor(t,a,n){super(t);this.allIcons=[];this.tagsMap={};this.loaded=!1;this.selected=a,this.onSubmit=n}async onOpen(){let t=this.contentEl;t.style.display="flex",t.style.flexDirection="column",t.style.gap="10px",this.titleEl.setText("Change icon");let a=t.createDiv({cls:"waypoint-icon-preview"});a.style.display="flex",a.style.alignItems="center",a.style.gap="10px",a.style.padding="12px 16px",a.style.borderRadius="8px",a.style.background="var(--background-secondary)",a.style.minHeight="48px";let n=a.createSpan();n.style.display="flex",this.selected&&(0,h.setIcon)(n,this.selected);let o=a.createSpan();o.style.fontWeight="var(--font-medium)",o.style.fontSize="var(--font-ui-medium)",o.setText(this.selected||"No icon");let e=t.createEl("input",{type:"text",placeholder:"Type to search (e.g. arrow, chart, home)..."});Object.assign(e.style,{width:"100%",boxSizing:"border-box",padding:"8px 10px",borderRadius:"6px",border:"1px solid var(--background-modifier-border)",background:"var(--background-primary)",color:"var(--text-normal)",fontSize:"var(--font-ui-medium)"}),e.focus();let r=t.createDiv({cls:"waypoint-icon-grid"});r.style.display="grid",r.style.gridTemplateColumns="repeat(auto-fill, minmax(52px, 1fr))",r.style.gap="4px",r.style.maxHeight="320px",r.style.overflowY="auto",r.style.padding="2px 0";let i=t.createDiv();i.style.display="flex",i.style.justifyContent="space-between",i.style.alignItems="center",i.style.fontSize="var(--font-ui-smaller)",i.style.color="var(--text-muted)",i.style.padding="0 4px";let c=i.createSpan();c.setText("Loading\u2026");let s=i.createSpan();s.style.cursor="var(--cursor)",s.style.color="var(--text-accent)",s.setText("No icon"),s.addEventListener("click",()=>{this.onSubmit(""),this.close()}),this.loadIcons().then(()=>{this.loaded=!0,c.setText(this.allIcons.length+" icons"),d(e.value)});let l=null,d=P=>{if(r.empty(),!this.loaded){r.createDiv({text:"Loading\u2026"});return}let M=P.toLowerCase().trim(),L=M?this.allIcons.filter(b=>{if(b.includes(M))return!0;let E=this.tagsMap[b];return E?E.some(g=>g.includes(M)):!1}).slice(0,80):this.allIcons.slice(0,80);if(L.length===0){let b=r.createDiv();b.style.gridColumn="1 / -1",b.style.textAlign="center",b.style.color="var(--text-muted)",b.style.padding="20px",b.setText('No icons match "'+P+'"');return}for(var B=0;Bnew N(e,this)),this.addSettingTab(new R(this.app,this,this.settings,()=>this.redrawAll())),this.addCommand({id:"waypoint-open-view",name:"Open Waypoint sidebar",callback:async()=>{let e=this.app.workspace.getLeavesOfType(I);if(e.length>0)await this.app.workspace.revealLeaf(e[0]);else{let r=this.app.workspace.getLeftLeaf(!1);r&&(await r.setViewState({type:I}),await this.app.workspace.revealLeaf(r))}}}),this.addCommand({id:"waypoint-add-bookmark",name:"Add current file as Waypoint bookmark",callback:async()=>{let e=this.app.workspace.getActiveFile();if(!e){new f.Notice("No active file");return}this.addBookmark(e.path,e.basename,"file"),new f.Notice(`Bookmarked: ${e.basename}`)}}),this.addCommand({id:"waypoint-go-to-daily",name:"Go to daily note",hotkeys:[{modifiers:["Mod","Shift","Alt"],key:"d"}],callback:async()=>{await this.openPeriodNote("day",(0,f.moment)())}}),this.addCommand({id:"waypoint-go-to-weekly",name:"Go to weekly note",hotkeys:[{modifiers:["Mod","Shift","Alt"],key:"w"}],callback:async()=>{await this.openPeriodNote("week",(0,f.moment)())}}),this.addCommand({id:"waypoint-go-to-monthly",name:"Go to monthly note",hotkeys:[{modifiers:["Mod","Shift","Alt"],key:"m"}],callback:async()=>{await this.openPeriodNote("month",(0,f.moment)())}}),this.addCommand({id:"waypoint-go-to-quarterly",name:"Go to quarterly note",hotkeys:[{modifiers:["Mod","Shift","Alt"],key:"q"}],callback:async()=>{await this.openPeriodNote("quarter",(0,f.moment)())}}),this.addCommand({id:"waypoint-go-to-yearly",name:"Go to yearly note",hotkeys:[{modifiers:["Mod","Shift","Alt"],key:"y"}],callback:async()=>{await this.openPeriodNote("year",(0,f.moment)())}});let t=["next","prev"],a=["daily","weekly","monthly","quarterly","yearly"],n={next:"Next",prev:"Previous"};for(let e of a)for(let r of t){let i=`waypoint-go-to-${r}-${e}`,c=`${n[r]} ${e} note`;this.addCommand({id:i,name:c,callback:async()=>{await this.navigatePeriodNote(r)}})}this.registerEvent(this.app.workspace.on("file-open",e=>{e&&this.onFileOpen(e)})),this.registerEvent(this.app.vault.on("create",()=>this.onVaultChange())),this.registerEvent(this.app.vault.on("delete",()=>this.onVaultChange())),this.registerEvent(this.app.vault.on("rename",(e,r)=>this.onRename(e,r))),this.app.workspace.onLayoutReady(()=>{if(this.app.workspace.getLeavesOfType(I).length===0){let r=this.app.workspace.getLeftLeaf(!1);r&&r.setViewState({type:I})}});let o=new Date().toDateString();this.registerInterval(window.setInterval(()=>{let e=new Date().toDateString();e!==o&&(o=e,this.redrawAll())},6e5))}async onunload(){this.app.workspace.detachLeavesOfType(I)}async loadSettings(){let t=await this.loadData(),a=(t==null?void 0:t.settings)||{};this.settings=Object.assign({},_,a)}async saveSettings(){let t=await this.loadData()||{};t.settings=this.settings,await this.saveData(t)}async loadWaypointData(){let t=await this.loadData(),a=(t==null?void 0:t.waypointData)||{};this.waypointData=Object.assign({},Z,a)}async saveWaypointData(){let t=await this.loadData()||{};t.waypointData=this.waypointData,await this.saveData(t)}onFileOpen(t){this.settings.recentFiles.updateOn!=="file-edit"&&this.addToRecentFiles(t)}addToRecentFiles(t){this.recentFiles=this.recentFiles.filter(a=>a.path!==t.path),this.recentFiles.unshift({path:t.path,basename:t.basename}),this.recentFiles.length>this.settings.recentFiles.maxItems&&(this.recentFiles=this.recentFiles.slice(0,this.settings.recentFiles.maxItems)),this.broadcastRedraw()}onRename(t,a){let n=this.recentFiles.find(o=>o.path===a);n&&(n.path=t.path,n.basename=t.basename||t.name.replace(/\.[^/.]+$/,""),this.broadcastRedraw()),this.updateBookmarkPath(a,t.path)}onVaultChange(){this.broadcastRedraw()}addBookmark(t,a,n="file",o=""){let r={id:`bm-${Date.now()}-${Math.random().toString(36).slice(2,6)}`,type:n,label:a,filePath:n==="file"?t:"",icon:o,children:[],collapsed:!1,indent:0};return this.waypointData.bookmarks.push(r),this.saveWaypointData(),this.broadcastRedraw(),r}removeBookmark(t){let a=n=>{let o=n.findIndex(e=>e.id===t);if(o>=0)return n.splice(o,1),!0;for(let e of n)if(e.children&&a(e.children))return!0;return!1};a(this.waypointData.bookmarks),this.saveWaypointData(),this.broadcastRedraw()}updateBookmark(t,a){let n=e=>{for(let r of e){if(r.id===t)return r;if(r.children){let i=n(r.children);if(i)return i}}return null},o=n(this.waypointData.bookmarks);o&&(Object.assign(o,a),this.saveWaypointData(),this.broadcastRedraw())}updateBookmarkPath(t,a){let n=o=>{for(let e of o)e.filePath===t&&(e.filePath=a),e.children&&n(e.children)};n(this.waypointData.bookmarks)}async openPeriodNote(t,a){let o={day:{settings:this.settings.daily,label:"Daily"},week:{settings:this.settings.weekly,label:"Weekly"},month:{settings:this.settings.monthly,label:"Monthly"},quarter:{settings:this.settings.quarterly,label:"Quarterly"},year:{settings:this.settings.yearly,label:"Yearly"}}[t];if(!o)return;let{settings:e}=o,r=a.format(e.nameFormat)+".md",i=e.folder?`${e.folder}/${r}`:r,c=this.app.vault.getFileByPath(i);if(!c){try{let s=e.templateFile+".md",l=this.app.vault.getFileByPath(s);if(l){let d=await this.app.vault.read(l);c=await this.app.vault.create(i,d)}else{let d=`--- type: ${e.typeProperty} date: ${a.format("YYYY-MM-DD")} --- `;c=await this.app.vault.create(i,d)}}catch(s){new f.Notice(`Failed to create ${o.label.toLowerCase()} note: ${s.message}`);return}new f.Notice(`Created ${o.label.toLowerCase()} note: ${r}`)}c&&await this.app.workspace.getLeaf(!1).openFile(c)}async openPeriodNoteInLeaf(t,a,n){let e={day:{settings:this.settings.daily,label:"Daily"},week:{settings:this.settings.weekly,label:"Weekly"},month:{settings:this.settings.monthly,label:"Monthly"},quarter:{settings:this.settings.quarterly,label:"Quarterly"},year:{settings:this.settings.yearly,label:"Yearly"}}[t];if(!e)return;let{settings:r}=e,i=a.format(r.nameFormat)+".md",c=r.folder?`${r.folder}/${i}`:i,s=this.app.vault.getFileByPath(c);if(!s)try{let l=r.templateFile+".md",d=this.app.vault.getFileByPath(l);if(d){let m=await this.app.vault.read(d);s=await this.app.vault.create(c,m)}else{let m=`--- type: ${r.typeProperty} date: ${a.format("YYYY-MM-DD")} --- `;s=await this.app.vault.create(c,m)}}catch(l){new f.Notice(`Failed to create ${e.label.toLowerCase()} note: ${l.message}`);return}s&&await n.openFile(s)}detectPeriodType(t){return/^\d{4}-\d{2}-\d{2}$/.test(t)?{period:"day",date:(0,f.moment)(t,"YYYY-MM-DD")}:/^\d{4}-W\d{2}$/.test(t)?{period:"week",date:(0,f.moment)(t,"GGGG-[W]WW")}:/^\d{4}-\d{2}$/.test(t)?{period:"month",date:(0,f.moment)(t,"YYYY-MM")}:/^\d{4}-Q[1-4]$/.test(t)?{period:"quarter",date:(0,f.moment)(t,"YYYY-[Q]Q")}:/^\d{4}$/.test(t)?{period:"year",date:(0,f.moment)(t,"YYYY")}:null}async navigatePeriodNote(t){let a=this.app.workspace.getActiveFile();if(!a){new f.Notice("No active file");return}let n=this.detectPeriodType(a.basename);if(!n){new f.Notice("Current file is not a periodic note (daily/weekly/monthly/quarterly/yearly)");return}let{period:o,date:e}=n;if(!e.isValid()){new f.Notice(`Could not parse date from filename: ${a.basename}`);return}let r=t==="next"?1:-1,i=o==="quarter"?e.clone().add(r*3,"months"):e.clone().add(r,`${o}s`);await this.openPeriodNote(o,i)}redrawAll(){this.broadcastRedraw()}broadcastRedraw(){let t=this.app.workspace.getLeavesOfType(I);for(let a of t)a.view instanceof N&&a.view.redraw()}async getNotesForDate(t){return this.app.vault.getFiles().filter(a=>a.extension==="md"&&a.basename===t)}async hasNoteForDate(t){return this.app.vault.getFiles().some(a=>a.extension==="md"&&a.basename===t)}};