Initial commit

This commit is contained in:
Docker7530
2026-03-01 01:43:46 +08:00
commit c6125c117b
3840 changed files with 415340 additions and 0 deletions
+6
View File
@@ -0,0 +1,6 @@
{
"middleClickNewTab": false,
"revealInNavigation": true,
"enableDefaultOnCanvas": false,
"pdfMenu": false
}
+9
View File
@@ -0,0 +1,9 @@
/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin
*/
"use strict";var v=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var L=Object.prototype.hasOwnProperty;var O=(n,i,t)=>i in n?v(n,i,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[i]=t;var _=(n,i)=>{for(var t in i)v(n,t,{get:i[t],enumerable:!0})},R=(n,i,t,e)=>{if(i&&typeof i=="object"||typeof i=="function")for(let o of A(i))!L.call(n,o)&&o!==t&&v(n,o,{get:()=>i[o],enumerable:!(e=B(i,o))||e.enumerable});return n};var W=n=>R(v({},"__esModule",{value:!0}),n);var g=(n,i,t)=>O(n,typeof i!="symbol"?i+"":i,t);var $={};_($,{default:()=>y});module.exports=W($);var c=require("obsidian");var m=require("obsidian"),f={loadImageBlob:5e3,notice:1800};function w(n){let i=["avif","bmp","gif","jpg","jpeg","png","svg","webp","heic"];return n=n.toLowerCase(),i.some(t=>n.endsWith(`.${t}`))}function T(n){return n=new URL(n),n.search="",n.toString()}async function h(n){let i=()=>{new m.Notice(i18next.t("interface.copied_generic"),f.notice)},t=()=>{new m.Notice(i18next.t("Failed to copy image to clipboard"),f.notice)};if(n instanceof m.TFile){let a=new Blob([await n.vault.readBinary(n)],{type:`image/${n.extension}`});if(await d(a)){i();return}else{t();return}}let e=await k(n);if(e&&await d(e)){i();return}let o=`https://api.allorigins.win/raw?url=${encodeURIComponent(n)}`;if(e=await k(o),e&&await d(e)){i();return}if(e=await U(f.loadImageBlob,S(n)),e&&await d(e)){i();return}if(e=await U(f.loadImageBlob,S(o)),e&&await d(e)){i();return}t()}async function d(n){try{if(n.type!=="image/svg+xml")return await navigator.clipboard.write([new ClipboardItem({[n.type]:n})]),!0}catch(i){console.warn("Failed copying image with original mimetype, using PNG fallback - ",i)}try{return n=new Blob([n],{type:"image/png"}),await navigator.clipboard.write([new ClipboardItem({[n.type]:n})]),!0}catch(i){console.warn("Failed copying image with PNG mimetype - ",i)}return!1}async function k(n){try{return await(await fetch(n,{signal:AbortSignal.timeout(f.loadImageBlob)})).blob()}catch(i){console.warn("Failed to fetch image - ",i)}return null}function S(n){return new Promise(i=>{let t=new Image;t.crossOrigin="anonymous",t.onload=()=>{let e=document.createElement("canvas");e.width=t.width,e.height=t.height,e.getContext("2d").drawImage(t,0,0),e.toBlob(o=>{i(o)})},t.onerror=()=>{i(null)},t.src=n})}function U(n,i){let t=new Promise(e=>setTimeout(()=>{e(null)},n));return Promise.race([i,t])}function C(n,i,t,e,o){return n.on(i,t,e,o),()=>{n.off(i,t,e,o)}}function x(n,i){let t=(0,m.normalizePath)(n.vault.adapter.basePath);t=t.replace("file://","");let e=i.pathname;e=e.replace("/_capacitor_file_",""),e=e.split("/").filter(a=>a!=="").join("/");let o=decodeURI(e);if(o.startsWith(t)){let a=o.slice(t.length+1);return n.vault.getFileByPath(a)}return null}function b(n,i){n.workspace.getLeaf(!0).openFile(i,{active:!0})}var F=require("obsidian"),M=["file","open","info","system"],P={"copy-to-clipboard":{section:"info",icon:"image-file",title:"interface.label-copy"},"open-in-new-tab":{section:"open",icon:"file-plus",title:"interface.menu.open-in-new-tab"},"open-in-default-app":{section:"system",icon:"arrow-up-right",title:"plugins.open-with-default-app.action-open-file"},"show-in-explorer":{section:"system",icon:"arrow-up-right",title:`plugins.open-with-default-app.action-show-in-folder${F.Platform.isMacOS?"-mac":""}`},"reveal-in-navigation":{section:"system",icon:"folder",title:"plugins.file-explorer.action-reveal-file"},"reveal-in-navigation-tree":{section:"system",icon:"folder",title:"Reveal in File Tree Alternative"},"rename-file":{section:"info",icon:"pencil",title:"interface.menu.rename"}};function p(n,i){return n.setSection(P[i].section).setIcon(P[i].icon).setTitle(i18next.t(P[i].title))}var u=require("obsidian");var D={middleClickNewTab:!0,revealInNavigation:!0,enableDefaultOnCanvas:!1},I=class extends u.PluginSettingTab{constructor(t,e){super(t,e);g(this,"plugin");this.plugin=e}display(){let{containerEl:t}=this;t.empty(),t.createEl("h3",{text:"Image Context Menus settings"}),new u.Setting(t).setName("Middle mouse click on image link to open in new tab").addToggle(e=>{e.setValue(this.plugin.settings.middleClickNewTab).onChange(o=>{this.plugin.settings.middleClickNewTab=o,this.plugin.saveSettings()})}),new u.Setting(t).setName("Reveal file in navigation menu item").setDesc("You might want to disable this if you use a plugin for replacing default Obsidian file navigation. This plugin supports File Tree Alternative by displaying a reveal menu item for it if installed.").addToggle(e=>{e.setValue(this.plugin.settings.revealInNavigation).onChange(o=>{this.plugin.settings.revealInNavigation=o,this.plugin.saveSettings()})}),new u.Setting(t).setName("Enable regular context menu on canvas").setDesc(`The regular context menu sometimes duplicates the context menu on the canvas, so it's disabled there by default.
There is a separate context menu for images directly on the canvas, but if that's not enough (for example for images in notes on canvas), you can enable the regular context menu here too.`).addToggle(e=>{e.setValue(this.plugin.settings.enableDefaultOnCanvas).onChange(o=>{this.plugin.settings.enableDefaultOnCanvas=o,this.plugin.saveSettings()})})}};var y=class extends c.Plugin{constructor(){super(...arguments);g(this,"canvasCardMenu");g(this,"settings")}async loadSettings(){this.settings=Object.assign({},D,await this.loadData())}async saveSettings(){await this.saveData(this.settings)}async onload(){await this.loadSettings(),this.addSettingTab(new I(this.app,this)),this.registerDocument(document),this.app.workspace.on("window-open",(t,e)=>{this.registerDocument(e.document)}),this.registerEvent(this.app.workspace.on("file-menu",(t,e,o)=>{o==="canvas-menu"&&e instanceof c.TFile&&w(`.${e.extension}`)&&(t.addItem(a=>p(a,"open-in-new-tab").onClick(()=>{b(this.app,e)})),t.addItem(a=>p(a,"copy-to-clipboard").onClick(()=>{h(e)})))})),this.registerEvent(this.app.workspace.on("canvas:node-menu",(t,e)=>{let o=e.unknownData;if(o.type==="link"){let a=T(o.url);if(!w(a))return;t.addItem(r=>p(r,"copy-to-clipboard").setSection("canvas").onClick(()=>{h(a)}))}})),this.registerEvent(this.app.workspace.on("url-menu",(t,e)=>{e=T(e),w(e)&&t.addItem(o=>p(o,"copy-to-clipboard").onClick(()=>{h(e)}))}))}registerDocument(t){let e=[C(t,"contextmenu","img",this.onImageContextMenu.bind(this),{capture:!0}),C(t,"mouseup","img",this.onImageMouseUp.bind(this))];this.register(()=>{for(let o of e)o()})}onImageContextMenu(t){var E;if(!this.settings.enableDefaultOnCanvas&&((E=this.app.workspace.getActiveFile())==null?void 0:E.extension)==="canvas")return;t.preventDefault();let e=t.target,o=new URL(e.src);if(!["app:","data:","http:","https:"].includes(o.protocol)){new c.Notice(`No handler for ${o.protocol} protocol`);return}let r=new c.Menu,l=x(this.app,o);r.addSections(Array.from(M)),l&&r.addItem(s=>p(s,"rename-file").onClick(()=>this.app.fileManager.promptForFileRename(l))),r.addItem(s=>p(s,"copy-to-clipboard").onClick(()=>{h(l!=null?l:e.src)})),l&&(c.Platform.isMobile&&r.addItem(s=>s.setTitle(l.name).setSection("file").setIsLabel(!0)),r.addItem(s=>p(s,"open-in-new-tab").onClick(()=>{b(this.app,l)})),c.Platform.isDesktop&&(r.addItem(s=>p(s,"open-in-default-app").onClick(()=>{this.app.openWithDefaultApp(l.path)})),r.addItem(s=>p(s,"show-in-explorer").onClick(()=>{this.app.showInFolder(l.path)}))),this.settings.revealInNavigation&&r.addItem(s=>p(s,"reveal-in-navigation").onClick(()=>{var N;(N=this.app.internalPlugins.getEnabledPluginById("file-explorer"))==null||N.revealInFolder(l)})),this.app.plugins.enabledPlugins.has("file-tree-alternative")&&r.addItem(s=>p(s,"reveal-in-navigation-tree").onClick(()=>{self.dispatchEvent(new CustomEvent("fta-reveal-file",{detail:{file:l}}))}))),r.showAtPosition({x:t.pageX,y:t.pageY})}onImageMouseUp(t){let e=t.target;if(t.button===1&&this.settings.middleClickNewTab){let a=x(this.app,new URL(e.src));if(!a)return;b(this.app,a)}}};
/* nosourcemap */
+11
View File
@@ -0,0 +1,11 @@
{
"id": "copy-url-in-preview",
"name": "Image Context Menus",
"version": "1.11.2",
"minAppVersion": "1.6.6",
"description": "Copy to clipboard, Open in default app, Show in system explorer, Reveal file in navigation, Open in new tab, Rename context menus for images.",
"author": "NomarCub",
"authorUrl": "https://github.com/NomarCub",
"fundingUrl": "https://ko-fi.com/nomarcub",
"isDesktopOnly": false
}