Skip to content

Commit

Permalink
added web viewer tab menus
Browse files Browse the repository at this point in the history
  • Loading branch information
oxdc committed Dec 23, 2024
1 parent 4af2ec1 commit 4dd702e
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 3 deletions.
30 changes: 27 additions & 3 deletions src/components/Tab.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { Fragment } from "react/jsx-runtime";
import { IconButton } from "./IconButton";
import { useEffect, useState } from "react";
import { usePlugin, useSettings } from "src/models/PluginContext";
import { Menu, Platform, WorkspaceLeaf } from "obsidian";
import { Menu, Platform, Webview, WorkspaceLeaf } from "obsidian";
import {
closeOthersInGroup,
closeTabsToBottomInGroup,
Expand Down Expand Up @@ -47,6 +47,7 @@ export const Tab = ({ leaf }: TabProps) => {
const lastActiveLeaf = useViewState((state) => state.latestActiveLeaf);
const enableTabZoom = useSettings((state) => state.enableTabZoom);
const alwaysOpenInNewTab = useSettings((state) => state.alwaysOpenInNewTab);
const isWebViewer = leaf.view.getViewType() === "webviewer";

const changePinnedState = (pinned: boolean) => {
setIsPinned(pinned);
Expand Down Expand Up @@ -286,7 +287,7 @@ export const Tab = ({ leaf }: TabProps) => {
.onClick(async () => await loadDeferredLeaf(leaf));
});
}
if (enableTabZoom) {
if (enableTabZoom && !isWebViewer) {
menu.addSeparator();
menu.addItem((item) => {
item.setSection("zoom").setTitle("Zoom");
Expand All @@ -308,7 +309,30 @@ export const Tab = ({ leaf }: TabProps) => {
});
});
}
if (Platform.isDesktop) {
if (isWebViewer) {
const webview = leaf.view as Webview;
menu.addSeparator();
menu.addItem((item) => {
item.setSection("webview")
.setTitle("Toggle reader mode")
.onClick(() => webview.toggleReaderMode());
});
menu.addSeparator();
menu.addItem((item) => {
item.setSection("zoom").setTitle("Zoom");
const submenu = item.setSubmenu();
submenu.addItem((item) => {
item.setTitle("Zoom in").onClick(() => webview.zoomIn());
});
submenu.addItem((item) => {
item.setTitle("Zoom out").onClick(() => webview.zoomOut());
});
submenu.addItem((item) => {
item.setTitle("Reset zoom").onClick(() => webview.zoomReset());
});
});
}
if (Platform.isDesktop && !isWebViewer) {
menu.addSeparator();
menu.addItem((item) => {
item.setSection("more").setTitle("More options");
Expand Down
7 changes: 7 additions & 0 deletions src/types.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -171,4 +171,11 @@ declare module "obsidian" {
setSubmenu: () => Menu;
section?: string;
}

interface Webview extends ItemView {
toggleReaderMode: () => void;
zoomIn: () => void;
zoomOut: () => void;
zoomReset: () => void;
}
}

0 comments on commit 4dd702e

Please sign in to comment.