WritingSpace/.obsidian/plugins/dynamic-outline/main.js

8 lines
13 KiB
JavaScript
Raw Normal View History

2025-01-22 08:00:25 +00:00
/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin
*/
var b=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var $=Object.prototype.hasOwnProperty;var U=(a,e)=>{for(var t in e)b(a,t,{get:e[t],enumerable:!0})},R=(a,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of N(e))!$.call(a,n)&&n!==t&&b(a,n,{get:()=>e[n],enumerable:!(i=I(e,n))||i.enumerable});return a};var z=a=>R(b({},"__esModule",{value:!0}),a);var G={};U(G,{default:()=>C});module.exports=z(G);var S=require("obsidian");var O=require("obsidian"),j="list",T="dynamic-outline-button",d=class{constructor(e){this._hideTimeout=null;this._plugin=e}_createButtonHTML(){let e=createEl("button",{cls:`clickable-icon view-action ${T}`,attr:{"aria-label":"Toggle Dynamic Outline"}});return(0,O.setIcon)(e,j),e}_handleButtonClick(){let e=this._plugin.getActiveMarkdownView();if(!e)return;let t=this._plugin.windowManager.getWindowFromView(e);if(t){if(this._plugin.settings.toggleOnHover){if(t.hasAttribute("pinned"))this.clearHideTimeout();else{t.setAttribute("pinned","");return}t.removeAttribute("pinned")}this._plugin.windowManager.hideWindowFromView(e)}else{let i=this._plugin.windowManager.createWindowForView(e,this._plugin.headingsManager.getHeadingsForView(e));this._plugin.settings.toggleOnHover&&(this._plugin.registerDomEvent(i,"mouseenter",()=>this.clearHideTimeout()),i.setAttribute("pinned",""))}}_handleMouseEnter(){let e=this._plugin.getActiveMarkdownView();if(!e)return;if(!this._plugin.windowManager.getWindowFromView(e)){let i=this._plugin.windowManager.createWindowForView(e,this._plugin.headingsManager.getHeadingsForView(e));this._plugin.settings.toggleOnHover&&(this._plugin.registerDomEvent(i,"mouseenter",()=>this.clearHideTimeout()),this._plugin.registerDomEvent(i,"mouseleave",()=>this._handleMouseLeave()))}this._plugin.settings.toggleOnHover&&this.clearHideTimeout()}_handleMouseLeave(){let e=this._plugin.getActiveMarkdownView();if(!e)return;let t=this._plugin.windowManager.getWindowFromView(e);t&&(t.hasAttribute("pinned")||(this._hideTimeout=setTimeout(()=>{this._plugin.windowManager.hideWindowFromView(e)},100)))}clearHideTimeout(){this._hideTimeout&&(clearTimeout(this._hideTimeout),this._hideTimeout=null)}addButtonToLeaf(e){if(this.getButtonFromLeaf(e))return;let t=e.view.containerEl.querySelector("div.view-actions");if(!t)return;let i=this._createButtonHTML();return t.insertBefore(i,t.firstChild),this._plugin.registerDomEvent(i,"click",n=>this._handleButtonClick()),this._plugin.settings.toggleOnHover&&(this._plugin.registerDomEvent(i,"mouseenter",()=>this._handleMouseEnter()),this._plugin.registerDomEvent(i,"mouseleave",()=>this._handleMouseLeave())),i}addButtonToLeaves(){this._plugin.app.workspace.onLayoutReady(()=>{this._plugin.getAllMarkdownLeaves().forEach(t=>{this.addButtonToLeaf(t)})})}getButtonFromLeaf(e){return e.view.containerEl.querySelector(`button.${T}`)}removeButtonFromLeaf(e){var t;(t=this.getButtonFromLeaf(e))==null||t.remove()}removeButtonFromLeaves(){this._plugin.getAllMarkdownLeaves().forEach(t=>{this.removeButtonFromLeaf(t)})}};var V=require("obsidian");var h=class{constructor(e,t){this.plugin=t,this.searchContainer=e,this.inputField=this.searchContainer.createEl("input",{attr:{placeholder:"Search headings...",type:"search"}}),this.clearButton=this.searchContainer.createEl("div",{cls:"search-input-clear-button dynamic-outline-search-clear-button",attr:{"aria-label":"Clear search"}}),this.setupEventListeners()}setupEventListeners(){this.plugin.registerDomEvent(this.searchContainer,"input",()=>{this.toggleClearButton()}),this.plugin.registerDomEvent(this.clearButton,"click",()=>{this.clearInput()})}toggleClearButton(){this.inputField.value.length>0?(this.clearButton.classList.add("visible"),this.inputField.classList.add("has-content")):(this.clearButton.classList.remove("visible"),this.inputField.classList.remove("has-content"))}clearInput(){this.inputField.value="";let e=new Event("input",{bubbles:!0,cancelable:!0});this.inputField.dispatchEvent(e),this.inputField.focus()}};var m=class{constructor(e){this.plugin=e}handleFileOpen(){let e=this.plu
/* nosourcemap */