notes/notes/.obsidian/plugins/lapel/main.js
2023-04-02 15:59:13 +02:00

6 lines
3.3 KiB
JavaScript

/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin
*/
var E=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var A=Object.prototype.hasOwnProperty;var N=(i,s)=>{for(var t in s)E(i,t,{get:s[t],enumerable:!0})},B=(i,s,t,n)=>{if(s&&typeof s=="object"||typeof s=="function")for(let e of P(s))!A.call(i,e)&&e!==t&&E(i,e,{get:()=>s[e],enumerable:!(n=M(s,e))||n.enumerable});return i};var D=i=>B(E({},"__esModule",{value:!0}),i);var C={};N(C,{default:()=>w});module.exports=D(C);var v=require("obsidian");var l=require("@codemirror/view"),d=require("obsidian"),m=require("@codemirror/language"),o=require("@codemirror/state"),V=[1,2,3,4,5,6],S="cm-heading-marker",L=class extends l.GutterMarker{constructor(t,n,e,r,a){super();this.app=t;this.view=n;this.headingLevel=e;this.from=r;this.to=a}toDOM(){let t=createDiv({cls:S});return t.dataset.level=String(this.headingLevel),t}};function x(i,s){let t=l.ViewPlugin.fromClass(class{constructor(e){this.view=e;this.markers=this.buildMarkers(i,e)}buildMarkers(e,r){let a=new o.RangeSetBuilder;return(0,m.syntaxTree)(r.state).iterate({enter:({type:g,from:p,to:h})=>{var c;let b=/header-(\d)$/.exec((c=g.prop(m.lineClassNodeProp))!=null?c:"");if(b){let T=Number(b[1]),y=new L(e,r,T,p,h);a.add(p,h,y)}}}),a.finish()}update(e){if(!e.state.field(d.editorLivePreviewField)){this.markers=o.RangeSet.empty;return}this.markers=this.buildMarkers(i,this.view)}}),n=s?o.Prec.high:o.Prec.low;return[t,n((0,l.gutter)({class:"cm-lapel",markers(e){var r;return((r=e.plugin(t))==null?void 0:r.markers)||o.RangeSet.empty},domEventHandlers:{click:(e,r,a)=>{if(a.target instanceof HTMLDivElement&&a.target.classList.contains(S)){let g=new d.Menu(this.app);return V.forEach(p=>{g.addItem(h=>h.setIcon("hash").setTitle(`Heading ${p}`).onClick(()=>{let c=e.state.doc.lineAt(r.from).text.replace(/^#{1,6} /,"");e.dispatch({changes:{from:r.from,to:r.to,insert:`${"#".repeat(p)} ${c}`}})}))}),g.showAtMouseEvent(a),!0}return!1},mousedown:(e,r,a)=>a.target instanceof HTMLDivElement&&a.target.classList.contains(S)}}))]}var f=require("obsidian"),k={showBeforeLineNumbers:!0},u=class extends f.PluginSettingTab{constructor(t,n){super(t,n);this.plugin=n}display(){let{containerEl:t}=this;t.empty(),t.createEl("h3",{text:"Appearance"}),new f.Setting(t).setName("Show before line numbers").setDesc("Toggle whether the heading markers are shown before or after the line numbers in the gutter.").addToggle(n=>n.setValue(this.plugin.settings.showBeforeLineNumbers).onChange(async e=>{this.plugin.updateSettings(()=>({showBeforeLineNumbers:e}))}))}};var w=class extends v.Plugin{async onload(){await this.loadSettings(),this.cmExtension=x(this.app,this.settings.showBeforeLineNumbers),this.registerEditorExtension([this.cmExtension]),this.registerSettingsTab()}async loadSettings(){this.settings=Object.assign({},k,await this.loadData())}registerSettingsTab(){this.addSettingTab(new u(this.app,this))}async updateSettings(t){let n=t(this.settings),e=Object.assign({},this.settings,n);if(this.settings.showBeforeLineNumbers!==n.showBeforeLineNumbers){let r=x(this.app,e.showBeforeLineNumbers);this.cmExtension[0]=r,this.app.workspace.updateOptions()}this.settings=e,await this.saveData(this.settings)}};