Files
admin/src/components/editor/editorExtensions.ts

61 lines
1.6 KiB
TypeScript
Raw Normal View History

import CodeBlockLowlight from "@tiptap/extension-code-block-lowlight"
import Image from "@tiptap/extension-image"
import Link from "@tiptap/extension-link"
import { Table } from "@tiptap/extension-table"
import { TableCell } from "@tiptap/extension-table-cell"
import { TableHeader } from "@tiptap/extension-table-header"
import { TableRow } from "@tiptap/extension-table-row"
import TaskItem from "@tiptap/extension-task-item"
import TaskList from "@tiptap/extension-task-list"
import TextAlign from "@tiptap/extension-text-align"
import Underline from "@tiptap/extension-underline"
import Youtube from "@tiptap/extension-youtube"
import StarterKit from "@tiptap/starter-kit"
import { common, createLowlight } from "lowlight"
import { MdxPasteHandler } from "./extensions/mdx-paste-handler"
const lowlight = createLowlight(common)
export const editorExtensions = [
MdxPasteHandler,
StarterKit.configure({
heading: {
levels: [1, 2, 3],
},
codeBlock: false,
}),
Underline,
Link.configure({
openOnClick: false,
HTMLAttributes: {
class: "text-blue-600 underline cursor-pointer",
},
}),
CodeBlockLowlight.configure({
lowlight,
}),
Image.configure({
HTMLAttributes: {
class: "rounded-lg max-w-full",
},
}),
TextAlign.configure({
types: ["heading", "paragraph"],
}),
TaskList,
TaskItem.configure({
nested: true,
}),
Youtube.configure({
HTMLAttributes: {
class: "w-full aspect-video rounded-lg",
},
}),
Table.configure({
resizable: true,
}),
TableRow,
TableHeader,
TableCell,
]