mirror of
https://github.com/bkindler/imagefull.git
synced 2026-07-22 06:05:53 +00:00
Obsidian plugin for fullscreen image viewing: - Double-click / double-tap to open overlay - Two-finger pinch or trackpad pinch to zoom (up to 10x) - Two-finger swipe or trackpad swipe to pan - Mouse drag to pan when zoomed - ESC closes, 0 resets zoom
2.3 KiB
2.3 KiB
plugin-imagefull — Hot Summary
Dev
type: obsidian-plugin
id: imagefull
version: 1.0.0
stack: vanilla JS (CommonJS) + CSS
build: none (main.js direkt, kein Bundler)
files:
- manifest.json
- main.js # Plugin-Klasse + Overlay-Logik
- styles.css # Overlay-Styles + Transform
- README.md
target: desktop + mobile (iPad, iPhone)
minAppVersion: 1.4.0
Feature-Set
| Eingabe | Verhalten |
|---|---|
| Doppelklick / Doppeltipp auf eingebettetes Bild | Öffnet Fullscreen-Overlay |
| Doppelklick / Doppeltipp auf Overlay | Schließt (außer während Pinch/Pan) |
| Two-Finger-Pinch (Touch) | Zoom 1× – 10× um Pinch-Zentrum |
| Two-Finger-Drag (Touch) | Pan / Bildausschnitt verschieben |
| Trackpad-Pinch / Wheel | Zoom um Cursor-Position |
| Maus-Drag | Pan im gezoomten Zustand (Desktop) |
| ESC | Schließt |
0 |
Reset Zoom |
Architektur
- Globaler
dblclick-Handler (capture) aufdocument+touchend-Handler mit 350ms-Doppeltipp-Fenster für Mobile - Einfacher Klick bleibt unangetastet → keine Konflikte mit anderen Image-Interaktionen
- Embed-Erkennung via
.markdown-preview-view, .markdown-rendered, .markdown-source-view, .cm-editor, .internal-embed - Transform:
translate3d(tx, ty, 0) scale(s)·will-change: transform clampPan()begrenzt Pan auf sichtbaren Bereich + 40px PuffersuppressClickverhindert Close-Klick direkt nach Geste
Deployment
installed_at: "<Vault>/.obsidian/plugins/imagefull/"
active_vaults:
- Sprecherakademie # /Users/bjoernkindler/Library/Mobile Documents/iCloud~md~obsidian/Documents/Sprecherakademie
replaces: obsidian-image-toolkit # vom User in Sprecherakademie ersetzt
Rules
- Kein Build-Schritt — Änderungen an
main.jsdirekt wirksam (Plugin reload) - Bei Konflikt mit anderen Image-Plugins: eins deaktivieren
passive: falsebei touchmove + wheel notwendig für preventDefault
L2
- Obsidian Plugin API: https://docs.obsidian.md/Home
- Embed-DOM-Klassen variieren zwischen Reading/Live-Preview — beide Root-Selektoren abdecken