diff options
author | V <vendicated@riseup.net> | 2023-05-13 23:58:24 +0200 |
---|---|---|
committer | V <vendicated@riseup.net> | 2023-05-14 00:10:01 +0200 |
commit | cd53cf38fe6330699495c9c26d29e37322d3082a (patch) | |
tree | 3ea6687f85ce0613e03613c3b64669f721447af7 /src | |
parent | f13f9e80a926fb91ff9c349b708123954d0450ce (diff) | |
download | Vencord-cd53cf38fe6330699495c9c26d29e37322d3082a.tar.gz Vencord-cd53cf38fe6330699495c9c26d29e37322d3082a.tar.bz2 Vencord-cd53cf38fe6330699495c9c26d29e37322d3082a.zip |
ReverseImageSearch: Add engine icons
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/reverseImageSearch.tsx | 30 | ||||
-rw-r--r-- | src/webpack/common/types/menu.d.ts | 4 |
2 files changed, 28 insertions, 6 deletions
diff --git a/src/plugins/reverseImageSearch.tsx b/src/plugins/reverseImageSearch.tsx index c375e19..811e7ff 100644 --- a/src/plugins/reverseImageSearch.tsx +++ b/src/plugins/reverseImageSearch.tsx @@ -17,6 +17,8 @@ */ import { addContextMenuPatch, findGroupChildrenByChildId, NavContextMenuPatchCallback, removeContextMenuPatch } from "@api/ContextMenu"; +import { Flex } from "@components/Flex"; +import { OpenExternalIcon } from "@components/Icons"; import { Devs } from "@utils/constants"; import definePlugin from "@utils/types"; import { Menu } from "@webpack/common"; @@ -28,7 +30,7 @@ const Engines = { IQDB: "https://iqdb.org/?url=", TinEye: "https://www.tineye.com/search?url=", ImgOps: "https://imgops.com/start?url=" -}; +} as const; function search(src: string, engine: string) { open(engine + encodeURIComponent(src), "_blank"); @@ -50,13 +52,28 @@ const imageContextMenuPatch: NavContextMenuPatchCallback = (children, props) => key="search-image" id="search-image" > - {Object.keys(Engines).map(engine => { + {Object.keys(Engines).map((engine, i) => { const key = "search-image-" + engine; return ( <Menu.MenuItem key={key} id={key} - label={engine} + label={ + <Flex style={{ alignItems: "center", gap: "0.5em" }}> + <img + style={{ + borderRadius: i >= 3 // Do not round Google, Yandex & SauceNAO + ? "50%" + : void 0 + }} + aria-hidden="true" + height={16} + width={16} + src={new URL("/favicon.ico", Engines[engine]).toString().replace("lens.", "")} + /> + {engine} + </Flex> + } action={() => search(src, Engines[engine])} /> ); @@ -64,7 +81,12 @@ const imageContextMenuPatch: NavContextMenuPatchCallback = (children, props) => <Menu.MenuItem key="search-image-all" id="search-image-all" - label="All" + label={ + <Flex style={{ alignItems: "center", gap: "0.5em" }}> + <OpenExternalIcon height={16} width={16} /> + All + </Flex> + } action={() => Object.values(Engines).forEach(e => search(src, e))} /> </Menu.MenuItem> diff --git a/src/webpack/common/types/menu.d.ts b/src/webpack/common/types/menu.d.ts index 8e9218f..58ea626 100644 --- a/src/webpack/common/types/menu.d.ts +++ b/src/webpack/common/types/menu.d.ts @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import type { ComponentType, CSSProperties, MouseEvent, PropsWithChildren, UIEvent } from "react"; +import type { ComponentType, CSSProperties, MouseEvent, PropsWithChildren, ReactNode, UIEvent } from "react"; type RC<C> = ComponentType<PropsWithChildren<C & Record<string, any>>>; @@ -35,7 +35,7 @@ export interface Menu { }>; MenuItem: RC<{ id: string; - label: string; + label: ReactNode; action?(e: MouseEvent): void; icon?: ComponentType<any>; |