From c0da232c9b4c82f184d383da825d29ca5b172000 Mon Sep 17 00:00:00 2001 From: Eugeny Date: Wed, 17 Dec 2025 00:09:07 +0300 Subject: [PATCH 1/3] fix(paste): replace PasteEvent with HTMLPasteEvent to preserve innerHTML --- package.json | 2 +- src/index.ts | 16 +++++----------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index d884738..ea922a9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@editorjs/code", - "version": "2.9.3", + "version": "2.9.4", "keywords": [ "codex editor", "code", diff --git a/src/index.ts b/src/index.ts index ac9098d..5608ed3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,7 +1,7 @@ import './index.css'; import { getLineStartPosition } from './utils/string'; import { IconBrackets } from '@codexteam/icons'; -import type { API, BlockTool, BlockToolConstructorOptions, BlockToolData, PasteConfig, PasteEvent, SanitizerConfig, ToolboxConfig } from '@editorjs/editorjs'; +import type { API, BlockTool, BlockToolConstructorOptions, BlockToolData, HTMLPasteEvent, PasteConfig, SanitizerConfig, ToolboxConfig } from '@editorjs/editorjs'; /** * CodeTool for Editor.js @@ -160,16 +160,10 @@ export default class CodeTool implements BlockTool { * onPaste callback fired from Editor`s core * @param event - event with pasted content */ - public onPaste(event: PasteEvent): void { - const detail = event.detail; - - if ('data' in detail) { - const content = detail.data as string; - - this.data = { - code: content || '', - }; - } + public onPaste(event: HTMLPasteEvent): void { + this.data = { + code: event.detail.data.innerHTML, + }; } /** From f66779f20941c12e6745a99529e35e8825231f1a Mon Sep 17 00:00:00 2001 From: Eugeny Date: Thu, 18 Dec 2025 00:40:37 +0300 Subject: [PATCH 2/3] chore(paste): update function to match documentation standard --- src/index.ts | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/index.ts b/src/index.ts index 5608ed3..34dba0a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,7 +1,7 @@ import './index.css'; import { getLineStartPosition } from './utils/string'; import { IconBrackets } from '@codexteam/icons'; -import type { API, BlockTool, BlockToolConstructorOptions, BlockToolData, HTMLPasteEvent, PasteConfig, SanitizerConfig, ToolboxConfig } from '@editorjs/editorjs'; +import type { API, BlockTool, BlockToolConstructorOptions, BlockToolData, PasteEvent, HTMLPasteEventDetail, PasteConfig, SanitizerConfig, ToolboxConfig } from '@editorjs/editorjs'; /** * CodeTool for Editor.js @@ -160,10 +160,15 @@ export default class CodeTool implements BlockTool { * onPaste callback fired from Editor`s core * @param event - event with pasted content */ - public onPaste(event: HTMLPasteEvent): void { - this.data = { - code: event.detail.data.innerHTML, - }; + public onPaste(event: PasteEvent): void { + switch (event.type) { + case 'tag': { + const element = (event.detail as HTMLPasteEventDetail).data; + + this.handleHTMLPaste(element); + break; + } + } } /** @@ -318,4 +323,14 @@ export default class CodeTool implements BlockTool { return wrapper; } + + /** + * Handles pasted HTML content + * @param element - pasted HTML element + */ + private handleHTMLPaste(element: HTMLElement): void { + this.data = { + code: element.innerHTML, + }; + } } From cf9f938ad4d948d8980934c18953718dacaa81c2 Mon Sep 17 00:00:00 2001 From: Eugeny Date: Thu, 18 Dec 2025 23:55:47 +0300 Subject: [PATCH 3/3] chore(handleHTMLPaste): improve JSDoc --- src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 34dba0a..0f3fe5f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -325,7 +325,7 @@ export default class CodeTool implements BlockTool { } /** - * Handles pasted HTML content + * Extracts the code content from the pasted element's innerHTML and populates the tool's data. * @param element - pasted HTML element */ private handleHTMLPaste(element: HTMLElement): void {