/* * Vencord, a Discord client mod * Copyright (c) 2024 Vendicated and contributors * SPDX-License-Identifier: GPL-3.0-or-later */ import { CodeBlock } from "@components/CodeBlock"; import { Margins } from "@utils/margins"; import { classes } from "@utils/misc"; import { ModalCloseButton, ModalContent, ModalFooter, ModalHeader, ModalProps, ModalRoot, ModalSize, openModal } from "@utils/modal"; import * as t from "@vencord/discord-types"; import { Button, FluxDispatcher, TooltipContainer, useCallback, useEffect, useState } from "@webpack/common"; import { IconsFinds } from "./names"; import { openRawModal } from "./rawModal"; import { openSaveModal } from "./saveModal"; import { ModalHeaderTitle } from "./subComponents"; import { _cssColors, cssColors, iconSizes } from "./utils"; const defaultColor = 209; function ModalComponent(props: { iconName: string; Icon: t.Icon; } & ModalProps) { const [color, SetColor] = useState(defaultColor); const onKeyDown = useCallback((e: KeyboardEvent) => { if (e.key === "ArrowLeft" || e.key === "ArrowRight") { e.preventDefault(); if (e.key === "ArrowLeft") { SetColor(color + -1); } else if (e.key === "ArrowRight") { SetColor(color + 1); } } }, [color]); const onColorChange = useCallback((e: { type: string; color: string; }) => { SetColor(_cssColors.indexOf(e.color)); }, [color]); useEffect(() => { document.addEventListener("keydown", onKeyDown); // @ts-ignore FluxDispatcher.subscribe("ICONVIEWER_COLOR_CHANGE", onColorChange); return () => { document.removeEventListener("keydown", onKeyDown); // @ts-ignore FluxDispatcher.unsubscribe("ICONVIEWER_COLOR_CHANGE", onColorChange); }; }, [onKeyDown]); if (color < 0 || color >= cssColors.length) { SetColor(0); } const { iconName, Icon } = props; return ( {IconsFinds[iconName] ?
: null }
{iconSizes.map((size, idx) => )}
); } export function openIconModal(iconName: string, Icon: t.Icon) { openModal(props => ); }