-
-
Notifications
You must be signed in to change notification settings - Fork 2.3k
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
fix(vue-3): late-registering plugins #5616
Conversation
🦋 Changeset detectedLatest commit: 6c28c1e The changes in this PR will be included in the next version bump. This PR includes changesets to release 54 packages
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 |
✅ Deploy Preview for tiptap-embed ready!
To edit notification comments on pull requests, go to your Netlify site configuration. |
packages/vue-3/src/Editor.ts
Outdated
if (this.reactiveState) { | ||
this.reactiveState.value = this.view.state | ||
this.reactiveState.value = state |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is the only real difference from what it was doing before no? Why do we need to duplicate what the editor class is doing?
The same was done for the unregistering, so I'd like to understand better what the actual problem was
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You are right. I’ve added more context to the PR's description. I'm using the reconfigured state directly since this.view.state
is not updated at that point.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I refactored it a little to not have to expose the internals to the vue package
Changes Overview
It seems that
y-prosemirror
1.2.4 or 1.2.5 breaks late registering plugins, specifically in Vue 3. This might be related to a point Kevin mentioned here.The issue arises because
this.view.updateState(state)
doesn't immediately updatethis.view.state
. This delay means the reconfigured state inregisterPlugin()
doesn't include newly registered plugins.Implementation Approach
To address this, I've adjusted the code to use the state returned by
this.state.reconfigure
directly.Testing Done
I tested the changes, added Vue and React demos of a collaboration setup in combination with bubble and floating menu, and added tests.
Verification Steps
Open the
CollaborationWithMenus
Vue demo and check if collaboration and menus are working properly.Checklist
Related Issues
Closes #5259