4 lines
No EOL
16 KiB
JavaScript
4 lines
No EOL
16 KiB
JavaScript
var M=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var $=Object.getOwnPropertyNames;var J=Object.prototype.hasOwnProperty;var z=(i,o)=>{for(var t in o)M(i,t,{get:o[t],enumerable:!0})},K=(i,o,t,s)=>{if(o&&typeof o=="object"||typeof o=="function")for(let n of $(o))!J.call(i,n)&&n!==t&&M(i,n,{get:()=>o[n],enumerable:!(s=q(o,n))||s.enumerable});return i};var G=i=>K(M({},"__esModule",{value:!0}),i);var it={};z(it,{default:()=>T});module.exports=G(it);var m=require("obsidian");function E(i,o){let t=Object.keys(o).map(s=>U(i,s,o[s]));return t.length===1?t[0]:function(){t.forEach(s=>s())}}function U(i,o,t){let s=i[o],n=i.hasOwnProperty(o),e=t(s);return s&&Object.setPrototypeOf(e,s),Object.setPrototypeOf(r,e),i[o]=r,u;function r(...a){return e===s&&i[o]===r&&u(),e.apply(this,a)}function u(){i[o]===r&&(n?i[o]=s:delete i[o]),e!==s&&(e=s,Object.setPrototypeOf(r,s||Function))}}function j(i,o){return i.then(o,o)}function V(i){let o=Promise.resolve();function t(...s){return o=new Promise((n,e)=>{j(o,()=>{i.apply(this,s).then(n,e)})})}return t.after=function(){return o=new Promise((s,n)=>{j(o,s)})},t}var P=require("obsidian");var B="use.me",R="use.factory",_,O,I=function(){return Object.defineProperties(i(),{this:{get(){if(_)return _;throw new TypeError("No current context")}},me:{value:B},factory:{value:R}});function i(n){let e=new Map;e.prev=n;let r=Object.assign(n?a=>{let l=e.get(a);if(!l){for(let d=e.prev;d;d=d.prev)if(l=d.get(a)){l=Object.assign(Object.assign({},l),{s:l.s||1});break}l=l||{s:2,v:t},e.set(a,l)}let h,y,f;for(;;)switch(l.s){case 0:return _===r&&O&&O.push(a),l.v;case 1:if(h=l.d,!h||u(()=>h.k.every(d=>r(d)===h.c(d)))){l.s=0;break}l.v=h.f;case 2:l.s=4;try{o(e,a,0,u(y=l.v,a,f=[])),f.length&&(l.d={c:r,f:y,k:f});break}catch(d){l.s=3,l.v=d,l.d=null}case 3:throw l.v;case 4:throw new Error(`Factory ${String(l.v)} didn't resolve ${String(a)}`)}}:a=>I.this(a),{def(a,l){return o(e,a,2,l),r},set(a,l){return o(e,a,1,l),r},fork(a){let l=i(e);return a!=null?l(a):l}});return n?r.use=r:r;function u(a,l,h){let y=_,f=O;try{return _=r,O=h,a(l)}finally{_=y,O=f}}}function o(n,e,r,u){if(n.has(e)){let a=n.get(e);if(!a.s)throw new Error(`Already read: ${String(e)}`);a.s=r,a.v=u,a.d=null}else n.set(e,{s:r,v:u})}function t(n){if(typeof n[B]=="function")return n[B](n);if(s(n))return typeof n.prototype[R]=="function"?n.prototype[R]():new n;throw new ReferenceError(`No config for ${String(n)}`)}function s(n){return typeof n=="function"&&n.prototype!==void 0&&(Object.getPrototypeOf(n.prototype)!==Object.prototype||Object.getOwnPropertyNames(n.prototype).length>1||n.toString().startsWith("class"))}}();var Y=(i=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(i,{get:(o,t)=>(typeof require!="undefined"?require:o)[t]}):i)(function(i){if(typeof require!="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+i+'" is not supported')});var S=typeof queueMicrotask=="function"?queueMicrotask:(i=>o=>i.then(o))(Promise.resolve());var X=2,ft=4|X;function Q(){let i,o,t=new Promise((s,n)=>{i=s,o=n});return{resolve:i,reject:o,promise:t}}function D(i,o,t,s,n){return i.on(o,t,s,n),()=>i.off(o,t,s,n)}var x;(i=>{try{Object.assign(i,Y("obsidian"))}catch(o){}})(x||(x={}));var v,W=(i=>(i.service=function(o){return i(A).addChild(o),i.this},i.plugin=function(o){if(!C)v=o.app,C=i.fork(),C.set(x.Plugin,o),C.set(o.constructor,o),o.addChild(C.use(A));else if(o!==C.use(x.Plugin))throw new TypeError("use.plugin() called on multiple plugins");return C},i.def(x.Plugin,()=>{throw new Error("Plugin not created yet")}),i.def(x.App,()=>i(x.Plugin).app),i))(I),C;var A=class extends P.Component{constructor(){super(...arguments),this.children=new Set([this])}onload(){this.loaded=!0}onunload(){this.loaded=!1,this.children.clear()}addChild(i){return this.children.has(i)||(this.children.add(i),this.loaded?S(()=>super.addChild(i)):super.addChild(i)),i}};function N(i,o,t,s){let{resolve:n,promise:e}=Q(),r=new class extends P.FuzzySuggestModal{getItemText(u){var a;return(a=o==null?void 0:o(u))!=null?a:""+u}getItems(){return i}onChooseItem(u,a){n({item:u,event:a})}onClose(){super.onClose(),S(()=>n({item:null,event:null}))}}(v);return t&&r.setPlaceholder(t),s==null||s(r),r.open(),e}function Z(i){return m.Keymap.compileModifiers(i.modifiers)+","+i.key.toLowerCase()}function tt(i){return i==="plugins"||i==="community-plugins"}function F(){var i;return H()&&tt((i=v.setting.activeTab)==null?void 0:i.id)}function H(){return v.setting.containerEl.parentElement!==null}function et(i){return i instanceof m.Modal&&i.hasOwnProperty("autoload")&&typeof i.showPlugin=="function"&&typeof i.updateSearch=="function"&&typeof i.searchEl=="object"}function nt(i){var o;return i instanceof m.Modal&&typeof i.setAutoOpen=="function"&&typeof((o=i.search)==null?void 0:o.inputEl)=="object"}var T=class extends m.Plugin{constructor(){super(...arguments);this.lastSearch={};this.hotkeyButtons={};this.globalsAdded=!1;this.searchInput=null;this.use=W.plugin(this);this.commandsByPlugin={};this.assignedKeyCount={}}onload(){let t=this.app.workspace,s=this,n=t;this.registerEvent(n.on("plugin-settings:before-display",(u,a)=>{this.hotkeyButtons={},this.globalsAdded=!1,this.searchInput=null;for(let l of[m.SettingGroup,m.Setting].filter(h=>!!h)){let h=E(l.prototype,{addSearch(y){return function(f){return h(),y.call(this,d=>{s.searchInput=d,f==null||f(d)})}}});S(h)}})),this.registerEvent(n.on("plugin-settings:after-display",()=>this.refreshButtons(!0))),this.registerEvent(n.on("plugin-settings:plugin-control",(u,a,l,h)=>{this.globalsAdded||this.addGlobals(h,u.settingEl)}));let e=(0,m.debounce)(this.refreshButtons.bind(this),50,!0);function r(u){return function(...a){return e(),u.apply(this,a)}}this.register(E(v.commands,{addCommand:r,removeCommand:r})),this.register(E(v.setting,{addSettingTab:r,removeSettingTab:r})),t.onLayoutReady(this.whenReady.bind(this)),this.registerObsidianProtocolHandler("goto-plugin",({id:u,show:a})=>{t.onLayoutReady(()=>{this.gotoPlugin(u,a)})})}whenReady(){var y,f;let t=this.app,s=this,n=(f=(y=t.internalPlugins.plugins["command-palette"])==null?void 0:y.instance)==null?void 0:f.modal;if(n){this.register(E(n,{onChooseItem(c){return function(g,b){return m.Keymap.isModEvent(b)?(S(()=>s.showHotkeysFor(g.name)),!1):c.call(this,g,b)}}}));let d=n.modalEl.find(".prompt-instructions .prompt-instruction");d&&d.parentNode.insertBefore(createDiv("prompt-instruction",c=>{c.createSpan({cls:"prompt-instruction-command",text:m.Keymap.compileModifiers(["Mod"])+"+\u21B5"}),c.appendText(" "),c.createSpan({text:"to configure hotkey(s)"}),this.register(()=>c.detach())}),null)}let e=this.getSettingsTab("plugins"),r=this.getSettingsTab("community-plugins");e&&this.register(E(e,{display:this.addPluginSettingEvents.bind(this,e.id)})),r&&this.register(E(r,{display:this.addPluginSettingEvents.bind(this,r.id)}));let u=()=>this.enhanceViewer();r&&this.register(D(r.containerEl,"click",".mod-cta, .installed-plugins-container .setting-item-info",u,!0)),this.register(E(t.workspace.protocolHandlers,{get(d){return function(p){return p==="show-plugin"&&u(),d.call(this,p)}}}));function a(){F()&&t.setting.openTabById(t.setting.activeTab.id)}a(),this.register(()=>S(a));let l=this.getSettingsTab("hotkeys");l&&this.register(E(l,{display(d){return function(){var c,p;d.call(this),(p=(c=this.searchInputEl)!=null?c:this.searchComponent.inputEl)==null||p.focus()}},updateHotkeyVisibility(d){return function(){var b;let c=(b=this.searchInputEl)!=null?b:this.searchComponent.inputEl;if(!c)return d.call(this);let p=c.value,g=t.commands.commands;try{if(p.endsWith(":")&&!p.contains(" ")){let w=g,k=Object.fromEntries(Object.entries(t.commands.commands).filter(([L,st])=>(L+":").startsWith(p)));c.value="",t.commands.commands=new Proxy(g,{ownKeys(){try{return Object.keys(w)}finally{w=k}}})}return d.call(this)}finally{c.value=p,t.commands.commands=g}}}})),this.addCommand({id:"open-plugins",name:"Open the Community Plugins settings",callback:()=>this.showSettings("community-plugins")||!0}),this.addCommand({id:"browse-plugins",name:"Browse or search the Community Plugins catalog",callback:()=>this.gotoPlugin()});let h=new Intl.Collator(void 0,{usage:"sort",sensitivity:"base",numeric:!0}).compare;this.addCommand({id:"open-settings",name:"Open settings for plugin...",callback:async()=>{let{item:d}=await N(t.setting.pluginTabs.concat(t.setting.settingTabs).sort((c,p)=>h(c.name,p.name)),c=>c.name,"Select a plugin to open its settings...");d&&this.showSettings(d.id)}}),this.addCommand({id:"open-hotkeys",name:"Open hotkeys for plugin...",callback:async()=>{var g,b;let d=this.refreshCommands(),c=Object.values(t.plugins.plugins).map(w=>w.manifest).concat(Object.entries(t.internalPlugins.plugins).map(([w,{instance:{name:k},_loaded:L}])=>({id:w,name:k,enabled:L})).filter(w=>w.enabled)).concat([{id:"app",name:"App"},{id:"editor",name:((g=this.getSettingsTab("editor"))==null?void 0:g.name)||"Editor"},{id:"workspace",name:((b=this.getSettingsTab("file"))==null?void 0:b.name)||"Files & Links"}]).filter(w=>{var k;return(k=d[w.id])==null?void 0:k.length}),{item:p}=await N(c.sort((w,k)=>h(w.name,k.name)),w=>w.name,"Select a plugin to open its hotkeys...");p&&this.showHotkeysFor(p.id+":")}})}createExtraButtons(t,s,n){s.id!=="app"&&t.addExtraButton(e=>{e.setIcon("gear"),e.onClick(()=>this.showConfigFor(s.id.replace(/^workspace$/,"file"))),e.setTooltip("Options"),e.extraSettingsEl.toggle(n)}),t.addExtraButton(e=>{e.setIcon("any-key"),e.onClick(()=>this.showHotkeysFor(s.id+":")),e.extraSettingsEl.toggle(n),this.hotkeyButtons[s.id]=e})}addGlobals(t,s){var a,l,h;this.globalsAdded=!0;let n=s.parentElement,e;if(t!=="plugins"||this.searchInput)(a=e=this.searchInput)==null||a.onChange(u);else{let y=new m.Setting(n).addSearch(f=>{e=f,f.setPlaceholder("Filter plugins...").onChange(u)});e.containerEl.style.margin="0",n.createDiv("hotkey-search-container").append(e.containerEl),y.settingEl.detach()}t==="community-plugins"&&e.inputEl.addEventListener("keydown",y=>{if(y.keyCode===13&&!m.Keymap.getModifiers(y))return this.gotoPlugin(),!1});let r=this;function u(y){let f=(r.lastSearch[t]=y).toLowerCase();function d(c){if(!c)return!1;let p=c.textContent=c.textContent,g=p.toLowerCase().indexOf(f);return~g?(c.textContent=p.substr(0,g),c.createSpan("suggestion-highlight").textContent=p.substr(g,f.length),c.insertAdjacentText("beforeend",p.substr(g+f.length)),!0):!1}n.findAll(".setting-item").forEach(c=>{var w;let p=d(c.find(".setting-item-name")),g=d((w=c.find(".setting-item-description > div:last-child:not(.plugin-comment)"))!=null?w:c.find(".setting-item-description > div:nth-child(3):not(.plugin-comment)")),b=d(c.find(".setting-item-description > div:nth-child(2)"));c.toggle(p||g||b)})}if(S(()=>{e&&(e&&typeof r.lastSearch[t]=="string"&&(e.setValue(r.lastSearch[t]),e.onChanged()),m.Platform.isMobile||e.inputEl.select())}),n.append(s),t==="plugins"){let y=((l=this.getSettingsTab("editor"))==null?void 0:l.name)||"Editor",f=((h=this.getSettingsTab("file"))==null?void 0:h.name)||"Files & Links";this.createExtraButtons(new m.Setting(s.parentElement).setName("App").setDesc("Miscellaneous application commands (always enabled)"),{id:"app",name:"App"},!0),this.createExtraButtons(new m.Setting(s.parentElement).setName(y).setDesc("Core editing commands (always enabled)"),{id:"editor",name:y},!0),this.createExtraButtons(new m.Setting(s.parentElement).setName(f).setDesc("Core file and pane management commands (always enabled)"),{id:"workspace",name:f},!0),s.parentElement.append(s)}}enhanceViewer(){let t=this;setTimeout(E(m.Modal.prototype,{open(s){return function(...n){return nt(this)&&(S(()=>{t.lastSearch["community-plugins"]&&(this.search.inputEl.value=t.lastSearch["community-plugins"],this.search.inputEl.dispatchEvent(new Event("input")))}),t.currentViewer=this,E(this,{close(e){return function(...r){return t.currentViewer=null,e.apply(this,r)}},showItem(e){return async function(r){let u=await e.call(this,r);if(t.app.plugins.plugins[r.id]){let a=i18next.t("setting.hotkeys.name"),l=this.detailsEl.find("button").parentElement;for(let h of l.findAll("button"))h.textContent===a&&(t.hotkeyButtons[r.id]={setTooltip(y){return h.title=y,this},extraSettingsEl:h});t.refreshButtons(!0)}return u}}})),et(this)&&(S(()=>{if(t.lastSearch["community-plugins"]){let e=this.searchResultEl.cloneNode();this.searchContainerEl.replaceChild(e,this.searchResultEl),this.searchResultEl=e,this.searchEl.value=t.lastSearch["community-plugins"],this.searchEl.dispatchEvent(new Event("input"))}this.searchEl.select()}),t.currentViewer=this,E(this,{updateSearch:V,close(e){return function(...r){return t.currentViewer=null,e.apply(this,r)}},showPlugin(e){return async function(r){let u=await e.call(this,r);if(t.app.plugins.plugins[r.id]){let a=i18next.t("setting.hotkeys.name"),l=this.pluginContentEl.find("button").parentElement;for(let h of l.findAll("button"))h.textContent===a&&(t.hotkeyButtons[r.id]={setTooltip(y){return h.title=y,this},extraSettingsEl:h});t.refreshButtons(!0)}return u}}})),s.apply(this,n)}}}),0)}getSettingsTab(t){return v.setting.settingTabs.filter(s=>s.id===t).shift()}addPluginSettingEvents(t,s){let n=this.app,e=this,r=!1;function u(a,...l){r=!0;try{n.workspace.trigger(a,...l)}catch(h){console.error(h)}r=!1}return function(...l){if(r)return;u("plugin-settings:before-display",this,t);let h;t==="plugins"?h=Object.entries(n.internalPlugins.plugins).map(([c,{instance:{name:p,hiddenFromList:g},_loaded:b}])=>!g&&{id:c,name:p,enabled:b}).filter(c=>c):h=Object.values(n.plugins.manifests),h.sort((c,p)=>c.name.localeCompare(p.name));let y=0,f="",d=E(m.Setting.prototype,{addExtraButton(c){return function(p){if(!r&&(t==="plugins"||this.descEl.childElementCount)&&(h[y]||{}).name===this.nameEl.textContent){let g=h[y++];f=g.id,u("plugin-settings:plugin-control",this,g,g.enabled,t)}return c.call(this,function(g){p(g),!r&&g.extraSettingsEl.find("svg.any-key, svg.lucide-plus-circle")&&f&&(e.hotkeyButtons[f]=g,g.onClick(e.showHotkeysFor.bind(e,f+":")))})}}});try{return s.apply(this,l)}finally{d(),u("plugin-settings:after-display",this)}}}gotoPlugin(t,s="info"){if(t&&s==="hotkeys")return this.showHotkeysFor(t+":");if(t&&s==="config"){this.showConfigFor(t)||this.app.setting.close();return}if(!this.showSettings("community-plugins"))return;let n=E(m.Modal.prototype,{open(e){return function(...r){var u;return n(),t&&(this.autoload=t,(u=this.setAutoOpen)==null||u.call(this,t)),e.apply(this,r)}}});this.app.setting.activeTab.containerEl.find(".mod-cta").click()}showSettings(t){var s,n,e;if((s=this.currentViewer)==null||s.close(),H()||v.setting.open(),t)return((n=v.setting.activeTab)==null?void 0:n.id)!==t&&v.setting.openTabById(t),((e=v.setting.activeTab)==null?void 0:e.id)===t?v.setting.activeTab:!1}showHotkeysFor(t){var n,e;let s=this.showSettings("hotkeys");s&&((n=s.searchInputEl)!=null?n:s.searchComponent.inputEl)&&s.updateHotkeyVisibility&&(((e=s.searchInputEl)!=null?e:s.searchComponent.inputEl).value=t,s.updateHotkeyVisibility())}showConfigFor(t){return this.showSettings(t)?!0:(new m.Notice(`No settings tab for "${t}": it may not be installed or might not have settings.`),!1)}pluginEnabled(t){var s;return((s=v.internalPlugins.plugins[t])==null?void 0:s._loaded)||v.plugins.plugins[t]}refreshCommands(){let t=v.hotkeyManager;return this.assignedKeyCount={},this.commandsByPlugin=Object.values(v.commands.commands).reduce((s,n)=>{let e=n.id.split(":",2).shift(),r=(t.getHotkeys(n.id)||t.getDefaultHotkeys(n.id)||[]).map(Z);return r.forEach(u=>this.assignedKeyCount[u]=1+(this.assignedKeyCount[u]||0)),(s[e]||(s[e]=[])).push({hotkeys:r,cmd:n}),s},{})}refreshButtons(t=!1){var n;if(!F()&&!t)return;this.refreshCommands();let s=Object.values(v.setting.pluginTabs).reduce((e,r)=>(e[r.id]=r,e),{});s.workspace=s.editor=!0;for(let e of Object.keys(this.hotkeyButtons||{})){let r=this.hotkeyButtons[e];if(!this.commandsByPlugin[e]||((n=v.internalPlugins.plugins[e])==null?void 0:n.enabled)===!1){r.extraSettingsEl.hide();continue}let u=this.commandsByPlugin[e].filter(l=>l.hotkeys.length),a=u.filter(l=>l.hotkeys.filter(h=>this.assignedKeyCount[h]>1).length).length;r.setTooltip(`Configure hotkeys
|
|
(${u.length}/${this.commandsByPlugin[e].length} assigned${a?"; "+a+" conflicting":""})`),r.extraSettingsEl.toggleClass("mod-error",!!a),r.extraSettingsEl.show()}}};
|
|
|
|
/* nosourcemap */ |