From 61ded9611d7a66d2161adce6baa0ecb21d342655 Mon Sep 17 00:00:00 2001 From: Palanikannan M Date: Mon, 6 Jan 2025 13:17:05 +0530 Subject: [PATCH] fix: read only extensions and write extensions synced --- .../editor/src/core/extensions/extensions.tsx | 23 +++- .../src/core/extensions/flat-list/index.ts | 1 + .../extensions/flat-list/list-extension.ts | 2 +- packages/editor/src/core/extensions/index.ts | 1 + .../core/extensions/read-only-extensions.tsx | 104 +++++++++++++----- 5 files changed, 96 insertions(+), 35 deletions(-) create mode 100644 packages/editor/src/core/extensions/flat-list/index.ts diff --git a/packages/editor/src/core/extensions/extensions.tsx b/packages/editor/src/core/extensions/extensions.tsx index d828edab0aa..0d3a8c77dd5 100644 --- a/packages/editor/src/core/extensions/extensions.tsx +++ b/packages/editor/src/core/extensions/extensions.tsx @@ -1,14 +1,14 @@ import { Extensions } from "@tiptap/core"; +import BulletList from "@tiptap/extension-bullet-list"; import CharacterCount from "@tiptap/extension-character-count"; +import ListItem from "@tiptap/extension-list-item"; +import OrderedList from "@tiptap/extension-ordered-list"; import Placeholder from "@tiptap/extension-placeholder"; import TaskItem from "@tiptap/extension-task-item"; import TaskList from "@tiptap/extension-task-list"; -import ListItem from "@tiptap/extension-list-item"; import TextStyle from "@tiptap/extension-text-style"; import TiptapUnderline from "@tiptap/extension-underline"; import StarterKit from "@tiptap/starter-kit"; -import BulletList from "@tiptap/extension-bullet-list"; -import OrderedList from "@tiptap/extension-ordered-list"; import { Markdown } from "tiptap-markdown"; // extensions import { @@ -32,6 +32,7 @@ import { TableCell, TableHeader, TableRow, + FlatListExtension, } from "@/extensions"; // helpers import { isValidHttpUrl } from "@/helpers/common"; @@ -40,7 +41,6 @@ import { CoreEditorAdditionalExtensions } from "@/plane-editor/extensions"; // types import { TExtensions, TFileHandler, TMentionHandler } from "@/types"; import { DropCursorExtension } from "./drop-cursor"; -import { FlatListExtension } from "./flat-list/list-extension"; type TArguments = { disabledExtensions: TExtensions[]; @@ -83,6 +83,9 @@ export const CoreEditorExtensions = (args: TArguments): Extensions => { DropCursorExtension, FlatListExtension, BulletList.extend({ + parseHTML() { + return []; + }, addInputRules() { return []; }, @@ -92,6 +95,9 @@ export const CoreEditorExtensions = (args: TArguments): Extensions => { }, }), OrderedList.extend({ + parseHTML() { + return []; + }, addInputRules() { return []; }, @@ -101,6 +107,9 @@ export const CoreEditorExtensions = (args: TArguments): Extensions => { }, }), ListItem.extend({ + parseHTML() { + return []; + }, addInputRules() { return []; }, @@ -110,6 +119,9 @@ export const CoreEditorExtensions = (args: TArguments): Extensions => { }, }), TaskList.extend({ + parseHTML() { + return []; + }, addInputRules() { return []; }, @@ -119,6 +131,9 @@ export const CoreEditorExtensions = (args: TArguments): Extensions => { }, }), TaskItem.extend({ + parseHTML() { + return []; + }, addInputRules() { return []; }, diff --git a/packages/editor/src/core/extensions/flat-list/index.ts b/packages/editor/src/core/extensions/flat-list/index.ts new file mode 100644 index 00000000000..3532ff34550 --- /dev/null +++ b/packages/editor/src/core/extensions/flat-list/index.ts @@ -0,0 +1 @@ +export * from "./list-extension"; diff --git a/packages/editor/src/core/extensions/flat-list/list-extension.ts b/packages/editor/src/core/extensions/flat-list/list-extension.ts index 96682ec27f3..b72e9505b6c 100644 --- a/packages/editor/src/core/extensions/flat-list/list-extension.ts +++ b/packages/editor/src/core/extensions/flat-list/list-extension.ts @@ -1,6 +1,6 @@ import { Node } from "@tiptap/core"; -import { keymap } from "@tiptap/pm/keymap"; import { inputRules } from "@tiptap/pm/inputrules"; +import { keymap } from "@tiptap/pm/keymap"; import { ListAttributes, IndentListOptions, diff --git a/packages/editor/src/core/extensions/index.ts b/packages/editor/src/core/extensions/index.ts index d1fa0ce6db9..7806608afd8 100644 --- a/packages/editor/src/core/extensions/index.ts +++ b/packages/editor/src/core/extensions/index.ts @@ -23,3 +23,4 @@ export * from "./quote"; export * from "./read-only-extensions"; export * from "./side-menu"; export * from "./text-align"; +export * from "./flat-list"; diff --git a/packages/editor/src/core/extensions/read-only-extensions.tsx b/packages/editor/src/core/extensions/read-only-extensions.tsx index b7398edd890..fd585e64a4a 100644 --- a/packages/editor/src/core/extensions/read-only-extensions.tsx +++ b/packages/editor/src/core/extensions/read-only-extensions.tsx @@ -1,5 +1,8 @@ import { Extensions } from "@tiptap/core"; +import BulletList from "@tiptap/extension-bullet-list"; import CharacterCount from "@tiptap/extension-character-count"; +import ListItem from "@tiptap/extension-list-item"; +import OrderedList from "@tiptap/extension-ordered-list"; import TaskItem from "@tiptap/extension-task-item"; import TaskList from "@tiptap/extension-task-list"; import TextStyle from "@tiptap/extension-text-style"; @@ -24,14 +27,14 @@ import { CustomTextAlignExtension, CustomCalloutReadOnlyExtension, CustomColorExtension, + FlatListExtension, } from "@/extensions"; // helpers import { isValidHttpUrl } from "@/helpers/common"; -// types -import { TExtensions, TFileHandler, TReadOnlyMentionHandler } from "@/types"; // plane editor extensions import { CoreReadOnlyEditorAdditionalExtensions } from "@/plane-editor/extensions"; -import { FlatListExtension } from "./flat-list/list-extension"; +// types +import { TExtensions, TFileHandler, TReadOnlyMentionHandler } from "@/types"; type Props = { disabledExtensions: TExtensions[]; @@ -44,21 +47,9 @@ export const CoreReadOnlyEditorExtensions = (props: Props): Extensions => { return [ StarterKit.configure({ - bulletList: { - HTMLAttributes: { - class: "list-disc pl-7 space-y-2", - }, - }, - orderedList: { - HTMLAttributes: { - class: "list-decimal pl-7 space-y-2", - }, - }, - listItem: { - HTMLAttributes: { - class: "not-prose space-y-2", - }, - }, + bulletList: false, + orderedList: false, + listItem: false, code: false, codeBlock: false, horizontalRule: false, @@ -76,6 +67,71 @@ export const CoreReadOnlyEditorExtensions = (props: Props): Extensions => { dropcursor: false, gapcursor: false, }), + FlatListExtension, + BulletList.extend({ + parseHTML() { + return []; + }, + addInputRules() { + return []; + }, + }).configure({ + HTMLAttributes: { + class: "list-disc pl-7 space-y-2", + }, + }), + OrderedList.extend({ + parseHTML() { + return []; + }, + addInputRules() { + return []; + }, + }).configure({ + HTMLAttributes: { + class: "list-decimal pl-7 space-y-2", + }, + }), + ListItem.extend({ + parseHTML() { + return []; + }, + addInputRules() { + return []; + }, + }).configure({ + HTMLAttributes: { + class: "not-prose space-y-2", + }, + }), + TaskList.extend({ + parseHTML() { + return []; + }, + addInputRules() { + return []; + }, + }).configure({ + HTMLAttributes: { + class: "not-prose pl-2 space-y-2", + }, + }), + TaskItem.extend({ + parseHTML() { + return []; + }, + addInputRules() { + return []; + }, + addKeyboardShortcuts() { + return {}; + }, + }).configure({ + HTMLAttributes: { + class: "relative", + }, + nested: true, + }), CustomQuoteExtension, CustomHorizontalRule.configure({ HTMLAttributes: { @@ -106,17 +162,6 @@ export const CoreReadOnlyEditorExtensions = (props: Props): Extensions => { }), TiptapUnderline, TextStyle, - TaskList.configure({ - HTMLAttributes: { - class: "not-prose pl-2 space-y-2", - }, - }), - TaskItem.configure({ - HTMLAttributes: { - class: "relative pointer-events-none", - }, - nested: true, - }), CustomCodeBlockExtension.configure({ HTMLAttributes: { class: "", @@ -139,6 +184,5 @@ export const CoreReadOnlyEditorExtensions = (props: Props): Extensions => { ...CoreReadOnlyEditorAdditionalExtensions({ disabledExtensions, }), - FlatListExtension, ]; };