From 8ff051689f6df913876de542090da8c21aa85c42 Mon Sep 17 00:00:00 2001 From: xfy Date: Wed, 24 Jun 2026 10:04:59 +0800 Subject: [PATCH] refactor(tiptap): export isValidUrl and UploadImageNodeView for testability --- libs/tiptap-editor/src/slash-command.ts | 2 +- libs/tiptap-editor/src/upload-image.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/tiptap-editor/src/slash-command.ts b/libs/tiptap-editor/src/slash-command.ts index a34e21a..8d64139 100644 --- a/libs/tiptap-editor/src/slash-command.ts +++ b/libs/tiptap-editor/src/slash-command.ts @@ -247,7 +247,7 @@ interface SlashPopup { } /** 校验图片/链接 URL:只允许 http(s) 和 data:image。拒绝 javascript: 等。 */ -function isValidUrl(url: string): boolean { +export function isValidUrl(url: string): boolean { return /^https?:\/\//i.test(url) || /^data:image\//i.test(url) } diff --git a/libs/tiptap-editor/src/upload-image.ts b/libs/tiptap-editor/src/upload-image.ts index d182578..6a4c8d5 100644 --- a/libs/tiptap-editor/src/upload-image.ts +++ b/libs/tiptap-editor/src/upload-image.ts @@ -21,7 +21,7 @@ export interface UploadNodeViewCallbacks { * NodeView 纯渲染,不发起上传——按钮点击转发给注入的 callbacks(实际是 coordinator)。 * 属性变化时 ProseMirror 调 update(node),NodeView 比较新旧 data-upload-state 重渲染遮罩。 */ -class UploadImageNodeView { +export class UploadImageNodeView { private node: PMNode private callbacks: UploadNodeViewCallbacks private uploadId: string | null