@tiptap/core Changelog
Changelog for @tiptap/core
3.22.3
Patch Changes
- cb28e7b: Fixed
insertContentAtcorrupting the document when inserting inline content with marks at the start of a paragraph. Thefrom - 1position adjustment now only applies to block-level content.- @tiptap/pm@3.22.3
3.22.2
Patch Changes
- f1d504c: Fix incorrect selection placement when pasting at the end of a marked text node, ensuring inclusive marks are respected
- 404c683: Fixes list toggling when the entire document is selected
- @tiptap/pm@3.22.2
3.22.1
Patch Changes
- ee03ac0: Fix NodeView not re-rendering when a node's position changes without content or decoration changes (e.g. when a sibling node is moved within the same parent)
- b88f9ed: Don't stop dragover/dragenter events in NodeViews, to prevent spurious drag-copy cursors
- @tiptap/pm@3.22.1
3.22.0
Patch Changes
- 912a49b: Fix HTML character escaping in markdown roundtrip. HTML entities (
<,>,&,") are now decoded to literal characters when parsing markdown into the editor.<,>, and&are re-encoded when serializing back to markdown, while"is preserved as a literal character since double quotes are ordinary in markdown. Code detection for skipping encoding now uses thecode: trueextension spec instead of hardcoded type names. Literal characters inside code blocks and inline code are always preserved. - 7d4fb9a: Fix ResizableNodeView ignoring node's inline setting by using
inline-flexfor inline nodes andflexfor block nodes - 0c1c112: extendMarkRange defaults to using the attributes of the first mark of the given type, instead of
attributes = {}. In particular,extendMarkRange('link')no longer extends to adjacent links with different hrefs; restore the previous behavior withextendMarkRange('link', {}). - 0c1c112: Fix getMarkRange attributes default to consider the first mark of the given type
- f99bdc2: Guard mark delete event handling when
unsetMarkremoves a mark from inline content that starts at position0, preventing aRangeErrorduring the before-node lookup.- @tiptap/pm@3.22.0
3.21.0
Patch Changes
- @tiptap/pm@3.21.0
3.20.6
Patch Changes
- @tiptap/pm@3.20.6
3.20.5
Patch Changes
- @tiptap/pm@3.20.5
3.20.4
Patch Changes
- 0bcf3c2: Fixed Tiptap not publishing with build dist artifacts
- @tiptap/pm@3.20.4
3.20.3
Patch Changes
- c94fac4: Fixed
isNodeEmpty()so multi-line text with non-whitespace content is no longer treated as empty whenignoreWhitespaceis enabled. - 6b9ea92: Fixed overlapping bold and italic markdown serialization and round-tripping.
- @tiptap/pm@3.20.3
3.20.2
Patch Changes
- 269823d: Improved markdown empty-paragraph roundtripping across top-level and nested block content. Empty paragraphs now serialize with natural blank-line spacing for the first paragraph in a run and
markers for subsequent empty paragraphs at the same level, while parsing preserves those empty paragraphs when converting markdown back to JSON.- @tiptap/pm@3.20.2
3.20.1
Patch Changes
- 25f57e4: Fix inline
styleparsing inmergeAttributesfor values containing:or;(e.g.url(https://...)orurl(data:...;charset=...,)) and skip incomplete declarations- @tiptap/pm@3.20.1
3.20.0
Minor Changes
- 57624a1: Add
transformPastedHTMLextension API that allows extensions to transform pasted HTML content before it's parsed into the editor, enabling cleanup of styles, removal of dangerous content, and modification of pasted HTML through a chainable transform system.
Patch Changes
- 4b731e2: Fix checking if mark is active and toggling off marks when part of the selection does not allow the mark (e.g. a code block)
- 98546ac: Global attributes now support shorthand string values for
types: use'*'to apply to all nodes and marks,'nodes'for all nodes (excluding text), or'marks'for all marks. - 76ce47d: Fixed a typo in the documentation of
editor.view- @tiptap/pm@3.20.0
3.19.0
Patch Changes
- @tiptap/pm@3.19.0
3.18.0
Patch Changes
- @tiptap/pm@3.18.0
3.17.1
Patch Changes
- aa9709e: Fixed
$nodes()method to correctly return inline nodes (like text, mention, etc.) by fixing thechildrengetter inNodePosclass - b46e66a: Fixed ResizableNodeView contentDOM getter to return null instead of undefined for proper TypeScript compatibility
- @tiptap/pm@3.17.1
3.17.0
Patch Changes
- eecf1c9: Added
isFirefoxutility to core- @tiptap/pm@3.17.0
3.16.0
Patch Changes
- @tiptap/pm@3.16.0
3.15.3
Patch Changes
- 8f86f06: Fix Safari scrolling to top when using editor.chain().focus() commands
- @tiptap/pm@3.15.3
3.15.2
Patch Changes
- @tiptap/pm@3.15.2
3.15.1
Patch Changes
- @tiptap/pm@3.15.1
3.15.0
Minor Changes
- ac8361c: Add a new
dispatchTransactionhook to extensions, allowing developers to intercept, modify, or block transactions before they are applied to the editor state.
Patch Changes
- @tiptap/pm@3.15.0
3.14.0
Patch Changes
- @tiptap/pm@3.14.0
3.13.0
Minor Changes
- e3b4f68: 1. Added an optional
createCustomHandlecallback toResizableNodeView, allowing developers to fully customize resize handles. When provided, it replaces the default handle creation and bypasses the built-inpositionHandlelogic, giving complete control over markup, styling, and positioning while preserving backward compatibility. 2. Removed predefined inline styles from thewrapperelement to better support dynamic alignment. This eliminates the need for!importantoverrides in user styles. 3. Added an editorupdateevent listener to dynamically attach or remove resize handles based on the editor’s editable state. The implementation tracks the previous editable state to avoid unnecessary re-renders.
Patch Changes
- 526365a: Add 'mentionSuggestionChar' to allowedAttributes for Markdown serialization in multi-mention setups. The attribute is only serialized when it differs from the default '@' character, keeping markdown output clean for single-mention users.
- @tiptap/pm@3.13.0
3.12.1
Patch Changes
- @tiptap/pm@3.12.1
3.12.0
Minor Changes
-
f232c5a: Implement position mapping using the
MappablePositionclass. This enables position mapping in collaborative editing scenarios.- Introduce
MappablePositionclass in core withposition,fromJSON, andtoJSONmethods - Add
editor.utilsproperty withgetUpdatedPosition(position, transaction)andcreateMappablePosition()methods - Create
CollaborationMappablePositionsubclass that extendsMappablePositionwith Y.js relative position support
- Introduce
Patch Changes
- @tiptap/pm@3.12.0
3.11.1
Patch Changes
-
d0c4264: Improve TypeScript generics for Node.extend
The Node.extend method's TypeScript signature was updated so that ExtendedConfig can extend NodeConfig and MarkConfig, improving type inference when extending Node and Mark classes with additional config properties.
This is a type-only change — there are no runtime behavior changes.
- @tiptap/pm@3.11.1
3.11.0
Minor Changes
- 541c93c: Add native text direction support for RTL and bidirectional content. The editor now includes a
textDirectionoption that can be set to'ltr','rtl', or'auto'to control the direction of all content globally. Additionally, newsetTextDirectionandunsetTextDirectioncommands allow for granular control of text direction on specific nodes. This enables proper rendering of right-to-left languages like Arabic and Hebrew, as well as bidirectional text mixing multiple languages.
Patch Changes
- @tiptap/pm@3.11.0
3.10.8
Patch Changes
- 8375241: Fixed a bug that caused extra characters to be inserted after a parsed, nestable content block by accounting for leading newlines
- b7ead7c: Add documentation comments to Tiptap JSON types
- 95d3e80: allow
undefinedas a value for thedefaultattribute key - fd479bd: Fix
updateAttributesandresetAttributescommands to return accurate results when used with.can(). Previously, these commands would always returntrueeven when they couldn't perform the operation. Now they correctly returnfalsewhen no matching nodes or marks are found in the selection.- @tiptap/pm@3.10.8
3.10.7
Patch Changes
- @tiptap/pm@3.10.7
3.10.6
Patch Changes
- @tiptap/pm@3.10.6
3.10.5
Patch Changes
- 92fae18: Fixed ProseMirror schema generation to properly respect
isRequiredattribute configuration. Previously, attributes marked withisRequired: truewere incorrectly treated as optional because adefaultproperty was always included in the schema specification. ProseMirror determines attribute requirements by the absence of thedefaultproperty, so now thedefaultis only included when the attribute is not required and a default value is explicitly defined.- @tiptap/pm@3.10.5
3.10.4
Patch Changes
- 64561c4: Fix autofocus behavior to prevent unwanted scrolling when disabled
- @tiptap/pm@3.10.4
3.10.3
Patch Changes
- @tiptap/pm@3.10.3
3.10.2
Patch Changes
- @tiptap/pm@3.10.2
3.10.1
Patch Changes
- 3564e7c: Use correct
ResizableNodeViewclass name- @tiptap/pm@3.10.1
3.10.0
Minor Changes
-
4aa9f57: Add a new ResizableNodeview NodeView to core that wraps elements (images, videos, iframes) with configurable resize handles. It provides live onResize/onCommit callbacks, min/max constraints, aspect-ratio support, and styling hooks (class names + data attributes) to improve UX when resizing media inside the editor.
-
4aa9f57: the addNodeView function can now return
nullto dynamically disable rendering of a node viewWhile this should not directly cause any issues, it's noteworthy as it still could affect some behavior in some edge cases.
Patch Changes
- @tiptap/pm@3.10.0
3.9.1
Patch Changes
- @tiptap/pm@3.9.1
3.9.0
Patch Changes
- bbb8e16: Only remove injected CSS on unmount if no other editors are in the document (fixes #6836)
- @tiptap/pm@3.9.0
3.8.0
Patch Changes
- @tiptap/pm@3.8.0
3.7.2
Patch Changes
- @tiptap/pm@3.7.2
3.7.1
Patch Changes
- @tiptap/pm@3.7.1
3.7.0
Minor Changes
-
35645d9: All commands and their corresponding TypeScript types are now exported from
@tiptap/coreso they can be imported and referenced directly by consumers. This makes it easier to build typed helpers, extensions, and tests that depend on the command signatures.Why:
- Previously some command option types were only available as internal types or scattered across files, which made it awkward for downstream users to import and reuse them.
import { commands } from '@tiptap/core'Notes:
- This is a non-breaking, additive change. It improves ergonomics for TypeScript consumers.
- If you rely on previously private/internal types, prefer the exported types from
@tiptap/coregoing forward.
-
35645d9: Add comprehensive bidirectional markdown support to Tiptap through a new
@tiptap/markdownpackage and Markdown utilities in@tiptap/core.New Package:
@tiptap/markdown- A new official extension that provides full Markdown parsing and serialization capabilities using MarkedJS as the underlying Markdown parser.Core Features:
Extension API
MarkdownExtension: Main extension that adds Markdown support to your editorMarkdownManager: Core engine for parsing and serializing Markdown- Parse Markdown strings to Tiptap JSON:
editor.markdown.parse(markdown) - Serialize Tiptap JSON to Markdown:
editor.markdown.serialize(json) - Access to underlying marked.js instance:
editor.markdown.instance
- Parse Markdown strings to Tiptap JSON:
Editor Methods
editor.getMarkdown(): Serialize current editor content to Markdown stringeditor.markdown: Access to MarkdownManager instance for advanced operations
Editor Options:
contentType: Control the type of content that is inserted into the editor. Can bejson,htmlormarkdown- defaults tojsonand will automatically detect invalid content types (like JSON when it is actually Markdown).new Editor({ content: '# Hello World', contentType: 'markdown', })
Command Options: All content commands now support an
contentTypeoption:setContent(markdown, { contentType: 'markdown' }): Replace editor content with markdowninsertContent(markdown, { contentType: 'markdown' }): Insert markdown at cursor positioninsertContentAt(position, markdown, { contentType: 'markdown' }): Insert Markdown at specific position
For more, check the documentation.
Patch Changes
- 35645d9: The extension manager now provides a new property
baseExtensionsthat contains an unflattened array of extensions- @tiptap/pm@3.7.0
3.6.7
Patch Changes
- @tiptap/pm@3.6.7
3.6.6
Patch Changes
- @tiptap/pm@3.6.6
3.6.5
Patch Changes
- 1e4caea: Editors can now emit
transactionandupdateevents before being mounted. This means smoother state handling and instant feedback from editors, even when they're not in the DOM.- @tiptap/pm@3.6.5
3.6.4
Patch Changes
- @tiptap/pm@3.6.4
3.6.3
Patch Changes
- 67f7b4a: Refined the
JSONContent.attrsdefinition to exactly mirror the structure returned byeditor.getJSON(). This ensures strict type safety and consistency between the editor output and the expected type, eliminating errors caused by mismatched attribute signatures.- @tiptap/pm@3.6.3
3.6.2
Patch Changes
- @tiptap/pm@3.6.2
3.6.1
Patch Changes
- @tiptap/pm@3.6.1
3.6.0
Patch Changes
-
c0190bd: Improve typing and docs for
EditorOptions.elementto reflect all supported mounting modes and align behavior across adapters.elementnow accepts:Element: the editor is appended inside the given element.{ mount: HTMLElement }: the editor is mounted directly tomount(no extra wrapper).(editorEl: HTMLElement) => void: a function that receives the editor element so you can place it anywhere in the DOM.null: no automatic mounting.
- @tiptap/pm@3.6.0
3.5.3
Patch Changes
- @tiptap/pm@3.5.3
3.5.2
Patch Changes
- @tiptap/pm@3.5.2
3.5.1
Patch Changes
- @tiptap/pm@3.5.1
3.5.0
Patch Changes
- @tiptap/pm@3.5.0
3.4.6
Patch Changes
-
968016f: Added support for the
undoableoption in InputRules (matching ProseMirror’s implementation).- When
false, the change will not be tracked as undoable. - Default remains
truefor backward compatibility.
This brings Tiptap’s InputRules behavior in line with ProseMirror and gives developers finer control over undo functionality.
- @tiptap/pm@3.4.6
- When
3.4.5
Patch Changes
- 0226d42: Fix an issue where injected CSS was not mounted correctly when the editor instance was mounted. The fix ensures CSS injected by the editor is attached to the document when the editor mounts, preventing missing styles in some mount/unmount scenarios.
- 37af83b: refactor: replace
map(...).flat()withflatMapfor simpler, more efficient array flattening - f598ac7: Fix bug in
insertContentAtcommand where extra content would get deleted when the selection was at the beginning of the document and a node was inserted- @tiptap/pm@3.4.5
3.4.4
Patch Changes
- 00cf1d7: Fix bug in
insertContentAtcommand where extra content would get deleted when the selection was at the beginning of the document and a node was inserted- @tiptap/pm@3.4.4
3.4.3
Patch Changes
- 1ea8906: When the editor view is created, it now will also include
nodeViewsandmarkViewsproperties instead of setting them afterward. This avoids serialization of the editor state to HTML which will be replaced by node views anyway.- @tiptap/pm@3.4.3
3.4.2
Patch Changes
- @tiptap/pm@3.4.2
3.4.1
Patch Changes
- @tiptap/pm@3.4.1
3.4.0
Minor Changes
- ad51daa: Add
mountandunmountevents to theEditorinstance for tracking mounts and unmounts
Patch Changes
-
895c73f: Fix
can().toggleMark()returning incorrect result when cursor is inside nodes that disallow marksFixed an issue where
can().toggleMark('bold')incorrectly returnedtruewhen the cursor was positioned inside a code block (with no selection), even though marks are not allowed in code blocks. The method now correctly returnsfalsein this scenario by checking if the parent node allows the mark type when the selection is a cursor.- @tiptap/pm@3.4.0
3.3.1
Patch Changes
- @tiptap/pm@3.3.1
3.3.0
Minor Changes
-
5423726: Make input rules and paste rules respect extension
priorityby registering them per-extension instead of aggregating them into a single global plugin.Why
Previously all
addInputRules()andaddPasteRules()were gathered into one global plugin which ran before the other plugins. That caused conflicts where some extensions (for example mention/suggestion with#) could not preempt the built-in heading input rule.What changed
- Input and paste rules are now created and registered at the position of the
owning extension. This makes their execution order follow the extension
sorting/
prioritymechanism. - Behavior is more predictable: extensions with higher
prioritycan now take precedence over lower priority extensions' input/paste rules.
Migration & compatibility
- This is a behavioral change. If you relied on the old global ordering (input
rules always running before other plugins), you may observe different
outcomes. In most cases this is desirable and fixes conflicts (like the
#mention vs. heading shortcut), but be aware of the change. - If you need to force the previous behavior for a specific rule, you can:
- Register the rule as a ProseMirror plugin via
addProseMirrorPlugins()on the extension and place it where you want it to run. - Adjust the extension
priorityvalue so the extension sits earlier or later in the ordering.
- Register the rule as a ProseMirror plugin via
If you have any questions or see regressions after upgrading, please open an issue with a small repro and we'll help triage.
- Input and paste rules are now created and registered at the position of the
owning extension. This makes their execution order follow the extension
sorting/
Patch Changes
-
5423726: Fix paste rule handling for node views and defensively guard empty ranges.
This patch ensures paste rules can correctly inspect node content when node-specific size metadata (
nodeSize) is present, falling back tonode.content.sizewhen needed. It also skips empty or invalid node ranges before callingtextBetween, preventing runtime errors originating from internal Fragment/Node traversals (for example: "Cannot read properties of undefined (reading 'nodeSize')").The change is a defensive bugfix; it does not change public APIs.
- @tiptap/pm@3.3.0
3.2.2
Patch Changes
- @tiptap/pm@3.2.2
3.2.1
Patch Changes
- 6a2873f: Ensure drag previews for node views work correctly in Safari by attaching
an offscreen clone of the node to the DOM while calling
setDragImage, and by preserving the original element's pixelwidth/heightso the preview matches the original. This prevents Safari from immediately cancelling the drag when a detached element is used as the drag image.- @tiptap/pm@3.2.1
3.2.0
Minor Changes
- 5056e3e: Fix Editor.unmount() failing in test environments due to missing DOM remove() method
Patch Changes
- @tiptap/pm@3.2.0
3.1.0
Patch Changes
- @tiptap/pm@3.1.0
3.0.9
Patch Changes
- @tiptap/pm@3.0.9
3.0.8
Patch Changes
- @tiptap/pm@3.0.8
3.0.7
Patch Changes
- @tiptap/pm@3.0.7
3.0.6
Patch Changes
- 2e71d05: Fix: Fix broken types for function chaining when calling extend
- @tiptap/pm@3.0.6
3.0.5
Patch Changes
- @tiptap/pm@3.0.5
3.0.4
Patch Changes
- 7ed03fa: Fix: Add correct overload for extension extend types"
- @tiptap/pm@3.0.4
3.0.3
Patch Changes
- 75cabde: Fix: Avoid the JSX Runtime to globally overwrite React's Element types when
/** @jsxImportSource @tiptap/core */is not used- @tiptap/pm@3.0.3
3.0.2
Patch Changes
- @tiptap/pm@3.0.2
3.0.1
Major Changes
-
a92f4a6: We are now building packages with tsup which does not support UMD builds, please repackage if you require UMD builds
-
5e957e5: This resolves in issue with SSR where the isDestroyed property could not be read while in SSR
-
37913d5:
getPosinNodeViewRendererPropstype now includesundefinedas possible return valueBefore
const pos = nodeViewProps.getPos() // Type was () => numberAfter
const pos = nodeViewProps.getPos() // Type is () => number | undefined if (pos !== undefined) { // Safe to use pos here } -
32958d6:
Node,MarkandExtensionconfig options now are strongly typed and do not allow arbitrary keys on the options object.To add keys, like when using
extendNodeSchemaorextendMarkSchema, you can do this:declare module '@tiptap/core' { interface NodeConfig { /** * This key will be added to all NodeConfig objects in your project */ newKey?: string } interface MarkConfig { /** * This key will be added to all MarkConfig objects in your project */ newKey?: string } interface ExtensionConfig { /** * This key will be added to all ExtensionConfig objects in your project */ newKey?: string } } -
12bb31a:
insertContentandinsertContentAtcommands should not split text nodes like paragraphs into multiple nodes when the inserted content is at the beginning of the text to avoid empty nodes being created -
062afaf:
clearContentcommand defaults to emitting updates now -
062afaf: Change signature of
setContentcommand to(content, options)and default to emitting updates -
32958d6:
editor.storageis now strongly typedStorageinstances, using a similar pattern as commands, where you can define the type of the storage value using namespaces like:declare module '@tiptap/core' { interface Storage { extensionName: StorageValue } } -
32958d6:
editor.storageis instantiated per editor rather than per extension.Previously, the storage value was a singleton per extension instance, this caused strange bugs when using multiple editor instances on a single page.
Now, storage instances are per editor instance, so changing the value on one
editor.storageinstance will not affect another editor's value.
Minor Changes
-
8de8e13: The editor instance now supports an
unmountmethod which allows for mounting and unmounting the editor to the DOM. This encourages re-use of editor instances by preserving all the same options between instances. This is different from thedestroymethod, which will unmount, emit thedestroyevent, and remove all event listeners. -
d0fda30: Add config option to emit content error when content check is disabled
-
0e3207f: Add support for markviews, which allow you to render custom views for marks within the editor. This is useful for rendering custom UI for marks, like a color picker for a text color mark or a link editor for a link mark.
Here is a plain JS markview example:
Mark.create({ // Other options... addMarkView() { return ({ mark, HTMLAttributes }) => { const dom = document.createElement('b') const contentDOM = document.createElement('span') dom.appendChild(contentDOM) return { dom, contentDOM, } } }, })React binding
To use a React component for a markview, you can use the
@tiptap/reactpackage:import { Mark } from '@tiptap/core' import { ReactMarkViewRenderer } from '@tiptap/react' import Component from './Component.jsx' export default Mark.create({ name: 'reactComponent', parseHTML() { return [ { tag: 'react-component', }, ] }, renderHTML({ HTMLAttributes }) { return ['react-component', HTMLAttributes] }, addMarkView() { return ReactMarkViewRenderer(Component) }, })And here is an example of a React component:
import { MarkViewContent, MarkViewRendererProps } from '@tiptap/react' import React from 'react' // eslint-disable-next-line @typescript-eslint/no-unused-vars export default (props: MarkViewRendererProps) => { const [count, setCount] = React.useState(0) return ( <span className="content" data-test-id="mark-view"> <MarkViewContent /> <label contentEditable={false}> React component: <button onClick={() => { setCount(count + 1) }} > This button has been clicked {count} times. </button> </label> </span> ) }Vue 3 binding
To use a Vue 3 component for a markview, you can use the
@tiptap/vue-3package:import { Mark } from '@tiptap/core' import { VueMarkViewRenderer } from '@tiptap/vue-3' import Component from './Component.vue' export default Mark.create({ name: 'vueComponent', parseHTML() { return [ { tag: 'vue-component', }, ] }, renderHTML({ HTMLAttributes }) { return ['vue-component', HTMLAttributes] }, addMarkView() { return VueMarkViewRenderer(Component) }, })And here is an example of a Vue 3 component:
<template> <span className="content" data-test-id="mark-view"> <mark-view-content /> <label contenteditable="false" >Vue Component:: <button @click="increase" class="primary">This button has been clicked {{ count }} times.</button> </label> </span> </template> <script> import { MarkViewContent, markViewProps } from '@tiptap/vue-3' export default { components: { MarkViewContent, }, data() { return { count: 0, } }, props: markViewProps, methods: { increase() { this.count += 1 }, }, } </script> -
28c5418: Adds a new
deleteevent which can detect content which has been deleted by the editor as a core extension -
412e1bd: Remove enableDevTools option
-
ff8eed6: Support
validateoption in node and mark attribute definitions. -
704f462: This introduces a new behavior for the editor, the ability to be safely run on the server-side (without rendering).
prosemirror-viewencapsulates all view (& DOM) related code, and cannot safely be SSR'd, but, the majority of the editor instance itself is in plain JS that does not require DOM APIs (unless your content is specified in HTML).But, we have so many convenient methods available for manipulating content. So, it is a shame that they could not be used on the server side too. With this change, the editor can be rendered on the server-side and will use a stub for select prosemirror-view methods. If accessing unsupported methods or values on the
editor.view, you will encounter runtime errors, so it is important for you to test to see if the methods you call actually work.This is a step towards being able to server-side render content, but, it is not completely supported yet. This does not mean that you can render an editor instance on the server and expect it to just output any HTML.
Usage
If you pass
element: nullto your editor options:- the
editor.viewwill not be initialized - the editor will not emit it's
'create'event - the focus will not be initialized to it's first position
You can however, later use the new
mountfunction on the instance, which will mount the editor view to a DOM element. This obviously will not be allowed on the server which has no document object.Therefore, this will work on the server:
import { Editor } from '@tiptap/core' import StarterKit from '@tiptap/starter-kit' const editor = new Editor({ element: null, content: { type: 'doc', content: [{ type: 'paragraph', content: [{ type: 'text', text: 'Hello, World!' }] }] }, extensions: [StarterKit], }) editor .chain() .selectAll() .setContent({ type: 'doc', content: [{ type: 'paragraph', content: [{ type: 'text', text: 'XYZ' }] }] }) .run() console.log(editor.state.doc.toJSON()) // { type: 'doc', content: [ { type: 'paragraph', content: [ { type: 'text', text: 'XYZ' } ] } ] }Any of these things will not work on the server, and result in a runtime error:
import { Editor } from '@tiptap/core' import StarterKit from '@tiptap/starter-kit' const editor = new Editor({ // document will not be defined in a server environment element: document.createElement('div'), content: { type: 'doc', content: [{ type: 'paragraph', content: [{ type: 'text', text: 'Hello, World!' }] }] }, extensions: [StarterKit], }) editor .chain() // focus is a command which depends on the editor-view, so it will not work in a server environment .focus() .run() console.log(editor.getHTML()) // getHTML relies on the editor-view, so it will not work in a server environment - the
-
ac897e7: Added the option to create extensions with a callback function instead of a flat configuration object
-
32958d6: Extensions, Nodes and Marks no longer respect the deprecated
defaultOptionsconfig value
Patch Changes
- 1b4c82b: We are now using pnpm package aliases for versions to enable better version pinning for the monorepository
- 20f68f6: Remove
editor.getCharacterCount()which was already deprecated and incorrectly implemented - 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
- 9f207a6: Fixes a bug where you could not unregister multiple plugins.
- 95b8c71: Add validation for target position within document range when trying to access children of a
NodePosinstance - 8c69002: Synced beta with stable features
- 664834f: Clone dragged node before dragging to get correct drag preview image
- 087d114: Added new
canInsertNodeutility that checks if a node can be inserted into a specific position - fc17b21: Fix RangeException in cut command when targetPos is zero
- e20006b: Fix: Prevent content deletion from non-editable Tiptap source editors during drag and drop.
- 5ba480b: Added
updateAttributesto MarkView and its renderers to allow updating MarkView attributes - d6c7558: For performance, if a transaction results in the exact same editor state (either filtered out or failed to apply), then do not attempt to re-apply the same editor state and do not emit any events associated to the transaction.
- 9ceeab4: Fixed a bug where jsx-runtime cjs files would break Jest runners because of ESM syntax
- bf835b0: Fixed an issue where images placed into an empty paragraph right after an existing image would replace the existing image instead
- 4e2f6d8: migration from prosemirror-dev-tools to prosemirror-dev-toolkit
- Updated dependencies [1b4c82b]
- Updated dependencies [1e91f9b]
- Updated dependencies [a92f4a6]
- Updated dependencies [89bd9c7]
- Updated dependencies [8c69002]
- Updated dependencies [62b0877]
- @tiptap/pm@3.0.1
3.0.0-beta.30
Patch Changes
- @tiptap/pm@3.0.0-beta.30
3.0.0-beta.29
Patch Changes
- @tiptap/pm@3.0.0-beta.29
3.0.0-beta.28
Patch Changes
- @tiptap/pm@3.0.0-beta.28
3.0.0-beta.27
Minor Changes
- 412e1bd: Remove enableDevTools option
Patch Changes
- @tiptap/pm@3.0.0-beta.27
3.0.0-beta.26
Patch Changes
- 5ba480b: Added
updateAttributesto MarkView and its renderers to allow updating MarkView attributes- @tiptap/pm@3.0.0-beta.26
3.0.0-beta.25
Patch Changes
- 4e2f6d8: migration from prosemirror-dev-tools to prosemirror-dev-toolkit
- @tiptap/pm@3.0.0-beta.25
3.0.0-beta.24
Patch Changes
- @tiptap/pm@3.0.0-beta.24
3.0.0-beta.23
Patch Changes
- @tiptap/pm@3.0.0-beta.23
3.0.0-beta.22
Patch Changes
- @tiptap/pm@3.0.0-beta.22
3.0.0-beta.21
Minor Changes
- 813674c: Added lazy-loaded ProseMirror Devtools integration which can be enabled via the new editor option
enableDevTools: true
Patch Changes
- fc17b21: Fix RangeException in cut command when targetPos is zero
- @tiptap/pm@3.0.0-beta.21
3.0.0-beta.20
Patch Changes
- @tiptap/pm@3.0.0-beta.20
3.0.0-beta.19
Patch Changes
- 9ceeab4: Fixed a bug where jsx-runtime cjs files would break Jest runners because of ESM syntax
- @tiptap/pm@3.0.0-beta.19
3.0.0-beta.18
Patch Changes
- @tiptap/pm@3.0.0-beta.18
3.0.0-beta.17
Patch Changes
- e20006b: Fix: Prevent content deletion from non-editable Tiptap source editors during drag and drop.
- @tiptap/pm@3.0.0-beta.17
3.0.0-beta.16
Minor Changes
- ac897e7: Added the option to create extensions with a callback function instead of a flat configuration object
Patch Changes
- bf835b0: Fixed an issue where images placed into an empty paragraph right after an existing image would replace the existing image instead
- @tiptap/pm@3.0.0-beta.16
3.0.0-beta.15
Patch Changes
- 087d114: Added new
canInsertNodeutility that checks if a node can be inserted into a specific position- @tiptap/pm@3.0.0-beta.15
3.0.0-beta.14
Patch Changes
- 95b8c71: Add validation for target position within document range when trying to access children of a
NodePosinstance- @tiptap/pm@3.0.0-beta.14
3.0.0-beta.13
Patch Changes
- @tiptap/pm@3.0.0-beta.13
3.0.0-beta.12
Patch Changes
- @tiptap/pm@3.0.0-beta.12
3.0.0-beta.11
Patch Changes
- @tiptap/pm@3.0.0-beta.11
3.0.0-beta.10
Patch Changes
- @tiptap/pm@3.0.0-beta.10
3.0.0-beta.9
Patch Changes
- @tiptap/pm@3.0.0-beta.9
3.0.0-beta.8
Patch Changes
- @tiptap/pm@3.0.0-beta.8
3.0.0-beta.7
Minor Changes
- d0fda30: Add config option to emit content error when content check is disabled
Patch Changes
- @tiptap/pm@3.0.0-beta.7
3.0.0-beta.6
Patch Changes
- @tiptap/pm@3.0.0-beta.6
3.0.0-beta.5
Patch Changes
- 8c69002: Synced beta with stable features
- Updated dependencies [8c69002]
- Updated dependencies [62b0877]
- @tiptap/pm@3.0.0-beta.5
3.0.0-beta.4
Major Changes
- 5e957e5: This resolves in issue with SSR where the isDestroyed property could not be read while in SSR
Patch Changes
- 9f207a6: Fixes a bug where you could not unregister multiple plugins.
- @tiptap/pm@3.0.0-beta.4
3.0.0-beta.3
Patch Changes
- 1b4c82b: We are now using pnpm package aliases for versions to enable better version pinning for the monorepository
- Updated dependencies [1b4c82b]
- @tiptap/pm@3.0.0-beta.3
3.0.0-beta.2
3.0.0-beta.1
Patch Changes
- 664834f: Clone dragged node before dragging to get correct drag preview image
3.0.0-beta.0
3.0.0-next.8
3.0.0-next.7
Minor Changes
- 8de8e13: The editor instance now supports an
unmountmethod which allows for mounting and unmounting the editor to the DOM. This encourages re-use of editor instances by preserving all the same options between instances. This is different from thedestroymethod, which will unmount, emit thedestroyevent, and remove all event listeners.
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
3.0.0-next.6
Major Changes
-
a92f4a6: We are now building packages with tsup which does not support UMD builds, please repackage if you require UMD builds
-
37913d5:
getPosinNodeViewRendererPropstype now includesundefinedas possible return valueBefore
const pos = nodeViewProps.getPos() // Type was () => numberAfter
const pos = nodeViewProps.getPos() // Type is () => number | undefined if (pos !== undefined) { // Safe to use pos here } -
32958d6:
Node,MarkandExtensionconfig options now are strongly typed and do not allow arbitrary keys on the options object.To add keys, like when using
extendNodeSchemaorextendMarkSchema, you can do this:declare module '@tiptap/core' { interface NodeConfig { /** * This key will be added to all NodeConfig objects in your project */ newKey?: string } interface MarkConfig { /** * This key will be added to all MarkConfig objects in your project */ newKey?: string } interface ExtensionConfig { /** * This key will be added to all ExtensionConfig objects in your project */ newKey?: string } } -
12bb31a:
insertContentandinsertContentAtcommands should not split text nodes like paragraphs into multiple nodes when the inserted content is at the beginning of the text to avoid empty nodes being created -
062afaf:
clearContentcommand defaults to emitting updates now -
062afaf: Change signature of
setContentcommand to(content, options)and default to emitting updates -
32958d6:
editor.storageis now strongly typedStorageinstances, using a similar pattern as commands, where you can define the type of the storage value using namespaces like:declare module '@tiptap/core' { interface Storage { extensionName: StorageValue } } -
32958d6:
editor.storageis instantiated per editor rather than per extension.Previously, the storage value was a singleton per extension instance, this caused strange bugs when using multiple editor instances on a single page.
Now, storage instances are per editor instance, so changing the value on one
editor.storageinstance will not affect another editor's value.
Minor Changes
-
0e3207f: Add support for markviews, which allow you to render custom views for marks within the editor. This is useful for rendering custom UI for marks, like a color picker for a text color mark or a link editor for a link mark.
Here is a plain JS markview example:
Mark.create({ // Other options... addMarkView() { return ({ mark, HTMLAttributes }) => { const dom = document.createElement('b') const contentDOM = document.createElement('span') dom.appendChild(contentDOM) return { dom, contentDOM, } } }, })React binding
To use a React component for a markview, you can use the
@tiptap/reactpackage:import { Mark } from '@tiptap/core' import { ReactMarkViewRenderer } from '@tiptap/react' import Component from './Component.jsx' export default Mark.create({ name: 'reactComponent', parseHTML() { return [ { tag: 'react-component', }, ] }, renderHTML({ HTMLAttributes }) { return ['react-component', HTMLAttributes] }, addMarkView() { return ReactMarkViewRenderer(Component) }, })And here is an example of a React component:
import { MarkViewContent, MarkViewRendererProps } from '@tiptap/react' import React from 'react' // eslint-disable-next-line @typescript-eslint/no-unused-vars export default (props: MarkViewRendererProps) => { const [count, setCount] = React.useState(0) return ( <span className="content" data-test-id="mark-view"> <MarkViewContent /> <label contentEditable={false}> React component: <button onClick={() => { setCount(count + 1) }} > This button has been clicked {count} times. </button> </label> </span> ) }Vue 3 binding
To use a Vue 3 component for a markview, you can use the
@tiptap/vue-3package:import { Mark } from '@tiptap/core' import { VueMarkViewRenderer } from '@tiptap/vue-3' import Component from './Component.vue' export default Mark.create({ name: 'vueComponent', parseHTML() { return [ { tag: 'vue-component', }, ] }, renderHTML({ HTMLAttributes }) { return ['vue-component', HTMLAttributes] }, addMarkView() { return VueMarkViewRenderer(Component) }, })And here is an example of a Vue 3 component:
<template> <span className="content" data-test-id="mark-view"> <mark-view-content /> <label contenteditable="false" >Vue Component:: <button @click="increase" class="primary">This button has been clicked {{ count }} times.</button> </label> </span> </template> <script> import { MarkViewContent, markViewProps } from '@tiptap/vue-3' export default { components: { MarkViewContent, }, data() { return { count: 0, } }, props: markViewProps, methods: { increase() { this.count += 1 }, }, } </script> -
28c5418: Adds a new
deleteevent which can detect content which has been deleted by the editor as a core extension -
ff8eed6: Support
validateoption in node and mark attribute definitions. -
704f462: This introduces a new behavior for the editor, the ability to be safely run on the server-side (without rendering).
prosemirror-viewencapsulates all view (& DOM) related code, and cannot safely be SSR'd, but, the majority of the editor instance itself is in plain JS that does not require DOM APIs (unless your content is specified in HTML).But, we have so many convenient methods available for manipulating content. So, it is a shame that they could not be used on the server side too. With this change, the editor can be rendered on the server-side and will use a stub for select prosemirror-view methods. If accessing unsupported methods or values on the
editor.view, you will encounter runtime errors, so it is important for you to test to see if the methods you call actually work.This is a step towards being able to server-side render content, but, it is not completely supported yet. This does not mean that you can render an editor instance on the server and expect it to just output any HTML.
Usage
If you pass
element: nullto your editor options:- the
editor.viewwill not be initialized - the editor will not emit it's
'create'event - the focus will not be initialized to it's first position
You can however, later use the new
mountfunction on the instance, which will mount the editor view to a DOM element. This obviously will not be allowed on the server which has no document object.Therefore, this will work on the server:
import { Editor } from '@tiptap/core' import StarterKit from '@tiptap/starter-kit' const editor = new Editor({ element: null, content: { type: 'doc', content: [{ type: 'paragraph', content: [{ type: 'text', text: 'Hello, World!' }] }] }, extensions: [StarterKit], }) editor .chain() .selectAll() .setContent({ type: 'doc', content: [{ type: 'paragraph', content: [{ type: 'text', text: 'XYZ' }] }] }) .run() console.log(editor.state.doc.toJSON()) // { type: 'doc', content: [ { type: 'paragraph', content: [ { type: 'text', text: 'XYZ' } ] } ] }Any of these things will not work on the server, and result in a runtime error:
import { Editor } from '@tiptap/core' import StarterKit from '@tiptap/starter-kit' const editor = new Editor({ // document will not be defined in a server environment element: document.createElement('div'), content: { type: 'doc', content: [{ type: 'paragraph', content: [{ type: 'text', text: 'Hello, World!' }] }] }, extensions: [StarterKit], }) editor .chain() // focus is a command which depends on the editor-view, so it will not work in a server environment .focus() .run() console.log(editor.getHTML()) // getHTML relies on the editor-view, so it will not work in a server environment - the
-
32958d6: Extensions, Nodes and Marks no longer respect the deprecated
defaultOptionsconfig value
Patch Changes
- 20f68f6: Remove
editor.getCharacterCount()which was already deprecated and incorrectly implemented - d6c7558: For performance, if a transaction results in the exact same editor state (either filtered out or failed to apply), then do not attempt to re-apply the same editor state and do not emit any events associated to the transaction.
3.0.0-next.5
Major Changes
-
32958d6:
Node,MarkandExtensionconfig options now are strongly typed and do not allow arbitrary keys on the options object.To add keys, like when using
extendNodeSchemaorextendMarkSchema, you can do this:declare module '@tiptap/core' { interface NodeConfig { /** * This key will be added to all NodeConfig objects in your project */ newKey?: string } interface MarkConfig { /** * This key will be added to all MarkConfig objects in your project */ newKey?: string } interface ExtensionConfig { /** * This key will be added to all ExtensionConfig objects in your project */ newKey?: string } } -
062afaf:
clearContentcommand defaults to emitting updates now -
062afaf: Change signature of
setContentcommand to(content, options)and default to emitting updates -
32958d6:
editor.storageis now strongly typedStorageinstances, using a similar pattern as commands, where you can define the type of the storage value using namespaces like:declare module '@tiptap/core' { interface Storage { extensionName: StorageValue } } -
32958d6:
editor.storageis instantiated per editor rather than per extension.Previously, the storage value was a singleton per extension instance, this caused strange bugs when using multiple editor instances on a single page.
Now, storage instances are per editor instance, so changing the value on one
editor.storageinstance will not affect another editor's value.
Minor Changes
-
0e3207f: Add support for markviews, which allow you to render custom views for marks within the editor. This is useful for rendering custom UI for marks, like a color picker for a text color mark or a link editor for a link mark.
Here is a plain JS markview example:
Mark.create({ // Other options... addMarkView() { return ({ mark, HTMLAttributes }) => { const dom = document.createElement('b') const contentDOM = document.createElement('span') dom.appendChild(contentDOM) return { dom, contentDOM, } } }, })React binding
To use a React component for a markview, you can use the
@tiptap/reactpackage:import { Mark } from '@tiptap/core' import { ReactMarkViewRenderer } from '@tiptap/react' import Component from './Component.jsx' export default Mark.create({ name: 'reactComponent', parseHTML() { return [ { tag: 'react-component', }, ] }, renderHTML({ HTMLAttributes }) { return ['react-component', HTMLAttributes] }, addMarkView() { return ReactMarkViewRenderer(Component) }, })And here is an example of a React component:
import { MarkViewContent, MarkViewRendererProps } from '@tiptap/react' import React from 'react' // eslint-disable-next-line @typescript-eslint/no-unused-vars export default (props: MarkViewRendererProps) => { const [count, setCount] = React.useState(0) return ( <span className="content" data-test-id="mark-view"> <MarkViewContent /> <label contentEditable={false}> React component: <button onClick={() => { setCount(count + 1) }} > This button has been clicked {count} times. </button> </label> </span> ) }Vue 3 binding
To use a Vue 3 component for a markview, you can use the
@tiptap/vue-3package:import { Mark } from '@tiptap/core' import { VueMarkViewRenderer } from '@tiptap/vue-3' import Component from './Component.vue' export default Mark.create({ name: 'vueComponent', parseHTML() { return [ { tag: 'vue-component', }, ] }, renderHTML({ HTMLAttributes }) { return ['vue-component', HTMLAttributes] }, addMarkView() { return VueMarkViewRenderer(Component) }, })And here is an example of a Vue 3 component:
<template> <span className="content" data-test-id="mark-view"> <mark-view-content /> <label contenteditable="false" >Vue Component:: <button @click="increase" class="primary">This button has been clicked {{ count }} times.</button> </label> </span> </template> <script> import { MarkViewContent, markViewProps } from '@tiptap/vue-3' export default { components: { MarkViewContent, }, data() { return { count: 0, } }, props: markViewProps, methods: { increase() { this.count += 1 }, }, } </script> -
28c5418: Adds a new
deleteevent which can detect content which has been deleted by the editor as a core extension -
704f462: This introduces a new behavior for the editor, the ability to be safely run on the server-side (without rendering).
prosemirror-viewencapsulates all view (& DOM) related code, and cannot safely be SSR'd, but, the majority of the editor instance itself is in plain JS that does not require DOM APIs (unless your content is specified in HTML).But, we have so many convenient methods available for manipulating content. So, it is a shame that they could not be used on the server side too. With this change, the editor can be rendered on the server-side and will use a stub for select prosemirror-view methods. If accessing unsupported methods or values on the
editor.view, you will encounter runtime errors, so it is important for you to test to see if the methods you call actually work.This is a step towards being able to server-side render content, but, it is not completely supported yet. This does not mean that you can render an editor instance on the server and expect it to just output any HTML.
Usage
If you pass
element: nullto your editor options:- the
editor.viewwill not be initialized - the editor will not emit it's
'create'event - the focus will not be initialized to it's first position
You can however, later use the new
mountfunction on the instance, which will mount the editor view to a DOM element. This obviously will not be allowed on the server which has no document object.Therefore, this will work on the server:
import { Editor } from '@tiptap/core' import StarterKit from '@tiptap/starter-kit' const editor = new Editor({ element: null, content: { type: 'doc', content: [{ type: 'paragraph', content: [{ type: 'text', text: 'Hello, World!' }] }] }, extensions: [StarterKit], }) editor .chain() .selectAll() .setContent({ type: 'doc', content: [{ type: 'paragraph', content: [{ type: 'text', text: 'XYZ' }] }] }) .run() console.log(editor.state.doc.toJSON()) // { type: 'doc', content: [ { type: 'paragraph', content: [ { type: 'text', text: 'XYZ' } ] } ] }Any of these things will not work on the server, and result in a runtime error:
import { Editor } from '@tiptap/core' import StarterKit from '@tiptap/starter-kit' const editor = new Editor({ // document will not be defined in a server environment element: document.createElement('div'), content: { type: 'doc', content: [{ type: 'paragraph', content: [{ type: 'text', text: 'Hello, World!' }] }] }, extensions: [StarterKit], }) editor .chain() // focus is a command which depends on the editor-view, so it will not work in a server environment .focus() .run() console.log(editor.getHTML()) // getHTML relies on the editor-view, so it will not work in a server environment - the
-
32958d6: Extensions, Nodes and Marks no longer respect the deprecated
defaultOptionsconfig value
3.0.0-next.4
3.0.0-next.3
3.0.0-next.2
Major Changes
-
37913d5: Fix
getPostype inNodeViewRendererPropsto potentially beundefinedBreaking change: Types may flag uses of getPos where an
undefinedpossibility isn't handled. Why this change was made: To ensure the type reflects the real functionality of this function. How to update: Ensure that the return value ofgetPosexists before making use of the value. -
12bb31a:
insertContentandinsertContentAtcommands should not split text nodes like paragraphs into multiple nodes when the inserted content is at the beginning of the text to avoid empty nodes being created
Patch Changes
- 283e606: Fixed an issue on Android where the focus command would cause the keyboard to flash
- ca6269e: Added support for drag-and-drop between multiple editors
- e0dfecc: Updates the typings to be inline with Prosemirror-view #5867
- 722ec00: Use an AllSelection for the selectAll command #5516
- b7ef150: Fixed an issue with nodeviews preventing any drag events in child nodes of the nodeview wrapper element
3.0.0-next.1
Major Changes
- a92f4a6: We are now building packages with tsup which does not support UMD builds, please repackage if you require UMD builds
Patch Changes
- da76972: Resolve several selection related bug #2690 #5208
- Updated dependencies [a92f4a6]
- @tiptap/pm@3.0.0-next.1
3.0.0-next.0
Patch Changes
- 0ec0af6: fix(core): findDuplicates - use Array.from when converting Set
- @tiptap/pm@3.0.0-next.0
2.12.0
2.11.9
2.11.8
Patch Changes
- 8147cc7: Fixes a bug where you could not unregister multiple plugins.
2.11.7
Patch Changes
- e23882d: Clone dragged node before dragging to get correct drag preview image
2.11.6
Patch Changes
- 826cfe7: Export focusEvents plugin key
2.11.5
2.11.4
2.11.3
Patch Changes
- a44a7c3: fix(core): do not reset marks, or nodes when using IME on mobile devices
- fa63c47: Focus synchronously only if on iOS or Android #4448
2.11.2
Patch Changes
- 2abd4df: Re-release
2.11.1
2.11.0
Minor Changes
- ff8eed6: Support
validateoptions in node and mark attribute definitions.
Patch Changes
- 20f68f6: Remove editor.getCharacterCount() which was already deprecated and incorrectly implemented
- d6c7558: If a transaction results in the exact same editor state (either filtered out or failed to apply) then do not attempt to re-apply the same editor state and do not emit any events associated to the transaction
2.5.8
Patch Changes
- a08bf85: This fixes a bug with inputrules not being able to resolve positions properly
- @tiptap/pm@2.5.8
2.5.7
Patch Changes
- b012471: This addresses an issue with
isNodeEmptyfunction where it was also comparing node attributes and finding mismatches on actually empty nodes. This helps placeholders find empty content correctly - cc3497e: Fixes a bug where if
enableContentCheckwas true, inserting content as JSON nodes would fail. This was because the node that was being created technically had a different schema than the content being inserted, so it would fail to generate the correct content value- @tiptap/pm@2.5.7
2.5.6
Patch Changes
- 618bca9: Adjust the
splitBlockcommand to returnfalsewhen it was unsuccessful. - 35682d1: This fixes a bug with the placeholder extension where a heading level other than the default was not considered empty, when comparing node contents, we need to consider that the node attributes are carried over for a fair comparison of content instead of attribute values
- 2104f0f: Add a check beforecreateNodeViews so that view.setProps is not called when the view has already been destroyed
- Updated dependencies [b5c1b32]
- @tiptap/pm@2.5.6
2.5.5
Patch Changes
- 4cca382: Make sure that atoms are used in-full without cutting the content. Node size for atoms is 1 which causes text to be cut unexpectedly.
- 3b67e8a: This changes the typing to not declare types on all HTMLElements, just a local one with the editor instance attached
- @tiptap/pm@2.5.5
2.5.4
Patch Changes
- dd7f9ac: There was an issue with the cjs bundling of packages and default exports, now we resolve default exports in legacy compatible way
- Updated dependencies [dd7f9ac]
- @tiptap/pm@2.5.4
2.5.3
Patch Changes
- @tiptap/pm@2.5.3
2.5.2
Patch Changes
- 07f4c03: There was a bug where doing a
.configureon an extension, node or mark would overwrite the extensions options instead of being merged with the default options.- @tiptap/pm@2.5.2
2.5.1
Patch Changes
- @tiptap/pm@2.5.1
2.5.0
Patch Changes
- fb45149: Made some minor changes to how packages are built
- fb45149: When
parseOptions.whitespace === 'full' or parseOptions.whitespace === truesetting content will no longer strip whitespaces on setContent - fb45149: Faster performance for checking if a node is empty and if something is a fragment
- fb45149: Vue 3 bubble menus are properly synchronized with state transitions with the new beforeTransaction hook which is fired before the transaction is applied to the view
- @tiptap/pm@2.5.0
2.5.0-pre.16
Patch Changes
- @tiptap/pm@2.5.0-pre.16
2.5.0-pre.15
Patch Changes
- @tiptap/pm@2.5.0-pre.15
2.5.0-pre.14
Patch Changes
- @tiptap/pm@2.5.0-pre.14
2.5.0-pre.13
Patch Changes
- 74a37ff: CI build testing
- @tiptap/pm@2.5.0-pre.13
2.5.0-pre.12
Patch Changes
- 74a37ff: CI build testing
- @tiptap/pm@2.5.0-pre.12
2.5.0-pre.11
Patch Changes
- 74a37ff: CI build testing
- @tiptap/pm@2.5.0-pre.11
2.5.0-pre.10
Patch Changes
- 74a37ff: CI build testing
- @tiptap/pm@2.5.0-pre.10
2.5.0-pre.9
Patch Changes
- 14a00f4: Made some minor changes to how packages are built
- @tiptap/pm@2.5.0-pre.9
2.5.0-pre.8
Patch Changes
- 509676e: Vue 3 bubble menus are properly synchronized with state transitions with the new beforeTransaction hook which is fired before the transaction is applied to the view
- @tiptap/pm@2.5.0-pre.8
2.5.0-pre.7
Patch Changes
- @tiptap/pm@2.5.0-pre.7
All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.
2.4.0 (2024-05-14)
Bug Fixes
- core: configure should use the parent of the current instance, to avoid duplication (#5147) (4db463c)
Features
2.3.2 (2024-05-08)
Bug Fixes
2.3.1 (2024-04-30)
Note: Version bump only for package @tiptap/core
2.3.0 (2024-04-09)
Bug Fixes
Features
2.2.6 (2024-04-06)
Bug Fixes
2.2.5 (2024-04-05)
Note: Version bump only for package @tiptap/core
2.2.4 (2024-02-23)
Bug Fixes
- typecheck drag and clipboard events for testing environments (bbee9a3)
2.2.3 (2024-02-15)
Note: Version bump only for package @tiptap/core
2.2.2 (2024-02-07)
Note: Version bump only for package @tiptap/core
2.2.1 (2024-01-31)
Note: Version bump only for package @tiptap/core
2.2.0 (2024-01-29)
Bug Fixes
- core: fix new lines being added via elementFromString (#4767) (b7a2504)
- fix bug #4785 (#4836) (f3cba1e)
- fix imports, fix demos, unpin y-prosemirror (681aa57)
- fix newline stripping via insertContent (8954007)
2.2.0-rc.8 (2024-01-08)
Bug Fixes
- core: fix options now being empty (fc67cb1)
2.2.0-rc.7 (2023-11-27)
Bug Fixes
- core: set defaultOptions to undefined by default (448b433)
2.2.0-rc.6 (2023-11-23)
2.2.0-rc.4 (2023-10-10)
2.2.0-rc.3 (2023-08-18)
2.2.0-rc.1 (2023-08-18)
2.2.0-rc.0 (2023-08-18)
2.1.16 (2024-01-10)
Bug Fixes
2.1.15 (2024-01-08)
Bug Fixes
2.1.14 (2024-01-08)
Note: Version bump only for package @tiptap/core
2.1.13 (2023-11-30)
Note: Version bump only for package @tiptap/core
2.1.12 (2023-10-11)
Note: Version bump only for package @tiptap/core
2.1.11 (2023-09-20)
Reverts
- Revert "v2.2.11" (6aa755a)
2.1.10 (2023-09-15)
Note: Version bump only for package @tiptap/core
2.1.9 (2023-09-14)
Note: Version bump only for package @tiptap/core
2.1.8 (2023-09-04)
Note: Version bump only for package @tiptap/core
2.1.7 (2023-09-04)
Note: Version bump only for package @tiptap/core
2.1.6 (2023-08-18)
Bug Fixes
- core: fix broken export (4227f32)
2.1.5 (2023-08-18)
Note: Version bump only for package @tiptap/core
2.1.4 (2023-08-18)
Bug Fixes
2.1.3 (2023-08-18)
Note: Version bump only for package @tiptap/core
2.1.2 (2023-08-17)
Bug Fixes
2.1.1 (2023-08-16)
Note: Version bump only for package @tiptap/core
2.1.0 (2023-08-16)
Note: Version bump only for package @tiptap/core
2.1.0-rc.14 (2023-08-11)
Note: Version bump only for package @tiptap/core
2.1.0-rc.13 (2023-08-11)
2.1.0-rc.12 (2023-07-14)
2.1.0-rc.11 (2023-07-07)
Bug Fixes
2.1.0-rc.10 (2023-07-07)
2.1.0-rc.9 (2023-06-15)
2.1.0-rc.8 (2023-05-25)
2.1.0-rc.5 (2023-05-25)
Features
- add tiptap class (614fc80)
2.1.0-rc.4 (2023-04-27)
2.1.0-rc.3 (2023-04-26)
Bug Fixes
- core: remove configure from extend functionality (4af54da)
2.1.0-rc.2 (2023-04-26)
2.1.0-rc.1 (2023-04-12)
2.1.0-rc.0 (2023-04-05)
Bug Fixes
- clear nodes when cursor at start of empty isolating parent (#3943) (7278ee2)
- lists: improve list behaviour (684e48a)
- Update peerDependencies to fix lerna version tasks (#3914) (0c1bba3)
2.1.0-rc.12 (2023-07-14)
Note: Version bump only for package @tiptap/core
2.1.0-rc.11 (2023-07-07)
Bug Fixes
2.1.0-rc.10 (2023-07-07)
Note: Version bump only for package @tiptap/core
2.1.0-rc.9 (2023-06-15)
Bug Fixes
- lists: improve list behaviour (684e48a)
2.1.0-rc.8 (2023-05-25)
Note: Version bump only for package @tiptap/core
2.1.0-rc.7 (2023-05-25)
Note: Version bump only for package @tiptap/core
2.1.0-rc.6 (2023-05-25)
Note: Version bump only for package @tiptap/core
2.1.0-rc.5 (2023-05-25)
Features
- add tiptap class (614fc80)
2.1.0-rc.4 (2023-04-27)
Note: Version bump only for package @tiptap/core
2.1.0-rc.3 (2023-04-26)
Bug Fixes
- core: remove configure from extend functionality (4af54da)
2.1.0-rc.2 (2023-04-26)
2.1.0-rc.1 (2023-04-12)
2.1.0-rc.0 (2023-04-05)
Bug Fixes
- clear nodes when cursor at start of empty isolating parent (#3943) (7278ee2)
- Update peerDependencies to fix lerna version tasks (#3914) (0c1bba3)
2.1.0-rc.0 (2023-04-05)
Bug Fixes
2.0.3 (2023-04-13)
Note: Version bump only for package @tiptap/core
2.0.2 (2023-04-03)
Note: Version bump only for package @tiptap/core
2.0.1 (2023-03-30)
Bug Fixes
2.0.0-beta.220 (2023-02-28)
Bug Fixes
2.0.0-beta.219 (2023-02-27)
Bug Fixes
- #3773 - Array for content breaks editor (#3786) (89cc59a)
- core: allow insertContentAt and insertContent text node arrays (#3790) (0300630)
- update typings for node view decorations (#3783) (f869507)
Features
2.0.0-beta.218 (2023-02-18)
Bug Fixes
2.0.0-beta.217 (2023-02-09)
Note: Version bump only for package @tiptap/core
2.0.0-beta.216 (2023-02-08)
Note: Version bump only for package @tiptap/core
2.0.0-beta.215 (2023-02-08)
Bug Fixes
- fix builds including prosemirror (a380ec4)
2.0.0-beta.214 (2023-02-08)
Note: Version bump only for package @tiptap/core
2.0.0-beta.213 (2023-02-07)
Note: Version bump only for package @tiptap/core
2.0.0-beta.212 (2023-02-03)
Bug Fixes
- core: fix broken types in definition file (f659037)
2.0.0-beta.211 (2023-02-02)
Note: Version bump only for package @tiptap/core
2.0.0-beta.210 (2023-02-02)
Features
- pm: new prosemirror package for dependency resolving (f387ad3)
2.0.0-beta.209 (2022-12-16)
Note: Version bump only for package @tiptap/core
2.0.0-beta.208 (2022-12-16)
Note: Version bump only for package @tiptap/core
2.0.0-beta.207 (2022-12-08)
Note: Version bump only for package @tiptap/core
2.0.0-beta.206 (2022-12-08)
Note: Version bump only for package @tiptap/core
2.0.0-beta.205 (2022-12-05)
Bug Fixes
Features
2.0.0-beta.204 (2022-11-25)
Bug Fixes
- core: rename esm modules to esm.js (c1a0c3a)
2.0.0-beta.203 (2022-11-24)
Note: Version bump only for package @tiptap/core
2.0.0-beta.202 (2022-11-04)
Note: Version bump only for package @tiptap/core
2.0.0-beta.201 (2022-11-04)
Reverts
- Revert "Fixed dragged text not being deleted after drop on another editor (#3279)" (403b99c), closes #3279
2.0.0-beta.200 (2022-11-04)
Note: Version bump only for package @tiptap/core
2.0.0-beta.199 (2022-09-30)
Note: Version bump only for package @tiptap/core
2.0.0-beta.198 (2022-09-29)
Bug Fixes
- core: InputRules does not work for ranges containing multiple text nodes (#3205) (2f9ba32), closes #3071
2.0.0-beta.197 (2022-09-26)
Bug Fixes
2.0.0-beta.196 (2022-09-20)
Note: Version bump only for package @tiptap/core
2.0.0-beta.195 (2022-09-14)
Note: Version bump only for package @tiptap/core
2.0.0-beta.194 (2022-09-11)
Note: Version bump only for package @tiptap/core
2.0.0-beta.193 (2022-09-10)
Bug Fixes
- add attributes to pre tag instead of code tag by default, fix #2440 (85fcc29)
- add correct type for parseOptions (592892e)
- add correct windows and px keymap (75e5601)
- add CreateNodeFromContentOptions to insertContent (#1678) (aabdfd6)
- add exports to package.json (1277fa4)
- add marks to JSONContent type (f829b45)
- add missing ProseMirror styles (12602e7)
- add scrollIntoView for insertContent (e7fe724)
- add support for CellSelection in isActive helper, fix #1947 (b42e442)
- add support for multiple ranges in clipboardTextSerializer, fix #1982 (98a1cb3)
- add support for priority and nested extension for getSchema (129ad83)
- add topNode to getDebugJSON (f65e1b3)
- add way to cancel inputrules and pasterules (#2368) (669efd0)
- allow input rules after hard break, fix #2302 (ded6f96)
- allow to re-apply current mark for input rules and paste rules, fix #2003 (3958bf1)
- better merge mark attributes for existing marks, fix #1039 (cfd29fa)
- call selectAll on 'cmd+a', set a TextSelection instead of AllSelection, fix #1908 (bad16d9)
- check for atom nodes in ignoreMutation handler, fix #1448 (2deb07f)
- check for excluded marks in isMarkActive, fix #1388 (3c4cc96)
- check for invalid content in
insertContentAtcommand (e09fd93) - check for NodeSelection within posToDOMRect (a4ec4ff)
- check for storedMarks in getMarkAttributes, fix #2039 (22c82ba)
- core: :bug: fix inputrule not recognizing text content of non-text leaf nodes (64b23e1)
- core: createCan command props shouldn't try dispatch (#3025) (#3026) (40f4ea3)
- core: dont use selection for setContent replacement (#2934) (134a4bd)
- core: fix focus command passing through editor state instead of existing transaction (5b0b7d9)
- core: Increment
iindefaultBlockAt(655957d) - core: insert PasteRule Node at matched position (#2942) (#2943) (bda6e8d)
- core: isNodeSelection, isTextSelection not always false (#3089) (574cd69), closes #2979
- core: make setEditable trigger all 'update' listeners (#3140) (4851fc5)
- core: make setEditable trigger onUpdate function (#2935) (de1253a)
- core: only respect text of node before current position (#2937) (#2941) (e280a02)
- core: setNodeSelection should not clamp pos by Selection.atStart/atEnd (#3091) (313b8b8), closes #3090
- do not apply paste rules for ProseMirror HTML (9d281e9)
- do not check for node selection within posToDOMRect (c0e68d5)
- don't override behaviour of Home / End in pc keymap (d270419)
- don't remove the tiptap styles on destroy, fix #2120, fix #2143 (a0a88ac)
- don’t add tabindex when readonly, fix #2458 (01411f8)
- don’t check for active node in wrapIn command, fix #1059 (170ec4b)
- don’t merge classes (dba0c1a)
- fix a bug in detecting a current list in toggleList command (a35b253)
- fix a bug in markPasteRule (c2ccf68)
- fix a bug that messed up pasted link attributes, fix #1284 (7da647d)
- fix a bug when configurating the same extension multiple times (655c564)
- fix a bug when detecting changes within node views (708ac94)
- fix a bug when dragging node views (4e6d43b)
- fix a bug when insert newline at node start, fix #1411 (b97bebe)
- fix a bug when parsing attributes if no parseHTML method is provided, fix #2058 (5da313a)
- fix a bug where paste rules doesn’t worked at the start of the document, see #1225 (ff67ee1)
- fix adding mark only with insertContent(), fix #264 (0a63123)
- fix End key handler, fix #2446 (b584920)
- fix error when calculating contentMatch within clearNodes command, fix #1361 (3709668)
- fix export for getAttributes (5b8808a)
- fix extension name for clipboardTextSerializer (15f90ec)
- fix extension option merging (aa002a0)
- fix focus on iOS, fix #1806 (3a06938)
- fix fragile schema validity test in splitBlock (e52f41a)
- fix isEditable check on initialization (f6f8cf9)
- fix mappes positions for paste rules, fix #2002 (770c4e1)
- fix merging options on configure for multiple extension instances (d037c56)
- fix missing extensions when using
addExtension, fix #1309 (28737b1) - fix onBeforeCreate event handler, fix #1236 (0b67f18)
- fix order of executed plugins, fix #1547 (f8efdf7)
- fix RangeError bug when selecting all text, fix #2490 (70422dd)
- fix removing the caret on blur in some situations when using safari, fix #2405 (9d31712)
- fix some react focus issues (#1724), fix #1716, fix #1608, fix #1520 (956566e)
- fix storage context when using configure (ef254ce)
- fix type error for commands (26785db)
- fix type for emitUpdate, fix #276 (4137e00)
- fix type for insertContent command (4295c6b)
- fix updating editorProps via setOptions (#1540), fix #1518 (e6f67ca)
- fixed type for Content (39147f5)
- getHTMLFromFragment now expects a fragment instead of node (2c9cf03)
- handle backspace also on shift (32ae386)
- ignore editable in dispatchTransaction, fix #1239 (b3fb022)
- Ignore iOS mutations when unfocused (#2170) (10fea3b)
- improve
setNodebehavior for list items, fix #2261 (f2ced69) - improve active mark detection for inline nodes, fix #1893 (6437790)
- Improve backspace handling (#2284), fix #2281 (8ed485b)
- Improve behavior when using insertContent (#2147) (8fc915c)
- improve calculation for min/max positions in selections, fix #1588 (9425e72)
- improve default gapcursor position when surrounded by margins (cd14731)
- improve default styling for .ProseMirror-separator (0e94afe)
- improve drag position for node views (5e5b8db)
- improve drag position for node views even more (d2c5b71)
- improve JSONContent type to allow pure JSON content (ce7f52a)
- improve performance for isActive method, see #1930 (fcca1e6)
- improve types for generateHTML (502b5b1)
- initialize autofocus selection in
createView(#2212) (de39853) - insertContent keeps marks when using plain text, fix #2406 (d242706)
- lint error (e17c414)
- Mark
@tiptap/reactand@tiptap/coreas side effect free (#2361) (e609b2d) - nodeInputRule() support for group match (#1574) (8ee0d67)
- preserve whitespace when using insertContent command (8f10181)
- prevent a bug for node views when pressing enter on iOS, fix #1214 (234d238)
- prevent bug when editor is destroyed very fast (939fc3d)
- prevent dispatch empty fragment when parsing content with insertContent (2a4e02a)
- prevent error in toggleList command, fix #2279 (66eb2f2)
- prevent RangeError for posToDOMRect, fix #2112 (010418d)
- prevent removing inline nodes when using insertContentAt, fix #2156 (53ffce5)
- properly calculate setDragImage position (7401d45)
- remove custom coordsAtPos method, fix #583 (485fb8c)
- remove debug log (beb96c5)
- remove defaultOptions fallback, fix #2219 (20b6d79)
- remove editable check in updateAttributes, fix #1415 (fbc8fff)
- remove editor from addExtensions context (cbc0dd8)
- remove empty attributes in getDebugJSON (940fd69)
- remove empty mark attributes from getDebugJSON (07cabe6)
- revert adding exports (bc320d0)
- revert adding type: module (f8d6475)
- revert async focus, fix #1658 (c9869c8)
- revert changes to selectAll command, fix #2491 (bdab760)
- run pasterules for pasted content, fix #2408 (bc03c0d)
- Separate drags from drops in stopEvent (#2070) (bebaa40)
- set correct priority when extending extensions, fix #1288 (b4e2b6f)
- set correct type for emitUpdate (9a40c17)
- set max textselection correctly, fix #2401 (4be16fc)
- support all characters for suggestion char, fix #2385 (42d3ee8)
- update getJSON return type to JSONContent (#2153) (6583ede)
Features
- #1898 Made the EventEmitter generic to improve the types of the tiptap events (#1959) (54e85fd)
- add 'all' option to focus command, fix #2181 (3c571c9)
- add
updateSelectionoption toinsertContentAtcommand (9f2c368) - add addExtensions option (26e672e)
- add coordsAtPos and posToClientRect helper methods (8dab614)
- add defaultBlockAt helper (403c147)
- add deleteNode command (73f1c50)
- add deleteNode method to node views (fcee5f8)
- add editor prop to KeyboardShortcutCommand (e0c2460)
- add editor.getAttributes, deprecate editor.getNodeAttributes and editor.getMarkAttributes (072905c)
- add enableCoreExtensions flag (#1923) (4178281)
- add extendEmptyMarkRange option to mark commands (#1859) (14e458e)
- Add extension storage (#2069) (7ffabf2)
- add findChildrenInRange helper (463661c)
- add forEach command (783ce4e)
- add getText() and generateText() methods (fix #1428) (#1875) (fe6a3e7)
- add ignoreMutation option to NodeViewRenderer, fix #1538 (651e691)
- add insertContent() command, deprecate insertText(), insertHTML() and insertNode() (b8d9b7d)
- add name to extension context (12f60ab)
- add parentConfig to extension context for more extendable extensions, fix #259 (5e1ec5d)
- add priority option to extensions (bb1ae65)
- add resetAttributes() command, deprecate resetNodeAttributes() (3334d93)
- add scrollIntoView option to focus command, fix #2172 (e0f6490)
- add selectTextblockStart and selectTextblockEnd commands (0aa39f9)
- add setMeta command (36dad2b)
- add setNodeSelection and setTextSelection commands (811bf69)
- add some improvements to
CharacterCountextension (#2256), fix #1049, fix #1550, fix #1839, fix #2245 (5daa870) - Add support for autolink (#2226) (3d68981)
- add support for checking for attributes in extendMarkRange (ff7dd9b)
- add Tracker class (a757716)
- add transaction to all events if possible, see #1461 (7f6ed0b)
- add updateAttributes() command, deprecate updateNodeAttributes(), fix #254 (aac32b4)
- Allow a rule to be skipped from the getAttributes callback in markPasteRule (#1625) (9ffd58c)
- Allow array of extensions for
enableInputRulesandenablePasteRulesoptions (#2119) (3158c37) - allow number for setTextSelection and insertContentAt (2f7a6ad)
- Allow to use commands within InputRule and PasteRule (#2035) (4303637)
- allow wildcards when checking attributes in isActive, fix #1752 (64409ca)
- core: add nodePasteRule to core (15123ee)
- export isList, fix #1326 (2bd17c7)
- export mark helpers (313ab0e)
- expose node helpers to core (6048f9b)
- Integrate input rules and paste rules into the core (#1997) (723b955)
- join lists on toggleList (#2260), fix #1329 (126ad72)
- parseHTML for attributes should return the value instead of an object now, fix #1863 (8a3b47a)
- remove deprecated commands insertHTML, insertNode and insertText (86d570f)
- remove resize event handler (9f64015)
Reverts
2.0.0-beta.183 (2022-09-03)
Bug Fixes
- core: createCan command props shouldn't try dispatch (#3025) (#3026) (40f4ea3)
- core: isNodeSelection, isTextSelection not always false (#3089) (574cd69), closes #2979
- core: make setEditable trigger all 'update' listeners (#3140) (4851fc5)
- core: make setEditable trigger onUpdate function (#2935) (de1253a)
- core: setNodeSelection should not clamp pos by Selection.atStart/atEnd (#3091) (313b8b8), closes #3090
2.0.0-beta.182 (2022-07-06)
Bug Fixes
- core: dont use selection for setContent replacement (#2934) (134a4bd)
- core: only respect text of node before current position (#2937) (#2941) (e280a02)
2.0.0-beta.181 (2022-06-27)
Bug Fixes
- core: fix focus command passing through editor state instead of existing transaction (5b0b7d9)
Features
- core: add nodePasteRule to core (15123ee)
2.0.0-beta.180 (2022-06-20)
Note: Version bump only for package @tiptap/core
2.0.0-beta.179 (2022-06-17)
Reverts
- Revert "Publish" (9c38d27)
2.0.0-beta.177 (2022-06-17)
Reverts
- Revert "Publish" (9c38d27)
2.0.0-beta.176 (2022-05-18)
Bug Fixes
2.0.0-beta.175 (2022-04-27)
Bug Fixes
- don't override behaviour of Home / End in pc keymap (d270419)
2.0.0-beta.174 (2022-02-07)
Bug Fixes
2.0.0-beta.173 (2022-02-07)
Bug Fixes
2.0.0-beta.172 (2022-02-03)
Bug Fixes
2.0.0-beta.171 (2022-01-28)
Note: Version bump only for package @tiptap/core
2.0.0-beta.170 (2022-01-27)
Bug Fixes
2.0.0-beta.169 (2022-01-27)
Bug Fixes
2.0.0-beta.168 (2022-01-26)
Bug Fixes
2.0.0-beta.167 (2022-01-25)
Bug Fixes
- add correct windows and px keymap (75e5601)
Features
- add selectTextblockStart and selectTextblockEnd commands (0aa39f9)
2.0.0-beta.166 (2022-01-20)
Bug Fixes
2.0.0-beta.165 (2022-01-20)
Bug Fixes
2.0.0-beta.164 (2022-01-20)
Bug Fixes
2.0.0-beta.163 (2022-01-13)
Bug Fixes
2.0.0-beta.162 (2022-01-11)
Bug Fixes
2.0.0-beta.161 (2022-01-10)
Bug Fixes
2.0.0-beta.160 (2022-01-04)
Note: Version bump only for package @tiptap/core
2.0.0-beta.159 (2021-12-22)
Bug Fixes
2.0.0-beta.158 (2021-12-17)
Bug Fixes
- remove empty mark attributes from getDebugJSON (07cabe6)
2.0.0-beta.157 (2021-12-16)
Bug Fixes
2.0.0-beta.156 (2021-12-15)
Bug Fixes
2.0.0-beta.155 (2021-12-15)
Note: Version bump only for package @tiptap/core
2.0.0-beta.154 (2021-12-14)
Note: Version bump only for package @tiptap/core
2.0.0-beta.153 (2021-12-13)
Bug Fixes
- check for invalid content in
insertContentAtcommand (e09fd93) - don’t check for active node in wrapIn command, fix #1059 (170ec4b)
- improve
setNodebehavior for list items, fix #2261 (f2ced69)
2.0.0-beta.152 (2021-12-10)
Features
2.0.0-beta.151 (2021-12-08)
Features
- add some improvements to
CharacterCountextension (#2256), fix #1049, fix #1550, fix #1839, fix #2245 (5daa870)
2.0.0-beta.150 (2021-12-06)
Note: Version bump only for package @tiptap/core
2.0.0-beta.149 (2021-12-05)
Bug Fixes
2.0.0-beta.148 (2021-12-03)
Bug Fixes
2.0.0-beta.147 (2021-12-03)
Features
2.0.0-beta.146 (2021-12-02)
Note: Version bump only for package @tiptap/core
2.0.0-beta.145 (2021-12-02)
Bug Fixes
2.0.0-beta.144 (2021-12-02)
Note: Version bump only for package @tiptap/core
2.0.0-beta.143 (2021-11-25)
Features
2.0.0-beta.142 (2021-11-23)
Features
- add defaultBlockAt helper (403c147)
2.0.0-beta.141 (2021-11-22)
Bug Fixes
- improve default gapcursor position when surrounded by margins (cd14731)
Features
2.0.0-beta.140 (2021-11-18)
Bug Fixes
Features
2.0.0-beta.139 (2021-11-17)
Note: Version bump only for package @tiptap/core
2.0.0-beta.138 (2021-11-10)
Bug Fixes
- prevent removing inline nodes when using insertContentAt, fix #2156 (53ffce5)
- update getJSON return type to JSONContent (#2153) (6583ede)
2.0.0-beta.137 (2021-11-09)
Bug Fixes
2.0.0-beta.136 (2021-11-09)
Note: Version bump only for package @tiptap/core
2.0.0-beta.135 (2021-11-09)
Note: Version bump only for package @tiptap/core
2.0.0-beta.134 (2021-11-09)
Note: Version bump only for package @tiptap/core
2.0.0-beta.133 (2021-11-08)
Bug Fixes
- fix a bug when parsing attributes if no parseHTML method is provided, fix #2058 (5da313a)
- Improve behavior when using insertContent (#2147) (8fc915c)
2.0.0-beta.132 (2021-11-08)
Note: Version bump only for package @tiptap/core
2.0.0-beta.131 (2021-11-05)
Bug Fixes
- improve JSONContent type to allow pure JSON content (ce7f52a)
2.0.0-beta.130 (2021-10-31)
Bug Fixes
2.0.0-beta.129 (2021-10-26)
Note: Version bump only for package @tiptap/core
2.0.0-beta.128 (2021-10-25)
Bug Fixes
- fix storage context when using configure (ef254ce)
2.0.0-beta.127 (2021-10-22)
Bug Fixes
- improve default styling for .ProseMirror-separator (0e94afe)
- Separate drags from drops in stopEvent (#2070) (bebaa40)
2.0.0-beta.126 (2021-10-22)
Bug Fixes
Features
2.0.0-beta.125 (2021-10-14)
Bug Fixes
2.0.0-beta.124 (2021-10-14)
Bug Fixes
- fix type for insertContent command (4295c6b)
2.0.0-beta.123 (2021-10-14)
Features
- add
updateSelectionoption toinsertContentAtcommand (9f2c368) - Allow to use commands within InputRule and PasteRule (#2035) (4303637)
2.0.0-beta.122 (2021-10-10)
Bug Fixes
2.0.0-beta.121 (2021-10-10)
Bug Fixes
- do not apply paste rules for ProseMirror HTML (9d281e9)
2.0.0-beta.120 (2021-10-08)
Bug Fixes
2.0.0-beta.119 (2021-10-08)
Features
2.0.0-beta.118 (2021-10-03)
Bug Fixes
2.0.0-beta.117 (2021-10-02)
Note: Version bump only for package @tiptap/core
2.0.0-beta.116 (2021-09-30)
Features
2.0.0-beta.115 (2021-09-29)
Note: Version bump only for package @tiptap/core
2.0.0-beta.114 (2021-09-28)
Bug Fixes
- getHTMLFromFragment now expects a fragment instead of node (2c9cf03)
2.0.0-beta.113 (2021-09-27)
Bug Fixes
- add support for CellSelection in isActive helper, fix #1947 (b42e442)
- handle backspace also on shift (32ae386)
2.0.0-beta.112 (2021-09-23)
Note: Version bump only for package @tiptap/core
2.0.0-beta.111 (2021-09-22)
Bug Fixes
- improve performance for isActive method, see #1930 (fcca1e6)
- nodeInputRule() support for group match (#1574) (8ee0d67)
2.0.0-beta.110 (2021-09-21)
Bug Fixes
2.0.0-beta.109 (2021-09-21)
Features
2.0.0-beta.108 (2021-09-20)
Note: Version bump only for package @tiptap/core
2.0.0-beta.107 (2021-09-18)
Bug Fixes
- fix extension name for clipboardTextSerializer (15f90ec)
2.0.0-beta.106 (2021-09-15)
Bug Fixes
2.0.0-beta.105 (2021-09-09)
Features
2.0.0-beta.104 (2021-09-08)
Features
- add extendEmptyMarkRange option to mark commands (#1859) (14e458e)
- parseHTML for attributes should return the value instead of an object now, fix #1863 (8a3b47a)
2.0.0-beta.103 (2021-09-06)
Note: Version bump only for package @tiptap/core
2.0.0-beta.102 (2021-08-26)
Bug Fixes
2.0.0-beta.101 (2021-08-24)
Bug Fixes
- add topNode to getDebugJSON (f65e1b3)
2.0.0-beta.100 (2021-08-20)
Bug Fixes
- add missing ProseMirror styles (12602e7)
Features
2.0.0-beta.99 (2021-08-13)
Note: Version bump only for package @tiptap/core
2.0.0-beta.98 (2021-08-13)
Note: Version bump only for package @tiptap/core
2.0.0-beta.97 (2021-08-13)
Features
2.0.0-beta.96 (2021-08-12)
Bug Fixes
2.0.0-beta.95 (2021-08-11)
Bug Fixes
2.0.0-beta.94 (2021-08-09)
Bug Fixes
- add CreateNodeFromContentOptions to insertContent (#1678) (aabdfd6)
- fix isEditable check on initialization (f6f8cf9)
- fix updating editorProps via setOptions (#1540), fix #1518 (e6f67ca)
2.0.0-beta.93 (2021-07-30)
Bug Fixes
2.0.0-beta.92 (2021-07-28)
Note: Version bump only for package @tiptap/core
2.0.0-beta.91 (2021-07-28)
Bug Fixes
- fix a bug in markPasteRule (c2ccf68)
2.0.0-beta.90 (2021-07-28)
Features
- add deleteNode command (73f1c50)
2.0.0-beta.89 (2021-07-27)
Features
2.0.0-beta.88 (2021-07-26)
Features
2.0.0-beta.87 (2021-07-26)
Note: Version bump only for package @tiptap/core
2.0.0-beta.86 (2021-07-09)
Note: Version bump only for package @tiptap/core
2.0.0-beta.85 (2021-06-23)
Note: Version bump only for package @tiptap/core
2.0.0-beta.84 (2021-06-17)
Bug Fixes
- improve types for generateHTML (502b5b1)
2.0.0-beta.83 (2021-06-15)
Note: Version bump only for package @tiptap/core
2.0.0-beta.82 (2021-06-14)
Bug Fixes
- check for atom nodes in ignoreMutation handler, fix #1448 (2deb07f)
- remove editable check in updateAttributes, fix #1415 (fbc8fff)
2.0.0-beta.81 (2021-06-07)
Bug Fixes
Features
2.0.0-beta.80 (2021-06-03)
Bug Fixes
- fix merging options on configure for multiple extension instances (d037c56)
2.0.0-beta.79 (2021-06-02)
Note: Version bump only for package @tiptap/core
2.0.0-beta.77 (2021-06-02)
Features
- add setMeta command (36dad2b)
2.0.0-beta.76 (2021-06-01)
Bug Fixes
2.0.0-beta.75 (2021-06-01)
Bug Fixes
- prevent dispatch empty fragment when parsing content with insertContent (2a4e02a)
2.0.0-beta.74 (2021-05-31)
Note: Version bump only for package @tiptap/core
2.0.0-beta.73 (2021-05-29)
Bug Fixes
2.0.0-beta.72 (2021-05-28)
Bug Fixes
2.0.0-beta.71 (2021-05-28)
Bug Fixes
- fix fragile schema validity test in splitBlock (e52f41a)
2.0.0-beta.70 (2021-05-28)
Bug Fixes
- prevent bug when editor is destroyed very fast (939fc3d)
2.0.0-beta.69 (2021-05-27)
Note: Version bump only for package @tiptap/core
2.0.0-beta.68 (2021-05-24)
Bug Fixes
- do not check for node selection within posToDOMRect (c0e68d5)
2.0.0-beta.67 (2021-05-24)
Bug Fixes
- check for NodeSelection within posToDOMRect (a4ec4ff)
- remove empty attributes in getDebugJSON (940fd69)
2.0.0-beta.66 (2021-05-19)
Bug Fixes
- preserve whitespace when using insertContent command (8f10181)
2.0.0-beta.65 (2021-05-18)
Features
- allow number for setTextSelection and insertContentAt (2f7a6ad)
2.0.0-beta.64 (2021-05-18)
Bug Fixes
- add marks to JSONContent type (f829b45)
Features
- add deleteNode method to node views (fcee5f8)
2.0.0-beta.63 (2021-05-18)
Note: Version bump only for package @tiptap/core
2.0.0-beta.62 (2021-05-17)
Note: Version bump only for package @tiptap/core
2.0.0-beta.61 (2021-05-17)
Bug Fixes
- fix export for getAttributes (5b8808a)
Features
- add findChildrenInRange helper (463661c)
- add support for checking for attributes in extendMarkRange (ff7dd9b)
- export isList, fix #1326 (2bd17c7)
2.0.0-beta.60 (2021-05-13)
Bug Fixes
2.0.0-beta.59 (2021-05-13)
Note: Version bump only for package @tiptap/core
2.0.0-beta.57 (2021-05-13)
Bug Fixes
- core: Increment
iindefaultBlockAt(655957d)
2.0.0-beta.57 (2021-05-13)
Bug Fixes
- core: Increment
iindefaultBlockAt(655957d)
2.0.0-beta.56 (2021-05-13)
Bug Fixes
- fix a bug in detecting a current list in toggleList command (a35b253)
2.0.0-beta.55 (2021-05-11)
Bug Fixes
- fix a bug when configurating the same extension multiple times (655c564)
Features
- export mark helpers (313ab0e)
2.0.0-beta.54 (2021-05-09)
Bug Fixes
2.0.0-beta.53 (2021-05-07)
Features
- add editor.getAttributes, deprecate editor.getNodeAttributes and editor.getMarkAttributes (072905c)
2.0.0-beta.52 (2021-05-07)
Features
- expose node helpers to core (6048f9b)
2.0.0-beta.51 (2021-05-07)
Bug Fixes
- add support for priority and nested extension for getSchema (129ad83)
- remove editor from addExtensions context (cbc0dd8)
2.0.0-beta.50 (2021-05-07)
Note: Version bump only for package @tiptap/core
2.0.0-beta.49 (2021-05-07)
Bug Fixes
- fix a bug that messed up pasted link attributes, fix #1284 (7da647d)
- revert adding exports (bc320d0)
2.0.0-beta.48 (2021-05-06)
Bug Fixes
- revert adding type: module (f8d6475)
2.0.0-beta.47 (2021-05-06)
Bug Fixes
- add exports to package.json (1277fa4)
2.0.0-beta.46 (2021-05-06)
Features
- add addExtensions option (26e672e)
2.0.0-beta.45 (2021-05-06)
Note: Version bump only for package @tiptap/core
2.0.0-beta.44 (2021-05-05)
Features
- remove deprecated commands insertHTML, insertNode and insertText (86d570f)
2.0.0-beta.43 (2021-05-05)
Note: Version bump only for package @tiptap/core
2.0.0-beta.42 (2021-05-04)
Bug Fixes
2.0.0-beta.41 (2021-04-27)
Bug Fixes
2.0.0-beta.40 (2021-04-27)
Bug Fixes
Features
- add setNodeSelection and setTextSelection commands (811bf69)
2.0.0-beta.39 (2021-04-27)
Bug Fixes
- add correct type for parseOptions (592892e)
- fix type error for commands (26785db)
- set correct type for emitUpdate (9a40c17)
2.0.0-beta.38 (2021-04-23)
Note: Version bump only for package @tiptap/core
2.0.0-beta.37 (2021-04-23)
Bug Fixes
2.0.0-beta.36 (2021-04-22)
Note: Version bump only for package @tiptap/core
2.0.0-beta.35 (2021-04-21)
Features
2.0.0-beta.34 (2021-04-20)
Bug Fixes
- fix a bug when dragging node views (4e6d43b)
2.0.0-beta.33 (2021-04-20)
Bug Fixes
- fix extension option merging (aa002a0)
2.0.0-beta.32 (2021-04-16)
Features
2.0.0-beta.31 (2021-04-15)
Bug Fixes
2.0.0-beta.30 (2021-04-15)
Note: Version bump only for package @tiptap/core
2.0.0-beta.29 (2021-04-12)
Bug Fixes
2.0.0-beta.28 (2021-04-12)
Features
2.0.0-beta.27 (2021-04-09)
Bug Fixes
- add scrollIntoView for insertContent (e7fe724)
2.0.0-beta.26 (2021-04-09)
Bug Fixes
- fix a bug when detecting changes within node views (708ac94)
2.0.0-beta.25 (2021-04-09)
Bug Fixes
- fixed type for Content (39147f5)
2.0.0-beta.24 (2021-04-08)
Bug Fixes
- improve drag position for node views even more (d2c5b71)
2.0.0-beta.23 (2021-04-08)
Bug Fixes
- improve drag position for node views (5e5b8db)
2.0.0-beta.22 (2021-04-08)
Note: Version bump only for package @tiptap/core
2.0.0-beta.21 (2021-04-08)
Note: Version bump only for package @tiptap/core
2.0.0-beta.20 (2021-04-07)
Features
- add resetAttributes() command, deprecate resetNodeAttributes() (3334d93)
2.0.0-beta.19 (2021-04-07)
Features
2.0.0-beta.18 (2021-04-07)
Features
- add priority option to extensions (bb1ae65)
2.0.0-beta.17 (2021-04-07)
Bug Fixes
- remove debug log (beb96c5)
2.0.0-beta.16 (2021-04-07)
Features
- add insertContent() command, deprecate insertText(), insertHTML() and insertNode() (b8d9b7d)
2.0.0-beta.15 (2021-04-06)
Note: Version bump only for package @tiptap/core
2.0.0-beta.14 (2021-04-04)
Note: Version bump only for package @tiptap/core
2.0.0-beta.13 (2021-04-02)
Note: Version bump only for package @tiptap/core
2.0.0-beta.12 (2021-04-01)
Note: Version bump only for package @tiptap/core
2.0.0-beta.11 (2021-04-01)
Note: Version bump only for package @tiptap/core
2.0.0-beta.10 (2021-03-31)
Note: Version bump only for package @tiptap/core
2.0.0-beta.9 (2021-03-28)
Note: Version bump only for package @tiptap/core
2.0.0-beta.8 (2021-03-28)
Note: Version bump only for package @tiptap/core
2.0.0-beta.7 (2021-03-28)
Note: Version bump only for package @tiptap/core
2.0.0-beta.6 (2021-03-24)
Note: Version bump only for package @tiptap/core
2.0.0-beta.5 (2021-03-18)
Note: Version bump only for package @tiptap/core
2.0.0-beta.4 (2021-03-18)
Note: Version bump only for package @tiptap/core
2.0.0-beta.3 (2021-03-16)
Note: Version bump only for package @tiptap/core
2.0.0-beta.2 (2021-03-09)
Note: Version bump only for package @tiptap/core
2.0.0-beta.1 (2021-03-05)
Note: Version bump only for package @tiptap/core
2.0.0-alpha.22 (2021-02-28)
Note: Version bump only for package @tiptap/core
2.0.0-alpha.21 (2021-02-26)
Note: Version bump only for package @tiptap/core
2.0.0-alpha.20 (2021-02-26)
Note: Version bump only for package @tiptap/core
2.0.0-alpha.19 (2021-02-18)
Note: Version bump only for package @tiptap/core
2.0.0-alpha.18 (2021-02-16)
Note: Version bump only for package @tiptap/core
2.0.0-alpha.17 (2021-02-16)
Note: Version bump only for package @tiptap/core
2.0.0-alpha.16 (2021-02-07)
Note: Version bump only for package @tiptap/core
2.0.0-alpha.15 (2021-02-05)
Note: Version bump only for package @tiptap/core
2.0.0-alpha.14 (2021-01-29)
Note: Version bump only for package @tiptap/core
2.0.0-alpha.13 (2021-01-29)
Note: Version bump only for package @tiptap/core
2.0.0-alpha.12 (2021-01-28)
Note: Version bump only for package @tiptap/core
2.0.0-alpha.11 (2021-01-28)
Bug Fixes
- don’t merge classes (dba0c1a)
2.0.0-alpha.10 (2021-01-06)
Note: Version bump only for package @tiptap/core
2.0.0-alpha.9 (2020-12-18)
Note: Version bump only for package @tiptap/core
2.0.0-alpha.8 (2020-12-18)
Note: Version bump only for package @tiptap/core
2.0.0-alpha.7 (2020-12-02)
Note: Version bump only for package @tiptap/core
2.0.0-alpha.6 (2020-11-19)
Note: Version bump only for package @tiptap/core
2.0.0-alpha.5 (2020-11-18)
Note: Version bump only for package @tiptap/core
2.0.0-alpha.4 (2020-11-16)
Note: Version bump only for package @tiptap/core
2.0.0-alpha.3 (2020-11-16)
Reverts
- Revert "use global namespace" (0c9ce26)
2.0.0-alpha.2 (2020-11-16)
Note: Version bump only for package @tiptap/core
2.0.0-alpha.1 (2020-11-16)
Note: Version bump only for package @tiptap/core