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

AlpineJS v3 - Range Error: Applying a mismatched transaction #1515

Closed
reefki opened this issue Jun 27, 2021 · 34 comments
Closed

AlpineJS v3 - Range Error: Applying a mismatched transaction #1515

reefki opened this issue Jun 27, 2021 · 34 comments
Labels
Type: Bug The issue or pullrequest is related to a bug

Comments

@reefki
Copy link

reefki commented Jun 27, 2021

Description
I got Range Error: Applying a mismatched transaction when clicking on a menu button with AlpineJS v3.

CodeSandbox
I created a CodeSandbox to help you debug the issue:
https://codesandbox.io/s/tiptap-v2-alpinejs-v3-s5x2o

@reefki reefki added Type: Bug The issue or pullrequest is related to a bug v2 labels Jun 27, 2021
@jelib3an
Copy link

jelib3an commented Jul 1, 2021

Hi, I think this is an Alpine issue. Downgrading to Alpine 2.8.2 works. It might have something to do with the fact that this.editor is a Proxy object - though it's just a theory.

I don't know if the getUnobservedData() still works, but you could try to use it to get access to the actual editor object. https://codewithhugo.com/alpinejs-inspect-component-data-from-js/

Hope this info helps 😄

@olivsinz
Copy link

olivsinz commented Jul 2, 2021

Thanks but getUnobservedData() is no longer available.

@olivsinz
Copy link

olivsinz commented Jul 2, 2021

@reefki did you find a way?

@jelib3an
Copy link

jelib3an commented Jul 2, 2021

It appears to be definitely a proxy issue. I sort of got something working here by storing the editor object in a closure.
https://codesandbox.io/s/tiptap-v2-alpinejs-v3-forked-6qxfs?file=/index.js

I don't know why reactivity is not working but it's a start and maybe this can point you in the right direction.

@olivsinz
Copy link

olivsinz commented Jul 2, 2021

@jelib3an Thanks a lot.

@KevinBatdorf
Copy link

If you add Alpine to the window scope you can use Alpine.raw(editor) to unwrap the proxy and it should work.

@robertdrakedennis
Copy link

@KevinBatdorf apologies with pinging you, can you explain your solution more? I'm a bit of a novice when it comes down further into the technical stuff and would really like to understand how to alleviate this issue with your solution. Thanks!

@jelib3an
Copy link

jelib3an commented Jul 6, 2021

@KevinBatdorf Thanks for the suggestion! I never knew about Alpine.raw()

@robertdrakedennis Here's an example with the mentioned solution.
https://codesandbox.io/s/tiptap-v2-alpinejs-v3-forked-2bbw8?file=/index.js

However, Alpine.raw() doesn't appear to be bindable for reactivity. I also am Alpine novice. Would be interested to know if anyone has any good suggestions as it would be kind of a hassle to create a separate attribute for every button we want to check activeness on.

@hanspagel
Copy link
Contributor

Just wanted to say that I have no experience with Alpine, but I’d love to update the docs when we found a solution. ✌️ Thanks for everyone helping out.

@KevinBatdorf
Copy link

KevinBatdorf commented Aug 11, 2021

Using the demos above as a reference, instead of using this.editor, just use window.editor = new Editor (or name it however you like) and access it the same way. There's no need to make it a reactive property, and that seems to be what's breaking things here.

That's probably the more logical approach than my previous suggestion to unwrap the reactive parts on demand (with Alpine.raw()).

@EasterPeanut
Copy link

Wanted to share my solution for having the editor not reactive, but still have a reactive menu for Tiptap/Alpine v3: https://codesandbox.io/s/tiptap-with-alpine-js-v3-q4qbp

@haubie
Copy link

haubie commented Aug 29, 2021

Thanks @EasterPeanut your codesandbox and also phoenix project were very helpful in migrating to Alpine 3!

@hanspagel hanspagel removed the v2 label Sep 28, 2021
@Mushr0000m
Copy link

Yes thanks @EasterPeanut it helped ! Would be nice to have a solution without changing the variable scope like in VueJs and other though…

@reefki
Copy link
Author

reefki commented Oct 6, 2021

Thanks @EasterPeanut your solution is very helpful. But since I need to have multiple editor instances, so I ended up with this implementation:

import { Editor } from '@tiptap/core'
import StarterKit from '@tiptap/starter-kit'

export default (content) => {
    let editors = window.tiptapEditors || {}

    return {
        id: null,
        content: content,
        updatedAt: Date.now(),

        init() {
            this.id = this.$el.getAttribute('id')

            editors[this.id] = new Editor({
                element: this.$refs.element,
                extensions: [
                    StarterKit,
                ],
                content: this.content,
                onUpdate: ({ editor }) => {
                    this.content = editor.getHTML()
                },
                onSelectionUpdate: () => {
                    this.updatedAt = Date.now()
                },
            })

            window.tiptapEditors = editors
        },

        editor() {
            return editors[this.id]
        },

        toggleHeading(level) {
            this.editor().chain().toggleHeading({ level }).focus().run()
        },

        toggleBold() {
            this.editor().chain().toggleBold().focus().run()
        },

        toggleItalic() {
            this.editor().chain().toggleItalic().focus().run()
        },
    }
}

The editor instances are saved to window as an object, the key is using the element id. Whenever I need the editor instance I only need to call this.editor() method.

@aspyropoulos
Copy link

aspyropoulos commented Oct 27, 2021

Thank you @EasterPeanut for the solution. Does anybody knows why in @EasterPeanut implementation buttons are not activated when are pressed but only when you press and type your first character (similarly when you deactivate)?

