From fc83f67d7cc090b479035a225f82387263d3381b Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 26 May 2025 11:37:44 +0300 Subject: [PATCH] chore(ckeditor5/codeblock): add command for copying to clipboard --- .../src/plugins/copy_to_clipboard_button.ts | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/packages/ckeditor5/src/plugins/copy_to_clipboard_button.ts b/packages/ckeditor5/src/plugins/copy_to_clipboard_button.ts index 2b67ea820..1de7e6f0e 100644 --- a/packages/ckeditor5/src/plugins/copy_to_clipboard_button.ts +++ b/packages/ckeditor5/src/plugins/copy_to_clipboard_button.ts @@ -1,8 +1,16 @@ -import { ButtonView, Plugin } from "ckeditor5"; +import { ButtonView, Command, Plugin } from "ckeditor5"; import copyIcon from "../icons/copy.svg?raw"; export default class CopyToClipboardButton extends Plugin { + static get requires() { + return [ CopyToClipboardEditing, CopyToClipboardUI ]; + } + +} + +export class CopyToClipboardUI extends Plugin { + public init() { const editor = this.editor; const componentFactory = editor.ui.componentFactory; @@ -14,8 +22,28 @@ export default class CopyToClipboardButton extends Plugin { icon: copyIcon }); + this.listenTo(button, "execute", () => { + editor.execute("copyToClipboard"); + }); + return button; }); } } + +export class CopyToClipboardEditing extends Plugin { + + public init() { + this.editor.commands.add("copyToClipboard", new CopyToClipboardCommand(this.editor)); + } + +} + +export class CopyToClipboardCommand extends Command { + + execute(...args: Array) { + console.log("Copy to clipboard!"); + } + +}