import { Button } from "@components/Button"; import { useHidStore, useMountMediaStore, useUiStore, useSettingsStore, } from "@/hooks/stores"; import { MdOutlineContentPasteGo } from "react-icons/md"; import Container from "@components/Container"; import { LuHardDrive, LuMaximize, LuSettings, LuSignal } from "react-icons/lu"; import { cx } from "@/cva.config"; import PasteModal from "@/components/popovers/PasteModal"; import { FaKeyboard, FaLock } from "react-icons/fa6"; import WakeOnLanModal from "@/components/popovers/WakeOnLan/Index"; import { Popover, PopoverButton, PopoverPanel } from "@headlessui/react"; import MountPopopover from "./popovers/MountPopover"; import { Fragment, useCallback, useRef } from "react"; import { CommandLineIcon } from "@heroicons/react/20/solid"; import useKeyboard from "@/hooks/useKeyboard"; import { keys, modifiers } from "@/keyboardMappings"; export default function Actionbar({ requestFullscreen, }: { requestFullscreen: () => Promise; }) { const virtualKeyboard = useHidStore(state => state.isVirtualKeyboardEnabled); const setVirtualKeyboard = useHidStore(state => state.setVirtualKeyboardEnabled); const toggleSidebarView = useUiStore(state => state.toggleSidebarView); const setDisableFocusTrap = useUiStore(state => state.setDisableVideoFocusTrap); const enableTerminal = useUiStore(state => state.enableTerminal); const setEnableTerminal = useUiStore(state => state.setEnableTerminal); const remoteVirtualMediaState = useMountMediaStore( state => state.remoteVirtualMediaState, ); const developerMode = useSettingsStore(state => state.developerMode); // This is the only way to get a reliable state change for the popover // at time of writing this there is no mount, or unmount event for the popover const isOpen = useRef(false); const checkIfStateChanged = useCallback( (open: boolean) => { if (open !== isOpen.current) { isOpen.current = open; if (!open) { setTimeout(() => { setDisableFocusTrap(false); console.log("Popover is closing. Returning focus trap to video"); }, 0); } } }, [setDisableFocusTrap], ); const { sendKeyboardEvent, resetKeyboardState } = useKeyboard(); return (
e.stopPropagation()} onKeyDown={e => e.stopPropagation()} className="flex flex-wrap items-center justify-between gap-x-4 gap-y-2 py-1.5" >
{developerMode && (
); }