Updated:

Implementing the onTransaction function solved my issue:

 onTransaction: () => {
      this.updatedAt = Date.now()
  },

@francois-soapbox
Copy link

@aspyropoulos Thanks!

@Atem18
Copy link

Atem18 commented Jan 27, 2022

Maybe docs should be edited no ?

@galaczi
Copy link

galaczi commented Jan 30, 2022

Wow I didn't expect to go down this rabbit hole when I opened the Tiptap setup page. Honestly it looks much easier to just use vanilla JS. It's like a five liner.

@hanspagel
Copy link
Contributor

hanspagel commented Jan 30, 2022

Maybe we can build an alpine plugin?

As I said, I have nearly zero experience with Alpine. If someone could send a PR with improvements to the doc page, that would be amazing!

@iksaku
Copy link
Contributor

iksaku commented Feb 10, 2022

@hanspagel the reactivity system in Alpine v3 is extracted from Vue's reactivity system, so basically a trimmed down version only exposing the reactive function, will need to take a look at Vue's integration to see if I can be of any help

@RobertCordes
Copy link
Sponsor

Did anybody find a solution yet? I’m in the middle of upgrading a huge app to Alpine v3 and this is the only thing that’s holding me back. I've been working on this for days but I just can't figure out how to solve this issue. Maybe @calebporzio can give us a hint? 😇 Using Tiptap with Alpine v2 and Livewire is working flawlessly.

@gmlewis
Copy link

gmlewis commented May 29, 2022

I'm using my own custom EmitterProvider (based loosely on y-websocket.js) to talk to emitter.io and am not using AlpineJS at all, but also get this error when upgrading from @tiptap/vue3@2.0.0-beta.2 to @tiptap/vue3@2.0.0-beta.91:

Uncaught RangeError: Applying a mismatched transaction
    at EditorState.applyInner (index.es.js:863:33)
    at EditorState.applyTransaction (index.es.js:831:1)
    at EditorState.apply (index.es.js:807:1)
    at Editor.dispatchTransaction (tiptap-core.esm.js:3457:1)
    at EditorView.dispatch (index.es.js:5285:29)
    at sync-plugin.js:401:1
    at ProsemirrorBinding.mux (mutex.js:35:1)
    at ProsemirrorBinding._typeChanged (sync-plugin.js:384:1)
    at Module.callAll (function.js:19:1)
    at callEventHandlerListeners (yjs.mjs:1863:12)

I just wanted to add another data point here while I keep trying to debug it in case others run into the same issue.

@azarai
Copy link

azarai commented Jun 3, 2022

Related to this error, I'm also experiencing a "Alpine Expression Error: editor is not defined" caused by a "Uncaught ReferenceError: editor is not defined".

Test project: I followed the instructions in the doc and set up the example with Alpine 3. The basic editor worked BUT as soon as I added BubbleMenu or FloatingMenu it breaks again and Alpine can't find the reference to the "editor" field anymore.

The placeholder extension worked though.

2 workarounds I found:

  1. Downgraden Alpine to v2 (2.8.2) and it worked again. Code stayed the same.
  2. Initialize the Editor outside of Alpine and set it as window.editor and never add a reference as an Alpine field/data. Then in an Alpine triggered method, using window.editor and calling methods on the editor worked just fine.

@francoism90
Copy link

@azarai Could you please share your (full) solution? :)

@bdbch
Copy link
Contributor

bdbch commented Jun 25, 2022

As some people described already this is a Proxy issue with Alpine. Alpine is using Proxy to have reactive objects - which is why this error is occuring.

image

Here you can see that a Proxy is sent to applyTransaction - since this is not the correct way to apply a transaction prosemirror is throwing this error.

Don't know a solution for now, just so people know more about why and where this is happening.

@samwillis
Copy link

Just spotted this, and can hopefully point in the right direction, Alpine.js uses the reactive engine from Vue.js 3. Fixing it will be a very similar to what I did to get Vue3 working way back last year... #1166

From memory the trick with Vue was to use a ShallowRef() to hold the Editor object, this stops the reactive engine from trying to track all properties and methods within TipTap. (we then did a bunch of stuff to make the toolbars reactive but my memory gives up at that point)

It doesn't look like Alpine exposes the ShallowRef() api, but that will defiantly be the starting point to getting it working while having the Editor be in your x-data.

(as others have mentioned having your editor object outside of x-data is a good workaround, but obviously not ideal)

@leo-petrucci
Copy link

leo-petrucci commented Jul 17, 2022

I'm not 100% this is a solution but it seems to work in my case? (I need to do more testing).

So you define your editor outside Alpine:

window.editor = null;

Then, within the main x-data function we initialise the editor:

