UNPKG

slanted-gamedev-toolz

Version:

A slanted mix of tools for your brilliant ideas in game design.

45 lines (44 loc) 2.24 kB
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import { useCallback } from "react"; import { useNavigate } from "react-router-dom"; import { toast } from "react-toastify"; import { saveStringToastConfig } from "../../../../constants/toastConfig"; import { useGlobalContext } from "../../../../contexts/globalContext/GlobalContext"; import { APP_ROUTES } from "../../../layouts/appRoutes"; import { colors } from "../../../theme/palettes/colors"; import { HexBtn } from "../../uiComponents/buttons/HexBtn/HexBtn"; import { menuText } from "../LocalizationSelect/menuText"; import { CopySaveStringToast } from "./CopySaveStringToast"; import { compressBoxerWithPako } from "./saveStringUtil"; export const ImportExportBoxerBtns = ({ setSaveString, hasShownToastOnSave, saveString, }) => { const navigate = useNavigate(); const { getLocalizedText, selectedBoxer } = useGlobalContext(); const importBoxerString = useCallback(() => { navigate(APP_ROUTES.IMPORT_BOXER.PATH, { replace: true, state: { saveString: saveString }, }); }, [navigate, saveString]); const exportBoxerString = useCallback(() => { const string = selectedBoxer ? compressBoxerWithPako(selectedBoxer) : ""; setSaveString(string); // Copy to clipboard return navigator.clipboard .writeText(string) .then(() => { if (!hasShownToastOnSave.current) { hasShownToastOnSave.current = true; toast(_jsx(CopySaveStringToast, {}), saveStringToastConfig); } return string; }) .catch((err) => { console.error("Unable to copy to clipboard", err); throw err; }); }, [selectedBoxer, setSaveString, hasShownToastOnSave]); return (_jsxs("div", { style: { display: "flex", justifyContent: "center", }, children: [_jsx(HexBtn, { label: getLocalizedText(menuText.importBoxer), onClick: importBoxerString, color: colors.red }), selectedBoxer ? (_jsx(HexBtn, { label: `${getLocalizedText(menuText.exportBoxer)} (${selectedBoxer.name})`, onClick: exportBoxerString, color: colors.red })) : null] })); };