From 8a7603edaf591d169d7b43a3ec5ae9d71abd9340 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Mon, 16 Nov 2020 11:19:43 +0100 Subject: [PATCH] replace NodeExtension with Node, replace MarkExtension with Mark --- docs/src/docPages/api/schema.md | 38 +++++++++---------- .../docPages/guide/build-custom-extensions.md | 10 ++--- docs/src/docPages/overview/upgrade-guide.md | 4 +- packages/core/src/Editor.ts | 12 +++--- .../core/src/{MarkExtension.ts => Mark.ts} | 15 +++++--- .../core/src/{NodeExtension.ts => Node.ts} | 15 +++++--- packages/core/src/index.ts | 4 +- packages/core/src/types.ts | 10 ++--- packages/core/src/utils/splitExtensions.ts | 8 ++-- packages/extension-blockquote/src/index.ts | 4 +- packages/extension-bold/src/index.ts | 4 +- packages/extension-bullet-list/src/index.ts | 4 +- packages/extension-code-block/src/index.ts | 4 +- packages/extension-code/src/index.ts | 4 +- packages/extension-document/src/index.ts | 4 +- packages/extension-hard-break/src/index.ts | 4 +- packages/extension-heading/src/index.ts | 4 +- packages/extension-highlight/src/index.ts | 4 +- .../extension-horizontal-rule/src/index.ts | 4 +- packages/extension-image/src/index.ts | 4 +- packages/extension-italic/src/index.ts | 4 +- packages/extension-link/src/index.ts | 4 +- packages/extension-list-item/src/index.ts | 4 +- packages/extension-ordered-list/src/index.ts | 4 +- packages/extension-paragraph/src/index.ts | 4 +- packages/extension-strike/src/index.ts | 4 +- packages/extension-task-item/src/index.ts | 4 +- packages/extension-task-list/src/index.ts | 4 +- packages/extension-text-style/src/index.ts | 4 +- packages/extension-text/src/index.ts | 4 +- packages/extension-underline/src/index.ts | 4 +- 31 files changed, 105 insertions(+), 99 deletions(-) rename packages/core/src/{MarkExtension.ts => Mark.ts} (92%) rename packages/core/src/{NodeExtension.ts => Node.ts} (94%) diff --git a/docs/src/docPages/api/schema.md b/docs/src/docPages/api/schema.md index 1078119e..172bb851 100644 --- a/docs/src/docPages/api/schema.md +++ b/docs/src/docPages/api/schema.md @@ -38,15 +38,15 @@ In tiptap every node, mark and extension is living in its own file. This allows ```js // the tiptap schema API -import { NodeExtension } from '@tiptap/core' +import { Node } from '@tiptap/core' -const Document = NodeExtension.create({ +const Document = Node.create({ name: 'document', topNode: true, content: 'block+', }) -const Paragraph = NodeExtension.create({ +const Paragraph = Node.create({ name: 'paragraph', group: 'block', content: 'inline*', @@ -60,7 +60,7 @@ const Paragraph = NodeExtension.create({ }, }) -const Text = NodeExtension.create({ +const Text = Node.create({ name: 'text', group: 'inline', }) @@ -79,7 +79,7 @@ Marks can be applied to specific parts of a node. That’s the case for **bold** The content attribute defines exactly what kind of content the node can have. ProseMirror is really strict with that. That means, content which doesn’t fit the schema is thrown away. It expects a name or group as a string. Here are a few examples: ```js -NodeExtension.create({ +Node.create({ // must have one ore more blocks content: 'block+', @@ -99,7 +99,7 @@ NodeExtension.create({ You can define which marks are allowed inside of a node with the `marks` setting of the schema. Add a one or more names or groups of marks, allow all or disallow all marks like this: ```js -NodeExtension.create({ +Node.create({ // allows only the 'bold' mark marks: 'bold', @@ -118,7 +118,7 @@ NodeExtension.create({ Add this node to a group of extensions, which can be referred to in the [content](#content) attribute of the schema. ```js -NodeExtension.create({ +Node.create({ // add to 'block' group group: 'block', @@ -134,7 +134,7 @@ NodeExtension.create({ Nodes can be rendered inline, too. When setting `inline: true` nodes are rendered in line with the text. That’s the case for mentions. The result is more like a mark, but with the functionality of a node. One difference is the resulting JSON document. Multiple marks are applied at once, inline nodes would result in a nested structure. ```js -NodeExtension.create({ +Node.create({ // renders nodes in line with the text, for example inline: true, }) @@ -144,7 +144,7 @@ NodeExtension.create({ Nodes with `atom: true` aren’t directly editable and should be treated as a single unit. It’s not so likely to use that in a editor context, but this is how it would look like: ```js -NodeExtension.create({ +Node.create({ atom: true, }) ``` @@ -153,7 +153,7 @@ NodeExtension.create({ Besides the already visible text selection, there is an invisible node selection. If you want to make your nodes selectable, you can configure it like this: ```js -NodeExtension.create({ +Node.create({ selectable: true, }) ``` @@ -162,7 +162,7 @@ NodeExtension.create({ All nodes can be configured to be draggable (by default they aren’t) with this setting: ```js -NodeExtension.create({ +Node.create({ draggable: true, }) ``` @@ -171,7 +171,7 @@ NodeExtension.create({ Users expect code to behave very differently. For all kind of nodes containing code, you can set `code: true` to take this into account. ```js -NodeExtension.create({ +Node.create({ code: true, }) ``` @@ -182,7 +182,7 @@ Nodes get dropped when their entire content is replaced (for example, when pasti Typically, that applies to [`Blockquote`](/api/node/blockquote), [`CodeBlock`](/api/node/code-block), [`Heading`](/api/node/heading), and [`ListItem`](/api/node/list-item). ```js -NodeExtension.create({ +Node.create({ defining: true, }) ``` @@ -191,7 +191,7 @@ NodeExtension.create({ For nodes that should fence the cursor for regular editing operations like backspacing, for example a TableCell, set `isolating: true`. ```js -NodeExtension.create({ +Node.create({ isolating: true, }) ``` @@ -201,7 +201,7 @@ NodeExtension.create({ If you don’t want the mark to be active when the cursor is at its end, set inclusive to `false`. For example, that’s how it’s configured for [`Link`](/api/marks/link) marks: ```js -MarkExtension.create({ +Mark.create({ inclusive: false, }) ``` @@ -210,7 +210,7 @@ MarkExtension.create({ By default all nodes can be applied at the same time. With the excludes attribute you can define which marks must not coexist with the mark. For example, the inline code mark excludes any other mark (bold, italic, and all others). ```js -MarkExtension.create({ +Mark.create({ // must not coexist with the bold mark excludes: 'bold' // exclude any other mark @@ -222,7 +222,7 @@ MarkExtension.create({ Add this mark to a group of extensions, which can be referred to in the content attribute of the schema. ```js -MarkExtension.create({ +Mark.create({ // add this mark to the 'basic' group group: 'basic', // add this mark to the 'basic' and the 'foobar' group @@ -234,7 +234,7 @@ MarkExtension.create({ Users expect code to behave very differently. For all kind of marks containing code, you can set `code: true` to take this into account. ```js -MarkExtension.create({ +Mark.create({ code: true, }) ``` @@ -243,7 +243,7 @@ MarkExtension.create({ By default marks can span multiple nodes when rendered as HTML. Set `spanning: false` to indicate that a mark must not span multiple nodes. ```js -MarkExtension.create({ +Mark.create({ spanning: false, }) ``` diff --git a/docs/src/docPages/guide/build-custom-extensions.md b/docs/src/docPages/guide/build-custom-extensions.md index 1ad920d0..34acf50a 100644 --- a/docs/src/docPages/guide/build-custom-extensions.md +++ b/docs/src/docPages/guide/build-custom-extensions.md @@ -386,24 +386,24 @@ const CustomLink = Link.extend({ There is a whole lot to learn about node views, so head over to the [dedicated section in our guide about node views](/guide/advanced-node-views) for more information. If you’re looking for a real-world example, look at the source code of the [`TaskItem`](/api/nodes/task-item) node. This is using a node view to render the checkboxes. ## Start from scratch -You can also build your own extensions from scratch with the `NodeExtension`, `MarkExtension`, and `Extension` classes. Pass an option with your code and configuration. +You can also build your own extensions from scratch with the `Node`, `Mark`, and `Extension` classes. Pass an option with your code and configuration. And if everything is working fine, don’t forget to [share it with the community](https://github.com/ueberdosis/tiptap-next/issues/new/choose). ### Create a node ```js -import { NodeExtension } from '@tiptap/core' +import { Node } from '@tiptap/core' -const CustomNode = NodeExtension.create({ +const CustomNode = Node.create({ // Your code goes here. }) ``` ### Create a mark ```js -import { MarkExtension } from '@tiptap/core' +import { Mark } from '@tiptap/core' -const CustomMark = MarkExtension.create({ +const CustomMark = Mark.create({ // Your code goes here. }) ``` diff --git a/docs/src/docPages/overview/upgrade-guide.md b/docs/src/docPages/overview/upgrade-guide.md index 8b0a2972..b6826e57 100644 --- a/docs/src/docPages/overview/upgrade-guide.md +++ b/docs/src/docPages/overview/upgrade-guide.md @@ -44,9 +44,9 @@ new Editor({ In case you’ve built some custom extensions for your project, you’re required to rewrite them to fit the new API. No worries, you can keep a lot of your work though. The `schema`, `commands`, `keys`, `inputRules` and `pasteRules` all work like they did before. It’s just different how you register them. ```js -import { NodeExtension } from '@tiptap/core' +import { Node } from '@tiptap/core' -const CustomExtension = NodeExtension.create({ +const CustomExtension = Node.create({ name: 'custom_extension' defaultOptions: { … diff --git a/packages/core/src/Editor.ts b/packages/core/src/Editor.ts index 7b9c9df2..f22cd5d1 100644 --- a/packages/core/src/Editor.ts +++ b/packages/core/src/Editor.ts @@ -15,8 +15,8 @@ import CommandManager from './CommandManager' import ExtensionManager from './ExtensionManager' import EventEmitter from './EventEmitter' import { Extension } from './Extension' -import { NodeExtension } from './NodeExtension' -import { MarkExtension } from './MarkExtension' +import { Node } from './Node' +import { Mark } from './Mark' import { Extensions, UnionToIntersection } from './types' import * as extensions from './extensions' import style from './style' @@ -43,10 +43,10 @@ export interface AllExtensions {} export type UnfilteredCommands = { [Item in keyof AllExtensions]: AllExtensions[Item] extends Extension ? ExtensionCommands - : AllExtensions[Item] extends NodeExtension - ? NodeExtensionCommands - : AllExtensions[Item] extends MarkExtension - ? MarkExtensionCommands + : AllExtensions[Item] extends Node + ? NodeCommands + : AllExtensions[Item] extends Mark + ? MarkCommands : never } diff --git a/packages/core/src/MarkExtension.ts b/packages/core/src/Mark.ts similarity index 92% rename from packages/core/src/MarkExtension.ts rename to packages/core/src/Mark.ts index 66f64e80..34617220 100644 --- a/packages/core/src/MarkExtension.ts +++ b/packages/core/src/Mark.ts @@ -1,5 +1,8 @@ import { - DOMOutputSpec, MarkSpec, Mark, MarkType, + DOMOutputSpec, + MarkSpec, + Mark as ProseMirrorMark, + MarkType, } from 'prosemirror-model' import { Plugin } from 'prosemirror-state' import { ExtensionSpec } from './Extension' @@ -44,7 +47,7 @@ export interface MarkExtensionSpec extends Overwri options: Options, }, props: { - mark: Mark, + mark: ProseMirrorMark, HTMLAttributes: { [key: string]: any }, } ) => DOMOutputSpec) | null, @@ -106,7 +109,7 @@ export interface MarkExtensionSpec extends Overwri }) => Plugin[], }> {} -export class MarkExtension { +export class Mark { config: Required = { name: 'mark', defaultOptions: {}, @@ -137,11 +140,11 @@ export class MarkExtension { } static create(config: MarkExtensionSpec) { - return new MarkExtension(config) + return new Mark(config) } configure(options: Partial) { - return MarkExtension + return Mark .create(this.config as MarkExtensionSpec) .#configure({ ...this.config.defaultOptions, @@ -159,7 +162,7 @@ export class MarkExtension { } extend(extendedConfig: Partial>) { - return new MarkExtension({ + return new Mark({ ...this.config, ...extendedConfig, } as MarkExtensionSpec) diff --git a/packages/core/src/NodeExtension.ts b/packages/core/src/Node.ts similarity index 94% rename from packages/core/src/NodeExtension.ts rename to packages/core/src/Node.ts index 80aa9b40..8252840c 100644 --- a/packages/core/src/NodeExtension.ts +++ b/packages/core/src/Node.ts @@ -1,5 +1,8 @@ import { - DOMOutputSpec, NodeSpec, Node, NodeType, + DOMOutputSpec, + NodeSpec, + Node as ProseMirrorNode, + NodeType, } from 'prosemirror-model' import { Plugin } from 'prosemirror-state' import { ExtensionSpec } from './Extension' @@ -79,7 +82,7 @@ export interface NodeExtensionSpec extends Overwri options: Options, }, props: { - node: Node, + node: ProseMirrorNode, HTMLAttributes: { [key: string]: any }, } ) => DOMOutputSpec) | null, @@ -150,7 +153,7 @@ export interface NodeExtensionSpec extends Overwri }) => NodeViewRenderer) | null, }> {} -export class NodeExtension { +export class Node { config: Required = { name: 'node', defaultOptions: {}, @@ -189,11 +192,11 @@ export class NodeExtension { } static create(config: NodeExtensionSpec) { - return new NodeExtension(config) + return new Node(config) } configure(options: Partial) { - return NodeExtension + return Node .create(this.config as NodeExtensionSpec) .#configure({ ...this.config.defaultOptions, @@ -211,7 +214,7 @@ export class NodeExtension { } extend(extendedConfig: Partial>) { - return new NodeExtension({ + return new Node({ ...this.config, ...extendedConfig, } as NodeExtensionSpec) diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 76199f78..63dee913 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -6,8 +6,8 @@ export { } from './Editor' export * from './Extension' -export * from './NodeExtension' -export * from './MarkExtension' +export * from './Node' +export * from './Mark' export * from './types' export { default as nodeInputRule } from './inputRules/nodeInputRule' diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index fd0065f0..d45214fb 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -1,11 +1,11 @@ -import { Node } from 'prosemirror-model' +import { Node as ProseMirrorNode } from 'prosemirror-model' import { Decoration, NodeView } from 'prosemirror-view' import { Extension } from './Extension' -import { NodeExtension } from './NodeExtension' -import { MarkExtension } from './MarkExtension' +import { Node } from './Node' +import { Mark } from './Mark' import { Editor } from './Editor' -export type Extensions = (Extension | NodeExtension | MarkExtension)[] +export type Extensions = (Extension | Node | Mark)[] export type Attribute = { default: any, @@ -46,7 +46,7 @@ export type AnyObject = { export type NodeViewRendererProps = { editor: Editor, - node: Node, + node: ProseMirrorNode, getPos: (() => number) | boolean, decorations: Decoration[], HTMLAttributes: { [key: string]: any }, diff --git a/packages/core/src/utils/splitExtensions.ts b/packages/core/src/utils/splitExtensions.ts index 1b69ab7e..97c6c9fe 100644 --- a/packages/core/src/utils/splitExtensions.ts +++ b/packages/core/src/utils/splitExtensions.ts @@ -1,12 +1,12 @@ import { Extensions } from '../types' import { Extension } from '../Extension' -import { NodeExtension } from '../NodeExtension' -import { MarkExtension } from '../MarkExtension' +import { Node } from '../Node' +import { Mark } from '../Mark' export default function splitExtensions(extensions: Extensions) { const baseExtensions = extensions.filter(extension => extension instanceof Extension) as Extension[] - const nodeExtensions = extensions.filter(extension => extension instanceof NodeExtension) as NodeExtension[] - const markExtensions = extensions.filter(extension => extension instanceof MarkExtension) as MarkExtension[] + const nodeExtensions = extensions.filter(extension => extension instanceof Node) as Node[] + const markExtensions = extensions.filter(extension => extension instanceof Mark) as Mark[] return { baseExtensions, diff --git a/packages/extension-blockquote/src/index.ts b/packages/extension-blockquote/src/index.ts index 99f4c67e..d0d3f318 100644 --- a/packages/extension-blockquote/src/index.ts +++ b/packages/extension-blockquote/src/index.ts @@ -1,4 +1,4 @@ -import { Command, NodeExtension } from '@tiptap/core' +import { Command, Node } from '@tiptap/core' import { wrappingInputRule } from 'prosemirror-inputrules' export interface BlockquoteOptions { @@ -9,7 +9,7 @@ export interface BlockquoteOptions { export const inputRegex = /^\s*>\s$/gm -const Blockquote = NodeExtension.create({ +const Blockquote = Node.create({ name: 'blockquote', defaultOptions: { diff --git a/packages/extension-bold/src/index.ts b/packages/extension-bold/src/index.ts index 4c917278..64ff675e 100644 --- a/packages/extension-bold/src/index.ts +++ b/packages/extension-bold/src/index.ts @@ -1,5 +1,5 @@ import { - Command, MarkExtension, markInputRule, markPasteRule, + Command, Mark, markInputRule, markPasteRule, } from '@tiptap/core' export interface BoldOptions { @@ -13,7 +13,7 @@ export const starPasteRegex = /(?:^|\s)((?:\*\*)((?:[^*]+))(?:\*\*))/gm export const underscoreInputRegex = /(?:^|\s)((?:__)((?:[^__]+))(?:__))$/gm export const underscorePasteRegex = /(?:^|\s)((?:__)((?:[^__]+))(?:__))/gm -const Bold = MarkExtension.create({ +const Bold = Mark.create({ name: 'bold', defaultOptions: { diff --git a/packages/extension-bullet-list/src/index.ts b/packages/extension-bullet-list/src/index.ts index dce59806..3fa2338b 100644 --- a/packages/extension-bullet-list/src/index.ts +++ b/packages/extension-bullet-list/src/index.ts @@ -1,4 +1,4 @@ -import { Command, NodeExtension } from '@tiptap/core' +import { Command, Node } from '@tiptap/core' import { wrappingInputRule } from 'prosemirror-inputrules' export interface BulletListOptions { @@ -9,7 +9,7 @@ export interface BulletListOptions { export const inputRegex = /^\s*([-+*])\s$/ -const BulletList = NodeExtension.create({ +const BulletList = Node.create({ name: 'bulletList', defaultOptions: { diff --git a/packages/extension-code-block/src/index.ts b/packages/extension-code-block/src/index.ts index bcc50552..2d697e9d 100644 --- a/packages/extension-code-block/src/index.ts +++ b/packages/extension-code-block/src/index.ts @@ -1,4 +1,4 @@ -import { Command, NodeExtension } from '@tiptap/core' +import { Command, Node } from '@tiptap/core' import { textblockTypeInputRule } from 'prosemirror-inputrules' export interface CodeBlockOptions { @@ -11,7 +11,7 @@ export interface CodeBlockOptions { export const backtickInputRegex = /^```(?[a-z]*)? $/ export const tildeInputRegex = /^~~~(?[a-z]*)? $/ -const CodeBlock = NodeExtension.create({ +const CodeBlock = Node.create({ name: 'codeBlock', defaultOptions: { diff --git a/packages/extension-code/src/index.ts b/packages/extension-code/src/index.ts index 2998e274..5eb5909e 100644 --- a/packages/extension-code/src/index.ts +++ b/packages/extension-code/src/index.ts @@ -1,6 +1,6 @@ import { Command, - MarkExtension, + Mark, markInputRule, markPasteRule, } from '@tiptap/core' @@ -14,7 +14,7 @@ export interface CodeOptions { export const inputRegex = /(?:^|\s)((?:`)((?:[^`]+))(?:`))$/gm export const pasteRegex = /(?:^|\s)((?:`)((?:[^`]+))(?:`))/gm -const Code = MarkExtension.create({ +const Code = Mark.create({ name: 'code', defaultOptions: { diff --git a/packages/extension-document/src/index.ts b/packages/extension-document/src/index.ts index 6816a860..5c9b4796 100644 --- a/packages/extension-document/src/index.ts +++ b/packages/extension-document/src/index.ts @@ -1,6 +1,6 @@ -import { NodeExtension } from '@tiptap/core' +import { Node } from '@tiptap/core' -const Document = NodeExtension.create({ +const Document = Node.create({ name: 'document', topNode: true, content: 'block+', diff --git a/packages/extension-hard-break/src/index.ts b/packages/extension-hard-break/src/index.ts index 5d448e9b..677b0941 100644 --- a/packages/extension-hard-break/src/index.ts +++ b/packages/extension-hard-break/src/index.ts @@ -1,7 +1,7 @@ -import { Command, NodeExtension } from '@tiptap/core' +import { Command, Node } from '@tiptap/core' import { exitCode } from 'prosemirror-commands' -const HardBreak = NodeExtension.create({ +const HardBreak = Node.create({ name: 'hardBreak', inline: true, diff --git a/packages/extension-heading/src/index.ts b/packages/extension-heading/src/index.ts index e7678dc7..c02b8a81 100644 --- a/packages/extension-heading/src/index.ts +++ b/packages/extension-heading/src/index.ts @@ -1,4 +1,4 @@ -import { Command, NodeExtension } from '@tiptap/core' +import { Command, Node } from '@tiptap/core' import { textblockTypeInputRule } from 'prosemirror-inputrules' type Level = 1 | 2 | 3 | 4 | 5 | 6 @@ -10,7 +10,7 @@ export interface HeadingOptions { }, } -const Heading = NodeExtension.create({ +const Heading = Node.create({ name: 'heading', defaultOptions: { diff --git a/packages/extension-highlight/src/index.ts b/packages/extension-highlight/src/index.ts index c8a662b6..c3298aa6 100644 --- a/packages/extension-highlight/src/index.ts +++ b/packages/extension-highlight/src/index.ts @@ -1,6 +1,6 @@ import { Command, - MarkExtension, + Mark, markInputRule, markPasteRule, } from '@tiptap/core' @@ -14,7 +14,7 @@ export interface HighlightOptions { export const inputRegex = /(?:^|\s)((?:==)((?:[^~]+))(?:==))$/gm export const pasteRegex = /(?:^|\s)((?:==)((?:[^~]+))(?:==))/gm -const Highlight = MarkExtension.create({ +const Highlight = Mark.create({ name: 'highlight', defaultOptions: { diff --git a/packages/extension-horizontal-rule/src/index.ts b/packages/extension-horizontal-rule/src/index.ts index 5091c2e6..ebab3e3b 100644 --- a/packages/extension-horizontal-rule/src/index.ts +++ b/packages/extension-horizontal-rule/src/index.ts @@ -1,4 +1,4 @@ -import { Command, NodeExtension, nodeInputRule } from '@tiptap/core' +import { Command, Node, nodeInputRule } from '@tiptap/core' export interface HorizontalRuleOptions { HTMLAttributes: { @@ -6,7 +6,7 @@ export interface HorizontalRuleOptions { }, } -const HorizontalRule = NodeExtension.create({ +const HorizontalRule = Node.create({ name: 'horizontalRule', defaultOptions: { diff --git a/packages/extension-image/src/index.ts b/packages/extension-image/src/index.ts index 50dbd561..7eeb831b 100644 --- a/packages/extension-image/src/index.ts +++ b/packages/extension-image/src/index.ts @@ -1,4 +1,4 @@ -import { Command, NodeExtension, nodeInputRule } from '@tiptap/core' +import { Command, Node, nodeInputRule } from '@tiptap/core' export interface ImageOptions { inline: boolean, @@ -9,7 +9,7 @@ export interface ImageOptions { export const inputRegex = /!\[(.+|:?)]\((\S+)(?:(?:\s+)["'](\S+)["'])?\)/ -const Image = NodeExtension.create({ +const Image = Node.create({ name: 'image', defaultOptions: { diff --git a/packages/extension-italic/src/index.ts b/packages/extension-italic/src/index.ts index f493761a..9843f65e 100644 --- a/packages/extension-italic/src/index.ts +++ b/packages/extension-italic/src/index.ts @@ -1,6 +1,6 @@ import { Command, - MarkExtension, + Mark, markInputRule, markPasteRule, } from '@tiptap/core' @@ -16,7 +16,7 @@ export const starPasteRegex = /(?:^|\s)((?:\*)((?:[^*]+))(?:\*))/gm export const underscoreInputRegex = /(?:^|\s)((?:_)((?:[^_]+))(?:_))$/gm export const underscorePasteRegex = /(?:^|\s)((?:_)((?:[^_]+))(?:_))/gm -const Italic = MarkExtension.create({ +const Italic = Mark.create({ name: 'italic', defaultOptions: { diff --git a/packages/extension-link/src/index.ts b/packages/extension-link/src/index.ts index b931661f..3570b998 100644 --- a/packages/extension-link/src/index.ts +++ b/packages/extension-link/src/index.ts @@ -1,4 +1,4 @@ -import { Command, MarkExtension, markPasteRule } from '@tiptap/core' +import { Command, Mark, markPasteRule } from '@tiptap/core' import { Plugin, PluginKey } from 'prosemirror-state' export interface LinkOptions { @@ -10,7 +10,7 @@ export interface LinkOptions { export const pasteRegex = /https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z]{2,}\b(?:[-a-zA-Z0-9@:%._+~#=?!&/()]*)/gi -const Link = MarkExtension.create({ +const Link = Mark.create({ name: 'link', inclusive: false, diff --git a/packages/extension-list-item/src/index.ts b/packages/extension-list-item/src/index.ts index 76f49785..b0d88118 100644 --- a/packages/extension-list-item/src/index.ts +++ b/packages/extension-list-item/src/index.ts @@ -1,4 +1,4 @@ -import { NodeExtension } from '@tiptap/core' +import { Node } from '@tiptap/core' export interface ListItemOptions { HTMLAttributes: { @@ -6,7 +6,7 @@ export interface ListItemOptions { }, } -const ListItem = NodeExtension.create({ +const ListItem = Node.create({ name: 'listItem', defaultOptions: { diff --git a/packages/extension-ordered-list/src/index.ts b/packages/extension-ordered-list/src/index.ts index 247b0930..d20b361a 100644 --- a/packages/extension-ordered-list/src/index.ts +++ b/packages/extension-ordered-list/src/index.ts @@ -1,4 +1,4 @@ -import { Command, NodeExtension } from '@tiptap/core' +import { Command, Node } from '@tiptap/core' import { wrappingInputRule } from 'prosemirror-inputrules' export interface OrderedListOptions { @@ -9,7 +9,7 @@ export interface OrderedListOptions { export const inputRegex = /^(\d+)\.\s$/ -const OrderedList = NodeExtension.create({ +const OrderedList = Node.create({ name: 'orderedList', defaultOptions: { diff --git a/packages/extension-paragraph/src/index.ts b/packages/extension-paragraph/src/index.ts index 9f2dbcef..961d08eb 100644 --- a/packages/extension-paragraph/src/index.ts +++ b/packages/extension-paragraph/src/index.ts @@ -1,4 +1,4 @@ -import { Command, NodeExtension } from '@tiptap/core' +import { Command, Node } from '@tiptap/core' export interface ParagraphOptions { HTMLAttributes: { @@ -6,7 +6,7 @@ export interface ParagraphOptions { }, } -const Paragraph = NodeExtension.create({ +const Paragraph = Node.create({ name: 'paragraph', defaultOptions: { diff --git a/packages/extension-strike/src/index.ts b/packages/extension-strike/src/index.ts index bd6f1914..197e949e 100644 --- a/packages/extension-strike/src/index.ts +++ b/packages/extension-strike/src/index.ts @@ -1,6 +1,6 @@ import { Command, - MarkExtension, + Mark, markInputRule, markPasteRule, } from '@tiptap/core' @@ -14,7 +14,7 @@ export interface StrikeOptions { export const inputRegex = /(?:^|\s)((?:~~)((?:[^~]+))(?:~~))$/gm export const pasteRegex = /(?:^|\s)((?:~~)((?:[^~]+))(?:~~))/gm -const Strike = MarkExtension.create({ +const Strike = Mark.create({ name: 'strike', defaultOptions: { diff --git a/packages/extension-task-item/src/index.ts b/packages/extension-task-item/src/index.ts index b6ea4cfd..ce7c0ab3 100644 --- a/packages/extension-task-item/src/index.ts +++ b/packages/extension-task-item/src/index.ts @@ -1,4 +1,4 @@ -import { NodeExtension, mergeAttributes } from '@tiptap/core' +import { Node, mergeAttributes } from '@tiptap/core' import { wrappingInputRule } from 'prosemirror-inputrules' export interface TaskItemOptions { @@ -10,7 +10,7 @@ export interface TaskItemOptions { export const inputRegex = /^\s*(\[([ |x])\])\s$/ -const TaskItem = NodeExtension.create({ +const TaskItem = Node.create({ name: 'taskItem', defaultOptions: { diff --git a/packages/extension-task-list/src/index.ts b/packages/extension-task-list/src/index.ts index 0a5d0f96..554cf283 100644 --- a/packages/extension-task-list/src/index.ts +++ b/packages/extension-task-list/src/index.ts @@ -1,4 +1,4 @@ -import { Command, NodeExtension, mergeAttributes } from '@tiptap/core' +import { Command, Node, mergeAttributes } from '@tiptap/core' export interface TaskListOptions { HTMLAttributes: { @@ -6,7 +6,7 @@ export interface TaskListOptions { }, } -const TaskList = NodeExtension.create({ +const TaskList = Node.create({ name: 'taskList', defaultOptions: { diff --git a/packages/extension-text-style/src/index.ts b/packages/extension-text-style/src/index.ts index fa0633e2..bed66e32 100644 --- a/packages/extension-text-style/src/index.ts +++ b/packages/extension-text-style/src/index.ts @@ -1,6 +1,6 @@ -import { Command, MarkExtension, getMarkAttrs } from '@tiptap/core' +import { Command, Mark, getMarkAttrs } from '@tiptap/core' -const TextStyle = MarkExtension.create({ +const TextStyle = Mark.create({ name: 'textStyle', parseHTML() { diff --git a/packages/extension-text/src/index.ts b/packages/extension-text/src/index.ts index d0a6029a..b6bea78d 100644 --- a/packages/extension-text/src/index.ts +++ b/packages/extension-text/src/index.ts @@ -1,6 +1,6 @@ -import { NodeExtension } from '@tiptap/core' +import { Node } from '@tiptap/core' -const Text = NodeExtension.create({ +const Text = Node.create({ name: 'text', group: 'inline', }) diff --git a/packages/extension-underline/src/index.ts b/packages/extension-underline/src/index.ts index 7ea37688..0f9cb39c 100644 --- a/packages/extension-underline/src/index.ts +++ b/packages/extension-underline/src/index.ts @@ -1,4 +1,4 @@ -import { Command, MarkExtension } from '@tiptap/core' +import { Command, Mark } from '@tiptap/core' export interface UnderlineOptions { HTMLAttributes: { @@ -6,7 +6,7 @@ export interface UnderlineOptions { }, } -const Underline = MarkExtension.create({ +const Underline = Mark.create({ name: 'underline', defaultOptions: {