const data= (content: Content = '') => {
    async init(element: Element) {
      window.editor = new Editor({
            // stuff in here obviously
      });
}

Then we create a new function so we can access the editor from within our data function:

const data= (content: Content = '') => {
    async init(element: Element) {
      window.editor = new Editor({
            // stuff in here obviously
      });
    },
    editor: () => {
      return window.editor;
    },
}

Then from your html you can call this:

              <button
                data-text="Bold"
                @click="editor().chain().toggleBold().focus().run()"
                :class="{ 'is-active': editor().isActive('bold') }"
              >
                Bold
              </button>

The difference with the above is that instead of calling editor.chain() we call editor().chain().

As far as I can tell almost everything here works except for :class="{ 'is-active': editor().isActive('bold') }".

EDIT:

I thought this may have been a better solution, but the error is still there :/

    get editor() {
      return window.editor;
    },

@reefki
Copy link
Author

reefki commented Jul 17, 2022

@creativiii yes, exactly what I did #1515 (comment) but you might want to put the editor in a collection instead so you access multiple editor instances in case you have multiple editors in a single page.

@leo-petrucci
Copy link

leo-petrucci commented Jul 17, 2022

@creativiii yes, exactly what I did #1515 (comment) but you might want to put the editor in a collection instead so you access multiple editor instances in case you have multiple editors in a single page.

Sorry! I must've completely skipped over your comment 😂
Did you figure out a solution to checking if a button isActive?

EDIT:
On second thought this works just as well?

  <button
    x-data="{ active: false }"
    data-text="Bold"
    @click="() => {
      editor().chain().toggleBold().focus().run();
      active = editor().isActive('bold');
    }"
    :class="{ 'is-active': active }"
  >
    Bold
  </button>

@reefki
Copy link
Author

reefki commented Jul 17, 2022

@creativiii yes, exactly what I did #1515 (comment) but you might want to put the editor in a collection instead so you access multiple editor instances in case you have multiple editors in a single page.

Sorry! I must've completely skipped over your comment 😂 Did you figure out a solution to checking if a button isActive?

I have buttons attribute in my Alpine component. With this attribute, not only I can give a different set of buttons for each editors but also I can use this to hold the buttons state and update the state by listening to onUpdate and onTransaction events.

In the html you can just loop the button collection and access the active state like:

<template x-for="button in buttons" :key="button.name" hidden>
    <button type="button" :class="{ 'bg-gray-50': button.active }" x-on:click.prevent="clickButton(button.name)">
        <span x-text="button.label"></span>
    </button>
</template>

@leo-petrucci
Copy link

leo-petrucci commented Jul 17, 2022

Sorry! I must've completely skipped over your comment 😂 Did you figure out a solution to checking if a button isActive?

I have buttons attribute in my Alpine component. With this attribute, not only I can give a different set of buttons for each editors but also I can use this to hold the buttons state and update the state by listening to onUpdate and onTransaction events.

In the html you can just loop the button collection and access the active state like:

<template x-for="button in buttons" :key="button.name" hidden>
    <button type="button" :class="{ 'bg-gray-50': button.active }" x-on:click.prevent="clickButton(button.name)">
        <span x-text="button.label"></span>
    </button>
</template>

That's really smart! I'll give it a shot.

Not sure if there's a correct way to listen for a value changing with Alpine but this is how my buttons look:


    buttons: [
      {
        active: false,
        isActive: () => window.editor?.isActive('bold'),
        name: 'bold',
        onClick: () => {
          window.editor!.chain().toggleBold().focus().run();
        },,
      },
    ],

Then in the editor:

        onTransaction: ({ transaction }) => {
          this.buttons.forEach(button => {
            button.active = button.isActive() as boolean;
          });
        },

@github-actions
Copy link
Contributor

github-actions bot commented Nov 8, 2022

This issue is stale because it has been open 45 days with no activity. Remove stale label or comment or this will be closed in 7 days

@github-actions github-actions bot added the Info: Stale The issue or pullrequest has not been updated in a while and might be stale label Nov 8, 2022
@bdbch bdbch removed the Info: Stale The issue or pullrequest has not been updated in a while and might be stale label Nov 8, 2022
peterfox added a commit to peterfox/tiptap that referenced this issue Jan 10, 2023
Changes are based on reading this thread ueberdosis#1515 (comment)

This example relies on AlpineJS still and doing causes the editor to be wrapped in an observable/reactive layer. Moving the editor out of the returned object means it doesn't become a proxy object; otherwise, `editor.commands.setContent(content, false)` will already trigger an error `Range Error: Applying a mismatched transaction` and not work.
@bdbch
Copy link
Contributor

bdbch commented Feb 24, 2023

Since @peterfox added a good note about this to our PHP documentation for Alpine I'd close this issue for now. Hope everyone is happy with that decision. Feel free to reopen if there is still something open to discuss.

@bdbch bdbch closed this as completed Feb 24, 2023
bdbch pushed a commit that referenced this issue Feb 24, 2023
Changes are based on reading this thread #1515 (comment)

This example relies on AlpineJS still and doing causes the editor to be wrapped in an observable/reactive layer. Moving the editor out of the returned object means it doesn't become a proxy object; otherwise, `editor.commands.setContent(content, false)` will already trigger an error `Range Error: Applying a mismatched transaction` and not work.
aliasliao pushed a commit to aliasliao/tiptap that referenced this issue May 24, 2023
Changes are based on reading this thread ueberdosis#1515 (comment)

This example relies on AlpineJS still and doing causes the editor to be wrapped in an observable/reactive layer. Moving the editor out of the returned object means it doesn't become a proxy object; otherwise, `editor.commands.setContent(content, false)` will already trigger an error `Range Error: Applying a mismatched transaction` and not work.
X-oss-byte added a commit to X-oss-byte/Tiptap.dev that referenced this issue Oct 8, 2023
* v2.0.0-beta.205

* fix(extension-bubble-menu): don't debounce without valid selection (#3501)

