From 9def3b22130f5e0812e5770719a6c6cb323df14a Mon Sep 17 00:00:00 2001 From: Anna No Date: Tue, 16 Jan 2024 20:04:52 +0700 Subject: [PATCH] EZQMS-470: Add server side tiptap extension for node uuid (#4358) Signed-off-by: Anna No --- packages/text/src/kits/server-kit.ts | 6 ++++-- packages/text/src/marks/nodeUuid.ts | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 packages/text/src/marks/nodeUuid.ts diff --git a/packages/text/src/kits/server-kit.ts b/packages/text/src/kits/server-kit.ts index 52b27efa88..85f0ec778d 100644 --- a/packages/text/src/kits/server-kit.ts +++ b/packages/text/src/kits/server-kit.ts @@ -14,6 +14,7 @@ // import { Extension } from '@tiptap/core' +import { Level } from '@tiptap/extension-heading' import Table from '@tiptap/extension-table' import TableCell from '@tiptap/extension-table-cell' import TableHeader from '@tiptap/extension-table-header' @@ -21,12 +22,12 @@ import TableRow from '@tiptap/extension-table-row' import TaskItem from '@tiptap/extension-task-item' import TaskList from '@tiptap/extension-task-list' +import { NodeUuid } from '../marks/nodeUuid' import { ImageNode, ImageOptions } from '../nodes/image' import { ReferenceNode } from '../nodes/reference' import { TodoItemNode, TodoListNode } from '../nodes/todo' import { DefaultKit, DefaultKitOptions } from './default-kit' -import { Level } from '@tiptap/extension-heading' const headingLevels: Level[] = [1, 2, 3, 4, 5, 6] @@ -72,7 +73,8 @@ export const ServerKit = Extension.create({ ImageNode.configure(this.options.image), TodoItemNode, TodoListNode, - ReferenceNode + ReferenceNode, + NodeUuid ] } }) diff --git a/packages/text/src/marks/nodeUuid.ts b/packages/text/src/marks/nodeUuid.ts new file mode 100644 index 0000000000..126fc84090 --- /dev/null +++ b/packages/text/src/marks/nodeUuid.ts @@ -0,0 +1,23 @@ +import { Mark } from '@tiptap/core' + +const NAME = 'node-uuid' + +/** + * @public + */ +export const NodeUuid = Mark.create({ + name: NAME, + inline: true, + + parseHTML () { + return [ + { + tag: `span[${NAME}]` + } + ] + }, + + renderHTML ({ HTMLAttributes }) { + return ['span', HTMLAttributes, 0] + } +})