diff --git a/ui/packages/editor/src/extensions/code-block/CodeBlockViewRenderer.vue b/ui/packages/editor/src/extensions/code-block/CodeBlockViewRenderer.vue index d6ba2639f..e6f675c84 100644 --- a/ui/packages/editor/src/extensions/code-block/CodeBlockViewRenderer.vue +++ b/ui/packages/editor/src/extensions/code-block/CodeBlockViewRenderer.vue @@ -4,6 +4,10 @@ import type { Editor, Node } from "@/tiptap/vue-3"; import { NodeViewContent, NodeViewWrapper } from "@/tiptap/vue-3"; import lowlight from "./lowlight"; import { computed } from "vue"; +import BxBxsCopy from "~icons/bx/bxs-copy"; +import IconCheckboxCircle from "~icons/ri/checkbox-circle-line"; +import { useTimeout } from "@vueuse/core"; +import { i18n } from "@/locales"; const props = defineProps<{ editor: Editor; @@ -28,24 +32,53 @@ const selectedLanguage = computed({ props.updateAttributes({ language: language }); }, }); + +const { ready, start } = useTimeout(2000, { controls: true, immediate: false }); + +const handleCopyCode = () => { + if (!ready.value) return; + const code = props.node.textContent; + navigator.clipboard.writeText(code).then(() => { + start(); + }); +};