* refactor(extension-youtube): rename utility function name (#3498)

* Check if url exists (#3484)

* Update menus.md (#3457)

* docs(docs): add new installation notes for peerDependencies

* build(deps): bump minimatch from 3.0.4 to 3.1.2 in /demos (#3489)

Bumps [minimatch](https://github.com/isaacs/minimatch) from 3.0.4 to 3.1.2.
- [Release notes](https://github.com/isaacs/minimatch/releases)
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](isaacs/minimatch@v3.0.4...v3.1.2)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: change release from tag to release

* 2.0.0-beta.206

* docs(docs): update formatting on installation guide

* docs: add note about starter-kit dependencies

* docs: remove unnecessary text in docs

* docs: add installation notes to extensions

* fix(extension-table): add prosemirror-tables to peerDependencies

* v2.0.0-beta.207

* docs: rotate rooms

* docs: inject collaboration rooms in build process

* Custom text serializers should override text serializers defined in the schema (#3546)

* 2.0.0-beta.208

* v2.0.0-beta.209

* update sandboxes

* docs: add job IllumIDesk

* docs: fix typo in job description

* docs: refactor installation docs

* docs: explain peer dependencies

* docs: fix text

* docs: improve texts

* docs: improve peer dependency hints

* docs: remove sponsor box

* docs: about & collab

* docs: update hocuspocus hints

* Update sink-list-item.md (#3629)

correct text copy

* 🧹 Allow `editor.setEditable` to omit updates (#3301)

* 🧹 Allow `editor.setEditable` to omit updates

* 📚 Document change to `editor.setEditable`

* docs: remove early access hint

* Change Build Process to Lerna + tsup & prepare for prosemirror-meta package (#3555)

* chore:(core): migrate to tsup

* chore: migrate blockquote and bold to tsup

* chore: migrated bubble-menu and bullet-list to tsup

* chore: migrated more packages to tsup

* chore: migrate code and character extensions to tsup

* chore: update package.json to simplify build for all packages

* chore: move all packages to tsup as a build process

* chore: change ci build task

* chore: clean up and fix issues related to new build

* fix: fix demo build

* fix: fix demo build

* fix: fix tsconfig files to reference only one source

* fix: fix minor ts issues

* chore: add prettier

* fix(typo): typescript.md (#3657)

Add a forgotten quotation mark in the import and specify the language in md code block

* Update schema.md (#3645)

The schema definition exmaple uses the node name `document` while the explaining text says that the node name is `doc`.

* chore: set eslint as default formatter

* feat(pm): new prosemirror package for dependency resolving

* chore:(core): migrate to tsup

* chore: migrate blockquote and bold to tsup

* chore: migrated bubble-menu and bullet-list to tsup

* chore: migrated more packages to tsup

* chore: migrate code and character extensions to tsup

* chore: update package.json to simplify build for all packages

* chore: move all packages to tsup as a build process

* chore: change ci build task

* feat(pm): add prosemirror meta package

* rfix: resolve issues with build paths & export mappings

* docs: update documentation to include notes for @tiptap/pm

* chore(pm): update tsconfig

* chore(packages): update packages

* fix(pm): add package export infos & fix dependencies

* chore(general): start moving to pm package as deps

* chore: move to tiptap pm package internally

* fix(demos): fix demos working with new pm package

* fix(tables): fix tables package

* fix(tables): fix tables package

* chore(demos): pinned typescript version

* chore: remove unnecessary tsconfig

* chore: fix netlify build

* fix(demos): fix package resolving for pm packages

* fix(tests): fix package resolving for pm packages

* fix(tests): fix package resolving for pm packages

* chore(tests): fix tests not running correctly after pm package

* chore(pm): add files to files array

* chore: update build workflow

* chore(tests): increase timeout time back to 12s

* chore(docs): update docs

* chore(docs): update installation guides & pm information to docs

* chore(docs): add link to prosemirror docs

* fix(vue-3): add missing build step

* chore(docs): comment out cdn link

* chore(docs): remove semicolons from docs

* chore(docs): remove unnecessary installation note

* chore(docs): remove unnecessary installation note

* v2.0.0-beta.210

* update publish task

* update publish task

* update publish task

* update publish task

* remove peer deps link

* fix(bubble-menu): fix bubble menu imports

* v2.0.0-beta.211

* fix(collaboration): fix missing y-prosemirror dependency

* fix(core): fix broken types in definition file

* v2.0.0-beta.212

* fix(bubble-menu): change lodash to lodash-es for esbuild

* v2.0.0-beta.213

* Added CSS Required for Setup (#3711)

* Added CSS Setup Context

It was previously not clear that additional CSS was required to display placeholders.

* Fixed Typo.

* Update installation guides (#3698)

* docs: update installation guides

* docs: remove base setup

* docs: complete the prosemirror package documentation

* Make y-prosemirror a peer dependency (extension-collaboration) (#3697)

* refactor(extension-collaboration): make y-prosemirror a peer dep

* docs: update installation of extension-collaboration

---------

Co-authored-by: Dominik <6538827+bdbch@users.noreply.github.com>

* refactor(extension-bubble-menu): remove lodash types, replace pm deps with tiptap/pm (#3696)

* Remove lodash dependencies in extension-floating-menu (#3695)

* refactor(extension-floating-menu): remove lodash dependencies

* fix: typo

---------

Co-authored-by: Dominik <6538827+bdbch@users.noreply.github.com>

* build(deps): bump cypress-io/github-action from 4.2.0 to 5.0.8 (#3707)

Bumps [cypress-io/github-action](https://github.com/cypress-io/github-action) from 4.2.0 to 5.0.8.
- [Release notes](https://github.com/cypress-io/github-action/releases)
- [Commits](cypress-io/github-action@v4.2.0...v5.0.8)

---
updated-dependencies:
- dependency-name: cypress-io/github-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump http-cache-semantics from 4.1.0 to 4.1.1 (#3687)

Bumps [http-cache-semantics](https://github.com/kornelski/http-cache-semantics) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/kornelski/http-cache-semantics/releases)
- [Commits](https://github.com/kornelski/http-cache-semantics/commits)

---
updated-dependencies:
- dependency-name: http-cache-semantics
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix(bubble-menu): move from lodash-es back to lodash, use named import

* Move back from tsup/esbuild to rollup (#3720)

* fix: bring back global rollup config

* fix: add rollup build for packages except pm

* fix: rollup global build

* fix: fix memory leak on build

* fix(character-count): revert files

* fix: builds run individual per rollup and lerna

* chore: remove old rollup

* fix(blockquote): correct the main module path

* fix(character count): bump version number

* v2.0.0-beta.214

* fix: fix builds including prosemirror

* v2.0.0-beta.215

* fix(bubble-menu): fix lodash import

* integrate typesense

* v2.0.0-beta.216

* integrate typesense

* integrate typesense

* schedule typesearch scraper

* schedule typesearch scraper

* fix(bubble-menu): exclude lodash/debounce from externals

* v2.0.0-beta.217

* fix: Prevent drag event from being ignored (#3677)

* build(deps): bump actions/cache from 3.0.11 to 3.2.5 (#3741)

Bumps [actions/cache](https://github.com/actions/cache) from 3.0.11 to 3.2.5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](actions/cache@v3.0.11...v3.2.5)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump act10ns/slack from 1 to 2 (#3404)

Bumps [act10ns/slack](https://github.com/act10ns/slack) from 1 to 2.
- [Release notes](https://github.com/act10ns/slack/releases)
- [Changelog](https://github.com/act10ns/slack/blob/master/RELEASE.md)
- [Commits](act10ns/slack@v1...v2)

---
updated-dependencies:
- dependency-name: act10ns/slack
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump json5 from 1.0.1 to 1.0.2 (#3605)

Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](json5/json5@v1.0.1...v1.0.2)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump json5 from 2.2.1 to 2.2.3 in /demos (#3607)

Bumps [json5](https://github.com/json5/json5) from 2.2.1 to 2.2.3.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](json5/json5@v2.2.1...v2.2.3)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump actions/checkout from 3.0.2 to 3.3.0 (#3609)

Bumps [actions/checkout](https://github.com/actions/checkout) from 3.0.2 to 3.3.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v3.0.2...v3.3.0)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump actions/upload-artifact from 3.1.0 to 3.1.2 (#3610)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.1.0 to 3.1.2.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@v3.1.0...v3.1.2)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump actions/setup-node from 3.5.1 to 3.6.0 (#3613)

Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3.5.1 to 3.6.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](actions/setup-node@v3.5.1...v3.6.0)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Update regex to exclude channel URL unfurling (#3750)

* Fix type for BubbleMenu prop pluginKey (#3678)

* Extend `nodePasteRule` `find` type to most generic `PasteRuleFinder` (#3759)

* fix(extension-link): Click handler opens selected link instead of clicked link (#3732)

* fix(typography): dont create fractions in the middle of a string (#3762)

* v2.0.0-beta.218

* Use Tailwind CDN direclty? (#3643)

I realized that if I use Tailwind's CDN directly, you can have it react to dark mode directly.

* Override schema text serializers if provided in getText options (#3672)

* chore: add eslintcache (#3525)

* document removing or overriding link attributes (#3576)

The documentation mentions being able to override the `rel` on links but doesn't explain how. It also doesn't tell you how to remove the rel if needed(set to null).

Add an example of removing a default attribute and overriding one to a different value.

* Add onFirstRender callback option (#3600)

* Added onFirstRender callback option

This PR is a simple forwarding of a very useful callback from the ySyncPlugin.

* Fix invalid function name

* Add Plugin Key to placeholder component. (#3652)

* Add Plugin Key to placeholder component.

Key added to fix error duplicate plugin when using `Placeholder` component.

* Add PluginKey import

---------

Co-authored-by: Dominik <6538827+bdbch@users.noreply.github.com>

* Export `createNodeFromContent` and other missing helpers (#3558)

* Queue flushSync microtask (#3533)

Do the same thing as ueberdosis/tiptap#3188

* build(deps): bump cypress-io/github-action from 5.0.8 to 5.0.9 (#3766)

Bumps [cypress-io/github-action](https://github.com/cypress-io/github-action) from 5.0.8 to 5.0.9.
- [Release notes](https://github.com/cypress-io/github-action/releases)
- [Commits](cypress-io/github-action@v5.0.8...v5.0.9)

---
updated-dependencies:
- dependency-name: cypress-io/github-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat: #3540 Ability to preserve marks on lists (#3541)

* feat: #3540 Ability to preserve marks on lists

* feat: preserveAttrs in list items

* `keepMarks` is working, but need help with `keepAttrs`

* fix: conflict

* avoid casting

* fix: move y-prosemirror to peer-deps (#3763)

Co-authored-by: Dominik <6538827+bdbch@users.noreply.github.com>

* fix: #3773 - Array for content breaks editor (#3786)

* fix: #3773 - Array for content breaks editor

* fix: lint warning

* Update php.md (#3618)

Changes are based on reading this thread ueberdosis/tiptap#1515 (comment)

This example relies on AlpineJS still and doing causes the editor to be wrapped in an observable/reactive layer. Moving the editor out of the returned object means it doesn't become a proxy object; otherwise, `editor.commands.setContent(content, false)` will already trigger an error `Range Error: Applying a mismatched transaction` and not work.

* add optionalSlashSlash to protocol options (#3675)

* add optionalSlashSlash to protocol options

* Update documentation

* rename optionalSlashSlash to optionalSlashes

* regenerate package-lock.json with node v16

* fix(core): allow insertContentAt and insertContent text node arrays (#3790)

* fix(core): allow insertContentAt and insertContent to handle array of text nodes

* fix(core): allow insertContent via json including a text content

* chore: allow new ReactComponentContent components to be created (#3782)

* chore: allow users to create new react nodeview editor content components

* style: remove trailing spaces

* fix(react): reset initialized when editorcontent is unmounting (#3781)

* fix(react): reset initialized when editorcontent is unmounting

* style: remove unneeded if statement

* docs: add extension cli note to contributing docs (#3793)

* docs: add extension cli note to contributing docs

* docs: add notes to CLI

* docs: fix rollup and vite naming

* fix: update typings for node view decorations (#3783)

* fix: update typings for node view decorations

* fix(core): update types for NodeView

* fix(core): declare props.decorations as decorationWithType

* build(deps): bump actions/cache from 3.2.5 to 3.2.6 (#3795)

Bumps [actions/cache](https://github.com/actions/cache) from 3.2.5 to 3.2.6.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](actions/cache@v3.2.5...v3.2.6)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* v2.0.0-beta.219

* fix(core):  fix destroyed view causing errors on dispatchTransaction (#3799)

* fix(tests): fix tests for lists

* v2.0.0-beta.209

* Only allow left mouse button to open links (#3777)

* Only allow left mouse button to open links

* fix lint errors

* core: only check doc.textBetween if other checks pass (#3778)

* fix: package-lock

* fix: use prose-base class for sm screens to prevent override of prose-invert (#3810)

* fix(core): fix linting issues

* Adds attributes to toggleList (#3776)

* Adds attributes to toggleList

When dealing with different variants of bullet lists, I wanted to adopt the same technique I used for different paragraph variants. Since `wrapInList` is capable of receiving attributes, just like `setNode` is, I don't see any reason why `toggleList` should not be capable of the same. 

Here's my bullet list extension in action that is in need of attributes support.

```js
export const CustomBulletList = BulletList.extend({
  content: 'listItem*',

  addAttributes() {
    return {
      variant: {
        default: DEFAULT_LIST,

        renderHTML: attributes => {
          return {
            class: `list-${attributes.variant}`,
          };
        },
      },
    };
  },

  addCommands() {
    return {
      toggleBulletList: attributes => (c) => {
        return c.commands.toggleListCustom(this.name, this.options.itemTypeName, attributes);
      },
    };
  },
});
```

* Update toggle-list.md

* Update toggle-list.md

* fix(tests): add assertion for each valid/invalid link (#3815)

* fix(tests): add assertion for each valid/invalid link

* chore(tests): disable video generation

* feat(react): allow react renderer to assign attributes to react renderer element (#3812)

* fix(react): allow updating event handlers on editor (#3811)

* tests: increase timeout

* Improve Cypress Test runner performance with parallelization (#3817)

* test: only run integration tests

* test: only run integration tests

* test: try using test spec matrix

* test: try using test spec matrix

* test: try using test spec matrix

* test: try using test spec matrix

* test: try using test spec matrix

* tests: update test branches

* WIP - list backspace behaviour

* WIP - add handling when backspace is pressed at start of a list item

* WIP - fix undoInputRule

* build(deps): bump cypress-io/github-action from 5.0.9 to 5.2.0 (#3835)

Bumps [cypress-io/github-action](https://github.com/cypress-io/github-action) from 5.0.9 to 5.2.0.
- [Release notes](https://github.com/cypress-io/github-action/releases)
- [Commits](cypress-io/github-action@v5.0.9...v5.2.0)

---
updated-dependencies:
- dependency-name: cypress-io/github-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* try to fix docs link order in menu

* fix inconsistent tiptap spelling

* docs: fix docs order and add new pro extensions

* docs: update extension list

* update docs

* fix: Ordered list start support broke in #3541 (#3833)

* fix: #3831

* fix: default attribute + predicate

* docs: link to support page

* refactor(extension-youtube): command types (#3842)

* build(deps): bump actions/checkout from 3.3.0 to 3.4.0 (#3864)

Bumps [actions/checkout](https://github.com/actions/checkout) from 3.3.0 to 3.4.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v3.3.0...v3.4.0)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump cypress-io/github-action from 5.2.0 to 5.5.0 (#3863)

Bumps [cypress-io/github-action](https://github.com/cypress-io/github-action) from 5.2.0 to 5.5.0.
- [Release notes](https://github.com/cypress-io/github-action/releases)
- [Commits](cypress-io/github-action@v5.2.0...v5.5.0)

---
updated-dependencies:
- dependency-name: cypress-io/github-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump webpack from 5.73.0 to 5.76.0 (#3855)

Bumps [webpack](https://github.com/webpack/webpack) from 5.73.0 to 5.76.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](webpack/webpack@v5.73.0...v5.76.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* temporary changes

* docs: consistent naming (#3882)

* feat(attributes): dynamic default (#3379)

* style(core): fix linting issues (#3884)

* Handle NodeViews in BubbleMenu positioning (#3881)

* fix(bubble-menu): use correct children of node view renderers for clientRect

* fix(bubble-menu): remove lodash

* fix(bubble-menu): support vue node views

* fix(demos): revert bubble menu demo

* chore: add Dev demo folder (#3887)

* ci: remove slack notifications (#3885)

* docs: update nodes and extensions lists (#3886)

* docs: remove pro extension callout from collab docs (#3883)

* Fixing reoccurring issue #3331 and improving related PR #3533 (#3862)

* Add custom paragraph example

* Remove unnecessary queueMicrotask

* Release Candidate Preparation (#3890)

* 2.0.0-rc.0

* chore: make fixed version dependencies while on rc

* 2.0.0-rc.1

* chore: add nnew release and prerelease actions (#3836)

* TiptapCollab

* Merge pull request #3895 from ueberdosis/feature/ttCollabProvider

Updates @hocuspocus/provider, moves demo to TiptapCollab

* fix(lists): improve list behaviour

* chore: change back to independent releases

* Collaboration: Fix history after late-registering plugins (#3901)

* fix(extension-collaboration): fix history after late-registering plugins

* fix(extension-collaboration): fix history after late-registering plugins

* chore: remove independent

* 2.0.0-rc.2

* chore: change peerDeps

* chore: update package-lock.json

* ci: remove slack notifications (#3898)

* ci: remove slack notifications

* clean up envs

* build(deps): bump actions/checkout from 3.4.0 to 3.5.0 (#3889)

Bumps [actions/checkout](https://github.com/actions/checkout) from 3.4.0 to 3.5.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v3.4.0...v3.5.0)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump cypress-io/github-action from 5.5.0 to 5.5.1 (#3888)

Bumps [cypress-io/github-action](https://github.com/cypress-io/github-action) from 5.5.0 to 5.5.1.
- [Release notes](https://github.com/cypress-io/github-action/releases)
- [Commits](cypress-io/github-action@v5.5.0...v5.5.1)

---
updated-dependencies:
- dependency-name: cypress-io/github-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump actions/cache from 3.2.6 to 3.3.1 (#3846)

Bumps [actions/cache](https://github.com/actions/cache) from 3.2.6 to 3.3.1.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](actions/cache@v3.2.6...v3.3.1)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* docs: prepare for stable release (#3892)

* docs: changelogs

* docs: about

* New Issue & Discussion Templates (#3907)

* chore: update github templates

* chore: add discussion templates

* chore: update issue templates

* chore: add pull request template

* chore: add pull request template

* chore: add pull request template

* feat(core): add editor to this context in schema functions (#3909)

* update lerna version

* v2.0.0-rc.3

* update packagelock

* v2.0.0

* update package-lock

* add new release script

* add rc as pre tag

* pin lerna version

* update package-lock

* update lerna

* chore: remove core from pm dependencies

* docs: fix nodes list

* chore: dont push new versions automatically

* package-lock update

* Updates @hocuspocus/provider to 2.0.1 (#3913)

* Updates @hocuspocus/provider to 2.0.1 (#3913)

* fix: Update peerDependencies to fix lerna version tasks (#3914)

* v2.1.0-rc.0

* revert version to 2.0.0

* dev: temporarily disable commits for release

* dev: set back lerna version

* disable commits for releases by default

* chore(core): add peerDeps

* chore(extension-blockquote): add peerDeps

* chore: add peerDeps

* chore: add peerDeps

* chore: add peerDeps

* chore: add peerDeps

* chore: add peerDeps

* chore: add peerDeps

* chore: add peerDeps

* chore: add peerDeps

* chore: revert 2.1.0 test changes

* chore: allow react 17 and upwards

* chore: update package-lock.json

* chore: move y-prosemirror to peerDeps

* chore: move y-prosemirror to dev deps

* chore: move y-prosemirror to dev deps

* Update clickHandler.ts (#3917)

Fix left click invalid

* Update clickHandler.ts (#3917)

Fix left click invalid

* fix: Update peerDependencies to fix lerna version tasks (#3914)

* v2.1.0-rc.0

* revert version to 2.0.0

* dev: temporarily disable commits for release

* dev: set back lerna version

* disable commits for releases by default

* chore(core): add peerDeps

* chore(extension-blockquote): add peerDeps

* chore: add peerDeps

* chore: add peerDeps

* chore: add peerDeps

* chore: add peerDeps

* chore: add peerDeps

* chore: add peerDeps

* chore: add peerDeps

* chore: add peerDeps

* chore: revert 2.1.0 test changes

* chore: allow react 17 and upwards

* chore: update package-lock.json

* chore: move y-prosemirror to peerDeps

* chore: move y-prosemirror to dev deps

* chore: move y-prosemirror to dev deps

* v2.0.1

* update demo styles

* fix(list-item): improve delete behaviour

* Update CHANGELOG.md

* Update CHANGELOG.md

* feat: landingpage demo (#3925)

* feat: Tiptap collab demo styling

* feat: add box-shadow to collab demo

* fix(react): fix rebinding events not overwriting editor.on (#3935)

* fix(react): fix rebinding events not overwriting editor.on

* fix(react): move ref assignment inside if

* v2.0.2

* build(deps): bump cypress-io/github-action from 5.5.1 to 5.6.1 (#3933)

Bumps [cypress-io/github-action](https://github.com/cypress-io/github-action) from 5.5.1 to 5.6.1.
- [Release notes](https://github.com/cypress-io/github-action/releases)
- [Commits](cypress-io/github-action@v5.5.1...v5.6.1)

---
updated-dependencies:
- dependency-name: cypress-io/github-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix: clear nodes when cursor at start of empty isolating parent (#3943)

* fix: clear nodes when cursor at start of empty isolating parent

* fix: dont break backspace behavior when childCount is over 1

* fix: check if parent is textblock

* fix: add strict pos check for parent isolating pos

* demo: add isolation clear demo

* v2.1.0-pre.0

* fix(bubble-menu): fix debounce not working with collab/collaboration cursor (#3956)

* v2.1.0-pre.1

* fix(bubble-menu): fix debounce not working with collab/collaboration cursor (#3956)

* v2.0.3

* Retain existing config when calling configure() on Marks and Extensions (#3822)

* fix(extension-link): fix link not being kept when pasting url with link (#3975)

* fix(extension-link): fix llinks not being kept when pasted text includes url

* fix(extension-link): fix links not being linked correctly on the correct pos

* fix(link): fix pasting behavior and move all to one plugin

* fix(link): dont do custom behavior if no links were pasted

* fix(link): copied text link should be kept

* fix(link): fix autolink overriding pasted links

* fix(link): fix links not pasting the correct link on selected text

* v2.1.0-rc.2

* fix(core): remove configure from extend functionality

* v2.1.0-rc.3

* chore: remove unused tests

* fix(link): fix links autolinking when not needed (#3989)

* v2.1.0-rc.4

* Update LICENSE.md

* fix: typo in commands.md

* feat: add tiptap class

* update docs
* update demos

* fix(extension-link): fix paste handling

* do not dispatch transaction without any links getting pasted
* prevent onPaste handling in code blocks

* v2.1.0-rc.5

* fix package-lock

* v2.1.0-rc.7

* v2.1.0-rc.8

* Update README.md

* refactor(lists): start refactoring lists code

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Dominik Biedebach <dominik.biedebach@ueber.io>
Co-authored-by: Sven Adlung <sven.adlung@ueber.io>
Co-authored-by: Gustavo Rocha <gugu.r.azevedo@gmail.com>
Co-authored-by: Jaga Santagostino <jagasantagostino@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Martin Kriegeskorte <martin.kriegeskorte@ueber.io>
Co-authored-by: Tova Schreier <86614602+tovaschreier@users.noreply.github.com>
Co-authored-by: svenadlung <info@svenadlung.de>
Co-authored-by: Au <259848+vuau@users.noreply.github.com>
Co-authored-by: Zaymon Antonio <12402727+ZaymonFC@users.noreply.github.com>
Co-authored-by: Dominik <6538827+bdbch@users.noreply.github.com>
Co-authored-by: Dominik Biedebach <dominik@bdbch.com>
Co-authored-by: N0N1m3 <51912406+N0N1m3@users.noreply.github.com>
Co-authored-by: Mattias Reichel <mattias.reichel@gmail.com>
Co-authored-by: James <66140148+koffietiger@users.noreply.github.com>
Co-authored-by: Matthew Mullin <matthewmullin01@gmail.com>
Co-authored-by: Justin Maier <just.maier@gmail.com>
Co-authored-by: Ray Bateman <rumbcam@gmail.com>
Co-authored-by: Jie <jie.gillet@gmail.com>
Co-authored-by: James Taber <jmtaber129@gmail.com>
Co-authored-by: Rico <r@rico.wtf>
Co-authored-by: Harrison Lo <harrison0723@gmail.com>
Co-authored-by: Simon He <57086651+Simon-He95@users.noreply.github.com>
Co-authored-by: Ed Pelc <ed@freightchick.com>
Co-authored-by: Flamenco <Flamenco@users.noreply.github.com>
Co-authored-by: Ta'zirah Marwan <20166436+tazirahmb@users.noreply.github.com>
Co-authored-by: Jack Sleight <jacksleight@gmail.com>
Co-authored-by: Kyle Alwyn <kjalwyn@gmail.com>
Co-authored-by: Hari Haran <hharan618@gmail.com>
Co-authored-by: Peter Fox <peter.fox@peterfox.me>
Co-authored-by: taras-turchenko-moc <92873236+taras-turchenko-moc@users.noreply.github.com>
Co-authored-by: Abdullah Atta <thecodrr@protonmail.com>
Co-authored-by: Tim Raderschad <tim.raderschad@gmail.com>
Co-authored-by: René Eschke <rene@eschke.info>
Co-authored-by: Myles J <hi@mylesj.dev>
Co-authored-by: Kento Moriwaki <kentomoriwaki@gmail.com>
Co-authored-by: Jan Thurau <jan@janthurau.de>
Co-authored-by: jhsy <rest0000@126.com>
Co-authored-by: Nick Holden <nick.r.holden@gmail.com>
Co-authored-by: Philip Isik <github@philipisik.de>
Co-authored-by: Marcus Lyons <10541922+marcuslyons@users.noreply.github.com>
Co-authored-by: Patrick Baber <mail@patrickbaber.de>
justisr added a commit to justisr/tiptap that referenced this issue Dec 9, 2023
The issue described in ueberdosis#1515 is now mentioned in the Alpine documentation so that readers understand why the example does not store the editor as component data and why they should not do so either.
bdbch pushed a commit that referenced this issue Dec 14, 2023
The issue described in #1515 is now mentioned in the Alpine documentation so that readers understand why the example does not store the editor as component data and why they should not do so either.
bdbch pushed a commit that referenced this issue Dec 14, 2023
The issue described in #1515 is now mentioned in the Alpine documentation so that readers understand why the example does not store the editor as component data and why they should not do so either.
@dipeshmurmu2005
Copy link

dipeshmurmu2005 commented Jun 19, 2024

You can get the easiest integration of tip with laravel livewire you can view blog:
https://medium.com/@dipeshmurmu/effortless-integration-harnessing-tiptap-editor-with-laravel-livewire-b0fc9fe4d5f1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: Bug The issue or pullrequest is related to a bug
Projects
None yet
Development

No branches or pull requests