Loading packages/client/src/components/Header/HeaderRight.tsx +21 −11 Original line number Diff line number Diff line Loading @@ -13,26 +13,22 @@ import { faGear, faHammer, faDrawPolygon, faShare, } from "@fortawesome/free-solid-svg-icons"; import React, { lazy, useEffect, useRef, useState } from "react"; import { useEffect, useRef, useState } from "react"; import { useHasRole } from "../../hooks/useHasRole"; import { useModerator } from "../../Moderator/Moderator"; import { Button } from "../core/Button"; import { usePanel } from "@/contexts/PanelContext"; import { useCaptureContext } from "@/contexts/CaptureContext"; import { AnimatePresence, motion } from "framer-motion"; const OpenChatButton = lazy(() => import("../Chat/OpenChatButton")); const DynamicChat = () => { const { loadChat } = useAppContext(); return <React.Suspense>{loadChat && <OpenChatButton />}</React.Suspense>; }; import { useDialog } from "@/contexts/DialogContext"; import OpenChatButton from "../Chat/OpenChatButton"; export const HeaderRight = () => { const { dispatch } = useModerator(); const Panel = usePanel(); const Dialog = useDialog(); const { captureCanvas, captureView, Loading Loading @@ -102,7 +98,7 @@ export const HeaderRight = () => { onPress={() => setCaptureMenuOpen((open) => !open)} > <FontAwesomeIcon icon={faCamera} /> <p>Capture</p> <p>Share</p> <FontAwesomeIcon className={`transition-transform ${captureMenuOpen ? "rotate-180" : ""}`} icon={faChevronDown} Loading @@ -119,6 +115,20 @@ export const HeaderRight = () => { role="menu" transition={{ duration: 0.14 }} > <Button className="justify-start" onPress={() => { Dialog.dispatch({ action: "OPEN_DIALOG", dialog: { id: "SHARE_MODAL" }, }); }} role="menuitem" size="sm" > <FontAwesomeIcon icon={faShare} /> <p>Share Link</p> </Button> <Button className="justify-start" onPress={handleCaptureCanvas} Loading Loading @@ -182,7 +192,7 @@ export const HeaderRight = () => { <p>Admin</p> </Button> )} <DynamicChat /> <OpenChatButton /> </div> </div> ); Loading packages/client/src/components/Toolbar/ShareModal.tsx +0 −13 Original line number Diff line number Diff line import { useDialog } from "@/contexts/DialogContext"; import { CanvasCore } from "@/lib/canvas"; import { KeybindManager } from "@/lib/keybinds"; import { Template, type ITemplateState } from "@/lib/template"; import { Alert, Loading @@ -22,18 +21,6 @@ export const ShareModal = () => { const template = useTemplateContext(); const canvas = useRef<CanvasCore>(null); useEffect(() => { const open = () => { Dialog.dispatch({ action: "OPEN_DIALOG", dialog: { id: "SHARE_MODAL" } }); }; KeybindManager.on("SNAPSHOT", open); return () => { KeybindManager.off("SNAPSHOT", open); }; }, []); useEffect(() => { canvas.current = CanvasCore.get(false); }, [Dialog.state.dialogs]); Loading Loading
packages/client/src/components/Header/HeaderRight.tsx +21 −11 Original line number Diff line number Diff line Loading @@ -13,26 +13,22 @@ import { faGear, faHammer, faDrawPolygon, faShare, } from "@fortawesome/free-solid-svg-icons"; import React, { lazy, useEffect, useRef, useState } from "react"; import { useEffect, useRef, useState } from "react"; import { useHasRole } from "../../hooks/useHasRole"; import { useModerator } from "../../Moderator/Moderator"; import { Button } from "../core/Button"; import { usePanel } from "@/contexts/PanelContext"; import { useCaptureContext } from "@/contexts/CaptureContext"; import { AnimatePresence, motion } from "framer-motion"; const OpenChatButton = lazy(() => import("../Chat/OpenChatButton")); const DynamicChat = () => { const { loadChat } = useAppContext(); return <React.Suspense>{loadChat && <OpenChatButton />}</React.Suspense>; }; import { useDialog } from "@/contexts/DialogContext"; import OpenChatButton from "../Chat/OpenChatButton"; export const HeaderRight = () => { const { dispatch } = useModerator(); const Panel = usePanel(); const Dialog = useDialog(); const { captureCanvas, captureView, Loading Loading @@ -102,7 +98,7 @@ export const HeaderRight = () => { onPress={() => setCaptureMenuOpen((open) => !open)} > <FontAwesomeIcon icon={faCamera} /> <p>Capture</p> <p>Share</p> <FontAwesomeIcon className={`transition-transform ${captureMenuOpen ? "rotate-180" : ""}`} icon={faChevronDown} Loading @@ -119,6 +115,20 @@ export const HeaderRight = () => { role="menu" transition={{ duration: 0.14 }} > <Button className="justify-start" onPress={() => { Dialog.dispatch({ action: "OPEN_DIALOG", dialog: { id: "SHARE_MODAL" }, }); }} role="menuitem" size="sm" > <FontAwesomeIcon icon={faShare} /> <p>Share Link</p> </Button> <Button className="justify-start" onPress={handleCaptureCanvas} Loading Loading @@ -182,7 +192,7 @@ export const HeaderRight = () => { <p>Admin</p> </Button> )} <DynamicChat /> <OpenChatButton /> </div> </div> ); Loading
packages/client/src/components/Toolbar/ShareModal.tsx +0 −13 Original line number Diff line number Diff line import { useDialog } from "@/contexts/DialogContext"; import { CanvasCore } from "@/lib/canvas"; import { KeybindManager } from "@/lib/keybinds"; import { Template, type ITemplateState } from "@/lib/template"; import { Alert, Loading @@ -22,18 +21,6 @@ export const ShareModal = () => { const template = useTemplateContext(); const canvas = useRef<CanvasCore>(null); useEffect(() => { const open = () => { Dialog.dispatch({ action: "OPEN_DIALOG", dialog: { id: "SHARE_MODAL" } }); }; KeybindManager.on("SNAPSHOT", open); return () => { KeybindManager.off("SNAPSHOT", open); }; }, []); useEffect(() => { canvas.current = CanvasCore.get(false); }, [Dialog.state.dialogs]); Loading