Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Strongly typed extension storage #6114

Draft
wants to merge 2 commits into
base: develop
Choose a base branch
from

Conversation

arnaugomez
Copy link
Contributor

@arnaugomez arnaugomez commented Feb 19, 2025

Changes Overview

Allow the type of the extensionStorage field of the Editor class to be customizable.

Usage (Example with characterCount extension)

declare module '@tiptap/core' {
  interface ExtensionStorage {
    characterCount: CharacterCountStorage;
  }
}

Implementation Approach

Create a new ExtionsionStorage interface in @tiptap/core. This type works very similar to the Commands interface: it can be extended and customized inside the extension code.

Testing Done

The runtime code has not been changed. Only the types.

Verification Steps

Check the types of the Editor.extensionStorage field.

Additional Notes

This feature is a proposal and it is still under discussion so the maintainers might decide that it is not necessary. Tell me if you like it/hate it, feedback is welcome.

The type of the Editor.extensionStorage field is set to ExtensionStorage | Record<string, any> instead of ExtensionStorage so that it accounts for extensions where the types have not been set.

Checklist

  • I have created a changeset for this PR if necessary.
  • My changes do not break the library.
  • I have added tests where applicable.
  • I have followed the project guidelines.
  • I have fixed any lint issues.

Related Issues

Discussion

Copy link

changeset-bot bot commented Feb 19, 2025

🦋 Changeset detected

Latest commit: ff8d99a

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 54 packages
Name Type
@tiptap/core Major
@tiptap/extension-character-count Major
@tiptap/extension-collaboration Major
@tiptap/extension-collaboration-cursor Major
@tiptap/extension-blockquote Major
@tiptap/extension-bold Major
@tiptap/extension-bubble-menu Major
@tiptap/extension-bullet-list Major
@tiptap/extension-code-block-lowlight Major
@tiptap/extension-code-block Major
@tiptap/extension-code Major
@tiptap/extension-color Major
@tiptap/extension-document Major
@tiptap/extension-dropcursor Major
@tiptap/extension-floating-menu Major
@tiptap/extension-focus Major
@tiptap/extension-font-family Major
@tiptap/extension-gapcursor Major
@tiptap/extension-hard-break Major
@tiptap/extension-heading Major
@tiptap/extension-highlight Major
@tiptap/extension-history Major
@tiptap/extension-horizontal-rule Major
@tiptap/extension-image Major
@tiptap/extension-italic Major
@tiptap/extension-link Major
@tiptap/extension-list-item Major
@tiptap/extension-list-keymap Major
@tiptap/extension-mention Major
@tiptap/extension-ordered-list Major
@tiptap/extension-paragraph Major
@tiptap/extension-placeholder Major
@tiptap/extension-strike Major
@tiptap/extension-subscript Major
@tiptap/extension-superscript Major
@tiptap/extension-table-cell Major
@tiptap/extension-table-header Major
@tiptap/extension-table-row Major
@tiptap/extension-table Major
@tiptap/extension-task-item Major
@tiptap/extension-task-list Major
@tiptap/extension-text-align Major
@tiptap/extension-text-style Major
@tiptap/extension-text Major
@tiptap/extension-typography Major
@tiptap/extension-underline Major
@tiptap/extension-youtube Major
@tiptap/html Major
@tiptap/react Major
@tiptap/starter-kit Major
@tiptap/suggestion Major
@tiptap/vue-2 Major
@tiptap/vue-3 Major
@tiptap/pm Major

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

Copy link

netlify bot commented Feb 19, 2025

Deploy Preview for tiptap-embed failed. Why did it fail? →

Name Link
🔨 Latest commit ff8d99a
🔍 Latest deploy log https://app.netlify.com/sites/tiptap-embed/deploys/67b5f0e6cce76e00072e3da5

@arnaugomez arnaugomez changed the title Feature/strongly typed extension storage Strongly typed extension storage Feb 19, 2025
@arnaugomez
Copy link
Contributor Author

I see the Netlify preview failed as the types have broken 🙈 , will check and fix it later.

@arnaugomez arnaugomez marked this pull request as draft February 19, 2025 15:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant