diff --git a/components/codePreview/index.tsx b/components/codePreview/index.tsx index 59dbed5c..2f3d4680 100644 --- a/components/codePreview/index.tsx +++ b/components/codePreview/index.tsx @@ -1,4 +1,4 @@ -import React, { useRef, useState } from "react"; +import React, { useCallback, useRef, useState } from "react"; import "highlight.js/styles/atom-one-light.css"; import { Algorithm } from "lib/models"; import { @@ -27,7 +27,9 @@ import { MoreHoriz, OpenInNew, PlayArrow, + FileCopyOutlined, } from "@material-ui/icons"; +import { toast } from "react-hot-toast"; import NextLink from "next/link"; import { StringParam, useQueryParam, withDefault } from "next-query-params"; import classes from "./style.module.css"; @@ -45,6 +47,12 @@ export default function CodePreview({ algorithm }: { algorithm: Algorithm }) { const fabRef = useRef(); const [mobileMoreMenuOpen, setMobileMoreMenuOpen] = useState(false); + const copyCode = useCallback(async () => { + const codeText = document.querySelector(".style_pre__k555n")?.textContent; + await navigator.clipboard.writeText(codeText); + toast.success("Code Snippet Copied!"); + }, []); + return (
@@ -86,6 +94,10 @@ export default function CodePreview({ algorithm }: { algorithm: Algorithm }) { {t("fullscreen")} + copyCode()}> + + {t("Copy Code")} +
+ + +