npm @tiptap/extensions 3.27.0
v3.27.0

14 hours ago

@tiptap/extension-list

Minor Changes

  • 6270b99: Ordered lists now support the type attribute (a, A, i, I).

    The <ol> type attribute is now fully preserved through the HTML round-trip:

    • type="a" → lowercase alphabetical markers
    • type="A" → uppercase alphabetical markers
    • type="i" → lowercase roman numeral markers
    • type="I" → uppercase roman numeral markers

    Paste from external editors (Google Docs, Word, LibreOffice) now correctly detects the list style — both from the HTML type attribute and from CSS list-style-type properties.

    Plain text paste of typed ordered list markers (e.g. a. Item, I) Item, i. Item\nii. Item) is detected and converted to the correct list type.

    Markdown round-trip preserves typed markers: parsing a. Item creates type: "a", and serializing a typed list back to markdown uses the correct prefix (e.g. I., ii.).

    Joining of adjacent lists now respects type — two lists with different types (e.g. default numeric and type="a") are not merged.

Patch Changes

  • Updated dependencies [6270b99]
  • Updated dependencies [6270b99]
  • Updated dependencies [6270b99]
  • Updated dependencies [6270b99]
    • @tiptap/core@3.27.0
    • @tiptap/pm@3.27.0

@tiptap/core

Patch Changes

  • 6270b99: Ordered lists now support the type attribute (a, A, i, I).

    The <ol> type attribute is now fully preserved through the HTML round-trip:

    • type="a" → lowercase alphabetical markers
    • type="A" → uppercase alphabetical markers
    • type="i" → lowercase roman numeral markers
    • type="I" → uppercase roman numeral markers

    Paste from external editors (Google Docs, Word, LibreOffice) now correctly detects the list style — both from the HTML type attribute and from CSS list-style-type properties.

    Plain text paste of typed ordered list markers (e.g. a. Item, I) Item, i. Item\nii. Item) is detected and converted to the correct list type.

    Markdown round-trip preserves typed markers: parsing a. Item creates type: "a", and serializing a typed list back to markdown uses the correct prefix (e.g. I., ii.).

    Joining of adjacent lists now respects type — two lists with different types (e.g. default numeric and type="a") are not merged.

  • 6270b99: parseAttributes now supports any word characters at the start of classes or id attributes.

  • 6270b99: Fix marksEqual to compare mark arrays as multisets instead of index-by-index, so order of marks no longer affects the result. Broaden the type signature to accept ProseMirror Mark objects (where type is an object with a name property) alongside the existing JSON mark shape ({ type: string }).

  • 6270b99: Fix a edge-case in rewriteUnknownContent to not fail on null-ish values inside marks or nodes.

  • @tiptap/pm@3.27.0

@tiptap/extension-link

Patch Changes

  • 6270b99: Fix isAllowedUri accepting unknown protocols whose name contains a hyphen (e.g. unknown-protocol://test). The hyphen is a valid scheme character per RFC 3986, but the regex was built from a template literal where \- collapsed to -, leaving the terminator class [^a-z+.-:] to parse .-: as a character range that excluded 0-9 and / rather than -. With the proper double-escape, the regex correctly excludes - and unknown hyphenated schemes are rejected again.
  • Updated dependencies [6270b99]
  • Updated dependencies [6270b99]
  • Updated dependencies [6270b99]
  • Updated dependencies [6270b99]
    • @tiptap/core@3.27.0
    • @tiptap/pm@3.27.0

@tiptap/suggestion

Minor Changes

  • 6270b99: Add props.mount(element) for fully managed popup positioning. It mounts the popup into the configured container (default document.body), keeps it anchored to the cursor, and automatically repositions on scroll, resize, and layout shifts via Floating UI's autoUpdate — no manual listeners required. It returns an unmount function to call in onExit.

    This is additive and opt-in: mounting and positioning manually with props.floatingUi + props.clientRect remains supported as an escape hatch.

  • 6270b99: Dismiss managed suggestion popups when the user clicks outside both the popup and the editor. Enabled by default for popups mounted via props.mount, and configurable with the new dismissOnOutsideClick option.

  • 6270b99: Expose Floating UI positioning configuration through SuggestionProps. Consumers can now read placement, offset, flip, container, and a resolved floatingUi config to drive their own positioning loop.

  • 6270b99: Add async suggestion lifecycle handling, including debounced async items(), in-flight request aborting, initialItems, a loading state, and a minQueryLength filter.

Patch Changes

  • Updated dependencies [6270b99]
  • Updated dependencies [6270b99]
  • Updated dependencies [6270b99]
  • Updated dependencies [6270b99]
    • @tiptap/core@3.27.0
    • @tiptap/pm@3.27.0

@tiptap/markdown

Patch Changes

  • 6270b99: Fix parsing with injected Marked instances so custom markdown tokenizers registered via marked.use(...) are respected.
  • 6270b99: Fix unrecognized HTML detection during markdown parsing to work without window.DOMParser or HTMLUnknownElement, so angle-bracket placeholders are preserved as literal text in SSR and Node environments.
  • Updated dependencies [6270b99]
  • Updated dependencies [6270b99]
  • Updated dependencies [6270b99]
  • Updated dependencies [6270b99]
    • @tiptap/core@3.27.0
    • @tiptap/pm@3.27.0

@tiptap/extension-drag-handle

Patch Changes

  • 6270b99: Fix multi-block drags only removing the first block when nested mode is enabled
  • Updated dependencies [6270b99]
  • Updated dependencies [6270b99]
  • Updated dependencies [6270b99]
  • Updated dependencies [6270b99]
    • @tiptap/core@3.27.0
    • @tiptap/extension-collaboration@3.27.0
    • @tiptap/extension-node-range@3.27.0
    • @tiptap/pm@3.27.0

Don't miss a new extensions release

NewReleases is sending notifications on new releases.