diff --git a/.eslintrc.js b/.eslintrc.js index 1c6c7e9ba6e..ebea8e45427 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -43,7 +43,21 @@ module.exports = { 'no-console': ['warn', { allow: ['warn', 'error'] }], semi: ['error', 'never'], 'import/order': 'off', - 'import/extensions': 'off', + 'import/extensions': ['error', 'ignorePackages'], + 'no-restricted-imports': ['error', + { + paths: [ + { + name: '..', + message: 'Import from ../index.js instead.', + }, + { + name: '.', + message: 'Import from ./index.js instead.', + }, + ], + }, + ], 'import/no-extraneous-dependencies': 'off', 'import/no-unresolved': 'off', 'import/no-dynamic-require': 'off', diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 00000000000..80cb1733582 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,11 @@ +# Global +* @bdbch @svenadlung + +# docs +/docs/ @svenadlung + +# demos +/demos/ @bdbch + +# LICENSE +LICENSE.md @philipisik diff --git a/.github/DISCUSSION_TEMPLATE/community-extensions.yml b/.github/DISCUSSION_TEMPLATE/community-extensions.yml new file mode 100644 index 00000000000..dea87b642e2 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/community-extensions.yml @@ -0,0 +1,51 @@ +title: "Community Extension: " +body: + - type: markdown + attributes: + value: | + Hey! Thanks for your time and effort to create a new community extension! Please make sure to fill out the form below. + - type: textarea + id: description + attributes: + label: Description + description: Please describe how your extension works and what it does. + placeholder: "My extension does …" + validations: + required: true + - type: textarea + id: installation + attributes: + label: Installation + description: Please describe how users can install your extension. + placeholder: "npm install …" + validations: + required: true + - type: textarea + id: usage + attributes: + label: Usage + description: Please describe how users can use your extension in their editor. + placeholder: "To use my extension you have to …" + validations: + required: true + - type: dropdown + id: type + attributes: + label: Type + description: Please select the type of this extension. + options: + - "Node" + - "Mark" + - "Prosemirror plugin" + - "Package or Kit" + - "Other" + validations: + required: true + - type: textarea + id: other + attributes: + label: Other + description: Feel free to add any other information about your extension. + placeholder: "I hope you like …" + validations: + required: false diff --git a/.github/DISCUSSION_TEMPLATE/feature-requests.yml b/.github/DISCUSSION_TEMPLATE/feature-requests.yml new file mode 100644 index 00000000000..c7d3864dc17 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/feature-requests.yml @@ -0,0 +1,36 @@ +title: "Feature Request: " +labels: + - "Type: Feature Request" +body: + - type: markdown + attributes: + value: | + Thanks for your time to create a new feature request! Please make sure to fill out the form below. + - type: textarea + id: description + attributes: + label: Description + description: Please describe the feature you would like to see in Tiptap. + placeholder: "I wish there was an extension for …" + validations: + required: true + - type: textarea + id: use-case + attributes: + label: Use Case + description: Please describe the use case for this feature. + placeholder: "I want to use this feature for …" + validations: + required: true + - type: dropdown + id: type + attributes: + label: Type + description: Please select the type of this feature. + options: + - "New extension" + - "New feature" + - "New Tiptap API" + - "Other" + validations: + required: true diff --git a/.github/DISCUSSION_TEMPLATE/showcase.yml b/.github/DISCUSSION_TEMPLATE/showcase.yml new file mode 100644 index 00000000000..25b3af32bf7 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/showcase.yml @@ -0,0 +1,52 @@ +title: "Community Extension: " +body: + - type: markdown + attributes: + value: | + Hey! Thanks for using Tiptap in your project. We hope you had a great experience. Please take a moment to share your project with us. We would love to see what you built with Tiptap. + - type: textarea + id: description + attributes: + label: Description + description: Please describe what your project is about + placeholder: "My project is about …" + validations: + required: true + - type: input + id: url + attributes: + label: URL + description: If possible share the URL of your project. + placeholder: "https://example.com" + validations: + required: false + - type: textarea + id: about + attributes: + label: About + description: Feel free to talk about how you used Tiptap in your project, what you liked about it, what you didn't like about it, and what you would like to see in the future. + placeholder: "If used Tiptap to …" + validations: + required: true + - type: dropdown + id: type + attributes: + label: Type + description: Please select the type of your project. + options: + - "Chat Application" + - "Commenting Application" + - "Content Management System" + - "Document Editor" + - "Document Editor with Collaboration" + - "Other" + validations: + required: true + - type: textarea + id: other + attributes: + label: Other + description: Feel free to add any other information about your project. + placeholder: "I hope you like …" + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 3a6427059b1..9023a066a65 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -1,8 +1,30 @@ name: Bug report -description: Create a report to help us improve tiptap +title: "[Bug]: " +description: You've found a bug within the editor core or one of the extensions? Feel free to create a bug report to help us fixing it. +assignees: + - bdbch + - svenadlung labels: - - bug + - "Type: Bug" + - "Category: Open Source" + - "Status: New" body: + - type: input + id: packages + attributes: + label: Which packages did you experience the bug in? + description: Please list all packages that you are using. + placeholder: core, extension-mention, react + validations: + required: true + - type: input + id: version + attributes: + label: What Tiptap version are you using? + description: Please list the version of all packages that you are using. + placeholder: 2.0.0 + validations: + required: true - type: textarea id: problem attributes: @@ -11,31 +33,34 @@ body: placeholder: "I’m always frustrated when …" validations: required: true - - type: textarea - id: environment + - type: dropdown + id: browser attributes: - label: Which browser was this experienced in? Are any special extensions installed? - description: Please give us more information about your browser environment so we can reproduce the bug faster. - validations: - required: true - - type: textarea - id: reproduction - attributes: - label: How can we reproduce the bug on our side? - description: Steps to reproduce the behavior + label: What browser are you using? + description: Please list the browser that you are using. + options: + - Chrome + - Firefox + - Safari + - Edge + - Other validations: required: true - type: markdown attributes: value: | - Chances that we can fix your issue are way higher, if you can provide a CodeSandbox to reproduce the issue. + ### CodeSandbox templates - * Vue: https://codesandbox.io/s/tiptap-vue-3-issue-template-tnlpv?file=/src/App.vue - * React: https://codesandbox.io/s/tiptap-react-issue-template-b4hmi?file=/src/App.js - - type: textarea - id: codesandbox + * Javascript: https://codesandbox.io/s/tiptap-js-fv1lyo + * React: https://codesandbox.io/s/tiptap-react-qidlsv + * Vue 2: https://codesandbox.io/s/tiptap-vue-2-25nq3g + * Vue 3: https://codesandbox.io/p/sandbox/tiptap-vue-3-ci7q9h + - type: input + id: sandbox attributes: - label: Can you provide a CodeSandbox? + label: Code example + description: "Can you provide a CodeSandbox, Stackblitz, GitHub repository or any other kind of code example? This way, we can reproduce your issue faster." + placeholder: https://codesandbox.io/s/tiptap-react-issue-template-nwvwck?file=/src/App.js validations: required: false - type: textarea diff --git a/.github/ISSUE_TEMPLATE/bug_report_pro.yml b/.github/ISSUE_TEMPLATE/bug_report_pro.yml new file mode 100644 index 00000000000..e09708a4255 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report_pro.yml @@ -0,0 +1,94 @@ +name: Bug report (Tiptap Pro feature) +title: "[PRO]: " +description: You have found a bug in one of the features of Tiptap Pro? Feel free to report your issue here. +assignees: + - bdbch + - svenadlung +labels: + - "Type: Bug" + - "Category: Pro" + - "Status: New" +body: + - type: input + id: packages + attributes: + label: Which packages did you experience the bug in? + description: Please list all packages that you are using. + placeholder: core, extension-mention, react + validations: + required: true + - type: input + id: version + attributes: + label: What Tiptap version are you using? + description: Please list the version of all packages that you are using. + placeholder: 2.0.0 + validations: + required: true + - type: textarea + id: problem + attributes: + label: What’s the bug you are facing? + description: A clear and concise description of what the bug is. + placeholder: "I’m always frustrated when …" + validations: + required: true + - type: dropdown + id: browser + attributes: + label: What browser are you using? + description: Please list the browser that you are using. + options: + - Chrome + - Firefox + - Safari + - Edge + - Other + validations: + required: true + - type: markdown + attributes: + value: | + ### CodeSandbox templates + + * Javascript: https://codesandbox.io/s/tiptap-js-fv1lyo + * React: https://codesandbox.io/s/tiptap-react-qidlsv + * Vue 2: https://codesandbox.io/s/tiptap-vue-2-25nq3g + * Vue 3: https://codesandbox.io/p/sandbox/tiptap-vue-3-ci7q9h + - type: input + id: sandbox + attributes: + label: Code example + description: "Can you provide a CodeSandbox, Stackblitz, GitHub repository or any other kind of code example? This way, we can reproduce your issue faster." + placeholder: https://codesandbox.io/s/tiptap-react-issue-template-nwvwck?file=/src/App.js + validations: + required: false + - type: textarea + id: expectation + attributes: + label: What did you expect to happen? + description: A clear and concise description of what you expected to happen. + validations: + required: true + - type: textarea + id: context + attributes: + label: Anything to add? (optional) + description: "Add any other context, screenshots, videos or GIFs here." + - type: checkboxes + attributes: + label: Did you update your dependencies? + description: "Use `npm update` to update your dependencies." + options: + - label: Yes, I’ve updated my dependencies to use the latest version of all packages. + required: true + - type: checkboxes + attributes: + label: Are you sponsoring us? + options: + - label: Yes, I’m a sponsor. 💖 + required: false + - type: markdown + attributes: + value: | + Thanks for taking the time to send us feedback! diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 3d7fed0b25a..5135c579212 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,8 +1,17 @@ blank_issues_enabled: false contact_links: - - name: Discuss tiptap on GitHub - url: https://github.com/ueberdosis/tiptap/discussions/new - about: Help, discussion about best practices, or any other conversation that would benefit from being searchable - - name: Join the tiptap Discord server + - name: New Feature Request + url: https://github.com/ueberdosis/tiptap/discussions/new?category=feature-requests + about: You want to create a new feature request for Tiptap? Feel free to do so here. + - name: Help & Support + url: https://github.com/ueberdosis/tiptap/discussions/new?category=questions-help + about: You need help with Tiptap or have a question? Feel free to ask here. + - name: Join our Discord url: https://discord.gg/WtJ49jGshW - about: Ccasual chit-chat with others using tiptap + about: You want to chat with other Tiptap users? Feel free to join our Discord server. + - name: Present your project + url: https://github.com/ueberdosis/tiptap/discussions/new?category=showcase + about: You built something awesome with Tiptap? Feel free to show it off here. + - name: Present your Tiptap extensions + url: https://github.com/ueberdosis/tiptap/discussions/new?category=community-extensions + about: You built a Tiptap extension? Feel free to show it off here. diff --git a/.github/ISSUE_TEMPLATE/feedback.yml b/.github/ISSUE_TEMPLATE/documentation.yml similarity index 85% rename from .github/ISSUE_TEMPLATE/feedback.yml rename to .github/ISSUE_TEMPLATE/documentation.yml index 13304885ef3..78004219cf2 100644 --- a/.github/ISSUE_TEMPLATE/feedback.yml +++ b/.github/ISSUE_TEMPLATE/documentation.yml @@ -1,9 +1,13 @@ -name: Feedback on the documentation -description: Share what we need to explain better +name: Documentation feedback +description: Share what we need to explain better. +title: "[Documentation]: " labels: - - documentation + - "Type: Documentation" + - "Category: Open Source" + - "Status: New" assignees: - bdbch + - svenadlung body: - type: input id: url diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml deleted file mode 100644 index 7ec624af9ed..00000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: Feature request -description: Suggest a new feature for tiptap -labels: - - feature request -body: - - type: textarea - id: problem - attributes: - label: What problem are you facing? - description: A clear and concise description of what the problem is. - placeholder: "I’m always frustrated when …" - validations: - required: true - - type: textarea - id: solution - attributes: - label: What’s the solution you would like to see? - description: A clear and concise description of what you want to happen. - placeholder: "I’d like …" - validations: - required: true - - type: textarea - id: alternatives - attributes: - label: What alternatives did you consider? - description: A clear and concise description of what you want to happen. - placeholder: "I’ve considered to …" - validations: - required: true - - type: textarea - id: context - attributes: - label: Anything to add? (optional) - description: "Add any other context or screenshots here." - - type: checkboxes - attributes: - label: Are you sponsoring us? - options: - - label: Yes, I’m a sponsor. 💖 - required: false - - type: markdown - attributes: - value: | - Thanks for taking the time to send us feedback! diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 00000000000..58d29c6ceff --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,30 @@ +## Please describe your changes + +[add a description of your changes here] + +## How did you accomplish your changes + +[add a detailed description of how you accomplished your changes here] + +## How have you tested your changes + +[add a detailed description of how you tested your changes here] + +## How can we verify your changes + +[add a detailed description of how we can verify your changes here] + +## Remarks + +[add any additional remarks here] + +## Checklist + +- [ ] The changes are not breaking the editor +- [ ] Added tests where possible +- [ ] Followed the guidelines +- [ ] Fixed linting issues + +## Related issues + +[add a link to the related issues here] diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a1c0b9db83e..c1e772dc098 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,164 +7,152 @@ on: push: branches: - main + - develop + - release/* pull_request: branches: - main + - develop jobs: lint: runs-on: ubuntu-latest - env: - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} - strategy: matrix: node-version: [16] steps: - - - uses: actions/checkout@v3.0.2 - - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3.4.1 - with: - node-version: ${{ matrix.node-version }} - - - name: Load cached dependencies - uses: actions/cache@v3.0.8 - id: cache - with: - path: | - **/node_modules - /home/runner/.cache/Cypress - key: ${{ runner.os }}-node-${{ matrix.node-version }}-${{ hashFiles('**/package-lock.json') }} - - - name: Install dependencies - id: install-dependencies - if: steps.cache.outputs.cache-hit != 'true' - run: npm install - -# - name: Fix code style linting errors -# id: lint-fix -# run: npm run lint:fix -# continue-on-error: true -# -# - name: Commit fixed linting errors -# id: commit -# uses: stefanzweifel/git-auto-commit-action@v4 -# with: -# commit_message: "ci: fix code style linting errors" - - - name: Lint code - id: lint - run: npm run lint - - - name: Send Slack notifications - uses: act10ns/slack@v1 - if: failure() - with: - status: ${{ job.status }} - steps: ${{ toJson(steps) }} - channel: '#tiptap-notifications' + - uses: actions/checkout@v3.5.3 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3.7.0 + with: + node-version: ${{ matrix.node-version }} + + - name: Load cached dependencies + uses: actions/cache@v3.3.1 + id: cache + with: + path: | + **/node_modules + /home/runner/.cache/Cypress + key: ${{ runner.os }}-node-${{ matrix.node-version }}-${{ hashFiles('**/package-lock.json') }} + + - name: Install dependencies + id: install-dependencies + if: steps.cache.outputs.cache-hit != 'true' + run: npm install + + # - name: Fix code style linting errors + # id: lint-fix + # run: npm run lint:fix + # continue-on-error: true + # + # - name: Commit fixed linting errors + # id: commit + # uses: stefanzweifel/git-auto-commit-action@v4 + # with: + # commit_message: "ci: fix code style linting errors" + + - name: Lint code + id: lint + run: npm run lint test: runs-on: ubuntu-latest - env: - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} - strategy: matrix: node-version: [16] + test-spec: + - { name: "Integration", spec: "./tests/cypress/integration/**/*.spec.{js,ts}" } + #- { name: "Demos/Commands", spec: "./demos/src/Commands/**/*.spec.{js,ts}" } + - { name: "Demos/Examples", spec: "./demos/src/Examples/**/*.spec.{js,ts}" } + - { name: "Demos/Experiments", spec: "./demos/src/Experiments/**/*.spec.{js,ts}" } + - { name: "Demos/Extensions", spec: "./demos/src/Extensions/**/*.spec.{js,ts}" } + - { name: "Demos/GuideContent", spec: "./demos/src/GuideContent/**/*.spec.{js,ts}" } + - { name: "Demos/GuideGettingStarted", spec: "./demos/src/GuideGettingStarted/**/*.spec.{js,ts}" } + #- { name: "Demos/GuideNodeViews", "./demos/src/GuideNodeViews/**/*.spec.{js,ts}" } + - { name: "Demos/Marks", spec: "./demos/src/Marks/**/*.spec.{js,ts}" } + - { name: "Demos/Nodes", spec: "./demos/src/Nodes/**/*.spec.{js,ts}" } + #- { name: "Demos/Overview", spec: "./demos/src/Overview/**/*.spec.{js,ts}" } steps: - - - uses: actions/checkout@v3.0.2 - - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3.4.1 - with: - node-version: ${{ matrix.node-version }} - - - name: Run tests with Cypress - id: cypress - uses: cypress-io/github-action@v4.2.0 - with: - cache-key: ${{ runner.os }}-node-${{ matrix.node-version }}-${{ hashFiles('**/package-lock.json') }} - start: npm run start - wait-on: 'http://localhost:3000' - project: ./tests - browser: chrome - quiet: true - - - name: Export screenshots (on failure only) - uses: actions/upload-artifact@v3.1.0 - if: failure() - with: - name: cypress-screenshots - path: tests/cypress/screenshots - retention-days: 7 - - - name: Export screen recordings (on failure only) - uses: actions/upload-artifact@v3.1.0 - if: failure() - with: - name: cypress-videos - path: tests/cypress/videos - retention-days: 7 - - - name: Send Slack notifications - uses: act10ns/slack@v1 - if: failure() - with: - status: ${{ job.status }} - steps: ${{ toJson(steps) }} - channel: '#tiptap-notifications' + - uses: actions/checkout@v3.5.3 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3.7.0 + with: + node-version: ${{ matrix.node-version }} + + - name: Install dependencies + id: install-dependencies + run: npm install + + - name: Try to build the packages + id: build-packages + run: npm run build:pm + + - name: Test ${{ matrix.test-spec.name }} + id: cypress + uses: cypress-io/github-action@v5.8.3 + with: + cache-key: ${{ runner.os }}-node-${{ matrix.node-version }}-${{ hashFiles('**/package-lock.json') }} + start: npm run start + wait-on: 'http://localhost:3000' + spec: ${{ matrix.test-spec.spec }} + project: ./tests + browser: chrome + quiet: true + + - name: Export screenshots (on failure only) + uses: actions/upload-artifact@v3.1.2 + if: failure() + with: + name: cypress-screenshots + path: tests/cypress/screenshots + retention-days: 7 + + - name: Export screen recordings (on failure only) + uses: actions/upload-artifact@v3.1.2 + if: failure() + with: + name: cypress-videos + path: tests/cypress/videos + retention-days: 7 build: runs-on: ubuntu-latest needs: lint - env: - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} - strategy: matrix: node-version: [16] steps: - - - uses: actions/checkout@v3.0.2 - - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3.4.1 - with: - node-version: ${{ matrix.node-version }} - - - name: Load cached dependencies - uses: actions/cache@v3.0.8 - id: cache - with: - path: | - **/node_modules - /home/runner/.cache/Cypress - key: ${{ runner.os }}-node-${{ matrix.node-version }}-${{ hashFiles('**/package-lock.json') }} - - - name: Install dependencies - id: install-dependencies - if: steps.cache.outputs.cache-hit != 'true' - run: npm install - - - name: Try to build the packages - id: build-packages - run: npm run build:ci - - - name: Send Slack notifications - uses: act10ns/slack@v1 - if: failure() - with: - status: ${{ job.status }} - steps: ${{ toJson(steps) }} - channel: '#tiptap-notifications' + - uses: actions/checkout@v3.5.3 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3.7.0 + with: + node-version: ${{ matrix.node-version }} + + - name: Load cached dependencies + uses: actions/cache@v3.3.1 + id: cache + with: + path: | + **/node_modules + /home/runner/.cache/Cypress + key: ${{ runner.os }}-node-${{ matrix.node-version }}-${{ hashFiles('**/package-lock.json') }} + + - name: Install dependencies + id: install-dependencies + if: steps.cache.outputs.cache-hit != 'true' + run: npm install + + - name: Try to build the packages + id: build-packages + run: npm run build:ci diff --git a/.github/workflows/docsearch.yml b/.github/workflows/docsearch.yml new file mode 100644 index 00000000000..82dfb637f8b --- /dev/null +++ b/.github/workflows/docsearch.yml @@ -0,0 +1,27 @@ +# Automate, customize, and execute your software development workflows right in your repository with GitHub Actions. +# Documentation: https://docs.github.com/en/actions + +name: docsearch + +on: + workflow_dispatch: + schedule: + - cron: '5 0 * * *' + +jobs: + + docsearch: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3.5.3 + + - name: Run DocSearch Scraper + shell: bash + run: | + docker run \ + -e TYPESENSE_API_KEY=${{ secrets.TYPESENSE_API_KEY }} \ + -e TYPESENSE_HOST="${{ secrets.TYPESENSE_HOST }}" \ + -e TYPESENSE_PORT="${{ secrets.TYPESENSE_PORT }}" \ + -e TYPESENSE_PROTOCOL="${{ secrets.TYPESENSE_PROTOCOL }}" \ + -e CONFIG="$(cat docsearch.config.json | jq -r tostring)" \ + typesense/docsearch-scraper diff --git a/.github/workflows/publish.yml b/.github/workflows/release.yml similarity index 50% rename from .github/workflows/publish.yml rename to .github/workflows/release.yml index bc018fa568e..a0803a87e08 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/release.yml @@ -1,23 +1,31 @@ # This workflow will run tests using node and then publish a package to GitHub Packages when a release is created # For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages -name: Publish to NPM +name: Release new version +# on github release published or workflow_dispatch on: - push: - tags: - - '*' + workflow_dispatch: + release: + types: [published] jobs: publish-npm: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + - uses: actions/checkout@v3.5.3 + - uses: actions/setup-node@v3.7.0 with: node-version: 16 registry-url: https://registry.npmjs.org/ - run: npm ci - run: npm run publish + name: "Publish release (current) to NPM" + if: "!github.event.release.prerelease" + env: + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} + - run: npm run publish:pre + name: "Publish release (next) to NPM" + if: "github.event.release.prerelease" env: NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml deleted file mode 100644 index e4afcedfe93..00000000000 --- a/.github/workflows/stale.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: 'Close stale issues and PRs' -on: - workflow_dispatch: - schedule: - - cron: '0 0 * * *' - -jobs: - stale: - runs-on: ubuntu-latest - steps: - - uses: actions/stale@main - with: - stale-issue-message: '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' - days-before-stale: 90 - days-before-close: 7 - days-before-pr-stale: 180 - stale-issue-label: stale - stale-pr-label: stale diff --git a/.gitignore b/.gitignore index cb7ed724973..bccf33db33a 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ dist .env .env.* .npmrc +.eslintcache # Log files npm-debug.log* @@ -26,3 +27,11 @@ tests/cypress/videos /tests/cypress/screenshots # Ignore intellij project files .idea + +# packaged files +packages/**/*.tgz +demos/*.tgz + +# demo directories +demos/src/Dev/** +!demos/src/Dev/.gitkeep diff --git a/.vscode/settings.json b/.vscode/settings.json index ed5c04be6d4..b94d68021bf 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -56,5 +56,15 @@ "suggestion", "vue-2", "vue-3" - ] + ], + "editor.defaultFormatter": "dbaeumer.vscode-eslint", + "[typescript]": { + "editor.defaultFormatter": "dbaeumer.vscode-eslint" + }, + "[javascript]": { + "editor.defaultFormatter": "dbaeumer.vscode-eslint" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "dbaeumer.vscode-eslint" + } } diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d0524cc527..d4718310654 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,77 +3,308 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [2.0.0-beta.199](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.198...v2.0.0-beta.199) (2022-09-30) +## [2.1.11](https://github.com/ueberdosis/tiptap/compare/v2.1.10...v2.1.11) (2023-09-20) + + +### Reverts + +* Revert "v2.2.11" ([6aa755a](https://github.com/ueberdosis/tiptap/commit/6aa755a04b9955fc175c7ab33dee527d0d5deef0)) + + + + + +## [2.1.10](https://github.com/ueberdosis/tiptap/compare/v2.1.9...v2.1.10) (2023-09-15) + +**Note:** Version bump only for package tiptap + + + + + +## [2.1.9](https://github.com/ueberdosis/tiptap/compare/v2.1.8...v2.1.9) (2023-09-14) + + +### Bug Fixes + +* add missing attributes in extension-link ([#4429](https://github.com/ueberdosis/tiptap/issues/4429)) ([74b6444](https://github.com/ueberdosis/tiptap/commit/74b644438829d6ee9b0795bc70c55f2755d7438c)) + + + + + +## [2.1.8](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.7...v2.1.8) (2023-09-04) + +**Note:** Version bump only for package tiptap + + + + + +## [2.1.7](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.6...v2.1.7) (2023-09-04) ### Bug Fixes -* **extension/link:** :bug: fix last word value not being passed through when undefined ([#3258](https://github.com/ueberdosis/tiptap/issues/3258)) ([69923e2](https://github.com/ueberdosis/tiptap/commit/69923e2b0e1eff4e8bd6aab5f39c37f8ac8864cb)) +* **horizontal-rule:** fix insertion being broken on empty docs ([#4375](https://github.com/ueberdosis/tiptap-workspace/issues/4375)) ([2a83166](https://github.com/ueberdosis/tiptap-workspace/commit/2a83166a46f97a9fc42ae23ce5367bb58bcdab74)) -# [2.0.0-beta.198](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.197...v2.0.0-beta.198) (2022-09-29) +## [2.1.6](https://github.com/ueberdosis/tiptap/compare/v2.1.5...v2.1.6) (2023-08-18) ### Bug Fixes -* **core:** InputRules does not work for ranges containing multiple text nodes ([#3205](https://github.com/ueberdosis/tiptap/issues/3205)) ([2f9ba32](https://github.com/ueberdosis/tiptap/commit/2f9ba324a03868283cf467520f99bd2a1596375a)), closes [#3071](https://github.com/ueberdosis/tiptap/issues/3071) -* **link:** ensure text blocks exist before referencing them ([#3251](https://github.com/ueberdosis/tiptap/issues/3251)) ([539afce](https://github.com/ueberdosis/tiptap/commit/539afce4fd840941fc2335bf5843e6811b921674)), closes [#3250](https://github.com/ueberdosis/tiptap/issues/3250) -* **suggestion:** set default allowedPrefixes null ([#3239](https://github.com/ueberdosis/tiptap/issues/3239)) ([04b9da4](https://github.com/ueberdosis/tiptap/commit/04b9da4760f467c446cbcf2fd08030e089d9be5f)) +* **core:** fix broken export ([4227f32](https://github.com/ueberdosis/tiptap/commit/4227f324a5bfd4f0905c70ac8ea68903352f911b)) -# [2.0.0-beta.197](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.196...v2.0.0-beta.197) (2022-09-26) +## [2.1.5](https://github.com/ueberdosis/tiptap/compare/v2.1.4...v2.1.5) (2023-08-18) ### Bug Fixes -* **ci:** remove unnecessary PR action as we combined issues and prs into one board ([dfc067a](https://github.com/ueberdosis/tiptap/commit/dfc067a3bbf1fc364caa1a74c7c464ba5342a3e1)) -* **core:** Can() does not work for setting marks ([#3223](https://github.com/ueberdosis/tiptap/issues/3223)) ([17a41da](https://github.com/ueberdosis/tiptap/commit/17a41da5a7a14879cf490c81914084791c4c494c)) -* **tests:** fix failing cypress tests and update cypress ([348383b](https://github.com/ueberdosis/tiptap/commit/348383b96cd79687741bb7806dfab5919b0abf77)) +* **list-key-map:** fix broken imports ([#4350](https://github.com/ueberdosis/tiptap/issues/4350)) ([e40ac25](https://github.com/ueberdosis/tiptap/commit/e40ac2584e813893a61c91a456bdcd2cf6652b50)) -# [2.0.0-beta.196](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.195...v2.0.0-beta.196) (2022-09-20) +## [2.1.4](https://github.com/ueberdosis/tiptap/compare/v2.1.3...v2.1.4) (2023-08-18) ### Bug Fixes -* **types:** fix link and table type errors ([#3208](https://github.com/ueberdosis/tiptap/issues/3208)) ([ae13cf6](https://github.com/ueberdosis/tiptap/commit/ae13cf61ad0ead942515d8c597f96a4b4d026412)) +* replace the whole node in nodeInputRule ([#4341](https://github.com/ueberdosis/tiptap/issues/4341)) ([ffeefe2](https://github.com/ueberdosis/tiptap/commit/ffeefe21ff3c1f951a5a4f9ae9697317ddd1c5ad)) + + + + + +## [2.1.3](https://github.com/ueberdosis/tiptap/compare/v2.1.2...v2.1.3) (2023-08-18) + + +### Bug Fixes + +* fix autolink when code is not enabled for editor ([#4344](https://github.com/ueberdosis/tiptap/issues/4344)) ([f2ac7b9](https://github.com/ueberdosis/tiptap/commit/f2ac7b90912a78b90216a7d7d084c86f0c0eef48)) + + + + + +## [2.1.2](https://github.com/ueberdosis/tiptap/compare/v2.1.1...v2.1.2) (2023-08-17) + + +### Bug Fixes + +* **core:** fix error when merging class attributes ([#4340](https://github.com/ueberdosis/tiptap/issues/4340)) ([a251946](https://github.com/ueberdosis/tiptap/commit/a2519468589e2baa44901a66a3a06b24dc8626d6)) + + + + + +## [2.1.1](https://github.com/ueberdosis/tiptap/compare/v2.1.0...v2.1.1) (2023-08-16) + +**Note:** Version bump only for package tiptap + + + + + +# [2.1.0](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.0-rc.14...v2.1.0) (2023-08-16) + +**Note:** Version bump only for package tiptap + + + + + +# [2.1.0-rc.14](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.0-rc.13...v2.1.0-rc.14) (2023-08-11) + +**Note:** Version bump only for package tiptap + + + + + +# [2.1.0-rc.13](https://github.com/ueberdosis/tiptap-workspace/compare/v2.0.4...v2.1.0-rc.13) (2023-08-11) + + +### Bug Fixes + +* **demos:** add missing extensions ([6383fd5](https://github.com/ueberdosis/tiptap-workspace/commit/6383fd54080b2ad555286cd0e7c4ad880200200f)) +* **demos:** update deps ([05a2edf](https://github.com/ueberdosis/tiptap-workspace/commit/05a2edfc16e297effa86d1583fb1680be0320f25)) +* **link:** Fix autolinking and pasting ([#4292](https://github.com/ueberdosis/tiptap-workspace/issues/4292)) ([a2ce734](https://github.com/ueberdosis/tiptap-workspace/commit/a2ce734d681039fd61d402987e0842ddef6af595)) +* **strikethrough:** update strikethrough shortcut ([#4288](https://github.com/ueberdosis/tiptap-workspace/issues/4288)) ([fd35db4](https://github.com/ueberdosis/tiptap-workspace/commit/fd35db4d090d9fdfef1196fb1f6f858f13cf53d1)) + + + +# [2.1.0-rc.12](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.0-rc.11...v2.1.0-rc.12) (2023-07-14) + + + +# [2.1.0-rc.11](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.0-rc.10...v2.1.0-rc.11) (2023-07-07) + + +### Bug Fixes + +* **core:** fix cut and insertContentAt functions ([#4187](https://github.com/ueberdosis/tiptap-workspace/issues/4187)) ([6b65af8](https://github.com/ueberdosis/tiptap-workspace/commit/6b65af8fc31ffbbcf79b89bfdaceee7aadbf3f27)) +* **tests:** fix link rel tests ([c1d1854](https://github.com/ueberdosis/tiptap-workspace/commit/c1d18543b03b1fb6b99a2f3546aa5da10c919920)) + + + +# [2.1.0-rc.10](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.0-rc.9...v2.1.0-rc.10) (2023-07-07) + + +### Bug Fixes + +* do not use window.open for links in readonly mode ([#4073](https://github.com/ueberdosis/tiptap-workspace/issues/4073)) ([4bca77e](https://github.com/ueberdosis/tiptap-workspace/commit/4bca77e4e9c96596d584cf71b8d831dc2ab0a421)) +* **extension-link:** fixes link going to wrong url ([#4078](https://github.com/ueberdosis/tiptap-workspace/issues/4078)) ([3053865](https://github.com/ueberdosis/tiptap-workspace/commit/30538654752ab3ded6e56c869745ccacc8cdeabc)) +* **link:** Prevent auto-linking when typing URL inside inline code mark ([#4160](https://github.com/ueberdosis/tiptap-workspace/issues/4160)) ([b24df3a](https://github.com/ueberdosis/tiptap-workspace/commit/b24df3aa4c2f3fdb2ed6122d2d32fb7c4e07f2af)) +* **react:** check props.clientRect before creating ReactRenderer ([#4138](https://github.com/ueberdosis/tiptap-workspace/issues/4138)) ([d710846](https://github.com/ueberdosis/tiptap-workspace/commit/d710846ecb6a3059dfbc21300b9a4b887a8defa3)) +* **react:** update select state when text selection is around node ([#4148](https://github.com/ueberdosis/tiptap-workspace/issues/4148)) ([5bd5bd4](https://github.com/ueberdosis/tiptap-workspace/commit/5bd5bd4ecdbe1f952b23d5f5efad16b6ed5cc44f)) + + +### Features + +* **docs:** added cdn installation guide ([#4045](https://github.com/ueberdosis/tiptap-workspace/issues/4045)) ([8536508](https://github.com/ueberdosis/tiptap-workspace/commit/853650885b7c4f2217a4b37bc42ee65b4cd6026a)) + + + +# [2.1.0-rc.9](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.0-rc.8...v2.1.0-rc.9) (2023-06-15) + + + +# [2.1.0-rc.8](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.0-rc.7...v2.1.0-rc.8) (2023-05-25) + + + +# [2.1.0-rc.7](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.0-rc.6...v2.1.0-rc.7) (2023-05-25) + + + +# [2.1.0-rc.5](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.0-rc.4...v2.1.0-rc.5) (2023-05-25) + + +### Bug Fixes + +* **extension-link:** fix paste handling ([d19267e](https://github.com/ueberdosis/tiptap-workspace/commit/d19267ecefabf08e4bd27c52424ed83991ce7270)) +* typo in commands.md ([a2a9822](https://github.com/ueberdosis/tiptap-workspace/commit/a2a9822f240df2301932a67225d9adcac2f18807)) ### Features -* **extension-typography:** add servicemark input rule ([#3220](https://github.com/ueberdosis/tiptap/issues/3220)) ([a397835](https://github.com/ueberdosis/tiptap/commit/a3978353ff602527329064f3c8c96bedc8fb2060)) +* add tiptap class ([614fc80](https://github.com/ueberdosis/tiptap-workspace/commit/614fc8082c376bf3c40a05c23ceda6b4a6fbf8d0)) + + + +# [2.1.0-rc.4](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.0-rc.3...v2.1.0-rc.4) (2023-04-27) + + +### Bug Fixes + +* **link:** fix links autolinking when not needed ([#3989](https://github.com/ueberdosis/tiptap-workspace/issues/3989)) ([71946c1](https://github.com/ueberdosis/tiptap-workspace/commit/71946c18accf8a2e8192951de870f84e25f58ed5)) + + + +# [2.1.0-rc.3](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.0-rc.2...v2.1.0-rc.3) (2023-04-26) + + +### Bug Fixes + +* **core:** remove configure from extend functionality ([4af54da](https://github.com/ueberdosis/tiptap-workspace/commit/4af54da3e09c69c0b5326f9952d456436855914d)) + + +# [2.1.0-rc.2](https://github.com/ueberdosis/tiptap-workspace/compare/v2.0.3...v2.1.0-rc.2) (2023-04-26) +### Bug Fixes + +* **extension-link:** fix link not being kept when pasting url with link ([#3975](https://github.com/ueberdosis/tiptap-workspace/issues/3975)) ([e7d7d49](https://github.com/ueberdosis/tiptap-workspace/commit/e7d7d496376c8c11e24c342e20bd179a6ea7dcee)) + + + +# [2.1.0-rc.1](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.0-rc.0...v2.1.0-rc.1) (2023-04-12) + + +### Bug Fixes + +* **bubble-menu:** fix debounce not working with collab/collaboration cursor ([#3956](https://github.com/ueberdosis/tiptap-workspace/issues/3956)) ([e8cef04](https://github.com/ueberdosis/tiptap-workspace/commit/e8cef0404b5039ec2657536976b8b31931afd337)) + + + +# [2.1.0-rc.0](https://github.com/ueberdosis/tiptap-workspace/compare/v2.0.2...v2.1.0-rc.0) (2023-04-05) + + +### Bug Fixes + +* clear nodes when cursor at start of empty isolating parent ([#3943](https://github.com/ueberdosis/tiptap-workspace/issues/3943)) ([7278ee2](https://github.com/ueberdosis/tiptap-workspace/commit/7278ee2b05de2f96efddf3b1dc3bfd3d52262cbb)) +* **list-item:** improve delete behaviour ([09782a5](https://github.com/ueberdosis/tiptap-workspace/commit/09782a5b066b2f9f52f0ef1d8701d6e5b063dc63)) +* **lists:** improve list behaviour ([684e48a](https://github.com/ueberdosis/tiptap-workspace/commit/684e48a4a7778a0140c94f0c5345db868174ad81)) +* Update peerDependencies to fix lerna version tasks ([#3914](https://github.com/ueberdosis/tiptap-workspace/issues/3914)) ([0c1bba3](https://github.com/ueberdosis/tiptap-workspace/commit/0c1bba3137b535776bcef95ff3c55e13f5a2db46)) + -# [2.0.0-beta.195](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.194...v2.0.0-beta.195) (2022-09-14) + + +# [2.1.0-rc.12](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.0-rc.11...v2.1.0-rc.12) (2023-07-14) + +**Note:** Version bump only for package tiptap + + + + + +# [2.1.0-rc.11](https://github.com/ueberdosis/tiptap/compare/v2.1.0-rc.10...v2.1.0-rc.11) (2023-07-07) ### Bug Fixes -* **extension/bubble-menu:** :bug: fix bubble menu and floating menu being available when editor not editable ([#3195](https://github.com/ueberdosis/tiptap/issues/3195)) ([fa96749](https://github.com/ueberdosis/tiptap/commit/fa96749ce22ec67125da491cfeeb38623b9f0d6e)) -* move React `flushSync` to microtask ([#3188](https://github.com/ueberdosis/tiptap/issues/3188)) ([9093cdf](https://github.com/ueberdosis/tiptap/commit/9093cdfcf52cbc5297b9b678073636103dfecb3f)), closes [#2985](https://github.com/ueberdosis/tiptap/issues/2985) +* **core:** fix cut and insertContentAt functions ([#4187](https://github.com/ueberdosis/tiptap/issues/4187)) ([6b65af8](https://github.com/ueberdosis/tiptap/commit/6b65af8fc31ffbbcf79b89bfdaceee7aadbf3f27)) +* **tests:** fix link rel tests ([c1d1854](https://github.com/ueberdosis/tiptap/commit/c1d18543b03b1fb6b99a2f3546aa5da10c919920)) + + + + + +# [2.1.0-rc.10](https://github.com/ueberdosis/tiptap/compare/v2.1.0-rc.9...v2.1.0-rc.10) (2023-07-07) + + +### Bug Fixes + +* do not use window.open for links in readonly mode ([#4073](https://github.com/ueberdosis/tiptap/issues/4073)) ([4bca77e](https://github.com/ueberdosis/tiptap/commit/4bca77e4e9c96596d584cf71b8d831dc2ab0a421)) +* **extension-link:** fixes link going to wrong url ([#4078](https://github.com/ueberdosis/tiptap/issues/4078)) ([3053865](https://github.com/ueberdosis/tiptap/commit/30538654752ab3ded6e56c869745ccacc8cdeabc)) +* **link:** Prevent auto-linking when typing URL inside inline code mark ([#4160](https://github.com/ueberdosis/tiptap/issues/4160)) ([b24df3a](https://github.com/ueberdosis/tiptap/commit/b24df3aa4c2f3fdb2ed6122d2d32fb7c4e07f2af)) +* **react:** check props.clientRect before creating ReactRenderer ([#4138](https://github.com/ueberdosis/tiptap/issues/4138)) ([d710846](https://github.com/ueberdosis/tiptap/commit/d710846ecb6a3059dfbc21300b9a4b887a8defa3)) +* **react:** update select state when text selection is around node ([#4148](https://github.com/ueberdosis/tiptap/issues/4148)) ([5bd5bd4](https://github.com/ueberdosis/tiptap/commit/5bd5bd4ecdbe1f952b23d5f5efad16b6ed5cc44f)) ### Features -* Add alias condition to code-block-lowlight ([#3155](https://github.com/ueberdosis/tiptap/issues/3155)) ([b01ccff](https://github.com/ueberdosis/tiptap/commit/b01ccff7b2ed9b8de633ad2122eb7081baaaff18)) +* **docs:** added cdn installation guide ([#4045](https://github.com/ueberdosis/tiptap/issues/4045)) ([8536508](https://github.com/ueberdosis/tiptap/commit/853650885b7c4f2217a4b37bc42ee65b4cd6026a)) + + + + + +# [2.1.0-rc.9](https://github.com/ueberdosis/tiptap/compare/v2.1.0-rc.8...v2.1.0-rc.9) (2023-06-15) + + +### Bug Fixes +* **list-item:** improve delete behaviour ([09782a5](https://github.com/ueberdosis/tiptap/commit/09782a5b066b2f9f52f0ef1d8701d6e5b063dc63)) +* **lists:** improve list behaviour ([684e48a](https://github.com/ueberdosis/tiptap/commit/684e48a4a7778a0140c94f0c5345db868174ad81)) -# [2.0.0-beta.194](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.193...v2.0.0-beta.194) (2022-09-11) + +# [2.1.0-rc.8](https://github.com/ueberdosis/tiptap/compare/v2.1.0-rc.7...v2.1.0-rc.8) (2023-05-25) **Note:** Version bump only for package tiptap @@ -81,395 +312,560 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [2.0.0-beta.193](https://github.com/ueberdosis/tiptap/compare/v0.1.2...v2.0.0-beta.193) (2022-09-10) +# [2.1.0-rc.7](https://github.com/ueberdosis/tiptap/compare/v2.1.0-rc.6...v2.1.0-rc.7) (2023-05-25) + +**Note:** Version bump only for package tiptap + + + + + +# [2.1.0-rc.6](https://github.com/ueberdosis/tiptap/compare/v2.1.0-rc.5...v2.1.0-rc.6) (2023-05-25) + +**Note:** Version bump only for package tiptap + + + + + +# [2.1.0-rc.5](https://github.com/ueberdosis/tiptap/compare/v2.1.0-rc.4...v2.1.0-rc.5) (2023-05-25) ### Bug Fixes -* Add `editor` dependency when registering `BubbleMenuPlugin` and `FloatingMenuPlugin` ([#2018](https://github.com/ueberdosis/tiptap/issues/2018)) ([e9465ec](https://github.com/ueberdosis/tiptap/commit/e9465ec0f6921abd428ed27b50596d20edc05b77)) -* add attributes to pre tag instead of code tag by default, fix [#2440](https://github.com/ueberdosis/tiptap/issues/2440) ([85fcc29](https://github.com/ueberdosis/tiptap/commit/85fcc29ac6ef9e07847d5e0a5cdd318f4300a832)) -* add CellSelection support for bubble menu ([6472d2c](https://github.com/ueberdosis/tiptap/commit/6472d2c2715bd29a061abae6a59963949c298e55)) -* add checkboxes to TaskItem HTML output, fix [#2037](https://github.com/ueberdosis/tiptap/issues/2037) ([c94d2b0](https://github.com/ueberdosis/tiptap/commit/c94d2b0517e62afea84cb9dd6999874abf0bf3cd)) -* add correct type for parseOptions ([592892e](https://github.com/ueberdosis/tiptap/commit/592892edd1c4d6dbaa9ea3ddd21f4615f0087053)) -* add correct windows and px keymap ([75e5601](https://github.com/ueberdosis/tiptap/commit/75e56017676ac7905c41b87d54b7f099d0290eeb)) -* add CreateNodeFromContentOptions to insertContent ([#1678](https://github.com/ueberdosis/tiptap/issues/1678)) ([aabdfd6](https://github.com/ueberdosis/tiptap/commit/aabdfd6f7de65e62a57bd237eb775256b413abea)) -* add exports to package.json ([1277fa4](https://github.com/ueberdosis/tiptap/commit/1277fa47151e9c039508cdb219bdd0ffe647f4ee)) -* add HTMLAttributes to task item node view ([81d8097](https://github.com/ueberdosis/tiptap/commit/81d809795908e28b1a96ccad33147b711910b27a)) -* add marks to JSONContent type ([f829b45](https://github.com/ueberdosis/tiptap/commit/f829b45bf018aa769780a9987a1b2cdaaad8a44a)) -* add missing HTMLAttributes to task list, fix [#2042](https://github.com/ueberdosis/tiptap/issues/2042) ([7503d1b](https://github.com/ueberdosis/tiptap/commit/7503d1bed1651899ee90bc9adf76899d90ace9e7)) -* add missing ProseMirror styles ([12602e7](https://github.com/ueberdosis/tiptap/commit/12602e77ef5d35b430d3d14b93788b327a0f17da)) -* add name to context ([df43c1b](https://github.com/ueberdosis/tiptap/commit/df43c1bc47aa8bf7fe2bfbbd5b67f30a0b14d3ac)) -* add name to context ([a43d4c7](https://github.com/ueberdosis/tiptap/commit/a43d4c7bcb5ba5e386f268a2a71a7449bc2f658e)) -* add pluginKey option to suggestion plugin, fix [#1282](https://github.com/ueberdosis/tiptap/issues/1282) ([7cf3350](https://github.com/ueberdosis/tiptap/commit/7cf3350a832181f8cc1fa7ea1afec8f8d083e507)) -* add prop support for EditorContent, fix [#1332](https://github.com/ueberdosis/tiptap/issues/1332) ([8979143](https://github.com/ueberdosis/tiptap/commit/8979143c37679af21e71b37b72ac91bea989746c)) -* add scrollIntoView for insertContent ([e7fe724](https://github.com/ueberdosis/tiptap/commit/e7fe7248af44df66fe322045953f8df186d82bec)) -* add support for CellSelection in isActive helper, fix [#1947](https://github.com/ueberdosis/tiptap/issues/1947) ([b42e442](https://github.com/ueberdosis/tiptap/commit/b42e442a5af167f78edb5252dd8dbdcb8e0a96ed)) -* add support for multiple ranges in clipboardTextSerializer, fix [#1982](https://github.com/ueberdosis/tiptap/issues/1982) ([98a1cb3](https://github.com/ueberdosis/tiptap/commit/98a1cb36408765f0f042e7abb8dad3c19cdf0a09)) -* add support for pasted content from VS Code, fix [#2022](https://github.com/ueberdosis/tiptap/issues/2022) ([0e0b0b6](https://github.com/ueberdosis/tiptap/commit/0e0b0b6a8c1d80ef9084d1913a51dd9bff8a69d8)) -* add support for priority and nested extension for getSchema ([129ad83](https://github.com/ueberdosis/tiptap/commit/129ad83167900526d65c5c25da8249d0d65bcef7)) -* add support for scoped styles, fix [#1931](https://github.com/ueberdosis/tiptap/issues/1931) ([19840f3](https://github.com/ueberdosis/tiptap/commit/19840f3b258f5dbf8a7edff1a85f297871a5ac66)) -* add support for using suggestions at top level, fix [#1340](https://github.com/ueberdosis/tiptap/issues/1340) ([0d9e488](https://github.com/ueberdosis/tiptap/commit/0d9e48883641d1c4aeeb9c9aa941e2e6419b2e7a)) -* add topNode to getDebugJSON ([f65e1b3](https://github.com/ueberdosis/tiptap/commit/f65e1b32a16c25622c2d507e74dd0dde9dac9376)) -* Add type for async items on suggestions (fix TS strict types complaining) ([#1912](https://github.com/ueberdosis/tiptap/issues/1912)) ([4a6c3cb](https://github.com/ueberdosis/tiptap/commit/4a6c3cbaac9690f1261b8d435195878b6f60ad64)) -* add warn message when using collab and history extension together ([bf50af4](https://github.com/ueberdosis/tiptap/commit/bf50af4cf68cd883069cacabacc8deb2d07aca2a)) -* add way to cancel inputrules and pasterules ([#2368](https://github.com/ueberdosis/tiptap/issues/2368)) ([669efd0](https://github.com/ueberdosis/tiptap/commit/669efd00e9a508bbb4d6275d47092470b2e16561)) -* allow [] as a prefix for task items ([06fd7fb](https://github.com/ueberdosis/tiptap/commit/06fd7fb4299195646200836dd8158238279c3a7a)) -* Allow extending code-block-lowlight ([#1917](https://github.com/ueberdosis/tiptap/issues/1917)) ([54be0e5](https://github.com/ueberdosis/tiptap/commit/54be0e570e24c4a7bbb772c8222cfeac2ba1ff38)) -* allow input rules after hard break, fix [#2302](https://github.com/ueberdosis/tiptap/issues/2302) ([ded6f96](https://github.com/ueberdosis/tiptap/commit/ded6f9618fb588f2c259edc9bc77415f8723431c)) -* allow null and undefined for CharacterCount limit, fix [#2276](https://github.com/ueberdosis/tiptap/issues/2276) ([dd4bcb8](https://github.com/ueberdosis/tiptap/commit/dd4bcb81f05f980b143c46f97f108c28b02c1caf)) -* allow passing props to NodeViewWrapper and NodeViewContent ([cfb3b80](https://github.com/ueberdosis/tiptap/commit/cfb3b80f63a5d38ea7aa4b69a895afd8b09cb5ab)) -* allow to re-apply current mark for input rules and paste rules, fix [#2003](https://github.com/ueberdosis/tiptap/issues/2003) ([3958bf1](https://github.com/ueberdosis/tiptap/commit/3958bf1c226621142e9216c8eda91a70b71a211a)) -* allow to remove autolinks with unsetLink ([ea10ffb](https://github.com/ueberdosis/tiptap/commit/ea10ffbc6a0f447c33680dcc6f6dc2fa6337c4c2)) -* Apply the correct regex for code extension in markPasteRule ([#1671](https://github.com/ueberdosis/tiptap/issues/1671)) ([6c08057](https://github.com/ueberdosis/tiptap/commit/6c08057bb229135abc6f5244d2010569ef5d3561)) -* better merge mark attributes for existing marks, fix [#1039](https://github.com/ueberdosis/tiptap/issues/1039) ([cfd29fa](https://github.com/ueberdosis/tiptap/commit/cfd29fac86e03d72a0c05ec8d26aac905d19c5a2)) -* blockquote unwrap not working ([595929d](https://github.com/ueberdosis/tiptap/commit/595929db69ff7ad2749a96882fb29e6eeacd6ae0)), closes [#803](https://github.com/ueberdosis/tiptap/issues/803) -* bump documents ([43611ea](https://github.com/ueberdosis/tiptap/commit/43611ea2e70d3dc66ff907ba7ca377bf74814543)) -* calculate correct autolink position when using leaf nodes in the same text block, fix [#2231](https://github.com/ueberdosis/tiptap/issues/2231) ([924b650](https://github.com/ueberdosis/tiptap/commit/924b6508f9211ba281b159676d4800748870b565)) -* calculate the number of words across linebreaks correctly ([0879a2f](https://github.com/ueberdosis/tiptap/commit/0879a2f71684e28e6de5a392b4ea675e11327d1f)) -* call onExit hook when editor is destroyed, fix [#1645](https://github.com/ueberdosis/tiptap/issues/1645) ([5d2ef71](https://github.com/ueberdosis/tiptap/commit/5d2ef71d33bea9ba6bf1aeb3cceee08af27f1e75)) -* call selectAll on 'cmd+a', set a TextSelection instead of AllSelection, fix [#1908](https://github.com/ueberdosis/tiptap/issues/1908) ([bad16d9](https://github.com/ueberdosis/tiptap/commit/bad16d9f3a9f47db83ad170c6de4d6ff11dba007)) -* can not write second mention bug, see [#874](https://github.com/ueberdosis/tiptap/issues/874) ([046babf](https://github.com/ueberdosis/tiptap/commit/046babfd3a94222128f08cef653859ab66eaf3cd)) -* change reactrenderer component type definition ([#2327](https://github.com/ueberdosis/tiptap/issues/2327)) ([64dfae8](https://github.com/ueberdosis/tiptap/commit/64dfae85118d2b9dc525a8bfa31f00688a56f049)) -* check for atom nodes in ignoreMutation handler, fix [#1448](https://github.com/ueberdosis/tiptap/issues/1448) ([2deb07f](https://github.com/ueberdosis/tiptap/commit/2deb07fb005d4376790d1e22b3fc53353d1665eb)) -* check for destroyed editor before creating node views in react ([44e4722](https://github.com/ueberdosis/tiptap/commit/44e47222a03be60835d5058d01bc510e4cf31d60)) -* check for empty text, fix [#1292](https://github.com/ueberdosis/tiptap/issues/1292) ([456f2b7](https://github.com/ueberdosis/tiptap/commit/456f2b702b146cc3f4a156a71cba8354990c02e0)) -* check for excluded marks in isMarkActive, fix [#1388](https://github.com/ueberdosis/tiptap/issues/1388) ([3c4cc96](https://github.com/ueberdosis/tiptap/commit/3c4cc96fee7fc32e363d3b8a2503684435f30c35)) -* check for invalid content in `insertContentAt` command ([e09fd93](https://github.com/ueberdosis/tiptap/commit/e09fd93e59dbae5bca9da7def6ddafc6beda9987)) -* check for NodeSelection within posToDOMRect ([a4ec4ff](https://github.com/ueberdosis/tiptap/commit/a4ec4ffcfd855894b0fa780f9f72f87399e36402)) -* check for storedMarks in getMarkAttributes, fix [#2039](https://github.com/ueberdosis/tiptap/issues/2039) ([22c82ba](https://github.com/ueberdosis/tiptap/commit/22c82ba61fe14db19e1049dfcf9bef0b7abb796d)) -* Check node type above custom update function for node views ([#2081](https://github.com/ueberdosis/tiptap/issues/2081)) ([ddc9ca8](https://github.com/ueberdosis/tiptap/commit/ddc9ca8d4f347566f83513a386922afe52f26da1)) -* compatibility with lowlight v2 ([#1939](https://github.com/ueberdosis/tiptap/issues/1939)) ([f79347e](https://github.com/ueberdosis/tiptap/commit/f79347e128be11860ee54109d8d333b436426b45)) -* **core:** :bug: fix inputrule not recognizing text content of non-text leaf nodes ([64b23e1](https://github.com/ueberdosis/tiptap/commit/64b23e120c0d4906573079923fddae3271f58918)) -* **core:** createCan command props shouldn't try dispatch ([#3025](https://github.com/ueberdosis/tiptap/issues/3025)) ([#3026](https://github.com/ueberdosis/tiptap/issues/3026)) ([40f4ea3](https://github.com/ueberdosis/tiptap/commit/40f4ea31efc59c1578b783a5b64572ac2846c5a6)) -* **core:** dont use selection for setContent replacement ([#2934](https://github.com/ueberdosis/tiptap/issues/2934)) ([134a4bd](https://github.com/ueberdosis/tiptap/commit/134a4bd1fbbd7f56faa1fc70c97d3b58554fc3f1)) -* **core:** fix focus command passing through editor state instead of existing transaction ([5b0b7d9](https://github.com/ueberdosis/tiptap/commit/5b0b7d91023c87e9ddb85ff3a776273d12a22d16)) -* **core:** Increment `i` in `defaultBlockAt` ([655957d](https://github.com/ueberdosis/tiptap/commit/655957d73304f57d87b8e95d89de00da762c0fa9)) -* **core:** insert PasteRule Node at matched position ([#2942](https://github.com/ueberdosis/tiptap/issues/2942)) ([#2943](https://github.com/ueberdosis/tiptap/issues/2943)) ([bda6e8d](https://github.com/ueberdosis/tiptap/commit/bda6e8d3083074337b2d39fbb5d20d02bb942f63)) -* **core:** isNodeSelection, isTextSelection not always false ([#3089](https://github.com/ueberdosis/tiptap/issues/3089)) ([574cd69](https://github.com/ueberdosis/tiptap/commit/574cd69e06bfdc3771006ed4eda341a6c9722a42)), closes [#2979](https://github.com/ueberdosis/tiptap/issues/2979) -* **core:** make setEditable trigger all 'update' listeners ([#3140](https://github.com/ueberdosis/tiptap/issues/3140)) ([4851fc5](https://github.com/ueberdosis/tiptap/commit/4851fc5e9b6daccc15a1839e471db489401eca0c)) -* **core:** make setEditable trigger onUpdate function ([#2935](https://github.com/ueberdosis/tiptap/issues/2935)) ([de1253a](https://github.com/ueberdosis/tiptap/commit/de1253a8b06eeb7339f0bba8c04917890c9b21ae)) -* **core:** only respect text of node before current position ([#2937](https://github.com/ueberdosis/tiptap/issues/2937)) ([#2941](https://github.com/ueberdosis/tiptap/issues/2941)) ([e280a02](https://github.com/ueberdosis/tiptap/commit/e280a02597d15460fce97a7555f91ff04926f0e7)) -* **core:** setNodeSelection should not clamp pos by Selection.atStart/atEnd ([#3091](https://github.com/ueberdosis/tiptap/issues/3091)) ([313b8b8](https://github.com/ueberdosis/tiptap/commit/313b8b8d0af7059c420ffc96c9362f0f4acc2138)), closes [#3090](https://github.com/ueberdosis/tiptap/issues/3090) -* **deps:** remove high severity vulnerability and add extra travis check on PRS ([18ba26d](https://github.com/ueberdosis/tiptap/commit/18ba26dd47567f014939df1d88bb04da4d611b33)) -* disable broken tests for experiements with further todo message ([b8ae9e2](https://github.com/ueberdosis/tiptap/commit/b8ae9e27622857093c6ca539901956da5cc291e5)) -* do not apply paste rules for ProseMirror HTML ([9d281e9](https://github.com/ueberdosis/tiptap/commit/9d281e9e998a5cfa9ca1002ad428caf1cee59682)) -* do not check for node selection within posToDOMRect ([c0e68d5](https://github.com/ueberdosis/tiptap/commit/c0e68d5a25608e0b6d9c127bbc507b4ba2a94a61)) -* don't override behaviour of Home / End in pc keymap ([d270419](https://github.com/ueberdosis/tiptap/commit/d270419ad8dc6182a949c5d263c47e90ee4466ff)) -* don't remove the tiptap styles on destroy, fix [#2120](https://github.com/ueberdosis/tiptap/issues/2120), fix [#2143](https://github.com/ueberdosis/tiptap/issues/2143) ([a0a88ac](https://github.com/ueberdosis/tiptap/commit/a0a88acd13ee221587834def8d2655ac13233f27)) -* don’t add tabindex when readonly, fix [#2458](https://github.com/ueberdosis/tiptap/issues/2458) ([01411f8](https://github.com/ueberdosis/tiptap/commit/01411f8462e8a36f96e56cdba227a9e5bb3e1812)) -* don’t allow base64 images at all, fix [#2455](https://github.com/ueberdosis/tiptap/issues/2455) ([999dbbe](https://github.com/ueberdosis/tiptap/commit/999dbbec1261d9b67fd3ab9ddba790d7d372d3ae)) -* don’t check for active node in wrapIn command, fix [#1059](https://github.com/ueberdosis/tiptap/issues/1059) ([170ec4b](https://github.com/ueberdosis/tiptap/commit/170ec4be5b3c8362890ca3100a223b505f788381)) -* don’t initialize tippy on requestAnimationFrame to avoid race conditions ([#1820](https://github.com/ueberdosis/tiptap/issues/1820)) ([ca3763d](https://github.com/ueberdosis/tiptap/commit/ca3763d3c29cc0715727fe12a0e907ad86d99806)) -* don’t merge classes ([dba0c1a](https://github.com/ueberdosis/tiptap/commit/dba0c1ac15e9beda3ebd027c67c969a4fe7ae7c7)) -* don’t resize tables if editable is set to false, fix [#1549](https://github.com/ueberdosis/tiptap/issues/1549) ([239a2e3](https://github.com/ueberdosis/tiptap/commit/239a2e36a47e4d0ad3012a54cda2d8b5c4f7a3ca)) -* don’t show placeholder if node contains only atom nodes, fix [#1457](https://github.com/ueberdosis/tiptap/issues/1457) ([11b4866](https://github.com/ueberdosis/tiptap/commit/11b48669482db5122bcd60dc1b65f839e77e5a48)) -* don’t trigger image input rule on paste, fix [#2518](https://github.com/ueberdosis/tiptap/issues/2518) ([ecf270c](https://github.com/ueberdosis/tiptap/commit/ecf270c9e7b5848767e5380a37db622f9d8ab85e)) -* don’t use state in KeyboardShortcutCommand anymore ([92ced9f](https://github.com/ueberdosis/tiptap/commit/92ced9f9987d59ac672da65b2a685d296307c6b0)) -* editor don't has contentComponent attribute when suggestion onUpdate ([#2916](https://github.com/ueberdosis/tiptap/issues/2916)) ([6674e69](https://github.com/ueberdosis/tiptap/commit/6674e69b12cb4a6c7d5e9f9b59073fc16b8a8eb9)) -* export starter kit extension options ([4a2a428](https://github.com/ueberdosis/tiptap/commit/4a2a428a4c59fd3cdae589816f823d759d7926bd)) -* export text align extension options ([1b43de3](https://github.com/ueberdosis/tiptap/commit/1b43de331d40a0ab179eff38a5c94952adb5b056)) -* export type `Level` for external use ([#2354](https://github.com/ueberdosis/tiptap/issues/2354)) ([77095c4](https://github.com/ueberdosis/tiptap/commit/77095c4d52604b5c9d1d6cf748bb1110ea8cdd33)) -* Export type ColorOptions ([#2180](https://github.com/ueberdosis/tiptap/issues/2180)) ([bc242fe](https://github.com/ueberdosis/tiptap/commit/bc242fe3424300f934b623477158aa8f837cf1c7)) -* Export type FontFamilyOptions ([#2345](https://github.com/ueberdosis/tiptap/issues/2345)) ([909d444](https://github.com/ueberdosis/tiptap/commit/909d44459ce3751f10fcd332fee677da2708c115)) -* **extension-link:** :bug: fix auto link validation not working on paste ([3a3eb53](https://github.com/ueberdosis/tiptap/commit/3a3eb5311c6fbf1c1000a099d21bb47c71370375)) -* **extension-link:** restricts parsing `javascript:` pseudo-protocol ([947f311](https://github.com/ueberdosis/tiptap/commit/947f311c0ec9affdcaeb220d13d87c04c773f084)) -* **extension/collaboration:** :ambulance: pin y-prosemirror version to 1.0.20 to fix broken functionality with vue ([5989f3b](https://github.com/ueberdosis/tiptap/commit/5989f3b780bb64b2884d81dcd41a95d98a0714b2)) -* **extension/mention:** collapse selection to end after suggestion insertion to fix chrome selection issue with mouse ([163de4e](https://github.com/ueberdosis/tiptap/commit/163de4e1876000a88117da8a02b1f62cd4a2cfb0)) -* Fix "destory" method in view plugins. ([#1882](https://github.com/ueberdosis/tiptap/issues/1882)) ([33420f4](https://github.com/ueberdosis/tiptap/commit/33420f4ae06d0d7eec16201a2e650be83cbb9de9)) -* Fix [#2016](https://github.com/ueberdosis/tiptap/issues/2016) Image input rule ([#2020](https://github.com/ueberdosis/tiptap/issues/2020)) ([503a3f2](https://github.com/ueberdosis/tiptap/commit/503a3f2cf508271cc303fb918568dc8c9b900055)), closes [#1574](https://github.com/ueberdosis/tiptap/issues/1574) -* fix a bug for empty node selection where the bubble menu should not be visible, fix [#1023](https://github.com/ueberdosis/tiptap/issues/1023) ([8ed220a](https://github.com/ueberdosis/tiptap/commit/8ed220a12de48b3c14e903b271d7f50aff6313f4)) -* fix a bug in detecting a current list in toggleList command ([a35b253](https://github.com/ueberdosis/tiptap/commit/a35b2533eb87c683c0bff56b574aff490f490980)) -* fix a bug in link click handler, where we can’t click on text selections. fix [#263](https://github.com/ueberdosis/tiptap/issues/263) ([33c30c0](https://github.com/ueberdosis/tiptap/commit/33c30c0d6df66190fd1d5073ccc43b1020b517f9)) -* fix a bug in markPasteRule ([c2ccf68](https://github.com/ueberdosis/tiptap/commit/c2ccf68e8b4c869f707f3b1fdf51474e7f64b6f3)) -* fix a bug in the highlight regex, fix [#2355](https://github.com/ueberdosis/tiptap/issues/2355) ([b8a42fc](https://github.com/ueberdosis/tiptap/commit/b8a42fcaef7d75c1a30dbecfe403d7f0c3ec4e7d)) -* fix a bug that messed up pasted link attributes, fix [#1284](https://github.com/ueberdosis/tiptap/issues/1284) ([7da647d](https://github.com/ueberdosis/tiptap/commit/7da647d99f1dcefabc653347a8e2abfae3bb972e)) -* fix a bug when configurating the same extension multiple times ([655c564](https://github.com/ueberdosis/tiptap/commit/655c5647f0951851f818a0cc2500c48969f20797)) -* fix a bug when detecting changes within node views ([708ac94](https://github.com/ueberdosis/tiptap/commit/708ac94cebce2ed9304ae7e87eb4c3251758f903)) -* fix a bug when dragging node views ([4e6d43b](https://github.com/ueberdosis/tiptap/commit/4e6d43bbfb488d2987f71ad15732af8d25b9897a)) -* fix a bug when insert newline at node start, fix [#1411](https://github.com/ueberdosis/tiptap/issues/1411) ([b97bebe](https://github.com/ueberdosis/tiptap/commit/b97bebe021e6e587770cb99f94b18ee6d96c1630)) -* fix a bug when parsing attributes if no parseHTML method is provided, fix [#2058](https://github.com/ueberdosis/tiptap/issues/2058) ([5da313a](https://github.com/ueberdosis/tiptap/commit/5da313a5480db011374ffd236159e2aedc011b97)) -* fix a bug when using drag handles ([8f8b83a](https://github.com/ueberdosis/tiptap/commit/8f8b83afe47085a86caef00b48ad64c87a64af89)) -* fix a bug when using nested node views in react, fix [#1747](https://github.com/ueberdosis/tiptap/issues/1747) ([b15a8a8](https://github.com/ueberdosis/tiptap/commit/b15a8a8683bafbc9fd57dc64d60329f9ab08ecfd)) -* fix a bug where bubble menu does not appear when selection starts from empty paragraph node, fix [#1474](https://github.com/ueberdosis/tiptap/issues/1474) ([f12b127](https://github.com/ueberdosis/tiptap/commit/f12b1273f24984806394e3deb431823a9d00ba79)) -* fix a bug where paste rules doesn’t worked at the start of the document, see [#1225](https://github.com/ueberdosis/tiptap/issues/1225) ([ff67ee1](https://github.com/ueberdosis/tiptap/commit/ff67ee1da380d8308e85fa4b0386ea6947ec7ff1)) -* fix a bug where setting text align isn’t working when heading extension is not added ([ddb9a4b](https://github.com/ueberdosis/tiptap/commit/ddb9a4bf186b766477f21102dae6eb1299ea425a)) -* fix a bug where strike and underline can’t parsed together ([eff2c41](https://github.com/ueberdosis/tiptap/commit/eff2c4140a9e15762fa2238caf21dfbc47ffc3df)) -* fix adding mark only with insertContent(), fix [#264](https://github.com/ueberdosis/tiptap/issues/264) ([0a63123](https://github.com/ueberdosis/tiptap/commit/0a6312382f38af5b8fdf7f94fc4b6c1de1a15e25)) -* fix bug on paste when using code blocks ([d60fe35](https://github.com/ueberdosis/tiptap/commit/d60fe350d148a0b39a6cdd6b439e3d9325506872)) -* fix check for showing mention suggestion ([5e652c9](https://github.com/ueberdosis/tiptap/commit/5e652c94a7d72e480003449b2dd6050a55df9cc7)) -* fix checkbox in firefox, fix [#251](https://github.com/ueberdosis/tiptap/issues/251) ([5622dec](https://github.com/ueberdosis/tiptap/commit/5622deca30397170bae341a000b9fe4693280c9b)) -* fix content expression for blockquote node, fix [#1681](https://github.com/ueberdosis/tiptap/issues/1681) ([74a3326](https://github.com/ueberdosis/tiptap/commit/74a33264c046d275300ab321fb2a7780eb796817)) -* fix editor type for ReactRenderer ([2af1870](https://github.com/ueberdosis/tiptap/commit/2af187023ddbc85edee086cdb898c5139f7668de)) -* fix editor type for VueRenderer, fix [#281](https://github.com/ueberdosis/tiptap/issues/281) ([f6d8776](https://github.com/ueberdosis/tiptap/commit/f6d8776ca086bf1f2edc6dc099e33a1f00fdd4c7)) -* fix End key handler, fix [#2446](https://github.com/ueberdosis/tiptap/issues/2446) ([b584920](https://github.com/ueberdosis/tiptap/commit/b584920ea172bc9f5207b8d03cb2b7f80925a5be)) -* fix error when calculating contentMatch within clearNodes command, fix [#1361](https://github.com/ueberdosis/tiptap/issues/1361) ([3709668](https://github.com/ueberdosis/tiptap/commit/370966847efd7bbc1b033cf5952f2427e62c1525)) -* fix export for getAttributes ([5b8808a](https://github.com/ueberdosis/tiptap/commit/5b8808a89990b808d7f84c004a07e14b046c12b9)) -* fix expose error when using new setup syntax (fix [#1914](https://github.com/ueberdosis/tiptap/issues/1914)) ([60e7755](https://github.com/ueberdosis/tiptap/commit/60e7755b7f7657eec448566580a57db550681ed2)) -* fix extension name for clipboardTextSerializer ([15f90ec](https://github.com/ueberdosis/tiptap/commit/15f90ec5916460359827f7073e5c36147867fef7)) -* fix extension option merging ([aa002a0](https://github.com/ueberdosis/tiptap/commit/aa002a012bfe888c03da5cd32f98b40965a5fa7b)) -* fix focus on iOS, fix [#1806](https://github.com/ueberdosis/tiptap/issues/1806) ([3a06938](https://github.com/ueberdosis/tiptap/commit/3a0693869d10793620e0073b0782dd34ac5aea89)) -* fix fragile schema validity test in splitBlock ([e52f41a](https://github.com/ueberdosis/tiptap/commit/e52f41ae7864210bc0e4107db21e09607d2e586f)) -* fix hasAnchor type for placeholder extension ([5257a3b](https://github.com/ueberdosis/tiptap/commit/5257a3b94832b22a49dfedfb6f2aeea9abc6255b)) -* fix isEditable check on initialization ([f6f8cf9](https://github.com/ueberdosis/tiptap/commit/f6f8cf9f9366adbea30600a34619bdd4e6d3a4e4)) -* fix lint error ([d5dd568](https://github.com/ueberdosis/tiptap/commit/d5dd568d862fee60c975ec7314615032f0558872)) -* fix lowlight decorations for vue 3 ([daa5dc0](https://github.com/ueberdosis/tiptap/commit/daa5dc0fb1ec2db6889565fc9c091f3dbdbbda6d)) -* fix mappes positions for paste rules, fix [#2002](https://github.com/ueberdosis/tiptap/issues/2002) ([770c4e1](https://github.com/ueberdosis/tiptap/commit/770c4e18e19504f4c44feb85b7d202fcc5201b12)) -* fix mention and suggestion package dependencies ([39a2012](https://github.com/ueberdosis/tiptap/commit/39a20123ab200a59f1687183a5145e5498849fe1)) -* fix merging options on configure for multiple extension instances ([d037c56](https://github.com/ueberdosis/tiptap/commit/d037c5656a113ac7205104a815310727b23c30d4)) -* fix missing extensions when using `addExtension`, fix [#1309](https://github.com/ueberdosis/tiptap/issues/1309) ([28737b1](https://github.com/ueberdosis/tiptap/commit/28737b1631719315cebc354f7cb5a1d924b0b543)) -* Fix multi character suggest ([#1620](https://github.com/ueberdosis/tiptap/issues/1620)) ([83a53c1](https://github.com/ueberdosis/tiptap/commit/83a53c16db4e8bbe06a37a0fe15e0a9e79bdb2ed)) -* fix onBeforeCreate event handler, fix [#1236](https://github.com/ueberdosis/tiptap/issues/1236) ([0b67f18](https://github.com/ueberdosis/tiptap/commit/0b67f18e3a109609cd9b2371396c5f6b8ed85f96)) -* fix order of executed plugins, fix [#1547](https://github.com/ueberdosis/tiptap/issues/1547) ([f8efdf7](https://github.com/ueberdosis/tiptap/commit/f8efdf797a10a01235b75091729b15aca076e47a)) -* Fix parsing of mention nodes ([#1471](https://github.com/ueberdosis/tiptap/issues/1471)) ([5178172](https://github.com/ueberdosis/tiptap/commit/5178172864e167538698186d56e0aa75df307c98)) -* fix plugin order for collab, fix [#1973](https://github.com/ueberdosis/tiptap/issues/1973) ([2b16c2e](https://github.com/ueberdosis/tiptap/commit/2b16c2ea9633529657debff3cdbc74ff3a26b985)) -* fix RangeError bug when selecting all text, fix [#2490](https://github.com/ueberdosis/tiptap/issues/2490) ([70422dd](https://github.com/ueberdosis/tiptap/commit/70422dd107ed1ecdd8dfe41a8a93297124d2f1e0)) -* fix React Node View render problem in React 18 ([#2985](https://github.com/ueberdosis/tiptap/issues/2985)) ([f32293b](https://github.com/ueberdosis/tiptap/commit/f32293b0d5d36ffb546a3d1e3dfab1580ee5080a)) -* fix reactive props, see [#1728](https://github.com/ueberdosis/tiptap/issues/1728) ([7f7f93d](https://github.com/ueberdosis/tiptap/commit/7f7f93dc1b4b56c7647de27a792e000b3513c226)) -* fix regex modifier for input rules and paste rules, fix [#2003](https://github.com/ueberdosis/tiptap/issues/2003) ([65eddf0](https://github.com/ueberdosis/tiptap/commit/65eddf0e789c620a53d9bec9509b515211fb9b3f)) -* Fix removal of textStyle mark when any style resets ([#1465](https://github.com/ueberdosis/tiptap/issues/1465)) ([fbf4422](https://github.com/ueberdosis/tiptap/commit/fbf442269d021bbe17a9c0a830edfeda00bac85a)) -* fix removing the caret on blur in some situations when using safari, fix [#2405](https://github.com/ueberdosis/tiptap/issues/2405) ([9d31712](https://github.com/ueberdosis/tiptap/commit/9d317128a08a66f18c4d51385b6a9fccc5cd66f4)) -* fix some react focus issues ([#1724](https://github.com/ueberdosis/tiptap/issues/1724)), fix [#1716](https://github.com/ueberdosis/tiptap/issues/1716), fix [#1608](https://github.com/ueberdosis/tiptap/issues/1608), fix [#1520](https://github.com/ueberdosis/tiptap/issues/1520) ([956566e](https://github.com/ueberdosis/tiptap/commit/956566eaad0a522d6bc27d44594aa36d6c33f8b3)) -* fix storage context when using configure ([ef254ce](https://github.com/ueberdosis/tiptap/commit/ef254cead7b9be052ec0211849fb78ae577095dd)) -* fix suggestion package.json ([dd3e27b](https://github.com/ueberdosis/tiptap/commit/dd3e27b0e49cb7b7a63c0068437060472345c51b)) -* fix tippy for react ([398fc7f](https://github.com/ueberdosis/tiptap/commit/398fc7f210b9d5449cbb00543ddf4af768552b9c)) -* fix type error for commands ([26785db](https://github.com/ueberdosis/tiptap/commit/26785dbec00cbb3dc3196bd9a7cbebb7452e4a2e)) -* fix type for clientRect ([07c6d51](https://github.com/ueberdosis/tiptap/commit/07c6d513388c4538140e0ff37dc9035c9dc6fea3)) -* fix type for emitUpdate, fix [#276](https://github.com/ueberdosis/tiptap/issues/276) ([4137e00](https://github.com/ueberdosis/tiptap/commit/4137e00d987c152b883022525056df94ad033be7)) -* fix type for insertContent command ([4295c6b](https://github.com/ueberdosis/tiptap/commit/4295c6bd2181bdaa98ef7777bfab44efbcf22a32)) -* fix types for BubbleMenu and FloatingMenu props ([d3242c9](https://github.com/ueberdosis/tiptap/commit/d3242c9a0728ea0d164571a6e1eee20fb528f2d8)) -* fix types for characterCount storage methods ([d1daf9c](https://github.com/ueberdosis/tiptap/commit/d1daf9cca06b4ac5855485533255b1275391b524)) -* fix updating editorProps via setOptions ([#1540](https://github.com/ueberdosis/tiptap/issues/1540)), fix [#1518](https://github.com/ueberdosis/tiptap/issues/1518) ([e6f67ca](https://github.com/ueberdosis/tiptap/commit/e6f67caef37d3fb73adadfb64060541a0b791924)) -* fix updating node views, fix [#1656](https://github.com/ueberdosis/tiptap/issues/1656) ([d7f6e0c](https://github.com/ueberdosis/tiptap/commit/d7f6e0ce3f99381d3822cde5ab1c484ed13a4c20)) -* fix using react node views with insertContent ([ea0992f](https://github.com/ueberdosis/tiptap/commit/ea0992f66e9942c590e75c0ab2f5705640764f4d)) -* fix vue dependency ([73650c1](https://github.com/ueberdosis/tiptap/commit/73650c12e0cc7be13705775a02c031e5e36ee4d1)) -* fixed type for Content ([39147f5](https://github.com/ueberdosis/tiptap/commit/39147f5b02388b68ddea91d40bd2e846597f813b)) -* fixes an error when using the mention extension and pasting text ending with "@", fix [#2413](https://github.com/ueberdosis/tiptap/issues/2413) ([55fa220](https://github.com/ueberdosis/tiptap/commit/55fa2208996f648a2ca06b0a363a249ff5e39169)) -* get correct clientRect when using async suggesteion items, fix [#1782](https://github.com/ueberdosis/tiptap/issues/1782) ([839acc1](https://github.com/ueberdosis/tiptap/commit/839acc1d9f713b89f366cd7da63330fd0243c31b)) -* getHTMLFromFragment now expects a fragment instead of node ([2c9cf03](https://github.com/ueberdosis/tiptap/commit/2c9cf03398e2b14fceaec4386fdb53cae5261ae7)) -* handle backspace also on shift ([32ae386](https://github.com/ueberdosis/tiptap/commit/32ae3868eaf42bb3f5d016038b57337ff64c21b4)) -* hide bubble menu on drag, fix [#1443](https://github.com/ueberdosis/tiptap/issues/1443) ([6034eb9](https://github.com/ueberdosis/tiptap/commit/6034eb9b30c3fe01ece9079c84c91ba9c6184518)) -* ignore editable in dispatchTransaction, fix [#1239](https://github.com/ueberdosis/tiptap/issues/1239) ([b3fb022](https://github.com/ueberdosis/tiptap/commit/b3fb0228e04a227bfc4536b167a93b3172169378)) -* Ignore iOS mutations when unfocused ([#2170](https://github.com/ueberdosis/tiptap/issues/2170)) ([10fea3b](https://github.com/ueberdosis/tiptap/commit/10fea3b44ef7bdc62d9392f8b04409cada233292)) -* improve `setNode` behavior for list items, fix [#2261](https://github.com/ueberdosis/tiptap/issues/2261) ([f2ced69](https://github.com/ueberdosis/tiptap/commit/f2ced6971d60c555ce1e6bc7116fe0168f018bf1)) -* improve active mark detection for inline nodes, fix [#1893](https://github.com/ueberdosis/tiptap/issues/1893) ([6437790](https://github.com/ueberdosis/tiptap/commit/6437790431e564c871ebe7daa3aab6e4d3577a8f)) -* Improve backspace handling ([#2284](https://github.com/ueberdosis/tiptap/issues/2284)), fix [#2281](https://github.com/ueberdosis/tiptap/issues/2281) ([8ed485b](https://github.com/ueberdosis/tiptap/commit/8ed485ba53e809207a23ca6871aab2eb0806f0ab)) -* Improve behavior when using insertContent ([#2147](https://github.com/ueberdosis/tiptap/issues/2147)) ([8fc915c](https://github.com/ueberdosis/tiptap/commit/8fc915cade394bff2015be1e1e2d7c008e8c908e)) -* improve bundle size of character count extension, fix [#2519](https://github.com/ueberdosis/tiptap/issues/2519) ([fbfe1d9](https://github.com/ueberdosis/tiptap/commit/fbfe1d9992ee3b49db62bdf50d99321a3fa7ad95)) -* improve calculation for min/max positions in selections, fix [#1588](https://github.com/ueberdosis/tiptap/issues/1588) ([9425e72](https://github.com/ueberdosis/tiptap/commit/9425e7249a15e0fb4e8c714545c09f367d216536)) -* improve default gapcursor position when surrounded by margins ([cd14731](https://github.com/ueberdosis/tiptap/commit/cd14731612b40fc460675e9fbaaab1618ac02abf)) -* improve default styling for .ProseMirror-separator ([0e94afe](https://github.com/ueberdosis/tiptap/commit/0e94afe42a5c15a47698152b3bc88e6bc4f8c01f)) -* improve drag position for node views ([5e5b8db](https://github.com/ueberdosis/tiptap/commit/5e5b8db6eb707aa570b462caf184401189228b02)) -* improve drag position for node views even more ([d2c5b71](https://github.com/ueberdosis/tiptap/commit/d2c5b71c28b04ff64715ff6562e7dcb01cfd7ec8)) -* improve export for StarterKitOptions ([8fcc80d](https://github.com/ueberdosis/tiptap/commit/8fcc80d68ec9471523ec0a8108035afef4d0f9f3)) -* improve handling of horizontal rule at document end, fix [#248](https://github.com/ueberdosis/tiptap/issues/248) ([af17f2c](https://github.com/ueberdosis/tiptap/commit/af17f2c65794767e4b7ddfd1c1277a567acd898d)) -* improve isActive check for floating menu when using custom doc content, fix [#1205](https://github.com/ueberdosis/tiptap/issues/1205) ([b84a56a](https://github.com/ueberdosis/tiptap/commit/b84a56a84a60a62ed0a39f8f852595acc08c35f7)) -* improve JSONContent type to allow pure JSON content ([ce7f52a](https://github.com/ueberdosis/tiptap/commit/ce7f52a8f0c278ef39b25010950dd734bebd679b)) -* improve node view error message ([536663f](https://github.com/ueberdosis/tiptap/commit/536663f816039df6e3d8de23989f343d78e5d08e)) -* improve performance for isActive method, see [#1930](https://github.com/ueberdosis/tiptap/issues/1930) ([fcca1e6](https://github.com/ueberdosis/tiptap/commit/fcca1e6f4db273ee2f3c0a543c44738c395193a8)) -* Improve ReactRenderer types ([#2011](https://github.com/ueberdosis/tiptap/issues/2011)) ([31d8ab3](https://github.com/ueberdosis/tiptap/commit/31d8ab3593f18f8fec49b7e5ab22a7d979165ae6)) -* improve suggestion handling for chinese input, fix [#1449](https://github.com/ueberdosis/tiptap/issues/1449) ([9789372](https://github.com/ueberdosis/tiptap/commit/9789372cea901b21059d53c30ff301efb35fb720)) -* improve types for generateHTML ([502b5b1](https://github.com/ueberdosis/tiptap/commit/502b5b1cc9f1a8beb49ef2da81a9db56c7e92424)) -* improve Vue nodeViewProps typing ([190a699](https://github.com/ueberdosis/tiptap/commit/190a6993d4d93b4d37b978b33ef22690ed8269b6)) -* initialize autofocus selection in `createView` ([#2212](https://github.com/ueberdosis/tiptap/issues/2212)) ([de39853](https://github.com/ueberdosis/tiptap/commit/de39853026ee63bb558ed59b1dab3899c07ae073)) -* insertContent keeps marks when using plain text, fix [#2406](https://github.com/ueberdosis/tiptap/issues/2406) ([d242706](https://github.com/ueberdosis/tiptap/commit/d2427064ff1765004173f3c718cd1e4eba4dc355)) -* let StarterKit be imported as cjs module ([#2967](https://github.com/ueberdosis/tiptap/issues/2967)) ([69d22d2](https://github.com/ueberdosis/tiptap/commit/69d22d2d3c3b3064641e0a1ba66a0a9ada90d6bd)) -* link command on multi cell selections ([ddaad8b](https://github.com/ueberdosis/tiptap/commit/ddaad8b19c5a2dac8fc8d09d5fca1aa571c0fef9)), closes [#827](https://github.com/ueberdosis/tiptap/issues/827) -* lint error ([e17c414](https://github.com/ueberdosis/tiptap/commit/e17c41498aa0df71a827bf41f5c52745f3853c43)) -* **maintainment:** fix cjs issues with prosemirror-tables ([eb92597](https://github.com/ueberdosis/tiptap/commit/eb925976038fbf59f6ba333ccc57ea84113da00e)) -* make `as` prop optional ([f8dec5f](https://github.com/ueberdosis/tiptap/commit/f8dec5f905baf5692dd257b3dddec3de2bcad1a1)) -* make shouldShow and pluginKey option for menus, fix [#1779](https://github.com/ueberdosis/tiptap/issues/1779) ([70a328b](https://github.com/ueberdosis/tiptap/commit/70a328bd3dea174170ad8e92db4c4f7f9368fd1b)) -* Mark `@tiptap/react` and `@tiptap/core` as side effect free ([#2361](https://github.com/ueberdosis/tiptap/issues/2361)) ([e609b2d](https://github.com/ueberdosis/tiptap/commit/e609b2d11615dd85fd219731d1b73deaeccccd69)) -* Mark `@tiptap/vue-2` and `@tiptap/vue-3` as side effect free ([be8ca68](https://github.com/ueberdosis/tiptap/commit/be8ca68d97c8f169d548e72253d5e6406fcb4c5b)) -* mark characterCount storage method types as optional ([ed7f93a](https://github.com/ueberdosis/tiptap/commit/ed7f93a2b84234b365f74ff39424f72ca5cf42ea)) -* Mark the bubble/floating menu extensions as side effect free ([172513c](https://github.com/ueberdosis/tiptap/commit/172513cb445fa295dd9f7d7ec553ed22baa9d435)) -* **markpasterule:** parent is undefined for mark ([463fd91](https://github.com/ueberdosis/tiptap/commit/463fd91eba2cd445bfcd717dfb6251425dd90437)) -* maybe hide tippy on blur, fix [#1433](https://github.com/ueberdosis/tiptap/issues/1433) ([063ced2](https://github.com/ueberdosis/tiptap/commit/063ced27ca55f331960b01ee6aea5623eee0ba49)) -* maybe move content dom on update, fix [#1370](https://github.com/ueberdosis/tiptap/issues/1370) ([78f75c3](https://github.com/ueberdosis/tiptap/commit/78f75c3e0e287abac18bf87f32a1bd586300da14)) -* maybe move content dom on update, see [#1370](https://github.com/ueberdosis/tiptap/issues/1370) ([60708a7](https://github.com/ueberdosis/tiptap/commit/60708a781770d745f0d9135c225f56d3d2f1b31d)) -* **menu-bubble-hide:** only send hide update, target not child of editor ([527a744](https://github.com/ueberdosis/tiptap/commit/527a7443f14a532ddefe9d612a7bafc6af7846d4)) -* merge attrributes correctly when clicking task checkbox, fix [#2422](https://github.com/ueberdosis/tiptap/issues/2422) ([fe27843](https://github.com/ueberdosis/tiptap/commit/fe27843e80af2d48350a4b05438ea9212ec0bba4)) -* move @tiptap/core to peerDependency ([a03a01a](https://github.com/ueberdosis/tiptap/commit/a03a01ab042f7c655139a08ed547a58d8b1d386f)) -* move all child nodes within EditorContent ([0f299d2](https://github.com/ueberdosis/tiptap/commit/0f299d228eb4075d24e1c0fb5b39febc6bc77de6)) -* nodeInputRule() support for group match ([#1574](https://github.com/ueberdosis/tiptap/issues/1574)) ([8ee0d67](https://github.com/ueberdosis/tiptap/commit/8ee0d67b83fea6a38d3abf02528d62ab482fe509)) -* Only trigger image input rule at the start or with a preceding space ([5fef431](https://github.com/ueberdosis/tiptap/commit/5fef431d09d9ad4615dd43ee0573a4d4e6d86a46)) -* parse correct language for code blocks with multiple classes (see [#1845](https://github.com/ueberdosis/tiptap/issues/1845)) ([472f213](https://github.com/ueberdosis/tiptap/commit/472f2139c52b9e0211ccd735e937486df2cb3d30)) -* preserve whitespace when using insertContent command ([8f10181](https://github.com/ueberdosis/tiptap/commit/8f101810feace676fedce449e71d3af1d152436b)) -* prevent a bug for node views when pressing enter on iOS, fix [#1214](https://github.com/ueberdosis/tiptap/issues/1214) ([234d238](https://github.com/ueberdosis/tiptap/commit/234d23887bfcb19c3591deb391688ec9d4e49a8a)) -* prevent adding hard breaks in isolated nodes ([9247fcb](https://github.com/ueberdosis/tiptap/commit/9247fcb6cf20493d021664ddce95ad1c23c5a152)) -* prevent bug when editor is destroyed very fast ([939fc3d](https://github.com/ueberdosis/tiptap/commit/939fc3d93ab67d54b7fe67b64c423290b3a40df8)) -* prevent checkbox change when editor isn’t editable, fix [#1386](https://github.com/ueberdosis/tiptap/issues/1386) ([c58a753](https://github.com/ueberdosis/tiptap/commit/c58a753e9442c1766050a1a4733e56d553d2e8c5)) -* prevent dispatch empty fragment when parsing content with insertContent ([2a4e02a](https://github.com/ueberdosis/tiptap/commit/2a4e02ade3b74999a9632673a607568644d6d26c)) -* prevent error in toggleList command, fix [#2279](https://github.com/ueberdosis/tiptap/issues/2279) ([66eb2f2](https://github.com/ueberdosis/tiptap/commit/66eb2f2a47cdf21590881153a6cb6b1f3f38641a)) -* prevent multiple space characters after mention node, fix [#1703](https://github.com/ueberdosis/tiptap/issues/1703) ([3f7e6b2](https://github.com/ueberdosis/tiptap/commit/3f7e6b219b572d2aa06618ce125ba86cd2fcd0bd)) -* prevent named capturing groups, fix [#2128](https://github.com/ueberdosis/tiptap/issues/2128) ([0e9930f](https://github.com/ueberdosis/tiptap/commit/0e9930f90f253f8667d1436dcf6c93279fda9aed)) -* prevent RangeError for posToDOMRect, fix [#2112](https://github.com/ueberdosis/tiptap/issues/2112) ([010418d](https://github.com/ueberdosis/tiptap/commit/010418d0fd04ebef10180a3559abfbbd24b6a959)) -* prevent removing inline nodes when using insertContentAt, fix [#2156](https://github.com/ueberdosis/tiptap/issues/2156) ([53ffce5](https://github.com/ueberdosis/tiptap/commit/53ffce501835f727dbc39f07a8759903245a3f30)) -* prevent suggestions from being active when editor is readonly ([45990cd](https://github.com/ueberdosis/tiptap/commit/45990cdc0f8c9b7d31fe31cabe4b29088851d9f6)) -* prevents a bug where a line break was incorrectly added at enter in react node views, fix [#1197](https://github.com/ueberdosis/tiptap/issues/1197) ([e885ffa](https://github.com/ueberdosis/tiptap/commit/e885ffa15b590b0c1f895f5c32f4852cc483c222)) -* properly calculate setDragImage position ([7401d45](https://github.com/ueberdosis/tiptap/commit/7401d45b7e3ff40e2ac894810bf85461761eb25b)) -* Remove `element.current` from `useEffect` in `BubbleMenu` and `FloatingMenu` ([#2297](https://github.com/ueberdosis/tiptap/issues/2297)) ([561941d](https://github.com/ueberdosis/tiptap/commit/561941d5e0d8c0bed852156e06820780e65f0656)) -* remove codeblock when at start of document, fix [#262](https://github.com/ueberdosis/tiptap/issues/262) ([92f6ea2](https://github.com/ueberdosis/tiptap/commit/92f6ea25cc7623d0bd34f5a2342be6f5aae951aa)) -* remove composition check for floating menu ([#2137](https://github.com/ueberdosis/tiptap/issues/2137)) ([d0d0696](https://github.com/ueberdosis/tiptap/commit/d0d069626626d173f9fd038d1b231d15a17a43bb)) -* Remove console.log statement ([#2168](https://github.com/ueberdosis/tiptap/issues/2168)) ([6e25e99](https://github.com/ueberdosis/tiptap/commit/6e25e99c7a8699166a63fee1f4b5584ab617c9cd)) -* remove custom coordsAtPos method, fix [#583](https://github.com/ueberdosis/tiptap/issues/583) ([485fb8c](https://github.com/ueberdosis/tiptap/commit/485fb8c74c831256aaa2cefdf130e05438c2e476)) -* remove debug log ([beb96c5](https://github.com/ueberdosis/tiptap/commit/beb96c5cbfdb81869763e23f82f5ab270c30f0ea)) -* remove default types for textAlign extension, fix [#1430](https://github.com/ueberdosis/tiptap/issues/1430) ([b4e41af](https://github.com/ueberdosis/tiptap/commit/b4e41afd1798e7eba4ccb0804be1ed2473c1f4d2)) -* remove defaultOptions fallback, fix [#2219](https://github.com/ueberdosis/tiptap/issues/2219) ([20b6d79](https://github.com/ueberdosis/tiptap/commit/20b6d79f33217d0f8fcd416a1cc54712ea6fc743)) -* remove editable check in updateAttributes, fix [#1415](https://github.com/ueberdosis/tiptap/issues/1415) ([fbc8fff](https://github.com/ueberdosis/tiptap/commit/fbc8fffb701dd78994ca4e20c32a940236bf768d)) -* remove editor from addExtensions context ([cbc0dd8](https://github.com/ueberdosis/tiptap/commit/cbc0dd8920ab7d36516387ceac59239f9162b4ec)) -* remove empty attributes in getDebugJSON ([940fd69](https://github.com/ueberdosis/tiptap/commit/940fd69b61b6eb56ca05235d22993eb202a20c1d)) -* remove empty mark attributes from getDebugJSON ([07cabe6](https://github.com/ueberdosis/tiptap/commit/07cabe65f4852a3c7fcab5c60b51318a05272aee)) -* remove extension-text-style from character-cout peer dependencies ([2fc6a4b](https://github.com/ueberdosis/tiptap/commit/2fc6a4b780bdf7a365e21717ebd99a8e8b2c113d)) -* remove node before hr if it’s an empty text block (fix [#1665](https://github.com/ueberdosis/tiptap/issues/1665)) ([6e76bb8](https://github.com/ueberdosis/tiptap/commit/6e76bb84fc65eb95157f900c35adfdd28e88a8e3)) -* remove node before hr if it’s an empty text block, fix [#1665](https://github.com/ueberdosis/tiptap/issues/1665) ([4151e2f](https://github.com/ueberdosis/tiptap/commit/4151e2fd81ae6c007d32b72ac41feac3c81e438b)) -* remove some magic strings ([6c34dec](https://github.com/ueberdosis/tiptap/commit/6c34dec33ac39c9f037a0a72e4525f3fc6d422bf)) -* rename key to pluginKey for menus ([89d26f7](https://github.com/ueberdosis/tiptap/commit/89d26f7cba2a115aa342f0ee621f0b65c840dfb8)) -* render line break in text/plain format for hard breaks, fix [#1842](https://github.com/ueberdosis/tiptap/issues/1842) ([787d784](https://github.com/ueberdosis/tiptap/commit/787d7848cdca3f198e727a4a35d83793e8ff9e11)) -* retrieve awareness states after reconnect ([12d9942](https://github.com/ueberdosis/tiptap/commit/12d994275c0a4afa2344805e16998690a1c45a4d)) -* revert adding exports ([bc320d0](https://github.com/ueberdosis/tiptap/commit/bc320d0b4b80b0e37a7e47a56e0f6daec6e65d98)) -* revert adding type: module ([f8d6475](https://github.com/ueberdosis/tiptap/commit/f8d6475e2151faea6f96baecdd6bd75880d50d2c)) -* revert adding useDefineForClassFields to tsconfig, fix [#1907](https://github.com/ueberdosis/tiptap/issues/1907) ([00c24b5](https://github.com/ueberdosis/tiptap/commit/00c24b513f64e2d3221f240edd45db749f089bea)) -* revert async focus, fix [#1658](https://github.com/ueberdosis/tiptap/issues/1658) ([c9869c8](https://github.com/ueberdosis/tiptap/commit/c9869c8d3021510366a46e840a66e8c06a6586ed)) -* revert changes to selectAll command, fix [#2491](https://github.com/ueberdosis/tiptap/issues/2491) ([bdab760](https://github.com/ueberdosis/tiptap/commit/bdab760cdbf89da7a56dcc1a183010974d2e1290)) -* revert excluding superscript from subscript, and vice versa to prevent error if not both extensions are used ([123f206](https://github.com/ueberdosis/tiptap/commit/123f2067e5ccc15f1fceee164e8bc461193cf8a0)) -* revert type changes for useEditor in vue-3 package ([3ba3afb](https://github.com/ueberdosis/tiptap/commit/3ba3afbea38b9b46b5d164e0d6a374ecd0ef63c6)) -* run pasterules for pasted content, fix [#2408](https://github.com/ueberdosis/tiptap/issues/2408) ([bc03c0d](https://github.com/ueberdosis/tiptap/commit/bc03c0d77812376f910accba1fb130c751ea7f0d)) -* Separate drags from drops in stopEvent ([#2070](https://github.com/ueberdosis/tiptap/issues/2070)) ([bebaa40](https://github.com/ueberdosis/tiptap/commit/bebaa4045e6be2e59d1b9c2e1f61f088a47fdf1b)) -* set correct component type for ReactRenderer, fix [#1904](https://github.com/ueberdosis/tiptap/issues/1904) ([fe47c38](https://github.com/ueberdosis/tiptap/commit/fe47c388ce5ef49c286302a7b771a680c2f0c239)) -* set correct priority when extending extensions, fix [#1288](https://github.com/ueberdosis/tiptap/issues/1288) ([b4e2b6f](https://github.com/ueberdosis/tiptap/commit/b4e2b6fc9dd722cce5ee85eb2df994453a0f5d39)) -* set correct type for emitUpdate ([9a40c17](https://github.com/ueberdosis/tiptap/commit/9a40c17b3422b22a2cfe1fbac76ca06c9e78ae8c)) -* set cursor position in setHorizontalRule correctly, fix [#2429](https://github.com/ueberdosis/tiptap/issues/2429) ([34d8011](https://github.com/ueberdosis/tiptap/commit/34d80114704679118e9bb6058e0d6c7aa03fd4b5)) -* set max textselection correctly, fix [#2401](https://github.com/ueberdosis/tiptap/issues/2401) ([4be16fc](https://github.com/ueberdosis/tiptap/commit/4be16fcd2e6c107e59679eebf1ea1d6112a88afb)) -* show bubble menu for atom nodes even if there is no text content, fix [#1446](https://github.com/ueberdosis/tiptap/issues/1446) ([a3a7650](https://github.com/ueberdosis/tiptap/commit/a3a76507844cefc28111b9636c511ad9ef52ad28)) -* show FloatingMenu by default only if focused ([#2275](https://github.com/ueberdosis/tiptap/issues/2275)) ([809af3b](https://github.com/ueberdosis/tiptap/commit/809af3b6c6dd2b82cfd4da032181c1f4e93d01cd)) -* strip carriage return chars from text pasted as code and add missing paste meta information ([b1c56e6](https://github.com/ueberdosis/tiptap/commit/b1c56e6f163af1a432621894e19f39243a38c4e4)) -* **suggestion:** :bug: make clientrect prop optional as it can potentially be undefined ([#2813](https://github.com/ueberdosis/tiptap/issues/2813)) ([f019f70](https://github.com/ueberdosis/tiptap/commit/f019f70a19c34715e2d5c3921d348e11c7ac51a3)), closes [#2795](https://github.com/ueberdosis/tiptap/issues/2795) -* support all characters for suggestion char, fix [#2385](https://github.com/ueberdosis/tiptap/issues/2385) ([42d3ee8](https://github.com/ueberdosis/tiptap/commit/42d3ee8fc9882a9fb9f87e696cebd0e6146d2e62)) -* Switch from hostic dom to zeed dom ([#2151](https://github.com/ueberdosis/tiptap/issues/2151)) ([56a75db](https://github.com/ueberdosis/tiptap/commit/56a75db024327c9de1956c67c08386a9778c706a)) -* temp fix collaboration demo ([4528756](https://github.com/ueberdosis/tiptap/commit/45287563f3cfb389095a2794cb2001d65e56d633)) -* **textStyle:** Null-safe parseHTML getting no color/fontFamily from HTMLElement styles ([#2825](https://github.com/ueberdosis/tiptap/issues/2825)) ([18bcc64](https://github.com/ueberdosis/tiptap/commit/18bcc64aa7de3dbc8e248d5f115db35ce5cdfe83)) -* Typo ([#3132](https://github.com/ueberdosis/tiptap/issues/3132)) ([19d2929](https://github.com/ueberdosis/tiptap/commit/19d29297efedaa29c122086b90b141d7a33cbd70)) -* update getJSON return type to JSONContent ([#2153](https://github.com/ueberdosis/tiptap/issues/2153)) ([6583ede](https://github.com/ueberdosis/tiptap/commit/6583edeb1f2a015f31cea378f5440fa6a31a47f6)) -* update lock file, fix [#1490](https://github.com/ueberdosis/tiptap/issues/1490) ([081b93b](https://github.com/ueberdosis/tiptap/commit/081b93bfaea8a401522b8e0a175ba2b2ac59e5f6)) -* update zeed dom ([#2155](https://github.com/ueberdosis/tiptap/issues/2155)) ([75e55e5](https://github.com/ueberdosis/tiptap/commit/75e55e548d31078689c1b511edabd0299b755e62)) -* use correct state when doc changed externally ([#1646](https://github.com/ueberdosis/tiptap/issues/1646)) ([60606f9](https://github.com/ueberdosis/tiptap/commit/60606f99a1df3c694cc2faa0522c772ef419e9fe)) -* Use pasteRegex in addPasteRules ([#1922](https://github.com/ueberdosis/tiptap/issues/1922)) ([047ef8c](https://github.com/ueberdosis/tiptap/commit/047ef8c8c9d9a88a763a8a09424844b1c0912562)) -* use ref to move contentDOM ([#1960](https://github.com/ueberdosis/tiptap/issues/1960)), fix [#1942](https://github.com/ueberdosis/tiptap/issues/1942) ([dead826](https://github.com/ueberdosis/tiptap/commit/dead82625095031bc4d32b47b205044bf75769bd)) -* use setNode instead of toggleNode for setParagraph command ([bcc1309](https://github.com/ueberdosis/tiptap/commit/bcc1309cd928d4dc5618fa998722f935975389f0)) -* use shallowRef on Editor ([#1804](https://github.com/ueberdosis/tiptap/issues/1804)) ([46701fd](https://github.com/ueberdosis/tiptap/commit/46701fde666b925e80f6796a45f928e671bee92d)) -* use toggleHeader from prosemirror-tables ([#2412](https://github.com/ueberdosis/tiptap/issues/2412)), fix [#548](https://github.com/ueberdosis/tiptap/issues/548) ([c6bea9a](https://github.com/ueberdosis/tiptap/commit/c6bea9aa5c4d38523f2f1095a570cdfc6936392e)) -* vue inject grammar warning ([#3144](https://github.com/ueberdosis/tiptap/issues/3144)) ([c6c5fa6](https://github.com/ueberdosis/tiptap/commit/c6c5fa623a875411b0e72dc3f8f88166f2f8fa1e)) - - -### Code Refactoring - -* **tiptap-extensions:** Do not import the full `lowlight` library. ([27e473c](https://github.com/ueberdosis/tiptap/commit/27e473c2a41618caa6dc73acdc2dcb9b1483bbcd)) +* **extension-link:** fix paste handling ([d19267e](https://github.com/ueberdosis/tiptap/commit/d19267ecefabf08e4bd27c52424ed83991ce7270)) +* typo in commands.md ([a2a9822](https://github.com/ueberdosis/tiptap/commit/a2a9822f240df2301932a67225d9adcac2f18807)) ### Features -* [#1898](https://github.com/ueberdosis/tiptap/issues/1898) Made the EventEmitter generic to improve the types of the tiptap events ([#1959](https://github.com/ueberdosis/tiptap/issues/1959)) ([54e85fd](https://github.com/ueberdosis/tiptap/commit/54e85fd28491fcf2d5a88fb5abda1f8414ada92b)) -* add 'all' option to focus command, fix [#2181](https://github.com/ueberdosis/tiptap/issues/2181) ([3c571c9](https://github.com/ueberdosis/tiptap/commit/3c571c9a3f2fdbf1d70e9efa27294fbdf6bcbd3c)) -* Add `as` option and pass through to ReactRenderer ([#2213](https://github.com/ueberdosis/tiptap/issues/2213)) ([dedcf17](https://github.com/ueberdosis/tiptap/commit/dedcf17d533aab0c5641b842877e42440883d5d8)) -* add `includeChildren` option to placeholder extension ([#1416](https://github.com/ueberdosis/tiptap/issues/1416)) ([1799b90](https://github.com/ueberdosis/tiptap/commit/1799b907ec7db7988f2c78016755ee1eaaab35af)) -* Add `onBeforeStart` and `onBeforeUpdate` handlers to the render function ([70cb809](https://github.com/ueberdosis/tiptap/commit/70cb809702cbbb59abc6d12d85fd4d1291f88f5a)) -* add `updateSelection` option to `insertContentAt` command ([9f2c368](https://github.com/ueberdosis/tiptap/commit/9f2c36896b5b8510cea87d727dc4e94742fdf980)) -* Add a generic type for suggestion items ([7cae967](https://github.com/ueberdosis/tiptap/commit/7cae9673f0086973b4d31e1343375ed5ad04ee0a)) -* add addExtensions option ([26e672e](https://github.com/ueberdosis/tiptap/commit/26e672e2f02a8f94941c704f3cd6cc4adef40df7)) -* add allowBase64 option to image extension ([a97a46f](https://github.com/ueberdosis/tiptap/commit/a97a46fc51c5a4b2f46be21fa6701b977eb415f7)) -* add className option to ReactRenderer, see [#2166](https://github.com/ueberdosis/tiptap/issues/2166) ([c9dc1e1](https://github.com/ueberdosis/tiptap/commit/c9dc1e1ec3295fe3dce7ed7d314c5a7e4140af83)) -* add coordsAtPos and posToClientRect helper methods ([8dab614](https://github.com/ueberdosis/tiptap/commit/8dab6144a661e4c90f33d9d2f300882009eadd46)) -* add defaultBlockAt helper ([403c147](https://github.com/ueberdosis/tiptap/commit/403c147d4d0875cb8ca63d88abfec94093ff7926)) -* add defaultLanguage option to CodeBlockLowlight extension, fix [#2121](https://github.com/ueberdosis/tiptap/issues/2121) ([0f94bcd](https://github.com/ueberdosis/tiptap/commit/0f94bcd591e98c0a767d0914b87a1efee8b002e0)) -* add deleteNode command ([73f1c50](https://github.com/ueberdosis/tiptap/commit/73f1c50bca8ffcd074388519eec9c659b0fda14c)) -* add deleteNode method to node views ([fcee5f8](https://github.com/ueberdosis/tiptap/commit/fcee5f82c6a282191afe5c2cb83b9f5820af28dd)) -* add editor prop to KeyboardShortcutCommand ([e0c2460](https://github.com/ueberdosis/tiptap/commit/e0c2460a960c739ac4b543f0f185653cb41599e3)) -* add editor.getAttributes, deprecate editor.getNodeAttributes and editor.getMarkAttributes ([072905c](https://github.com/ueberdosis/tiptap/commit/072905cb95e022a37f5bc937889999bfbb33ad88)) -* add enableCoreExtensions flag ([#1923](https://github.com/ueberdosis/tiptap/issues/1923)) ([4178281](https://github.com/ueberdosis/tiptap/commit/4178281a749f2b7641740c0be1efae77ecb74587)) -* add exitOnTripleEnter and exitOnArrowDown options to CodeBlock extension ([a35b7fb](https://github.com/ueberdosis/tiptap/commit/a35b7fbe2cee0390895aaeb358503b5ead116b64)) -* add extendEmptyMarkRange option to mark commands ([#1859](https://github.com/ueberdosis/tiptap/issues/1859)) ([14e458e](https://github.com/ueberdosis/tiptap/commit/14e458ea7d7475a51ac00d6f67509dc769919d0b)) -* Add extension storage ([#2069](https://github.com/ueberdosis/tiptap/issues/2069)) ([7ffabf2](https://github.com/ueberdosis/tiptap/commit/7ffabf251c408a652eec1931cc78a8bd43cccb67)) -* add findChildrenInRange helper ([463661c](https://github.com/ueberdosis/tiptap/commit/463661c5ed2fe4a1530888c8f09bb966794e33e6)) -* add forEach command ([783ce4e](https://github.com/ueberdosis/tiptap/commit/783ce4e3ac11c0705cb2d54158bfe76d39b3a36b)) -* add getText() and generateText() methods (fix [#1428](https://github.com/ueberdosis/tiptap/issues/1428)) ([#1875](https://github.com/ueberdosis/tiptap/issues/1875)) ([fe6a3e7](https://github.com/ueberdosis/tiptap/commit/fe6a3e7491f6a42123d3d8a92ab588f2a40d7799)) -* add ignoreMutation option to NodeViewRenderer, fix [#1538](https://github.com/ueberdosis/tiptap/issues/1538) ([651e691](https://github.com/ueberdosis/tiptap/commit/651e6911e3ea5407df6a48783ee16733e0a4f474)) -* add insertContent() command, deprecate insertText(), insertHTML() and insertNode() ([b8d9b7d](https://github.com/ueberdosis/tiptap/commit/b8d9b7d4c70b38fb9eec3c079be8243d30166e5e)) -* add isChangeOrigin helper method ([92b6c5b](https://github.com/ueberdosis/tiptap/commit/92b6c5bdcef4589acaa824c2fc599787c02c1832)) -* add itemTypeName option ([3d7c8e6](https://github.com/ueberdosis/tiptap/commit/3d7c8e642f31b1fa813e84dddc3968504477d536)) -* Add key bindings for uppercase letters for bold, italic and underline ([#2478](https://github.com/ueberdosis/tiptap/issues/2478)) ([b9bd469](https://github.com/ueberdosis/tiptap/commit/b9bd46964534c488dca21585786374b2f06ff03c)), closes [ProseMirror/prosemirror#895](https://github.com/ProseMirror/prosemirror/issues/895) [#2426](https://github.com/ueberdosis/tiptap/issues/2426) -* add key option and shouldShow option to menus (fix [#1480](https://github.com/ueberdosis/tiptap/issues/1480), fix [#1043](https://github.com/ueberdosis/tiptap/issues/1043), fix [#1268](https://github.com/ueberdosis/tiptap/issues/1268), fix [#1503](https://github.com/ueberdosis/tiptap/issues/1503)) ([9ba61c1](https://github.com/ueberdosis/tiptap/commit/9ba61c1582cee838f2214d00285773ace2fb229e)) -* add label attribute to mention extension ([#1322](https://github.com/ueberdosis/tiptap/issues/1322)) ([c3afe88](https://github.com/ueberdosis/tiptap/commit/c3afe880ae56e53da429590be4c7e2ffe5a70486)) -* add linkOnPaste option for adding a link to the current selection if the pasted content only contains an url, fix [#1210](https://github.com/ueberdosis/tiptap/issues/1210) ([9e9401e](https://github.com/ueberdosis/tiptap/commit/9e9401e68b79d34070fb79c4f356841fa19fe436)) -* add name to extension context ([12f60ab](https://github.com/ueberdosis/tiptap/commit/12f60abb731edd080cb9a70e8e34ae721e37f80e)) -* add parentConfig to extension context for more extendable extensions, fix [#259](https://github.com/ueberdosis/tiptap/issues/259) ([5e1ec5d](https://github.com/ueberdosis/tiptap/commit/5e1ec5d2a66be164f505d631f97861ab9344ba96)) -* add pos to placeholder props ([eb53743](https://github.com/ueberdosis/tiptap/commit/eb5374321b09e8b4a8e89dcc620d0ed4a2657f78)) -* add priority option to extensions ([bb1ae65](https://github.com/ueberdosis/tiptap/commit/bb1ae659a463e97a7ada15af711347b5c004897a)) -* add renderLabel option to mention extension, see [#1322](https://github.com/ueberdosis/tiptap/issues/1322) ([3b78af4](https://github.com/ueberdosis/tiptap/commit/3b78af44a054fa5d0101d8f7d836409b0b68547e)) -* add resetAttributes() command, deprecate resetNodeAttributes() ([3334d93](https://github.com/ueberdosis/tiptap/commit/3334d930f30bd4acb5c314b4ec1934b6a1e0b712)) -* add scrollIntoView option to focus command, fix [#2172](https://github.com/ueberdosis/tiptap/issues/2172) ([e0f6490](https://github.com/ueberdosis/tiptap/commit/e0f64904b665512fbde80db87bb394557433e164)) -* add selectTextblockStart and selectTextblockEnd commands ([0aa39f9](https://github.com/ueberdosis/tiptap/commit/0aa39f93cb1ea328bcf3c1b8da9b0ff1b6a00486)) -* add setCellSelection command ([eb7e92f](https://github.com/ueberdosis/tiptap/commit/eb7e92f10aff60e68cae613750903eb0adce5933)) -* add setMeta command ([36dad2b](https://github.com/ueberdosis/tiptap/commit/36dad2bbae5ed66077822330133a9d8ee0d28747)) -* add setNodeSelection and setTextSelection commands ([811bf69](https://github.com/ueberdosis/tiptap/commit/811bf693eb5b927ec5f8120b56b2ae92f5ba2734)) -* add some improvements to `CharacterCount` extension ([#2256](https://github.com/ueberdosis/tiptap/issues/2256)), fix [#1049](https://github.com/ueberdosis/tiptap/issues/1049), fix [#1550](https://github.com/ueberdosis/tiptap/issues/1550), fix [#1839](https://github.com/ueberdosis/tiptap/issues/1839), fix [#2245](https://github.com/ueberdosis/tiptap/issues/2245) ([5daa870](https://github.com/ueberdosis/tiptap/commit/5daa870b0906f0387fe07041681bc6f5b3774617)) -* add StarterKit extension ([21384fc](https://github.com/ueberdosis/tiptap/commit/21384fc7a66dd7d1e3849be52ae4ab9adc26cf4e)) -* Add support for autolink ([#2226](https://github.com/ueberdosis/tiptap/issues/2226)) ([3d68981](https://github.com/ueberdosis/tiptap/commit/3d68981b47d087fff40549d2143eb952fc9e0a50)) -* add support for checking for attributes in extendMarkRange ([ff7dd9b](https://github.com/ueberdosis/tiptap/commit/ff7dd9b919c7b5e0f845369c744116045bab5028)) -* add support for forwardRef component in reactRenderer ([#1690](https://github.com/ueberdosis/tiptap/issues/1690), fix [#1040](https://github.com/ueberdosis/tiptap/issues/1040)) ([d1f2ad2](https://github.com/ueberdosis/tiptap/commit/d1f2ad293f9df4004ee3fea5550a3921a03162f5)) -* add support for template strings in VueNodeViewRenderer, fix [#1987](https://github.com/ueberdosis/tiptap/issues/1987) ([7c98f80](https://github.com/ueberdosis/tiptap/commit/7c98f80547b8aff9d574732d20f8a3b565b9fdb2)) -* add tippyOptions prop ([9a56f66](https://github.com/ueberdosis/tiptap/commit/9a56f666a118ca7c59a6f1f67f40e6490e20d3b8)) -* add Tracker class ([a757716](https://github.com/ueberdosis/tiptap/commit/a757716f684e16c60bff5b58e508106f39368dc2)) -* add transaction to all events if possible, see [#1461](https://github.com/ueberdosis/tiptap/issues/1461) ([7f6ed0b](https://github.com/ueberdosis/tiptap/commit/7f6ed0b1c078985a1acee736bc605fb9f93b5af2)) -* add updateAttributes() command, deprecate updateNodeAttributes(), fix [#254](https://github.com/ueberdosis/tiptap/issues/254) ([aac32b4](https://github.com/ueberdosis/tiptap/commit/aac32b4df6a1dfd93500e09d3433fcd8acad5fbe)) -* Allow a rule to be skipped from the getAttributes callback in markPasteRule ([#1625](https://github.com/ueberdosis/tiptap/issues/1625)) ([9ffd58c](https://github.com/ueberdosis/tiptap/commit/9ffd58cf256bf3c0cd5a217b8933826c70b9b841)) -* Allow array of extensions for `enableInputRules` and `enablePasteRules` options ([#2119](https://github.com/ueberdosis/tiptap/issues/2119)) ([3158c37](https://github.com/ueberdosis/tiptap/commit/3158c37324420fb4c2414f47132e72a2836a63b4)) -* Allow individual Typography rules to be disabled ([#2449](https://github.com/ueberdosis/tiptap/issues/2449)) ([7ce6687](https://github.com/ueberdosis/tiptap/commit/7ce6687184576f4d3ca0953d27e729f00c758e07)) -* Allow multiple prefix characters to trigger a suggestion ([#2896](https://github.com/ueberdosis/tiptap/issues/2896)) ([482cb96](https://github.com/ueberdosis/tiptap/commit/482cb960d6a17acc575bb9c535e1e87f07f06686)) -* allow number for setTextSelection and insertContentAt ([2f7a6ad](https://github.com/ueberdosis/tiptap/commit/2f7a6adca54290b65467121e55838e5cfcf9ea8b)) -* Allow to use commands within InputRule and PasteRule ([#2035](https://github.com/ueberdosis/tiptap/issues/2035)) ([4303637](https://github.com/ueberdosis/tiptap/commit/4303637a786a164af0c7ffac17ae3621a8533c6e)) -* allow triggering suggestions without prefix space ([#1826](https://github.com/ueberdosis/tiptap/issues/1826), fix [#1384](https://github.com/ueberdosis/tiptap/issues/1384)) ([4dd0d6d](https://github.com/ueberdosis/tiptap/commit/4dd0d6d4dce20c78974bf53619a827f8ba1718e3)) -* allow wildcards when checking attributes in isActive, fix [#1752](https://github.com/ueberdosis/tiptap/issues/1752) ([64409ca](https://github.com/ueberdosis/tiptap/commit/64409cad66f281584a962e93317d8dd94ef6c5c0)) -* better types for Vue 2 ([23a152a](https://github.com/ueberdosis/tiptap/commit/23a152a8dfe35964d8ee39d1c6877550cdc4ce6a)) -* **core:** add nodePasteRule to core ([15123ee](https://github.com/ueberdosis/tiptap/commit/15123ee092261fe86352d491121804607e08e031)) -* escape code blocks on arrow down, fix [#1204](https://github.com/ueberdosis/tiptap/issues/1204) ([ffafff9](https://github.com/ueberdosis/tiptap/commit/ffafff9e365f9636fae4a67bb825d49b7d95cb94)) -* escape code blocks on triple enter, fix [#2195](https://github.com/ueberdosis/tiptap/issues/2195) ([d48fb24](https://github.com/ueberdosis/tiptap/commit/d48fb24ee2bd287f79e58f3fb59d8ebbda213240)) -* export isList, fix [#1326](https://github.com/ueberdosis/tiptap/issues/1326) ([2bd17c7](https://github.com/ueberdosis/tiptap/commit/2bd17c7dc66d2d2c3131bce9e5a82326a990080c)) -* export mark helpers ([313ab0e](https://github.com/ueberdosis/tiptap/commit/313ab0eac7d9209c279f0925c2372735882de56a)) -* expose hasAnchor to custom placeholder function ([#2470](https://github.com/ueberdosis/tiptap/issues/2470)) ([2fe6e21](https://github.com/ueberdosis/tiptap/commit/2fe6e2135d677dd5cfa9de7d9aa5100619986056)) -* expose node helpers to core ([6048f9b](https://github.com/ueberdosis/tiptap/commit/6048f9b31b996b305f704c4ae3ed176fa42eb943)) -* **extension-link:** :sparkles: add validate option to link extension ([23e67ad](https://github.com/ueberdosis/tiptap/commit/23e67adfa730df7364bc31220d0ed0e8ea522593)), closes [#2779](https://github.com/ueberdosis/tiptap/issues/2779) -* **extension/youtube:** :sparkles: new youtube embed extension ([#2814](https://github.com/ueberdosis/tiptap/issues/2814)) ([1c0554b](https://github.com/ueberdosis/tiptap/commit/1c0554b7c06d80145274353e58d56608b097fbe4)) -* **extension/youtube:** add paste handlers for youtube extension ([ec595ff](https://github.com/ueberdosis/tiptap/commit/ec595ff8037319efa10cea995c62442c3d8d3959)) -* Integrate input rules and paste rules into the core ([#1997](https://github.com/ueberdosis/tiptap/issues/1997)) ([723b955](https://github.com/ueberdosis/tiptap/commit/723b955cecc5c92c8aad897ce16c60fb62976571)) -* join lists on toggleList ([#2260](https://github.com/ueberdosis/tiptap/issues/2260)), fix [#1329](https://github.com/ueberdosis/tiptap/issues/1329) ([126ad72](https://github.com/ueberdosis/tiptap/commit/126ad722c7a1c4131fa332deb9f333798d4af056)) -* **package.json:** Add lint yarn script + make it a precondition to build all packages. ([54550b2](https://github.com/ueberdosis/tiptap/commit/54550b238617a1bb81516dd84061df1924fcd452)) -* parseHTML for attributes should return the value instead of an object now, fix [#1863](https://github.com/ueberdosis/tiptap/issues/1863) ([8a3b47a](https://github.com/ueberdosis/tiptap/commit/8a3b47a529d28b28b50d634c6ff69b8e5aad3080)) -* remove deprecated commands insertHTML, insertNode and insertText ([86d570f](https://github.com/ueberdosis/tiptap/commit/86d570fb79b89a061cf1a5374a377ed6d9bca49e)) -* remove keepInBounds ([d7282f1](https://github.com/ueberdosis/tiptap/commit/d7282f168bc6cfae4e1630d14bb8462bc135b254)) -* remove resize event handler ([9f64015](https://github.com/ueberdosis/tiptap/commit/9f64015157a83032d0d80bc0353efb529b56a342)) -* render wrapper element for inline node views as span, fix [#242](https://github.com/ueberdosis/tiptap/issues/242) ([bdb5d72](https://github.com/ueberdosis/tiptap/commit/bdb5d724956c0c757e29be38fb2c9dd85d8fd36b)) -* setHardBreak now keeps splittable marks by default, fix [#1934](https://github.com/ueberdosis/tiptap/issues/1934) ([377bbb1](https://github.com/ueberdosis/tiptap/commit/377bbb177d30923a0aa2a80654cc5cf87384dcf3)) -* **suggestions:** async items and filter support added ([40cefad](https://github.com/ueberdosis/tiptap/commit/40cefaddd027e75c5cf8900b5036c6623ed3bc75)) -* use tippy for floating menu ([54df2ce](https://github.com/ueberdosis/tiptap/commit/54df2ce077a4bac09c3f1d1eab8c68a09d8f8fa9)) +* add tiptap class ([614fc80](https://github.com/ueberdosis/tiptap/commit/614fc8082c376bf3c40a05c23ceda6b4a6fbf8d0)) -### Reverts -* Revert "bring back 1.20.0" ([59244c5](https://github.com/ueberdosis/tiptap/commit/59244c586d584483ddfafbda7bd4ef62efd2897e)) -* Revert "update package-lock.json" ([e63b987](https://github.com/ueberdosis/tiptap/commit/e63b987bb8bb88f694bc8d48c5a7a31e92d9723e)) -* Revert "Publish" ([9c38d27](https://github.com/ueberdosis/tiptap/commit/9c38d2713e6feac5645ad9c1bfc57abdbf054576)) -* Revert "feat: update lowlight to v2" ([38f3601](https://github.com/ueberdosis/tiptap/commit/38f3601e6f3918f940d1b60862a63f9f239f95b2)) -* Revert "update dev dependencies" ([a4d4097](https://github.com/ueberdosis/tiptap/commit/a4d409782761ce60e162a3e414a49f135c47c762)) -* Revert "add copy button" ([19d2909](https://github.com/ueberdosis/tiptap/commit/19d29092daa2a58a579ea71902f5b13ee7935d40)) -* Revert "use global namespace" ([0c9ce26](https://github.com/ueberdosis/tiptap/commit/0c9ce26c02c07d88a757c01b0a9d7f9e2b0b7502)) -* Revert "fix a bug for getting mark range, fix #156" ([d057d5d](https://github.com/ueberdosis/tiptap/commit/d057d5d7d9490b41220fdbf703c57eb7e4b89833)), closes [#156](https://github.com/ueberdosis/tiptap/issues/156) -* Revert "fix eslint warning" ([392f8a2](https://github.com/ueberdosis/tiptap/commit/392f8a20b3fa08e3875053719683dc885cb138e0)) -### BREAKING CHANGES +# [2.1.0-rc.4](https://github.com/ueberdosis/tiptap/compare/v2.1.0-rc.3...v2.1.0-rc.4) (2023-04-27) + + +### Bug Fixes + +* **link:** fix links autolinking when not needed ([#3989](https://github.com/ueberdosis/tiptap/issues/3989)) ([71946c1](https://github.com/ueberdosis/tiptap/commit/71946c18accf8a2e8192951de870f84e25f58ed5)) + + + + + +# [2.1.0-rc.3](https://github.com/ueberdosis/tiptap/compare/v2.1.0-rc.2...v2.1.0-rc.3) (2023-04-26) + + +### Bug Fixes + +* **core:** remove configure from extend functionality ([4af54da](https://github.com/ueberdosis/tiptap/commit/4af54da3e09c69c0b5326f9952d456436855914d)) + + + + + +# [2.1.0-rc.2](https://github.com/ueberdosis/tiptap/compare/v2.0.3...v2.1.0-rc.2) (2023-04-26) + + +### Bug Fixes + +* **extension-link:** fix link not being kept when pasting url with link ([#3975](https://github.com/ueberdosis/tiptap/issues/3975)) ([e7d7d49](https://github.com/ueberdosis/tiptap/commit/e7d7d496376c8c11e24c342e20bd179a6ea7dcee)) + + + +# [2.1.0-rc.1](https://github.com/ueberdosis/tiptap/compare/v2.1.0-rc.0...v2.1.0-rc.1) (2023-04-12) + + +### Bug Fixes + +* **bubble-menu:** fix debounce not working with collab/collaboration cursor ([#3956](https://github.com/ueberdosis/tiptap/issues/3956)) ([e8cef04](https://github.com/ueberdosis/tiptap/commit/e8cef0404b5039ec2657536976b8b31931afd337)) + + + +# [2.1.0-rc.0](https://github.com/ueberdosis/tiptap/compare/v2.0.2...v2.1.0-rc.0) (2023-04-05) + + +### Bug Fixes + +* clear nodes when cursor at start of empty isolating parent ([#3943](https://github.com/ueberdosis/tiptap/issues/3943)) ([7278ee2](https://github.com/ueberdosis/tiptap/commit/7278ee2b05de2f96efddf3b1dc3bfd3d52262cbb)) +* Update peerDependencies to fix lerna version tasks ([#3914](https://github.com/ueberdosis/tiptap/issues/3914)) ([0c1bba3](https://github.com/ueberdosis/tiptap/commit/0c1bba3137b535776bcef95ff3c55e13f5a2db46)) + + + + + + +# [2.1.0-rc.0](https://github.com/ueberdosis/tiptap/compare/v2.0.2...v2.1.0-rc.0) (2023-04-05) + + +### Bug Fixes + +* clear nodes when cursor at start of empty isolating parent ([#3943](https://github.com/ueberdosis/tiptap/issues/3943)) ([7278ee2](https://github.com/ueberdosis/tiptap/commit/7278ee2b05de2f96efddf3b1dc3bfd3d52262cbb)) +* Update peerDependencies to fix lerna version tasks ([#3914](https://github.com/ueberdosis/tiptap/issues/3914)) ([0c1bba3](https://github.com/ueberdosis/tiptap/commit/0c1bba3137b535776bcef95ff3c55e13f5a2db46)) +* **bubble-menu:** fix debounce not working with collab/collaboration cursor ([#3956](https://github.com/ueberdosis/tiptap/issues/3956)) ([a78f8cd](https://github.com/ueberdosis/tiptap/commit/a78f8cd9646008e4db938fa3c22b0714c8bb5849)) + + + + + +## [2.0.3](https://github.com/ueberdosis/tiptap/compare/v2.0.2...v2.0.3) (2023-04-13) + +### Bug Fixes + +* **bubble-menu:** fix debounce not working with collab/collaboration cursor ([#3956](https://github.com/ueberdosis/tiptap/issues/3956)) ([e8cef04](https://github.com/ueberdosis/tiptap/commit/e8cef0404b5039ec2657536976b8b31931afd337)) + + + + +## [2.0.2](https://github.com/ueberdosis/tiptap/compare/v2.0.1...v2.0.2) (2023-04-03) + + +### Bug Fixes + +* **react:** fix rebinding events not overwriting editor.on ([#3935](https://github.com/ueberdosis/tiptap/issues/3935)) ([64ab357](https://github.com/ueberdosis/tiptap/commit/64ab3570c1e86a65f5022793acb0292d8972dcd7)) + + +### Features + +* add box-shadow to collab demo ([c5496c1](https://github.com/ueberdosis/tiptap/commit/c5496c1b27783150dafb5ebdf6bda43648a46316)) +* landingpage demo ([#3925](https://github.com/ueberdosis/tiptap/issues/3925)) ([958925f](https://github.com/ueberdosis/tiptap/commit/958925f2560ca786cd0cf52b83b7ae51deb7dd77)) +* Tiptap collab demo styling ([87840b0](https://github.com/ueberdosis/tiptap/commit/87840b0f0821ca65d9f104d9c90512021aa70113)) + + + + + +## [2.0.1](https://github.com/ueberdosis/tiptap/compare/v2.0.0...v2.0.1) (2023-03-30) + + +### Bug Fixes -* **tiptap-extensions:** `CodeBlockHighlight` was importing the full `lowlight` libraries, including _all_ -syntax highlightning definitions from `highlight.js`. The new behavior changes the signature of -`CodeBlockHighlight` to accept an object with all syntax highlightning definitions. This means that -now the user of the library __MUST__ import languages themselves and tiptap will no longer -bundle the full `highlight.js` in itself. +* Update peerDependencies to fix lerna version tasks ([#3914](https://github.com/ueberdosis/tiptap/issues/3914)) ([0534f76](https://github.com/ueberdosis/tiptap/commit/0534f76401bf5399c01ca7f39d87f7221d91b4f7)) + +## [2.0.0](https://github.com/ueberdosis/tiptap/compare/tiptap@1.32.2...v2.0.0) (2023-03-29) + +## What's Changed +* Fix sending of emptystring class for Prosemirror decoration by @ascott18 in https://github.com/ueberdosis/tiptap/pull/1004 +* build(deps): bump actions/cache from v2.1.4 to v2.1.5 by @dependabot in https://github.com/ueberdosis/tiptap/pull/1024 +* build(deps): bump actions/upload-artifact from v2.2.2 to v2.2.3 by @dependabot in https://github.com/ueberdosis/tiptap/pull/1025 +* Add install instructions by @MarcelloTheArcane in https://github.com/ueberdosis/tiptap/pull/1196 +* Fix a small typo by @swanson in https://github.com/ueberdosis/tiptap/pull/1211 +* Add missing word by @swanson in https://github.com/ueberdosis/tiptap/pull/1216 +* Clarify table header documentation by @swanson in https://github.com/ueberdosis/tiptap/pull/1215 +* Typo fix by @swanson in https://github.com/ueberdosis/tiptap/pull/1217 +* Make Horizontal Rule compatible with Typography extension by @chrisarmstrong in https://github.com/ueberdosis/tiptap/pull/1241 +* Fix returning true/false in can().chain().run() by @Markario in https://github.com/ueberdosis/tiptap/pull/1252 +* [Docs] Improve example integration with Laravel Livewire by @iksaku in https://github.com/ueberdosis/tiptap/pull/1255 +* feat: better types for Vue 2 by @zcuric in https://github.com/ueberdosis/tiptap/pull/1253 +* Fix typo by @DannyFeliz in https://github.com/ueberdosis/tiptap/pull/1262 +* HorizontalRule is included in defaultExtensions by @Duncank in https://github.com/ueberdosis/tiptap/pull/1267 +* VueRenderer's ref is undefined when in production mode by @thechrisoshow in https://github.com/ueberdosis/tiptap/pull/1271 +* feat: expose node helpers by @zcuric in https://github.com/ueberdosis/tiptap/pull/1278 +* New Feature: Generate JSON from HTML by @hanspagel in https://github.com/ueberdosis/tiptap/pull/1273 +* feat: export mark helpers by @zcuric in https://github.com/ueberdosis/tiptap/pull/1301 +* When text align is default, don't add a style attribute by @robguthrie in https://github.com/ueberdosis/tiptap/pull/1251 +* docs: complete list of extensions with changed name by @Deckluhm in https://github.com/ueberdosis/tiptap/pull/1305 +* fix(core): Increment `i` in `defaultBlockAt` by @andreavaccari in https://github.com/ueberdosis/tiptap/pull/1315 +* Fix text-align extension url by @ralbear in https://github.com/ueberdosis/tiptap/pull/1325 +* docs: fix typo by @Priestch in https://github.com/ueberdosis/tiptap/pull/1339 +* Allow passing of DependencyList to useEditor by @YousefED in https://github.com/ueberdosis/tiptap/pull/1376 +* a small clerical error? by @akirarika in https://github.com/ueberdosis/tiptap/pull/1380 +* Make HTML in docs valid by @MoPaMo in https://github.com/ueberdosis/tiptap/pull/1381 +* Wording improvement by @jonathanmach in https://github.com/ueberdosis/tiptap/pull/1389 +* Prevent tiptap from creating duplicate style tags when injecting css by @mmachatschek in https://github.com/ueberdosis/tiptap/pull/1399 +* Adding type definition for result and removing the ts-nocheck by @sereneinserenade in https://github.com/ueberdosis/tiptap/pull/1419 +* Fix name of FloatingMenu by @shadow-light in https://github.com/ueberdosis/tiptap/pull/1429 +* New extensions: add subscript and superscript extensions (including docs and tests) by @hanspagel in https://github.com/ueberdosis/tiptap/pull/1404 +* Exclude superscript from subscript, and vice versa. by @BrianHung in https://github.com/ueberdosis/tiptap/pull/1436 +* Add keyboard shortcuts to toggle superscript and subscript marks. by @BrianHung in https://github.com/ueberdosis/tiptap/pull/1437 +* Make drop cursor default to regular caret color by @shadow-light in https://github.com/ueberdosis/tiptap/pull/1444 +* use forwardRef for react wrappers by @YousefED in https://github.com/ueberdosis/tiptap/pull/1452 +* Mention: Add text attribute by @tomhrtly in https://github.com/ueberdosis/tiptap/pull/1322 +* Fix removal of textStyle mark when any style resets by @bttger in https://github.com/ueberdosis/tiptap/pull/1465 +* Fix parsing of mention nodes by @shadow-light in https://github.com/ueberdosis/tiptap/pull/1471 +* Correct default for dropcursor color in docs by @shadow-light in https://github.com/ueberdosis/tiptap/pull/1479 +* Improve gapcursor docs by @carlobeltrame in https://github.com/ueberdosis/tiptap/pull/1497 +* VueRenderer documentation with version 3 by @Tazi0 in https://github.com/ueberdosis/tiptap/pull/1491 +* Update introduction.md by @phillduffy in https://github.com/ueberdosis/tiptap/pull/1509 +* Link to contribution guidelines in CONTRIBUTING.md by @robertvanhoesel in https://github.com/ueberdosis/tiptap/pull/1541 +* build(deps): bump actions/setup-node from 2.1.5 to 2.2.0 by @dependabot in https://github.com/ueberdosis/tiptap/pull/1544 +* export createTable by @YousefED in https://github.com/ueberdosis/tiptap/pull/1469 +* doc update: onSelection → onSelectionUpdate by @forresto in https://github.com/ueberdosis/tiptap/pull/1555 +* update task-item.ts nodeview to update data-checked by @BrianHung in https://github.com/ueberdosis/tiptap/pull/1567 +* Fix typo by @JavierMartinz in https://github.com/ueberdosis/tiptap/pull/1587 +* Replace node-sass with dart sass and fix deprecation warning by @mmachatschek in https://github.com/ueberdosis/tiptap/pull/1590 +* Readd russian history shortcuts by @mmachatschek in https://github.com/ueberdosis/tiptap/pull/1589 +* Fix custom start for ordered lists by @mmachatschek in https://github.com/ueberdosis/tiptap/pull/1594 +* Doc fix: Remove braces from isEmpty & isEditable by @WilliamIPark in https://github.com/ueberdosis/tiptap/pull/1599 +* Export NodeViewRendererOptions by @sibiraj-s in https://github.com/ueberdosis/tiptap/pull/1607 +* Update hostic-dom to fix style attributes by @sibiraj-s in https://github.com/ueberdosis/tiptap/pull/1618 +* fix: export text align extension options by @iamursky in https://github.com/ueberdosis/tiptap/pull/1592 +* fix: export starter kit extension options by @iamursky in https://github.com/ueberdosis/tiptap/pull/1593 +* Adding types to Linter and making the structure a bit easier by @sereneinserenade in https://github.com/ueberdosis/tiptap/pull/1492 +* Additional input rules for typography by @arthurmcgregor in https://github.com/ueberdosis/tiptap/pull/1624 +* chore: add repository for all packages.json by @iamandrewluca in https://github.com/ueberdosis/tiptap/pull/1628 +* Fix typo by @ValentaTomas in https://github.com/ueberdosis/tiptap/pull/1634 +* Change TextAlignOptions to interface (not type) by @arthurmcgregor in https://github.com/ueberdosis/tiptap/pull/1623 +* Allow a rule to be skipped from the getAttributes callback by @joevallender in https://github.com/ueberdosis/tiptap/pull/1625 +* Fix multi character suggest by @flaviouk in https://github.com/ueberdosis/tiptap/pull/1620 +* Provide more context to update function to enable fewer re-renders by @philippkuehn in https://github.com/ueberdosis/tiptap/pull/1648 +* Examples: Syntax highlighting for React by @hanspagel in https://github.com/ueberdosis/tiptap/pull/1583 +* Apply the correct regex in markPasteRule by @joevallender in https://github.com/ueberdosis/tiptap/pull/1671 +* Fix typo by @Spone in https://github.com/ueberdosis/tiptap/pull/1693 +* build(deps): bump actions/setup-node from 2.2.0 to 2.4.0 by @dependabot in https://github.com/ueberdosis/tiptap/pull/1697 +* fix: use correct state when doc changed externally by @dkrym in https://github.com/ueberdosis/tiptap/pull/1646 +* ✨ Add CreateNodeFromContentOptions to insertContent by @castroCrea in https://github.com/ueberdosis/tiptap/pull/1678 +* Use correct reference for options.editorProps by @robertvanhoesel in https://github.com/ueberdosis/tiptap/pull/1540 +* ✨ Add typography trademark by @castroCrea in https://github.com/ueberdosis/tiptap/pull/1699 +* Menu improvements by @philippkuehn in https://github.com/ueberdosis/tiptap/pull/1714 +* Docs: Disable history demo buttons when commands are not available by @domnantas in https://github.com/ueberdosis/tiptap/pull/1721 +* fix some react focus issues by @philippkuehn in https://github.com/ueberdosis/tiptap/pull/1724 +* Update alpine docs by @sibiraj-s in https://github.com/ueberdosis/tiptap/pull/1733 +* Packages: Add a new `Color` extension to set the text color by @hanspagel in https://github.com/ueberdosis/tiptap/pull/1744 +* docs: add color picker to color extension demo by @domnantas in https://github.com/ueberdosis/tiptap/pull/1790 +* Fix Editor Reactivity by @nVitius in https://github.com/ueberdosis/tiptap/pull/1804 +* Add missing comma in example by @carlobeltrame in https://github.com/ueberdosis/tiptap/pull/1849 +* Allow triggering suggestions without prefix space by @jkosir in https://github.com/ueberdosis/tiptap/pull/1826 +* fix: change `this.value` to `value` in the vue examples with v-model by @MiloLug in https://github.com/ueberdosis/tiptap/pull/1813 +* Fix: Don’t initialize tippy on requestAnimationFrame to avoid race conditions by @enriquecastl in https://github.com/ueberdosis/tiptap/pull/1820 +* ✨ Follow Ref on ForwardRef component in reactRenderer by @castroCrea in https://github.com/ueberdosis/tiptap/pull/1690 +* feat: add extendEmptyMarkRange option to mark commands by @philippkuehn in https://github.com/ueberdosis/tiptap/pull/1859 +* Include children in placeholder plugin by @nickdbush in https://github.com/ueberdosis/tiptap/pull/1416 +* Horizontal rule demo: add selected style by @cadars in https://github.com/ueberdosis/tiptap/pull/1848 +* feat: add getText() and generateText() methods (fix #1428) by @philippkuehn in https://github.com/ueberdosis/tiptap/pull/1875 +* Fix usage example of CollaborationCursor by @carlobeltrame in https://github.com/ueberdosis/tiptap/pull/1911 +* Add type for async items on suggestions (fix TS strict types complain) by @d8vjork in https://github.com/ueberdosis/tiptap/pull/1912 +* Fix: code-block-lowlight child extensions do not highlight code by @enriquecastl in https://github.com/ueberdosis/tiptap/pull/1917 +* Use pasteRegex in addPasteRules by @jvissers in https://github.com/ueberdosis/tiptap/pull/1922 +* Docs: Clear up Prosemirror EditorProps usage by @domnantas in https://github.com/ueberdosis/tiptap/pull/1918 +* Add enableCoreExtensions flag by @flaviouk in https://github.com/ueberdosis/tiptap/pull/1923 +* Docs: Update command names in upgrade guide by @jakedolan in https://github.com/ueberdosis/tiptap/pull/1906 +* Fix: nodeInputRule() support for group match by @nokola in https://github.com/ueberdosis/tiptap/pull/1574 +* Fix "destory" method in view plugins. by @KaneCohen in https://github.com/ueberdosis/tiptap/pull/1882 +* Fix 'Edit on Github' link url for examples in docs by @mmachatschek in https://github.com/ueberdosis/tiptap/pull/1929 +* New example for custom documents (to force a heading on the top) by @hanspagel in https://github.com/ueberdosis/tiptap/pull/1948 +* Added better types for event emitter by @HuiiBuh in https://github.com/ueberdosis/tiptap/pull/1959 +* Use ref to move contentDOM by @philippkuehn in https://github.com/ueberdosis/tiptap/pull/1960 +* fix: compatibility with lowlight v2 by @fengzilong in https://github.com/ueberdosis/tiptap/pull/1939 +* build(deps): bump actions/setup-node from 2.4.0 to 2.4.1 by @dependabot in https://github.com/ueberdosis/tiptap/pull/1978 +* Fix typo in hard-break.md by @davidkrijgsman in https://github.com/ueberdosis/tiptap/pull/1988 +* Added Next.js installation guide & express setup for React by @alb in https://github.com/ueberdosis/tiptap/pull/1984 +* Fixed typo in React installation guide by @alb in https://github.com/ueberdosis/tiptap/pull/1989 +* docs: update styling by @hzpeng57 in https://github.com/ueberdosis/tiptap/pull/1998 +* React collaboration demo by @svenadlung in https://github.com/ueberdosis/tiptap/pull/1991 +* Integrate input rules and paste rules into the core by @philippkuehn in https://github.com/ueberdosis/tiptap/pull/1997 +* Changing use of InputRule to textInputRule for Savvy example by @jakedolan in https://github.com/ueberdosis/tiptap/pull/2007 +* docs: correct the wording by @mittalyashu in https://github.com/ueberdosis/tiptap/pull/2012 +* Fix #2016 Image input rule by @nokola in https://github.com/ueberdosis/tiptap/pull/2020 +* Improve `ReactRenderer` types by @rfgamaral in https://github.com/ueberdosis/tiptap/pull/2011 +* Add `editor` dependency when registering `BubbleMenuPlugin` by @ValentaTomas in https://github.com/ueberdosis/tiptap/pull/2018 +* Allow to use commands within InputRule and PasteRule by @philippkuehn in https://github.com/ueberdosis/tiptap/pull/2035 +* build(deps): bump actions/checkout from 2.3.4 to 2.3.5 by @dependabot in https://github.com/ueberdosis/tiptap/pull/2051 +* Add extension storage by @philippkuehn in https://github.com/ueberdosis/tiptap/pull/2069 +* Separate drags from drops in stopEvent by @thatsjonsense in https://github.com/ueberdosis/tiptap/pull/2070 +* Add editor to items prop in suggestion plugin by @philippkuehn in https://github.com/ueberdosis/tiptap/pull/2082 +* Check node type above custom update fn by @thatsjonsense in https://github.com/ueberdosis/tiptap/pull/2081 +* Add savvy example tests by @donovanglover in https://github.com/ueberdosis/tiptap/pull/2043 +* Add unit tests for demos/src/Examples/Minimal/Vue by @AlexandruValeanu in https://github.com/ueberdosis/tiptap/pull/2047 +* Added tests for Menus example by @alb in https://github.com/ueberdosis/tiptap/pull/2052 +* Docs: Fixing onUpdate example by @chris-sev in https://github.com/ueberdosis/tiptap/pull/2084 +* Fix menu example in doc by @phoenixgao in https://github.com/ueberdosis/tiptap/pull/2089 +* Replace `defaultOptions` with `addOptions` by @philippkuehn in https://github.com/ueberdosis/tiptap/pull/2088 +* docs: fix typo by @Deckluhm in https://github.com/ueberdosis/tiptap/pull/2093 +* Use the new storage feature for the `CollaborationCursor` extension by @hanspagel in https://github.com/ueberdosis/tiptap/pull/2096 +* Improve behavior when using insertContent by @philippkuehn in https://github.com/ueberdosis/tiptap/pull/2147 +* build(deps): bump actions/checkout from 2.3.5 to 2.4.0 by @dependabot in https://github.com/ueberdosis/tiptap/pull/2145 +* Switch from hostic dom to zeed dom by @philippkuehn in https://github.com/ueberdosis/tiptap/pull/2151 +* fix typo in events.md by @millerrafi in https://github.com/ueberdosis/tiptap/pull/2152 +* update getJSON return type to JSONContent by @lecstor in https://github.com/ueberdosis/tiptap/pull/2153 +* Update image.md by @georgemandis in https://github.com/ueberdosis/tiptap/pull/2154 +* update zeed dom by @floriankrueger in https://github.com/ueberdosis/tiptap/pull/2155 +* Floating menu - remove composition check by @dkrym in https://github.com/ueberdosis/tiptap/pull/2137 +* Remove console.log statement from codeblock-lowlight-plugin file by @enriquecastl in https://github.com/ueberdosis/tiptap/pull/2168 +* Ignore iOS mutations when unfocused by @thatsjonsense in https://github.com/ueberdosis/tiptap/pull/2170 +* feat: Allow array of extensions for `enableInputRules` and `enablePasteRules` by @aguingand in https://github.com/ueberdosis/tiptap/pull/2119 +* Export type ColorOptions by @apaar97 in https://github.com/ueberdosis/tiptap/pull/2180 +* Split vue and react variant for interactivity demo by @svenadlung in https://github.com/ueberdosis/tiptap/pull/2186 +* Add `setEditable` to the Editor documentation by @floriankrueger in https://github.com/ueberdosis/tiptap/pull/2199 +* Bump actions/cache from 2.1.5 to 2.1.7 by @dependabot in https://github.com/ueberdosis/tiptap/pull/2207 +* Bump actions/setup-node from 2.4.1 to 2.5.0 by @dependabot in https://github.com/ueberdosis/tiptap/pull/2208 +* feat(ReactNodeViewRenderer): Add `as` option and pass through to ReactRenderer by @jessicalc in https://github.com/ueberdosis/tiptap/pull/2213 +* Add support for autolink by @philippkuehn in https://github.com/ueberdosis/tiptap/pull/2226 +* initialize autofocus selection in `createView` by @BrianHung in https://github.com/ueberdosis/tiptap/pull/2212 +* Use named exports instead of default exports by @philippkuehn in https://github.com/ueberdosis/tiptap/pull/2238 +* Svelte Example: remove wrong `type="context"` tag by @duruer in https://github.com/ueberdosis/tiptap/pull/2240 +* A brand new `CharacterCount` extension by @philippkuehn in https://github.com/ueberdosis/tiptap/pull/2256 +* join lists on toggleList by @philippkuehn in https://github.com/ueberdosis/tiptap/pull/2260 +* build(deps): bump actions/upload-artifact from 2.2.3 to 2.3.0 by @dependabot in https://github.com/ueberdosis/tiptap/pull/2269 +* fix: show FloatingMenu by default only if focused by @jaulz in https://github.com/ueberdosis/tiptap/pull/2275 +* Improve backspace handling by @philippkuehn in https://github.com/ueberdosis/tiptap/pull/2284 +* Make sure editor is available on first render by @ryanto in https://github.com/ueberdosis/tiptap/pull/2282 +* fix typo in floating menu docs by @nucleartux in https://github.com/ueberdosis/tiptap/pull/2290 +* Add setup for plain js demos by @philippkuehn in https://github.com/ueberdosis/tiptap/pull/2288 +* build(deps): bump actions/upload-artifact from 2.3.0 to 2.3.1 by @dependabot in https://github.com/ueberdosis/tiptap/pull/2300 +* Remove `element.current` from `useEffect` in `BubbleMenu` and `FloatingMenu` by @ValentaTomas in https://github.com/ueberdosis/tiptap/pull/2297 +* Using vue 2 and 3 when passing props to VueRenderer in Mention plugin by @domstrueboy in https://github.com/ueberdosis/tiptap/pull/2319 +* Fix typo in readme by @stijndcl in https://github.com/ueberdosis/tiptap/pull/2333 +* Fix typos in typescript.md by @hatefrad in https://github.com/ueberdosis/tiptap/pull/2339 +* typo in docs/api/editor.md by @milahu in https://github.com/ueberdosis/tiptap/pull/2338 +* Added setup script syntax to Vue 3 install docs by @NuroDev in https://github.com/ueberdosis/tiptap/pull/2324 +* build(deps): bump actions/setup-node from 2.5.0 to 2.5.1 by @dependabot in https://github.com/ueberdosis/tiptap/pull/2343 +* change reactrenderer component type definition by @lukesmurray in https://github.com/ueberdosis/tiptap/pull/2327 +* Export type FontFamilyOptions by @apaar97 in https://github.com/ueberdosis/tiptap/pull/2345 +* Update vue3.md Grammar Error In Docs by @Aiyush-G in https://github.com/ueberdosis/tiptap/pull/2349 +* Fix typo in contributing.md by @webri in https://github.com/ueberdosis/tiptap/pull/2352 +* Vue3 CLI doesn't have "npm run dev" by @Aiyush-G in https://github.com/ueberdosis/tiptap/pull/2350 +* fix: export type `Level` for external use by @webri in https://github.com/ueberdosis/tiptap/pull/2354 +* add way to cancel inputrules and pasterules by @philippkuehn in https://github.com/ueberdosis/tiptap/pull/2368 +* Mark `@tiptap/react` and `@tiptap/core` as side effect free by @dcastil in https://github.com/ueberdosis/tiptap/pull/2361 +* Nuxt specific corrections by @gsqrt2 in https://github.com/ueberdosis/tiptap/pull/2410 +* build(deps): bump nanoid from 3.1.30 to 3.2.0 by @dependabot in https://github.com/ueberdosis/tiptap/pull/2419 +* build(deps): bump node-fetch from 2.6.6 to 2.6.7 by @dependabot in https://github.com/ueberdosis/tiptap/pull/2424 +* fix: use toggleHeader from prosemirror-tables by @jpobley in https://github.com/ueberdosis/tiptap/pull/2412 +* docs(nodes/image/react): remove v-if by @strdr4605 in https://github.com/ueberdosis/tiptap/pull/2461 +* Fix: Typo in Focus Command Documentation of Editor by @AngadSethi in https://github.com/ueberdosis/tiptap/pull/2476 +* expose hasAnchor to custom placeholder function by @YousefED in https://github.com/ueberdosis/tiptap/pull/2470 +* Add key bindings for uppercase letters for bold, italic and underline by @mejo- in https://github.com/ueberdosis/tiptap/pull/2478 +* Allow individual Typography rules to be disabled by @rfgamaral in https://github.com/ueberdosis/tiptap/pull/2449 +* Docs/toc undo fix by @codemzy in https://github.com/ueberdosis/tiptap/pull/2484 +* build(deps): bump nanoid from 3.1.30 to 3.2.0 in /demos by @dependabot in https://github.com/ueberdosis/tiptap/pull/2480 +* chore: added visual studio code debugging launch options by @bdbch in https://github.com/ueberdosis/tiptap/pull/2695 +* fix: don't override behaviour of Home / End in pc keymap by @scottsidwell in https://github.com/ueberdosis/tiptap/pull/2691 +* fix: Mark the bubble/floating menu extensions as side effect free by @rfgamaral in https://github.com/ueberdosis/tiptap/pull/2677 +* build(deps-dev): bump minimist from 1.2.5 to 1.2.6 by @dependabot in https://github.com/ueberdosis/tiptap/pull/2667 +* build(deps): bump minimist from 1.2.5 to 1.2.6 in /demos by @dependabot in https://github.com/ueberdosis/tiptap/pull/2672 +* fix: prevent suggestions from being active when editor is readonly by @scottsidwell in https://github.com/ueberdosis/tiptap/pull/2692 +* fix: Allow tippyOptions.getReferenceClientRect in bubble menu to be overridden by @fleon in https://github.com/ueberdosis/tiptap/pull/2668 +* fix: allow [] as a prefix for task items by @bdbch in https://github.com/ueberdosis/tiptap/pull/2698 +* fix: improve Vue nodeViewProps typing by @DanSnow in https://github.com/ueberdosis/tiptap/pull/2681 +* fix: remove extension-text-style from character-cout peer dependencies by @pradel in https://github.com/ueberdosis/tiptap/pull/2696 +* fix(extension-link): prevent parsing `javascript:` pseudo-protocol by @phenax in https://github.com/ueberdosis/tiptap/pull/2646 +* build(deps): bump actions/cache from 2.1.7 to 3.0.2 by @dependabot in https://github.com/ueberdosis/tiptap/pull/2701 +* build(deps): bump actions/checkout from 2.4.0 to 3.0.0 by @dependabot in https://github.com/ueberdosis/tiptap/pull/2699 +* build(deps): bump actions/upload-artifact from 2.3.1 to 3.0.0 by @dependabot in https://github.com/ueberdosis/tiptap/pull/2700 +* build(deps): bump actions/setup-node from 2.5.1 to 3.1.1 by @dependabot in https://github.com/ueberdosis/tiptap/pull/2705 +* Add support for React 18 by @dcastil in https://github.com/ueberdosis/tiptap/pull/2676 +* fix broken GuideContent demos not rendering because of unexpected use… by @bdbch in https://github.com/ueberdosis/tiptap/pull/2709 +* Docs: fix file names in PHP installation by @aguingand in https://github.com/ueberdosis/tiptap/pull/2644 +* Add support for CSS Modules by @XAHTEP26 in https://github.com/ueberdosis/tiptap/pull/2723 +* Use vitejs/plugin-react and include react dependencies by @svenadlung in https://github.com/ueberdosis/tiptap/pull/2732 +* build(deps-dev): bump minimist from 1.2.5 to 1.2.6 by @dependabot in https://github.com/ueberdosis/tiptap/pull/2725 +* build(deps): bump actions/checkout from 3.0.0 to 3.0.2 by @dependabot in https://github.com/ueberdosis/tiptap/pull/2727 +* feat: Add `onBeforeStart` and `onBeforeUpdate` handlers to the render function by @rfgamaral in https://github.com/ueberdosis/tiptap/pull/2628 +* feat: Add a generic type for suggestion items by @rfgamaral in https://github.com/ueberdosis/tiptap/pull/2610 +* Reduce bundle size of @tiptap/extension-table package by @enriquecastl in https://github.com/ueberdosis/tiptap/pull/2622 +* Update Suggestion package.json by @dphuang2 in https://github.com/ueberdosis/tiptap/pull/2739 +* fix: Support inline nodes with content in @tiptap/suggestion by @thatsjonsense in https://github.com/ueberdosis/tiptap/pull/2648 +* Allow class attribute through setLink() by @Ken-vdE in https://github.com/ueberdosis/tiptap/pull/2758 +* update people by @patrickbaber in https://github.com/ueberdosis/tiptap/pull/2776 +* fix: properly calculate setDragImage position by @dilizarov in https://github.com/ueberdosis/tiptap/pull/2768 +* Ensure VueNodeViewRenderer will use Editor's Global Vue Instance by @ralphschindler in https://github.com/ueberdosis/tiptap/pull/2604 +* refactor(global): remove yarn in favor for npm by @bdbch in https://github.com/ueberdosis/tiptap/pull/2775 +* add support for CSP nonces in createStyleTag by @fekle in https://github.com/ueberdosis/tiptap/pull/2601 +* add validate option to link extension by @bdbch in https://github.com/ueberdosis/tiptap/pull/2781 +* Cypress tests for examples by @bdbch in https://github.com/ueberdosis/tiptap/pull/2777 +* build(deps): bump actions/setup-node from 3.1.1 to 3.2.0 by @dependabot in https://github.com/ueberdosis/tiptap/pull/2793 +* fix: extendMarkRange doesn't work when cursor is at end of mark, despite isActive() returning true for that mark by @JDinABox in https://github.com/ueberdosis/tiptap/pull/2717 +* Expose "range" to textSerializer. Used in "getTextBetween" by @panta82 in https://github.com/ueberdosis/tiptap/pull/2684 +* Export `getTextSerializersFromSchema` helper, and fix typo in its name by @sjdemartini in https://github.com/ueberdosis/tiptap/pull/2750 +* fix: disable broken tests for experiements with further todo message by @bdbch in https://github.com/ueberdosis/tiptap/pull/2808 +* Add `className` option and pass through to ReactRenderer by @anton-liubushkin in https://github.com/ueberdosis/tiptap/pull/2794 +* Fix InputRule regex matcher ignoring non-text leaflets in textBefore by @bdbch in https://github.com/ueberdosis/tiptap/pull/2807 +* Add option to allow task items to be checkable (uncontrolled) by @kaspnilsson in https://github.com/ueberdosis/tiptap/pull/2474 +* feat: Required attributes by @thatsjonsense in https://github.com/ueberdosis/tiptap/pull/2640 +* Update team by @montapro in https://github.com/ueberdosis/tiptap/pull/2791 +* fix: Only trigger image input rule at the start or with a preceding space by @rfgamaral in https://github.com/ueberdosis/tiptap/pull/2830 +* In Vue 2 VueRenderer, only Vue.extend() non-VueConstructor arguments by @ralphschindler in https://github.com/ueberdosis/tiptap/pull/2824 +* fix(suggestion): :bug: make clientrect prop optional by @bdbch in https://github.com/ueberdosis/tiptap/pull/2813 +* build(deps): bump actions/cache from 3.0.2 to 3.0.3 by @dependabot in https://github.com/ueberdosis/tiptap/pull/2851 +* Fixed(vue-2): `Avoid mutating a prop directly` error message to reproduce by @HondryTravis in https://github.com/ueberdosis/tiptap/pull/2834 +* Add support for custom protocols in extension-link by @shaunabanana in https://github.com/ueberdosis/tiptap/pull/2832 +* fix(textStyle): Null-safe parseHTML getting no color/fontFamily from HTMLElement styles by @d8vjork in https://github.com/ueberdosis/tiptap/pull/2825 +* build(deps): bump actions/upload-artifact from 3.0.0 to 3.1.0 by @dependabot in https://github.com/ueberdosis/tiptap/pull/2820 +* Declare lowlight as a peerDependency in `@tiptap/extension-code-block-lowlight` by @enriquecastl in https://github.com/ueberdosis/tiptap/pull/2625 +* add precommit hook for linting and automatic eslint fixes + update eslint packages by @bdbch in https://github.com/ueberdosis/tiptap/pull/2862 +* Adding missing extensions to docs in https://tiptap.dev/api/extensions by @Lior539 in https://github.com/ueberdosis/tiptap/pull/2856 +* docs(docs): add missing documentation for commands by @bdbch in https://github.com/ueberdosis/tiptap/pull/2861 +* refactor: use index files for imports to simplify the export flow by @bdbch in https://github.com/ueberdosis/tiptap/pull/2870 +* feat(extension/youtube): :sparkles: new youtube embed extension by @bdbch in https://github.com/ueberdosis/tiptap/pull/2814 +* build(deps): bump actions/cache from 3.0.3 to 3.0.4 by @dependabot in https://github.com/ueberdosis/tiptap/pull/2877 +* build(deps): bump actions/setup-node from 3.2.0 to 3.3.0 by @dependabot in https://github.com/ueberdosis/tiptap/pull/2878 +* chore: migrate to new versions of prosemirror packages by @bdbch in https://github.com/ueberdosis/tiptap/pull/2854 +* docs: improve docs for youtube extension by @svenadlung in https://github.com/ueberdosis/tiptap/pull/2902 +* Allow setting `whiteSpace` style for `NodeViewWrapper` & `NodeViewContent` by @EvitanRelta in https://github.com/ueberdosis/tiptap/pull/2884 +* refactor(maintainment): set dependency versions for prosemirror and y… by @bdbch in https://github.com/ueberdosis/tiptap/pull/2904 +* feat: Allow multiple prefix characters to trigger a suggestion by @rfgamaral in https://github.com/ueberdosis/tiptap/pull/2896 +* fix: editor don't has contentComponent attribute when suggestion onUp… by @Young6118 in https://github.com/ueberdosis/tiptap/pull/2916 +* Fix state update after component unmounted by @SavKS in https://github.com/ueberdosis/tiptap/pull/2857 +* docs: fix livewire attribute by @ccchapman in https://github.com/ueberdosis/tiptap/pull/2928 +* build(deps): bump parse-url from 6.0.0 to 6.0.2 by @dependabot in https://github.com/ueberdosis/tiptap/pull/2961 +* fix(core): only respect text of node before current position (#2937) by @svenadlung in https://github.com/ueberdosis/tiptap/pull/2941 +* chore: lint only staged files by @ahhshm in https://github.com/ueberdosis/tiptap/pull/2957 +* fix(core): dont use selection for setContent replacement by @bdbch in https://github.com/ueberdosis/tiptap/pull/2934 +* refactor: remove duplicated function by @ahhshm in https://github.com/ueberdosis/tiptap/pull/2956 +* docs(figure): pass an object to `nodeInputRule` by @ahhshm in https://github.com/ueberdosis/tiptap/pull/2954 +* docs: update alpine installation by @patrickbaber in https://github.com/ueberdosis/tiptap/pull/3081 +* docs(extensions): mention community extensions and discussion thread by @sereneinserenade in https://github.com/ueberdosis/tiptap/pull/2991 +* build(deps-dev): bump svelte from 3.48.0 to 3.49.0 in /demos by @dependabot in https://github.com/ueberdosis/tiptap/pull/2992 +* build(deps-dev): bump svelte from 3.48.0 to 3.49.0 by @dependabot in https://github.com/ueberdosis/tiptap/pull/2993 +* fix(core): isNodeSelection, isTextSelection not always false by @kivikakk in https://github.com/ueberdosis/tiptap/pull/3089 +* build(deps): bump actions/setup-node from 3.3.0 to 3.4.1 by @dependabot in https://github.com/ueberdosis/tiptap/pull/2998 +* build(deps): bump terser from 5.14.1 to 5.14.2 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3009 +* build(deps): bump actions/cache from 3.0.4 to 3.0.7 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3087 +* Fix pasteRulesPlugin always adding one extra character to text range by @Billiam in https://github.com/ueberdosis/tiptap/pull/2968 +* fix: let StarterKit be imported as common js module via named import by @sipec in https://github.com/ueberdosis/tiptap/pull/2967 +* fix(core): createCan command props shouldn't try dispatch (#3025) by @kivikakk in https://github.com/ueberdosis/tiptap/pull/3026 +* build(deps): bump actions/cache from 3.0.7 to 3.0.8 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3112 +* fix(core): setNodeSelection should not clamp pos by Selection.atStart/atEnd by @kivikakk in https://github.com/ueberdosis/tiptap/pull/3091 +* Make Suggestion extension use view.dom instead of document by @Faleij in https://github.com/ueberdosis/tiptap/pull/3093 +* fix(core): make setEditable trigger onUpdate function by @bdbch in https://github.com/ueberdosis/tiptap/pull/2935 +* fix: fix React Node View render problem in React 18 by @Darmody in https://github.com/ueberdosis/tiptap/pull/2985 +* feature(core): add exit handling for marks by @bdbch in https://github.com/ueberdosis/tiptap/pull/2925 +* build(deps-dev): bump vite from 2.9.12 to 2.9.13 in /demos by @dependabot in https://github.com/ueberdosis/tiptap/pull/3141 +* build(deps-dev): bump vite from 2.9.12 to 2.9.13 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3145 +* fix: vue inject grammar warning by @zhxqc in https://github.com/ueberdosis/tiptap/pull/3144 +* fix(core): make setEditable trigger all 'update' listeners by @Rhys-T in https://github.com/ueberdosis/tiptap/pull/3140 +* fix: Typo by @NagariaHussain in https://github.com/ueberdosis/tiptap/pull/3132 +* docs: fix naming by @masl in https://github.com/ueberdosis/tiptap/pull/3151 +* Include bubble menu element when checking if the editor view still has focus by @StefKors in https://github.com/ueberdosis/tiptap/pull/3150 +* Fix typo in docs by @carlobeltrame in https://github.com/ueberdosis/tiptap/pull/3162 +* fix(extension-code-block-lowlight): Bump lowlight to 2.7.0, remove outdated @types by @tarngerine in https://github.com/ueberdosis/tiptap/pull/3002 +* fix(core): insert PasteRule Node at matched position (#2942) by @edlb in https://github.com/ueberdosis/tiptap/pull/2943 +* add-empty-editor-class-to-root-div by @BrianHung in https://github.com/ueberdosis/tiptap/pull/2665 +* build(deps): bump parse-path from 4.0.4 to 5.0.0 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3178 +* fix: move React `flushSync` to microtask by @sampi in https://github.com/ueberdosis/tiptap/pull/3188 +* Fix bubble menu and floating menu being available when editor is not editable by @bdbch in https://github.com/ueberdosis/tiptap/pull/3195 +* feat: Add alias condition to code-block-lowlight by @dngwoodo in https://github.com/ueberdosis/tiptap/pull/3155 +* feat(extension-typography): add servicemark input rule by @svenadlung in https://github.com/ueberdosis/tiptap/pull/3220 +* fix(types): fix link and table type errors by @johnfraney in https://github.com/ueberdosis/tiptap/pull/3208 +* test: fix failing test by @svenadlung in https://github.com/ueberdosis/tiptap/pull/3230 +* feat(extension-link): Change autolink to only apply after breaking a word by @C-Hess in https://github.com/ueberdosis/tiptap/pull/3232 +* chore(maintainment): :rocket: update prosemirror packages by @bdbch in https://github.com/ueberdosis/tiptap/pull/3237 +* fix(core): Can() does not work for setting marks by @C-Hess in https://github.com/ueberdosis/tiptap/pull/3223 +* Ensure text blocks exist before referencing them by @ScopeyNZ in https://github.com/ueberdosis/tiptap/pull/3251 +* fix(core): InputRules does not work for ranges containing multiple text nodes by @hamflx in https://github.com/ueberdosis/tiptap/pull/3205 +* fix(core) - support attributes being null/undefined by @albertogiunta in https://github.com/ueberdosis/tiptap/pull/3245 +* fix: set default allowedPrefixes null by @Matrixbirds in https://github.com/ueberdosis/tiptap/pull/3239 +* fix(extension/link): fix last word value being undefined by @bdbch in https://github.com/ueberdosis/tiptap/pull/3258 +* build(deps): bump d3-color from 3.0.1 to 3.1.0 in /demos by @dependabot in https://github.com/ueberdosis/tiptap/pull/3260 +* docs: link YouTube node docs to proper GitHub url by @nielslanting in https://github.com/ueberdosis/tiptap/pull/3283 +* fix: typo in docs by @danielyuenhx in https://github.com/ueberdosis/tiptap/pull/3265 +* Fixed dragged text not being deleted after drop on another editor by @LuchoCateura in https://github.com/ueberdosis/tiptap/pull/3279 +* Fixed using both color and highlight together by @nkonev in https://github.com/ueberdosis/tiptap/pull/3311 +* Cleanup linkifyjs when the editor is destroyed by @educastellano in https://github.com/ueberdosis/tiptap/pull/3316 +* Feature/youtube parameters by @LuchoCateura in https://github.com/ueberdosis/tiptap/pull/3307 +* Fix installation and examples link by @catalinmiron in https://github.com/ueberdosis/tiptap/pull/3298 +* fix(docs): typo by @Calvein in https://github.com/ueberdosis/tiptap/pull/3362 +* fix(extension/placeholder): Resolve placeholder performance issues by @C-Hess in https://github.com/ueberdosis/tiptap/pull/3361 +* build(deps): bump parse-url from 7.0.2 to 8.1.0 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3384 +* refactor(extension/bubble-menu): add debounce to bubble menu updates by @bdbch in https://github.com/ueberdosis/tiptap/pull/3385 +* build(deps): bump actions/setup-node from 3.4.1 to 3.5.1 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3318 +* docs: Fix typos in CHANGELOG.md by @rvrvrv in https://github.com/ueberdosis/tiptap/pull/3328 +* build(deps): bump actions/cache from 3.0.8 to 3.0.11 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3317 +* fix: remove blur event listener from tippy element (#3365) by @MihirGH in https://github.com/ueberdosis/tiptap/pull/3366 +* fixes typo in suggestion.ts by @alejandrogarciasalas in https://github.com/ueberdosis/tiptap/pull/3386 +* docs(svelte): fix link to get started with svelte by @taismassaro in https://github.com/ueberdosis/tiptap/pull/3396 +* build(deps): bump loader-utils from 2.0.2 to 2.0.3 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3395 +* Update jobs.md by @montapro in https://github.com/ueberdosis/tiptap/pull/3432 +* extension/table: Fix prosemirror-tables dependency not using a correct namespace by @bdbch in https://github.com/ueberdosis/tiptap/pull/3448 +* typo: custom-extensions.md completely by @williamsk91 in https://github.com/ueberdosis/tiptap/pull/3447 +* Fix #3435 - CommonJS and ESM loading confusion by @tomi-bigpi in https://github.com/ueberdosis/tiptap/pull/3436 +* build(deps): bump loader-utils from 2.0.3 to 2.0.4 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3426 +* Fix cursor not following to new node when using a react node view by @ruipserra in https://github.com/ueberdosis/tiptap/pull/3331 +* fix(core): implement deleteCurrentNode command & fix node joining on Delete key by @bdbch in https://github.com/ueberdosis/tiptap/pull/3192 +* fix(link): allow to unset target attribute by @dargmuesli in https://github.com/ueberdosis/tiptap/pull/3425 +* feat(commands): add joinUp and joinDown command & refactor join command code by @bdbch in https://github.com/ueberdosis/tiptap/pull/3455 +* docs: rotate demo rooms by @patrickbaber in https://github.com/ueberdosis/tiptap/pull/3475 +* Draft: Moves all prosemirror deps to peerDependencies & devDependencies by @janthurau in https://github.com/ueberdosis/tiptap/pull/3487 +* fix(extension-bubble-menu): don't debounce without valid selection by @svenadlung in https://github.com/ueberdosis/tiptap/pull/3501 +* refactor(extension-youtube): rename utility function name by @svenadlung in https://github.com/ueberdosis/tiptap/pull/3498 +* Check if url is valid before creating YouTube player by @umgustavo in https://github.com/ueberdosis/tiptap/pull/3484 +* Fix docs menus.md missing word by @kandros in https://github.com/ueberdosis/tiptap/pull/3457 +* build(deps): bump minimatch from 3.0.4 to 3.1.2 in /demos by @dependabot in https://github.com/ueberdosis/tiptap/pull/3489 +* Fix: custom text serializers should override text serializers defined in the schema by @tovaschreier in https://github.com/ueberdosis/tiptap/pull/3546 +* Update sink-list-item.md by @vuau in https://github.com/ueberdosis/tiptap/pull/3629 +* 🧹 Allow `editor.setEditable` to omit updates by @ZaymonFC in https://github.com/ueberdosis/tiptap/pull/3301 +* Change Build Process to Lerna + tsup & prepare for prosemirror-meta package by @bdbch in https://github.com/ueberdosis/tiptap/pull/3555 +* fix(typo): typescript.md by @N0N1m3 in https://github.com/ueberdosis/tiptap/pull/3657 +* Update schema.md by @matrei in https://github.com/ueberdosis/tiptap/pull/3645 +* New Feature: Prosemirror Meta Package by @bdbch in https://github.com/ueberdosis/tiptap/pull/3556 +* Added CSS Required for Setup by @james-william-r in https://github.com/ueberdosis/tiptap/pull/3711 +* Update installation guides by @svenadlung in https://github.com/ueberdosis/tiptap/pull/3698 +* Make y-prosemirror a peer dependency (extension-collaboration) by @svenadlung in https://github.com/ueberdosis/tiptap/pull/3697 +* Remove lodash types, replace pm deps (extension-bubble-menu) by @svenadlung in https://github.com/ueberdosis/tiptap/pull/3696 +* Remove lodash dependencies in extension-floating-menu by @svenadlung in https://github.com/ueberdosis/tiptap/pull/3695 +* build(deps): bump cypress-io/github-action from 4.2.0 to 5.0.8 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3707 +* build(deps): bump http-cache-semantics from 4.1.0 to 4.1.1 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3687 +* Move back from tsup/esbuild to rollup by @bdbch in https://github.com/ueberdosis/tiptap/pull/3720 +* fix: Draggable nodes should respect drag handles by @matthewmullin01 in https://github.com/ueberdosis/tiptap/pull/3677 +* build(deps): bump actions/cache from 3.0.11 to 3.2.5 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3741 +* build(deps): bump act10ns/slack from 1 to 2 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3404 +* build(deps): bump json5 from 1.0.1 to 1.0.2 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3605 +* build(deps): bump json5 from 2.2.1 to 2.2.3 in /demos by @dependabot in https://github.com/ueberdosis/tiptap/pull/3607 +* build(deps): bump actions/checkout from 3.0.2 to 3.3.0 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3609 +* build(deps): bump actions/upload-artifact from 3.1.0 to 3.1.2 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3610 +* build(deps): bump actions/setup-node from 3.5.1 to 3.6.0 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3613 +* Update regex to exclude channel URL unfurling by @JustMaier in https://github.com/ueberdosis/tiptap/pull/3750 +* Fix type for BubbleMenu prop pluginKey by @rumbcam in https://github.com/ueberdosis/tiptap/pull/3678 +* Extend `nodePasteRule` `find` type to most generic `PasteRuleFinder` by @jiegillet in https://github.com/ueberdosis/tiptap/pull/3759 +* fix(extension-link): Click handler opens selected link instead of clicked link by @jmtaber129 in https://github.com/ueberdosis/tiptap/pull/3732 +* fix(typography): dont create fractions in the middle of a string by @bdbch in https://github.com/ueberdosis/tiptap/pull/3762 +* Use Tailwind CDN direclty? by @RicoTrevisan in https://github.com/ueberdosis/tiptap/pull/3643 +* fix: override schema text serializers if provided in getText options by @harrisonlo in https://github.com/ueberdosis/tiptap/pull/3672 +* chore: add eslintcache by @Simon-He95 in https://github.com/ueberdosis/tiptap/pull/3525 +* document removing or overriding link attributes by @epelc in https://github.com/ueberdosis/tiptap/pull/3576 +* Add onFirstRender callback option by @Flamenco in https://github.com/ueberdosis/tiptap/pull/3600 +* Add Plugin Key to placeholder component. by @tazirahmb in https://github.com/ueberdosis/tiptap/pull/3652 +* Export `createNodeFromContent` and other missing helpers by @jacksleight in https://github.com/ueberdosis/tiptap/pull/3558 +* fix: Queue flushSync call by @kylealwyn in https://github.com/ueberdosis/tiptap/pull/3533 +* build(deps): bump cypress-io/github-action from 5.0.8 to 5.0.9 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3766 +* feat: #3540 Ability to preserve marks on lists by @gethari in https://github.com/ueberdosis/tiptap/pull/3541 +* Move y-prosemirror to peer-deps by @svenadlung in https://github.com/ueberdosis/tiptap/pull/3763 +* fix: #3773 - Array for content breaks editor by @gethari in https://github.com/ueberdosis/tiptap/pull/3786 +* Docs Update for Installation instructions for PHP Livewire by @peterfox in https://github.com/ueberdosis/tiptap/pull/3618 +* add optionalSlashSlash to protocol options by @taras-turchenko-moc in https://github.com/ueberdosis/tiptap/pull/3675 +* fix(core): allow insertContentAt and insertContent text node arrays by @bdbch in https://github.com/ueberdosis/tiptap/pull/3790 +* chore: allow new ReactComponentContent components to be created by @bdbch in https://github.com/ueberdosis/tiptap/pull/3782 +* fix(react): reset initialized when editorcontent is unmounting by @bdbch in https://github.com/ueberdosis/tiptap/pull/3781 +* docs: add extension cli note to contributing docs by @bdbch in https://github.com/ueberdosis/tiptap/pull/3793 +* fix: update typings for node view decorations by @bdbch in https://github.com/ueberdosis/tiptap/pull/3783 +* build(deps): bump actions/cache from 3.2.5 to 3.2.6 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3795 +* Fix destroyed view causing errors on dispatchTransaction by @bdbch in https://github.com/ueberdosis/tiptap/pull/3799 +* Only allow left mouse button to open links by @thecodrr in https://github.com/ueberdosis/tiptap/pull/3777 +* Optimize empty document detection in `documentClear` plugin by @thecodrr in https://github.com/ueberdosis/tiptap/pull/3778 +* fix: use prose-base class for sm screens by @cstrnt in https://github.com/ueberdosis/tiptap/pull/3810 +* Adds attributes to toggleList by @katerlouis in https://github.com/ueberdosis/tiptap/pull/3776 +* fix(tests): add assertion for each valid/invalid link by @bdbch in https://github.com/ueberdosis/tiptap/pull/3815 +* feat(react): allow html attrs in react renderer by @bdbch in https://github.com/ueberdosis/tiptap/pull/3812 +* fix(react): allow updating event handlers on editor by @bdbch in https://github.com/ueberdosis/tiptap/pull/3811 +* Improve Cypress Test runner performance with parallelization by @bdbch in https://github.com/ueberdosis/tiptap/pull/3817 +* build(deps): bump cypress-io/github-action from 5.0.9 to 5.2.0 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3835 +* fix: Ordered list start support broke in #3541 by @gethari in https://github.com/ueberdosis/tiptap/pull/3833 +* Refactor typings (extension-youtube) by @svenadlung in https://github.com/ueberdosis/tiptap/pull/3842 +* build(deps): bump actions/checkout from 3.3.0 to 3.4.0 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3864 +* build(deps): bump cypress-io/github-action from 5.2.0 to 5.5.0 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3863 +* build(deps-dev): bump webpack from 5.73.0 to 5.76.0 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3855 +* Docs: consistent naming of Tiptap by @svenadlung in https://github.com/ueberdosis/tiptap/pull/3882 +* [PROPOSAL] dynamic default attributes by @mylesj in https://github.com/ueberdosis/tiptap/pull/3379 +* style(core): fix linting issues by @bdbch in https://github.com/ueberdosis/tiptap/pull/3884 +* Handle NodeViews in BubbleMenu positioning by @bdbch in https://github.com/ueberdosis/tiptap/pull/3881 +* chore: add Dev demo folder by @bdbch in https://github.com/ueberdosis/tiptap/pull/3887 +* CI: Remove slack notifications by @svenadlung in https://github.com/ueberdosis/tiptap/pull/3885 +* Docs: Update nodes and extensions lists by @svenadlung in https://github.com/ueberdosis/tiptap/pull/3886 +* Docs: Remove pro extension callout from collab docs by @svenadlung in https://github.com/ueberdosis/tiptap/pull/3883 +* Fixing reoccurring issue #3331 and improving related PR #3533 by @KentoMoriwaki in https://github.com/ueberdosis/tiptap/pull/3862 +* Release Candidate Preparation by @bdbch in https://github.com/ueberdosis/tiptap/pull/3890 +* chore: add new release and prerelease actions by @bdbch in https://github.com/ueberdosis/tiptap/pull/3836 +* Updates @hocuspocus/provider, moves demo to TiptapCollab by @janthurau in https://github.com/ueberdosis/tiptap/pull/3895 +* Merge pull request #3895 from ueberdosis/feature/ttCollabProvider by @janthurau in https://github.com/ueberdosis/tiptap/pull/3897 +* Collaboration: Fix history after late-registering plugins by @svenadlung in https://github.com/ueberdosis/tiptap/pull/3901 +* ci: remove slack notifications by @svenadlung in https://github.com/ueberdosis/tiptap/pull/3898 +* build(deps): bump actions/checkout from 3.4.0 to 3.5.0 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3889 +* build(deps): bump cypress-io/github-action from 5.5.0 to 5.5.1 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3888 +* build(deps): bump actions/cache from 3.2.6 to 3.3.1 by @dependabot in https://github.com/ueberdosis/tiptap/pull/3846 +* docs: prepare for stable release by @svenadlung in https://github.com/ueberdosis/tiptap/pull/3892 +* New Issue & Discussion Templates by @bdbch in https://github.com/ueberdosis/tiptap/pull/3907 +* feat(core): add editor to this context in schema functions by @bdbch in https://github.com/ueberdosis/tiptap/pull/3909 diff --git a/LICENSE.md b/LICENSE.md index 2c106a1b144..8cb20849822 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2021, überdosis GbR +Copyright (c) 2023, Tiptap GmbH Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index e3ff6c1f113..8b6d657c039 100644 --- a/README.md +++ b/README.md @@ -9,15 +9,15 @@ A headless, framework-agnostic and extendable rich text editor, based on [ProseM [![Sponsor](https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub)](https://github.com/sponsors/ueberdosis) ## Examples -Have a look at the [examples to see tiptap in action](https://www.tiptap.dev/examples). +Have a look at the [examples to see Tiptap in action](https://tiptap.dev/examples). ## Documentation -The full documentation is available on [www.tiptap.dev](https://www.tiptap.dev/installation). +The full documentation is available on [www.tiptap.dev](https://tiptap.dev/installation). ## Community For help, discussion about best practices, or any other conversation that would benefit from being searchable: -[Discuss tiptap on GitHub](https://github.com/ueberdosis/tiptap/discussions) +[Discuss Tiptap on GitHub](https://github.com/ueberdosis/tiptap/discussions) ## Sponsors 💖 @@ -87,12 +87,18 @@ For help, discussion about best practices, or any other conversation that would dotCMS +
+ +
+ Basewell +
+
[iFixit](https://www.ifixit.com/), [@shodgson](https://github.com/shodgson), [Markee Co.](https://markee.io/), [Makelog](https://www.makelog.com/), [Zephir](https://zephir.ch/), [IT Xpert AG](https://itxpert.ch/), [ApostropheCMS](https://apostrophecms.com/), [Novadiscovery](http://www.novadiscovery.com/), [Omics Data Automation](https://www.omicsautomation.com), [Gretel](https://github.com/gretelapp#:~:text=http%3A//www.gretel.co), [Flow Mobile](https://www.flowmobile.app/), [Ycode](https://www.ycode.com/), [DocIQ](https://www.dociq.io/) and [hundreds of awesome inviduals](https://github.com/sponsors/ueberdosis). -Using tiptap in production? Invest in the future of tiptap and [become a sponsor!](https://github.com/sponsors/ueberdosis) +Using Tiptap in production? Invest in the future of Tiptap and [become a sponsor!](https://github.com/sponsors/ueberdosis) ## Contributing Please see [CONTRIBUTING](CONTRIBUTING.md) for details. diff --git a/demos/CHANGELOG.md b/demos/CHANGELOG.md index 9d95a7b2ab4..8015f6ba91d 100644 --- a/demos/CHANGELOG.md +++ b/demos/CHANGELOG.md @@ -3,6 +3,562 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.1.11](https://github.com/ueberdosis/tiptap/compare/v2.1.10...v2.1.11) (2023-09-20) + + +### Reverts + +* Revert "v2.2.11" ([6aa755a](https://github.com/ueberdosis/tiptap/commit/6aa755a04b9955fc175c7ab33dee527d0d5deef0)) + + + + + +## [2.1.10](https://github.com/ueberdosis/tiptap/compare/v2.1.9...v2.1.10) (2023-09-15) + +**Note:** Version bump only for package tiptap-demos + + + + + +## [2.1.9](https://github.com/ueberdosis/tiptap/compare/v2.1.8...v2.1.9) (2023-09-14) + +**Note:** Version bump only for package tiptap-demos + + + + + +## [2.1.8](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.7...v2.1.8) (2023-09-04) + +**Note:** Version bump only for package tiptap-demos + + + + + +## [2.1.7](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.6...v2.1.7) (2023-09-04) + +**Note:** Version bump only for package tiptap-demos + + + + + +## [2.1.6](https://github.com/ueberdosis/tiptap/compare/v2.1.5...v2.1.6) (2023-08-18) + +**Note:** Version bump only for package tiptap-demos + + + + + +## [2.1.5](https://github.com/ueberdosis/tiptap/compare/v2.1.4...v2.1.5) (2023-08-18) + +**Note:** Version bump only for package tiptap-demos + + + + + +## [2.1.4](https://github.com/ueberdosis/tiptap/compare/v2.1.3...v2.1.4) (2023-08-18) + +**Note:** Version bump only for package tiptap-demos + + + + + +## [2.1.3](https://github.com/ueberdosis/tiptap/compare/v2.1.2...v2.1.3) (2023-08-18) + +**Note:** Version bump only for package tiptap-demos + + + + + +## [2.1.2](https://github.com/ueberdosis/tiptap/compare/v2.1.1...v2.1.2) (2023-08-17) + + +### Bug Fixes + +* **core:** fix error when merging class attributes ([#4340](https://github.com/ueberdosis/tiptap/issues/4340)) ([a251946](https://github.com/ueberdosis/tiptap/commit/a2519468589e2baa44901a66a3a06b24dc8626d6)) + + + + + +## [2.1.1](https://github.com/ueberdosis/tiptap/compare/v2.1.0...v2.1.1) (2023-08-16) + +**Note:** Version bump only for package tiptap-demos + + + + + +# [2.1.0](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.0-rc.14...v2.1.0) (2023-08-16) + +**Note:** Version bump only for package tiptap-demos + + + + + +# [2.1.0-rc.14](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.0-rc.13...v2.1.0-rc.14) (2023-08-11) + +**Note:** Version bump only for package tiptap-demos + + + + + +# [2.1.0-rc.13](https://github.com/ueberdosis/tiptap-workspace/compare/v2.0.4...v2.1.0-rc.13) (2023-08-11) + + +### Bug Fixes + +* **demos:** add missing extensions ([6383fd5](https://github.com/ueberdosis/tiptap-workspace/commit/6383fd54080b2ad555286cd0e7c4ad880200200f)) +* **demos:** update deps ([05a2edf](https://github.com/ueberdosis/tiptap-workspace/commit/05a2edfc16e297effa86d1583fb1680be0320f25)) +* **strikethrough:** update strikethrough shortcut ([#4288](https://github.com/ueberdosis/tiptap-workspace/issues/4288)) ([fd35db4](https://github.com/ueberdosis/tiptap-workspace/commit/fd35db4d090d9fdfef1196fb1f6f858f13cf53d1)) + + + +# [2.1.0-rc.12](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.0-rc.11...v2.1.0-rc.12) (2023-07-14) + + + +# [2.1.0-rc.11](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.0-rc.10...v2.1.0-rc.11) (2023-07-07) + + +### Bug Fixes + +* **tests:** fix link rel tests ([c1d1854](https://github.com/ueberdosis/tiptap-workspace/commit/c1d18543b03b1fb6b99a2f3546aa5da10c919920)) + + + +# [2.1.0-rc.10](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.0-rc.9...v2.1.0-rc.10) (2023-07-07) + + +### Bug Fixes + +* **react:** check props.clientRect before creating ReactRenderer ([#4138](https://github.com/ueberdosis/tiptap-workspace/issues/4138)) ([d710846](https://github.com/ueberdosis/tiptap-workspace/commit/d710846ecb6a3059dfbc21300b9a4b887a8defa3)) + + + +# [2.1.0-rc.9](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.0-rc.8...v2.1.0-rc.9) (2023-06-15) + + + +# [2.1.0-rc.8](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.0-rc.7...v2.1.0-rc.8) (2023-05-25) + + + +# [2.1.0-rc.5](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.0-rc.4...v2.1.0-rc.5) (2023-05-25) + + +### Features + +* add tiptap class ([614fc80](https://github.com/ueberdosis/tiptap-workspace/commit/614fc8082c376bf3c40a05c23ceda6b4a6fbf8d0)) + + + +# [2.1.0-rc.4](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.0-rc.3...v2.1.0-rc.4) (2023-04-27) + + + +# [2.1.0-rc.3](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.0-rc.2...v2.1.0-rc.3) (2023-04-26) + + + +# [2.1.0-rc.2](https://github.com/ueberdosis/tiptap-workspace/compare/v2.0.3...v2.1.0-rc.2) (2023-04-26) + + +### Bug Fixes + +* **extension-link:** fix link not being kept when pasting url with link ([#3975](https://github.com/ueberdosis/tiptap-workspace/issues/3975)) ([e7d7d49](https://github.com/ueberdosis/tiptap-workspace/commit/e7d7d496376c8c11e24c342e20bd179a6ea7dcee)) + + + +# [2.1.0-rc.1](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.0-rc.0...v2.1.0-rc.1) (2023-04-12) + + +### Bug Fixes + +* **bubble-menu:** fix debounce not working with collab/collaboration cursor ([#3956](https://github.com/ueberdosis/tiptap-workspace/issues/3956)) ([e8cef04](https://github.com/ueberdosis/tiptap-workspace/commit/e8cef0404b5039ec2657536976b8b31931afd337)) + + + +# [2.1.0-rc.0](https://github.com/ueberdosis/tiptap-workspace/compare/v2.0.2...v2.1.0-rc.0) (2023-04-05) + + +### Bug Fixes + +* clear nodes when cursor at start of empty isolating parent ([#3943](https://github.com/ueberdosis/tiptap-workspace/issues/3943)) ([7278ee2](https://github.com/ueberdosis/tiptap-workspace/commit/7278ee2b05de2f96efddf3b1dc3bfd3d52262cbb)) +* Update peerDependencies to fix lerna version tasks ([#3914](https://github.com/ueberdosis/tiptap-workspace/issues/3914)) ([0c1bba3](https://github.com/ueberdosis/tiptap-workspace/commit/0c1bba3137b535776bcef95ff3c55e13f5a2db46)) + + + + + +# [2.1.0-rc.12](https://github.com/ueberdosis/tiptap-workspace/compare/v2.1.0-rc.11...v2.1.0-rc.12) (2023-07-14) + +**Note:** Version bump only for package tiptap-demos + + + + + +# [2.1.0-rc.11](https://github.com/ueberdosis/tiptap/compare/v2.1.0-rc.10...v2.1.0-rc.11) (2023-07-07) + + +### Bug Fixes + +* **tests:** fix link rel tests ([c1d1854](https://github.com/ueberdosis/tiptap/commit/c1d18543b03b1fb6b99a2f3546aa5da10c919920)) + + + + + +# [2.1.0-rc.10](https://github.com/ueberdosis/tiptap/compare/v2.1.0-rc.9...v2.1.0-rc.10) (2023-07-07) + + +### Bug Fixes + +* **react:** check props.clientRect before creating ReactRenderer ([#4138](https://github.com/ueberdosis/tiptap/issues/4138)) ([d710846](https://github.com/ueberdosis/tiptap/commit/d710846ecb6a3059dfbc21300b9a4b887a8defa3)) + + + + + +# [2.1.0-rc.9](https://github.com/ueberdosis/tiptap/compare/v2.1.0-rc.8...v2.1.0-rc.9) (2023-06-15) + +**Note:** Version bump only for package tiptap-demos + + + + + +# [2.1.0-rc.8](https://github.com/ueberdosis/tiptap/compare/v2.1.0-rc.7...v2.1.0-rc.8) (2023-05-25) + +**Note:** Version bump only for package tiptap-demos + + + + + +# [2.1.0-rc.7](https://github.com/ueberdosis/tiptap/compare/v2.1.0-rc.6...v2.1.0-rc.7) (2023-05-25) + +**Note:** Version bump only for package tiptap-demos + + + + + +# [2.1.0-rc.6](https://github.com/ueberdosis/tiptap/compare/v2.1.0-rc.5...v2.1.0-rc.6) (2023-05-25) + +**Note:** Version bump only for package tiptap-demos + + + + + +# [2.1.0-rc.5](https://github.com/ueberdosis/tiptap/compare/v2.1.0-rc.4...v2.1.0-rc.5) (2023-05-25) + + +### Features + +* add tiptap class ([614fc80](https://github.com/ueberdosis/tiptap/commit/614fc8082c376bf3c40a05c23ceda6b4a6fbf8d0)) + + + + + +# [2.1.0-rc.4](https://github.com/ueberdosis/tiptap/compare/v2.1.0-rc.3...v2.1.0-rc.4) (2023-04-27) + +**Note:** Version bump only for package tiptap-demos + + + + + +# [2.1.0-rc.3](https://github.com/ueberdosis/tiptap/compare/v2.1.0-rc.2...v2.1.0-rc.3) (2023-04-26) + +**Note:** Version bump only for package tiptap-demos + + + + + +# [2.1.0-rc.2](https://github.com/ueberdosis/tiptap/compare/v2.0.3...v2.1.0-rc.2) (2023-04-26) + + +### Bug Fixes + +* **extension-link:** fix link not being kept when pasting url with link ([#3975](https://github.com/ueberdosis/tiptap/issues/3975)) ([e7d7d49](https://github.com/ueberdosis/tiptap/commit/e7d7d496376c8c11e24c342e20bd179a6ea7dcee)) + + + +# [2.1.0-rc.1](https://github.com/ueberdosis/tiptap/compare/v2.1.0-rc.0...v2.1.0-rc.1) (2023-04-12) + + +### Bug Fixes + +* **bubble-menu:** fix debounce not working with collab/collaboration cursor ([#3956](https://github.com/ueberdosis/tiptap/issues/3956)) ([e8cef04](https://github.com/ueberdosis/tiptap/commit/e8cef0404b5039ec2657536976b8b31931afd337)) + + + +# [2.1.0-rc.0](https://github.com/ueberdosis/tiptap/compare/v2.0.2...v2.1.0-rc.0) (2023-04-05) + + +### Bug Fixes + +* clear nodes when cursor at start of empty isolating parent ([#3943](https://github.com/ueberdosis/tiptap/issues/3943)) ([7278ee2](https://github.com/ueberdosis/tiptap/commit/7278ee2b05de2f96efddf3b1dc3bfd3d52262cbb)) +* Update peerDependencies to fix lerna version tasks ([#3914](https://github.com/ueberdosis/tiptap/issues/3914)) ([0c1bba3](https://github.com/ueberdosis/tiptap/commit/0c1bba3137b535776bcef95ff3c55e13f5a2db46)) + + + + + + + + + +# [2.1.0-rc.0](https://github.com/ueberdosis/tiptap/compare/v2.0.2...v2.1.0-rc.0) (2023-04-05) + + +### Bug Fixes + +* clear nodes when cursor at start of empty isolating parent ([#3943](https://github.com/ueberdosis/tiptap/issues/3943)) ([7278ee2](https://github.com/ueberdosis/tiptap/commit/7278ee2b05de2f96efddf3b1dc3bfd3d52262cbb)) +* **bubble-menu:** fix debounce not working with collab/collaboration cursor ([#3956](https://github.com/ueberdosis/tiptap/issues/3956)) ([a78f8cd](https://github.com/ueberdosis/tiptap/commit/a78f8cd9646008e4db938fa3c22b0714c8bb5849)) + + + + +## [2.0.3](https://github.com/ueberdosis/tiptap/compare/v2.0.2...v2.0.3) (2023-04-13) + + +### Bug Fixes + +* **bubble-menu:** fix debounce not working with collab/collaboration cursor ([#3956](https://github.com/ueberdosis/tiptap/issues/3956)) ([e8cef04](https://github.com/ueberdosis/tiptap/commit/e8cef0404b5039ec2657536976b8b31931afd337)) + + + + + +## [2.0.2](https://github.com/ueberdosis/tiptap/compare/v2.0.1...v2.0.2) (2023-04-03) + + +### Features + +* add box-shadow to collab demo ([c5496c1](https://github.com/ueberdosis/tiptap/commit/c5496c1b27783150dafb5ebdf6bda43648a46316)) +* landingpage demo ([#3925](https://github.com/ueberdosis/tiptap/issues/3925)) ([958925f](https://github.com/ueberdosis/tiptap/commit/958925f2560ca786cd0cf52b83b7ae51deb7dd77)) +* Tiptap collab demo styling ([87840b0](https://github.com/ueberdosis/tiptap/commit/87840b0f0821ca65d9f104d9c90512021aa70113)) + + + + + +## [2.0.1](https://github.com/ueberdosis/tiptap/compare/v2.0.0...v2.0.1) (2023-03-30) + + +### Bug Fixes + +* Update peerDependencies to fix lerna version tasks ([#3914](https://github.com/ueberdosis/tiptap/issues/3914)) ([0534f76](https://github.com/ueberdosis/tiptap/commit/0534f76401bf5399c01ca7f39d87f7221d91b4f7)) + + + + + +# [2.0.0-beta.220](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.219...v2.0.0-beta.220) (2023-02-28) + + +### Bug Fixes + +* **core:** fix destroyed view causing errors on dispatchTransaction ([#3799](https://github.com/ueberdosis/tiptap/issues/3799)) ([3c07ca0](https://github.com/ueberdosis/tiptap/commit/3c07ca0b9c48cef60d56acdd44812e20e05fc928)) +* **tests:** fix tests for lists ([02eec8a](https://github.com/ueberdosis/tiptap/commit/02eec8aaefc2709dc20f91c3c8f9eca84cddc12d)) + + + + + +# [2.0.0-beta.219](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.218...v2.0.0-beta.219) (2023-02-27) + + +### Bug Fixes + +* **core:** allow insertContentAt and insertContent text node arrays ([#3790](https://github.com/ueberdosis/tiptap/issues/3790)) ([0300630](https://github.com/ueberdosis/tiptap/commit/0300630a5b04b61d4eef8155f24ca0ef2d683966)) + + +### Features + +* [#3540](https://github.com/ueberdosis/tiptap/issues/3540) Ability to preserve marks on lists ([#3541](https://github.com/ueberdosis/tiptap/issues/3541)) ([36bb1e1](https://github.com/ueberdosis/tiptap/commit/36bb1e1041f91da6437272e7196702df868eae0f)) + + + + + +# [2.0.0-beta.218](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.217...v2.0.0-beta.218) (2023-02-18) + +**Note:** Version bump only for package tiptap-demos + + + + + +# [2.0.0-beta.217](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.216...v2.0.0-beta.217) (2023-02-09) + +**Note:** Version bump only for package tiptap-demos + + + + + +# [2.0.0-beta.216](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.215...v2.0.0-beta.216) (2023-02-08) + +**Note:** Version bump only for package tiptap-demos + + + + + +# [2.0.0-beta.215](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.214...v2.0.0-beta.215) (2023-02-08) + +**Note:** Version bump only for package tiptap-demos + + + + + +# [2.0.0-beta.214](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.213...v2.0.0-beta.214) (2023-02-08) + +**Note:** Version bump only for package tiptap-demos + + + + + +# [2.0.0-beta.213](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.212...v2.0.0-beta.213) (2023-02-07) + +**Note:** Version bump only for package tiptap-demos + + + + + +# [2.0.0-beta.212](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.211...v2.0.0-beta.212) (2023-02-03) + +**Note:** Version bump only for package tiptap-demos + + + + + +# [2.0.0-beta.211](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.210...v2.0.0-beta.211) (2023-02-02) + +**Note:** Version bump only for package tiptap-demos + + + + + +# [2.0.0-beta.210](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.209...v2.0.0-beta.210) (2023-02-02) + + +### Features + +* **pm:** new prosemirror package for dependency resolving ([f387ad3](https://github.com/ueberdosis/tiptap/commit/f387ad3dd4c2b30eaea33fb0ba0b42e0cd39263b)) + + + + + +# [2.0.0-beta.209](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.208...v2.0.0-beta.209) (2022-12-16) + +**Note:** Version bump only for package tiptap-demos + + + + + +# [2.0.0-beta.208](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.207...v2.0.0-beta.208) (2022-12-16) + +**Note:** Version bump only for package tiptap-demos + + + + + +# [2.0.0-beta.207](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.206...v2.0.0-beta.207) (2022-12-08) + +**Note:** Version bump only for package tiptap-demos + + + + + +# [2.0.0-beta.206](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.205...v2.0.0-beta.206) (2022-12-08) + +**Note:** Version bump only for package tiptap-demos + + + + + +# [2.0.0-beta.205](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.204...v2.0.0-beta.205) (2022-12-05) + +**Note:** Version bump only for package tiptap-demos + + + + + +# [2.0.0-beta.204](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.203...v2.0.0-beta.204) (2022-11-25) + + +### Bug Fixes + +* **tests:** fix autolink validation test ([5150095](https://github.com/ueberdosis/tiptap/commit/5150095c6b510c080f4aa35f54d2387543f86da8)) + + + + + +# [2.0.0-beta.203](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.202...v2.0.0-beta.203) (2022-11-24) + + +### Bug Fixes + +* **extension/table:** move dependency from @_ueberdosis to [@tiptap](https://github.com/tiptap) ([#3448](https://github.com/ueberdosis/tiptap/issues/3448)) ([31c3a9a](https://github.com/ueberdosis/tiptap/commit/31c3a9aad9eb37f445eadcd27135611291178ca6)) + + + + + +# [2.0.0-beta.202](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.201...v2.0.0-beta.202) (2022-11-04) + +**Note:** Version bump only for package tiptap-demos + + + + + +# [2.0.0-beta.201](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.200...v2.0.0-beta.201) (2022-11-04) + +**Note:** Version bump only for package tiptap-demos + + + + + +# [2.0.0-beta.200](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.199...v2.0.0-beta.200) (2022-11-04) + +**Note:** Version bump only for package tiptap-demos + + + + + # [2.0.0-beta.199](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.198...v2.0.0-beta.199) (2022-09-30) **Note:** Version bump only for package tiptap-demos diff --git a/demos/includeDependencies.txt b/demos/includeDependencies.txt index 6e976f96484..374fd4c826d 100644 --- a/demos/includeDependencies.txt +++ b/demos/includeDependencies.txt @@ -10,7 +10,7 @@ prosemirror-keymap prosemirror-model prosemirror-schema-list prosemirror-state -@_ueberdosis/prosemirror-tables +prosemirror-tables prosemirror-transform prosemirror-view react diff --git a/demos/package-lock.json b/demos/package-lock.json index 8935fddfac3..c38143e5c12 100644 --- a/demos/package-lock.json +++ b/demos/package-lock.json @@ -1,14 +1,14 @@ { "name": "tiptap-demos", - "version": "2.0.0-beta.199", + "version": "2.1.11", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "tiptap-demos", - "version": "2.0.0-beta.199", + "version": "2.1.11", "dependencies": { - "@hocuspocus/provider": "^1.0.0-alpha.29", + "@hocuspocus/provider": "^2.0.1", "d3": "^7.3.0", "fast-glob": "^3.2.11", "highlight.js": "^11.6.0", @@ -17,7 +17,7 @@ "shiki": "^0.10.0", "simplify-js": "^1.2.4", "y-prosemirror": "1.0.20", - "y-webrtc": "^10.2.3", + "y-webrtc": "^10.2.5", "yjs": "^13.5.39" }, "devDependencies": { @@ -32,10 +32,10 @@ "react-dom": "^18.0.0", "sass": "^1.49.7", "svelte": "^3.49.0", - "tailwindcss": "^2.2.19", - "typescript": "^4.5.5", + "tailwindcss": "^3.3.2", + "typescript": "4.7.4", "uuid": "^8.3.2", - "vite": "^2.9.13", + "vite": "^2.9.16", "vite-plugin-checker": "^0.3.4", "vue": "^3.0.5", "vue-router": "^4.0.11" @@ -447,20 +447,26 @@ } }, "node_modules/@hocuspocus/common": { - "version": "1.0.0-alpha.4", - "resolved": "https://registry.npmjs.org/@hocuspocus/common/-/common-1.0.0-alpha.4.tgz", - "integrity": "sha512-LvKj+ASSWnvjFB7n2bl7BUGFKF9XFFP1oA3/XmKl3c7wUIvoN1Ir3sX8XnN6qBA3S2CoruEHHk+KPS6zMSMfHA==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@hocuspocus/common/-/common-2.1.0.tgz", + "integrity": "sha512-K8f4TQfP5TJakGBKJR9bGg5EHM8QkM5zxjrT3iv0k/jvNF4M9gh0zFSJrCQgF55/tkLCvBCOSWMLPX9TSjlW5w==", + "dependencies": { + "lib0": "^0.2.47" + } }, "node_modules/@hocuspocus/provider": { - "version": "1.0.0-alpha.29", - "resolved": "https://registry.npmjs.org/@hocuspocus/provider/-/provider-1.0.0-alpha.29.tgz", - "integrity": "sha512-K8ZWw3LZBmmK5hd8ZoV+fKtxGvzJW8dUQgxDmNPhq0B9q5NWvXT89O64zvWOb5CdVMM9Nbd5pAWBcM5keFKrcw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@hocuspocus/provider/-/provider-2.1.0.tgz", + "integrity": "sha512-Hg6OLlxt0RFrZ7pS6p2pnqWhxeqq4tRVcbyA34E8/Braj40S+q+H5+0UIYyXTLGknRrChcjIN/P51C8gGAA9sQ==", "dependencies": { - "@hocuspocus/common": "^1.0.0-alpha.4", - "@lifeomic/attempt": "^3.0.1", - "lib0": "^0.2.43", + "@hocuspocus/common": "^2.1.0", + "@lifeomic/attempt": "^3.0.2", + "lib0": "^0.2.47", + "ws": "^7.5.9" + }, + "peerDependencies": { "y-protocols": "^1.0.5", - "yjs": "^13.5.22" + "yjs": "^13.5.29" } }, "node_modules/@jridgewell/gen-mapping": { @@ -511,9 +517,9 @@ } }, "node_modules/@lifeomic/attempt": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@lifeomic/attempt/-/attempt-3.0.1.tgz", - "integrity": "sha512-zvQ6ydPI2mevhuZ++l2S93+DS08w27ad942Ae9WW5h7j+giEHrK7rsgbchVTAs0jo35Ox90G5/c8ZDSz5vipWg==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@lifeomic/attempt/-/attempt-3.0.3.tgz", + "integrity": "sha512-GlM2AbzrErd/TmLL3E8hAHmb5Q7VhDJp35vIbyPVA5Rz55LZuRr8pwL3qrwwkVNo05gMX1J44gURKb4MHQZo7w==" }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", @@ -2509,9 +2515,9 @@ "dev": true }, "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "bin": { "json5": "lib/cli.js" @@ -2668,9 +2674,9 @@ } }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -3645,9 +3651,9 @@ } }, "node_modules/typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -3706,15 +3712,15 @@ } }, "node_modules/vite": { - "version": "2.9.13", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.13.tgz", - "integrity": "sha512-AsOBAaT0AD7Mhe8DuK+/kE4aWYFMx/i0ZNi98hJclxb4e0OhQcZYUrvLjIaQ8e59Ui7txcvKMiJC1yftqpQoDw==", + "version": "2.9.16", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.16.tgz", + "integrity": "sha512-X+6q8KPyeuBvTQV8AVSnKDvXoBMnTx8zxh54sOwmmuOdxkjMmEJXH2UEchA+vTMps1xw9vL64uwJOWryULg7nA==", "dev": true, "dependencies": { "esbuild": "^0.14.27", "postcss": "^8.4.13", "resolve": "^1.22.0", - "rollup": "^2.59.0" + "rollup": ">=2.59.0 <2.78.0" }, "bin": { "vite": "bin/vite.js" @@ -3970,10 +3976,9 @@ "dev": true }, "node_modules/ws": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", - "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", - "optional": true, + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "engines": { "node": ">=8.3.0" }, @@ -4031,9 +4036,9 @@ } }, "node_modules/y-webrtc": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/y-webrtc/-/y-webrtc-10.2.3.tgz", - "integrity": "sha512-X7a6c56/jWhEI8LHLmT3LgzwbPA4r8h46pdVvV+55EQJhi+K6RfmisWgj7h6/2gkB0yveq7iDxlmyrYGnAKW/Q==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/y-webrtc/-/y-webrtc-10.2.5.tgz", + "integrity": "sha512-ZyBNvTI5L28sQ2PQI0T/JvyWgvuTq05L21vGkIlcvNLNSJqAaLCBJRe3FHEqXoaogqWmRcEAKGfII4ErNXMnNw==", "dependencies": { "lib0": "^0.2.42", "simple-peer": "^9.11.0", @@ -4378,20 +4383,22 @@ } }, "@hocuspocus/common": { - "version": "1.0.0-alpha.4", - "resolved": "https://registry.npmjs.org/@hocuspocus/common/-/common-1.0.0-alpha.4.tgz", - "integrity": "sha512-LvKj+ASSWnvjFB7n2bl7BUGFKF9XFFP1oA3/XmKl3c7wUIvoN1Ir3sX8XnN6qBA3S2CoruEHHk+KPS6zMSMfHA==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@hocuspocus/common/-/common-2.1.0.tgz", + "integrity": "sha512-K8f4TQfP5TJakGBKJR9bGg5EHM8QkM5zxjrT3iv0k/jvNF4M9gh0zFSJrCQgF55/tkLCvBCOSWMLPX9TSjlW5w==", + "requires": { + "lib0": "^0.2.47" + } }, "@hocuspocus/provider": { - "version": "1.0.0-alpha.29", - "resolved": "https://registry.npmjs.org/@hocuspocus/provider/-/provider-1.0.0-alpha.29.tgz", - "integrity": "sha512-K8ZWw3LZBmmK5hd8ZoV+fKtxGvzJW8dUQgxDmNPhq0B9q5NWvXT89O64zvWOb5CdVMM9Nbd5pAWBcM5keFKrcw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@hocuspocus/provider/-/provider-2.1.0.tgz", + "integrity": "sha512-Hg6OLlxt0RFrZ7pS6p2pnqWhxeqq4tRVcbyA34E8/Braj40S+q+H5+0UIYyXTLGknRrChcjIN/P51C8gGAA9sQ==", "requires": { - "@hocuspocus/common": "^1.0.0-alpha.4", - "@lifeomic/attempt": "^3.0.1", - "lib0": "^0.2.43", - "y-protocols": "^1.0.5", - "yjs": "^13.5.22" + "@hocuspocus/common": "^2.1.0", + "@lifeomic/attempt": "^3.0.2", + "lib0": "^0.2.47", + "ws": "^7.5.9" } }, "@jridgewell/gen-mapping": { @@ -4433,9 +4440,9 @@ } }, "@lifeomic/attempt": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@lifeomic/attempt/-/attempt-3.0.1.tgz", - "integrity": "sha512-zvQ6ydPI2mevhuZ++l2S93+DS08w27ad942Ae9WW5h7j+giEHrK7rsgbchVTAs0jo35Ox90G5/c8ZDSz5vipWg==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@lifeomic/attempt/-/attempt-3.0.3.tgz", + "integrity": "sha512-GlM2AbzrErd/TmLL3E8hAHmb5Q7VhDJp35vIbyPVA5Rz55LZuRr8pwL3qrwwkVNo05gMX1J44gURKb4MHQZo7w==" }, "@nodelib/fs.scandir": { "version": "2.1.5", @@ -5822,9 +5829,9 @@ "dev": true }, "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, "jsonc-parser": { @@ -5944,9 +5951,9 @@ } }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -6642,9 +6649,9 @@ "dev": true }, "typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", "dev": true }, "universalify": { @@ -6673,16 +6680,16 @@ "dev": true }, "vite": { - "version": "2.9.13", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.13.tgz", - "integrity": "sha512-AsOBAaT0AD7Mhe8DuK+/kE4aWYFMx/i0ZNi98hJclxb4e0OhQcZYUrvLjIaQ8e59Ui7txcvKMiJC1yftqpQoDw==", + "version": "2.9.16", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.16.tgz", + "integrity": "sha512-X+6q8KPyeuBvTQV8AVSnKDvXoBMnTx8zxh54sOwmmuOdxkjMmEJXH2UEchA+vTMps1xw9vL64uwJOWryULg7nA==", "dev": true, "requires": { "esbuild": "^0.14.27", "fsevents": "~2.3.2", "postcss": "^8.4.13", "resolve": "^1.22.0", - "rollup": "^2.59.0" + "rollup": ">=2.59.0 <2.78.0" } }, "vite-plugin-checker": { @@ -6869,10 +6876,9 @@ "dev": true }, "ws": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", - "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", - "optional": true, + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "requires": {} }, "xtend": { @@ -6898,9 +6904,9 @@ } }, "y-webrtc": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/y-webrtc/-/y-webrtc-10.2.3.tgz", - "integrity": "sha512-X7a6c56/jWhEI8LHLmT3LgzwbPA4r8h46pdVvV+55EQJhi+K6RfmisWgj7h6/2gkB0yveq7iDxlmyrYGnAKW/Q==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/y-webrtc/-/y-webrtc-10.2.5.tgz", + "integrity": "sha512-ZyBNvTI5L28sQ2PQI0T/JvyWgvuTq05L21vGkIlcvNLNSJqAaLCBJRe3FHEqXoaogqWmRcEAKGfII4ErNXMnNw==", "requires": { "lib0": "^0.2.42", "simple-peer": "^9.11.0", diff --git a/demos/package.json b/demos/package.json index 96863cf04fb..c3fed30b0de 100644 --- a/demos/package.json +++ b/demos/package.json @@ -1,23 +1,26 @@ { "name": "tiptap-demos", - "version": "2.0.0-beta.199", + "version": "2.1.11", "private": true, "scripts": { "start": "vite --host", - "build": "npm run ts && vite build", + "build:demos": "npm run ts && vite build", + "preview": "vite preview", "ts": "tsc --project tsconfig.base.json --noEmit && tsc --project tsconfig.react.json --noEmit && tsc --project tsconfig.vue-2.json --noEmit && tsc --project tsconfig.vue-3.json --noEmit" }, "dependencies": { - "@hocuspocus/provider": "^1.0.0-alpha.29", + "@hocuspocus/provider": "^2.0.1", + "@lexical/react": "^0.11.1", "d3": "^7.3.0", "fast-glob": "^3.2.11", "highlight.js": "^11.6.0", + "lexical": "^0.11.1", "lowlight": "^2.7.0", "remixicon": "^2.5.0", "shiki": "^0.10.0", "simplify-js": "^1.2.4", "y-prosemirror": "1.0.20", - "y-webrtc": "^10.2.3", + "y-webrtc": "^10.2.5", "yjs": "^13.5.39" }, "devDependencies": { @@ -28,14 +31,15 @@ "autoprefixer": "^10.4.2", "iframe-resizer": "^4.3.2", "postcss": "^8.4.6", + "postcss-import": "^15.1.0", "react": "^18.0.0", "react-dom": "^18.0.0", "sass": "^1.49.7", "svelte": "^3.49.0", - "tailwindcss": "^2.2.19", - "typescript": "^4.5.5", + "tailwindcss": "^3.3.2", + "typescript": "4.7.4", "uuid": "^8.3.2", - "vite": "^2.9.13", + "vite": "^2.9.16", "vite-plugin-checker": "^0.3.4", "vue": "^3.0.5", "vue-router": "^4.0.11" diff --git a/demos/postcss.config.js b/demos/postcss.config.js index 33ad091d26d..825cb18622e 100644 --- a/demos/postcss.config.js +++ b/demos/postcss.config.js @@ -1,5 +1,7 @@ module.exports = { plugins: { + 'postcss-import': {}, + 'tailwindcss/nesting': {}, tailwindcss: {}, autoprefixer: {}, }, diff --git a/demos/preview/Shiki.vue b/demos/preview/Shiki.vue index 8d3ae586e24..d2ec375e497 100644 --- a/demos/preview/Shiki.vue +++ b/demos/preview/Shiki.vue @@ -8,7 +8,7 @@ // otherwise the `onig.wasm` file is missing in the dist folder import 'shiki/dist/onig.wasm?url' -import Worker from './shiki.worker?worker' +import Worker from './shiki.worker.js?worker' export default { props: { diff --git a/demos/setup/helper.ts b/demos/setup/helper.ts index e9e07e4dcec..e92a0da5949 100644 --- a/demos/setup/helper.ts +++ b/demos/setup/helper.ts @@ -17,7 +17,7 @@ const sendData = (eventName: string, data: any) => { export function splitName(name: string) { const parts = name.split('/') - if (parts.length !== 2) { + if (parts.length !== 3) { throw Error('Demos must always be within exactly one category. Nested categories are not supported.') } @@ -29,7 +29,7 @@ export function debug() { // @ts-ignore sendData('source', window.source) - waitUntilElementExists('.ProseMirror', element => { + waitUntilElementExists('.tiptap', element => { // @ts-ignore const editor = element.editor diff --git a/demos/setup/js.ts b/demos/setup/js.ts index 16f174be03e..0aa85cf30e9 100644 --- a/demos/setup/js.ts +++ b/demos/setup/js.ts @@ -1,7 +1,7 @@ import 'iframe-resizer/js/iframeResizer.contentWindow' import './style.scss' -import { debug } from './helper' +import { debug } from './helper.js' export default function init(name: string, source: any) { // @ts-ignore diff --git a/demos/setup/react.ts b/demos/setup/react.ts index bf45b150762..a753a6cfc65 100644 --- a/demos/setup/react.ts +++ b/demos/setup/react.ts @@ -4,22 +4,35 @@ import './style.scss' import React from 'react' import { createRoot } from 'react-dom/client' -import { debug, splitName } from './helper' +import { debug, splitName } from './helper.js' export default function init(name: string, source: any) { // @ts-ignore window.source = source document.title = name - const [demoCategory, demoName] = splitName(name) + const [demoCategory, demoName, frameworkName] = splitName(name) - import(`../src/${demoCategory}/${demoName}/React/index.jsx`) + import(`../src/${demoCategory}/${demoName}/${frameworkName}/index.tsx`) .then(module => { const root = document.getElementById('app') if (root) { - createRoot(root).render(React.createElement(module.default)) + createRoot(root) + .render(React.createElement(module.default)) } debug() }) + .catch(() => { + import(`../src/${demoCategory}/${demoName}/${frameworkName}/index.jsx`) + .then(module => { + const root = document.getElementById('app') + + if (root) { + createRoot(root) + .render(React.createElement(module.default)) + } + debug() + }) + }) } diff --git a/demos/setup/style.scss b/demos/setup/style.scss index 4183d18b04f..f7509f871f1 100644 --- a/demos/setup/style.scss +++ b/demos/setup/style.scss @@ -73,7 +73,7 @@ select { } } -.ProseMirror:focus { +.tiptap:focus { outline: none; } diff --git a/demos/setup/svelte.ts b/demos/setup/svelte.ts index 2332823ee70..a15e9ced2c9 100644 --- a/demos/setup/svelte.ts +++ b/demos/setup/svelte.ts @@ -1,16 +1,16 @@ import 'iframe-resizer/js/iframeResizer.contentWindow' import './style.scss' -import { debug, splitName } from './helper' +import { debug, splitName } from './helper.js' export default function init(name: string, source: any) { // @ts-ignore window.source = source document.title = name - const [demoCategory, demoName] = splitName(name) + const [demoCategory, demoName, frameworkName] = splitName(name) - import(`../src/${demoCategory}/${demoName}/Svelte/index.svelte`) + import(`../src/${demoCategory}/${demoName}/${frameworkName}/index.svelte`) .then(Module => { const Component = Module.default diff --git a/demos/setup/vue.ts b/demos/setup/vue.ts index eb9aeb95be0..9b797386c02 100644 --- a/demos/setup/vue.ts +++ b/demos/setup/vue.ts @@ -3,16 +3,16 @@ import './style.scss' import { createApp } from 'vue' -import { debug, splitName } from './helper' +import { debug, splitName } from './helper.js' export default function init(name: string, source: any) { // @ts-ignore window.source = source document.title = name - const [demoCategory, demoName] = splitName(name) + const [demoCategory, demoName, frameworkName] = splitName(name) - import(`../src/${demoCategory}/${demoName}/Vue/index.vue`) + import(`../src/${demoCategory}/${demoName}/${frameworkName}/index.vue`) .then(module => { createApp(module.default).mount('#app') debug() diff --git a/demos/src/Commands/Cut/React/index.html b/demos/src/Commands/Cut/React/index.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/demos/src/Commands/Cut/React/index.jsx b/demos/src/Commands/Cut/React/index.jsx new file mode 100644 index 00000000000..3b5164055e3 --- /dev/null +++ b/demos/src/Commands/Cut/React/index.jsx @@ -0,0 +1,85 @@ +import './styles.scss' + +import { Color } from '@tiptap/extension-color' +import ListItem from '@tiptap/extension-list-item' +import TextStyle from '@tiptap/extension-text-style' +import { EditorContent, useEditor } from '@tiptap/react' +import StarterKit from '@tiptap/starter-kit' +import React, { useCallback } from 'react' + +const MenuBar = ({ editor }) => { + if (!editor) { + return null + } + + const onCutToStart = useCallback(() => { + editor.chain().cut({ from: editor.state.selection.$from.pos, to: editor.state.selection.$to.pos }, 1).run() + }, [editor]) + + const onCutToEnd = useCallback(() => { + editor.chain().cut({ from: editor.state.selection.$from.pos, to: editor.state.selection.$to.pos }, editor.state.doc.nodeSize - 2).run() + }, [editor]) + + return ( + <> + + + + ) +} + +export default () => { + const editor = useEditor({ + extensions: [ + Color.configure({ types: [TextStyle.name, ListItem.name] }), + TextStyle.configure({ types: [ListItem.name] }), + StarterKit.configure({ + bulletList: { + keepMarks: true, + keepAttributes: false, // TODO : Making this as `false` becase marks are not preserved when I try to preserve attrs, awaiting a bit of help + }, + orderedList: { + keepMarks: true, + keepAttributes: false, // TODO : Making this as `false` becase marks are not preserved when I try to preserve attrs, awaiting a bit of help + }, + }), + ], + content: ` +

+ Hi there, +

+

+ this is a basic example of tiptap. Sure, there are all kind of basic text styles you’d probably expect from a text editor. But wait until you see the lists: +

+ +

+ Isn’t that great? And all of that is editable. But wait, there’s more. Let’s try a code block: +

+
body {
+  display: none;
+}
+

+ I know, I know, this is impressive. It’s only the tip of the iceberg though. Give it a try and click a little bit around. Don’t forget to check the other examples too. +

+
+ Wow, that’s amazing. Good work, boy! 👏 +
+ — Mom +
+ `, + }) + + return ( +
+ + +
+ ) +} diff --git a/demos/src/Commands/Cut/React/index.spec.js b/demos/src/Commands/Cut/React/index.spec.js new file mode 100644 index 00000000000..b23e72c17e4 --- /dev/null +++ b/demos/src/Commands/Cut/React/index.spec.js @@ -0,0 +1,143 @@ +context('/src/Examples/Default/React/', () => { + before(() => { + cy.visit('/src/Examples/Default/React/') + }) + + beforeEach(() => { + cy.get('.tiptap').then(([{ editor }]) => { + editor.commands.setContent('

Example Text

') + cy.get('.tiptap').type('{selectall}') + }) + }) + + it('should apply the paragraph style when the keyboard shortcut is pressed', () => { + cy.get('.tiptap h1').should('exist') + cy.get('.tiptap p').should('not.exist') + + cy.get('.tiptap') + .trigger('keydown', { modKey: true, altKey: true, key: '0' }) + .find('p') + .should('contain', 'Example Text') + }) + + const buttonMarks = [ + { label: 'bold', tag: 'strong' }, + { label: 'italic', tag: 'em' }, + { label: 'strike', tag: 's' }, + ] + + buttonMarks.forEach(m => { + it(`should disable ${m.label} when the code tag is enabled for cursor`, () => { + cy.get('.tiptap').type('{selectall}Hello world') + cy.get('button').contains('code').click() + cy.get('button').contains(m.label).should('be.disabled') + }) + + it(`should enable ${m.label} when the code tag is disabled for cursor`, () => { + cy.get('.tiptap').type('{selectall}Hello world') + cy.get('button').contains('code').click() + cy.get('button').contains('code').click() + cy.get('button').contains(m.label).should('not.be.disabled') + }) + + it(`should disable ${m.label} when the code tag is enabled for selection`, () => { + cy.get('.tiptap').type('{selectall}Hello world{selectall}') + cy.get('button').contains('code').click() + cy.get('button').contains(m.label).should('be.disabled') + }) + + it(`should enable ${m.label} when the code tag is disabled for selection`, () => { + cy.get('.tiptap').type('{selectall}Hello world{selectall}') + cy.get('button').contains('code').click() + cy.get('button').contains('code').click() + cy.get('button').contains(m.label).should('not.be.disabled') + }) + + it(`should apply ${m.label} when the button is pressed`, () => { + cy.get('.tiptap').type('{selectall}Hello world') + cy.get('button').contains('paragraph').click() + cy.get('.tiptap').type('{selectall}') + cy.get('button').contains(m.label).click() + cy.get(`.tiptap ${m.tag}`).should('exist').should('have.text', 'Hello world') + }) + }) + + it('should clear marks when the button is pressed', () => { + cy.get('.tiptap').type('{selectall}Hello world') + cy.get('button').contains('paragraph').click() + cy.get('.tiptap').type('{selectall}') + cy.get('button').contains('bold').click() + cy.get('.tiptap strong').should('exist').should('have.text', 'Hello world') + cy.get('button').contains('clear marks').click() + cy.get('.tiptap strong').should('not.exist') + }) + + it('should clear nodes when the button is pressed', () => { + cy.get('.tiptap').type('{selectall}Hello world') + cy.get('button').contains('bullet list').click() + cy.get('.tiptap ul').should('exist').should('have.text', 'Hello world') + cy.get('.tiptap').type('{enter}A second item{enter}A third item{selectall}') + cy.get('button').contains('clear nodes').click() + cy.get('.tiptap ul').should('not.exist') + cy.get('.tiptap p').should('have.length', 3) + }) + + const buttonNodes = [ + { label: 'h1', tag: 'h1' }, + { label: 'h2', tag: 'h2' }, + { label: 'h3', tag: 'h3' }, + { label: 'h4', tag: 'h4' }, + { label: 'h5', tag: 'h5' }, + { label: 'h6', tag: 'h6' }, + { label: 'bullet list', tag: 'ul' }, + { label: 'ordered list', tag: 'ol' }, + { label: 'code block', tag: 'pre code' }, + { label: 'blockquote', tag: 'blockquote' }, + ] + + buttonNodes.forEach(n => { + it(`should set ${n.label} when the button is pressed`, () => { + cy.get('button').contains('paragraph').click() + cy.get('.tiptap').type('{selectall}Hello world{selectall}') + + cy.get('button').contains(n.label).click() + cy.get(`.tiptap ${n.tag}`).should('exist').should('have.text', 'Hello world') + cy.get('button').contains(n.label).click() + cy.get(`.tiptap ${n.tag}`).should('not.exist') + }) + }) + + it('should add a hr when on the same line as a node', () => { + cy.get('.tiptap').type('{rightArrow}') + cy.get('button').contains('horizontal rule').click() + cy.get('.tiptap hr').should('exist') + cy.get('.tiptap h1').should('exist') + }) + + it('should add a hr when on a new line', () => { + cy.get('.tiptap').type('{rightArrow}{enter}') + cy.get('button').contains('horizontal rule').click() + cy.get('.tiptap hr').should('exist') + cy.get('.tiptap h1').should('exist') + }) + + it('should add a br', () => { + cy.get('.tiptap').type('{rightArrow}') + cy.get('button').contains('hard break').click() + cy.get('.tiptap h1 br').should('exist') + }) + + it('should undo', () => { + cy.get('.tiptap').type('{selectall}{backspace}') + cy.get('button').contains('undo').click() + cy.get('.tiptap').should('contain', 'Hello world') + }) + + it('should redo', () => { + cy.get('.tiptap').type('{selectall}{backspace}') + cy.get('button').contains('undo').click() + cy.get('.tiptap').should('contain', 'Hello world') + cy.get('button').contains('redo').click() + cy.get('.tiptap').should('not.contain', 'Hello world') + }) +}) diff --git a/demos/src/Commands/Cut/React/styles.scss b/demos/src/Commands/Cut/React/styles.scss new file mode 100644 index 00000000000..4d2b2c81ea5 --- /dev/null +++ b/demos/src/Commands/Cut/React/styles.scss @@ -0,0 +1,56 @@ +/* Basic editor styles */ +.tiptap { + > * + * { + margin-top: 0.75em; + } + + ul, + ol { + padding: 0 1rem; + } + + h1, + h2, + h3, + h4, + h5, + h6 { + line-height: 1.1; + } + + code { + background-color: rgba(#616161, 0.1); + color: #616161; + } + + pre { + background: #0D0D0D; + color: #FFF; + font-family: 'JetBrainsMono', monospace; + padding: 0.75rem 1rem; + border-radius: 0.5rem; + + code { + color: inherit; + padding: 0; + background: none; + font-size: 0.8rem; + } + } + + img { + max-width: 100%; + height: auto; + } + + blockquote { + padding-left: 1rem; + border-left: 2px solid rgba(#0D0D0D, 0.1); + } + + hr { + border: none; + border-top: 2px solid rgba(#0D0D0D, 0.1); + margin: 2rem 0; + } +} diff --git a/demos/src/Commands/InsertContent/Vue/index.html b/demos/src/Commands/InsertContent/Vue/index.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/demos/src/Commands/InsertContent/Vue/index.vue b/demos/src/Commands/InsertContent/Vue/index.vue new file mode 100644 index 00000000000..a4366b419bf --- /dev/null +++ b/demos/src/Commands/InsertContent/Vue/index.vue @@ -0,0 +1,102 @@ + + + + + diff --git a/demos/src/Demos/SingleRoomCollab/React/index.html b/demos/src/Demos/SingleRoomCollab/React/index.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/demos/src/Demos/SingleRoomCollab/React/index.jsx b/demos/src/Demos/SingleRoomCollab/React/index.jsx new file mode 100644 index 00000000000..46b82a4fbd1 --- /dev/null +++ b/demos/src/Demos/SingleRoomCollab/React/index.jsx @@ -0,0 +1,130 @@ +import './styles.scss' + +import { TiptapCollabProvider } from '@hocuspocus/provider' +import CharacterCount from '@tiptap/extension-character-count' +import Collaboration from '@tiptap/extension-collaboration' +import CollaborationCursor from '@tiptap/extension-collaboration-cursor' +import { EditorContent, useEditor } from '@tiptap/react' +import StarterKit from '@tiptap/starter-kit' +import React, { + useCallback, useEffect, + useState, +} from 'react' +import * as Y from 'yjs' + +const room = 'room-1' +const colors = ['#958DF1', '#F98181', '#FBBC88', '#FAF594', '#70CFF8', '#94FADB', '#B9F18D'] +const names = [ + 'Lea Thompson', + 'Cyndi Lauper', + 'Tom Cruise', + 'Madonna', + 'Jerry Hall', + 'Joan Collins', + 'Winona Ryder', + 'Christina Applegate', + 'Alyssa Milano', + 'Molly Ringwald', + 'Ally Sheedy', + 'Debbie Harry', + 'Olivia Newton-John', + 'Elton John', + 'Michael J. Fox', + 'Axl Rose', + 'Emilio Estevez', + 'Ralph Macchio', + 'Rob Lowe', + 'Jennifer Grey', + 'Mickey Rourke', + 'John Cusack', + 'Matthew Broderick', + 'Justine Bateman', + 'Lisa Bonet', +] + +const getRandomElement = list => list[Math.floor(Math.random() * list.length)] + +const getRandomColor = () => getRandomElement(colors) +const getRandomName = () => getRandomElement(names) + +const ydoc = new Y.Doc() +const websocketProvider = new TiptapCollabProvider({ + appId: '7j9y6m10', + name: room, + document: ydoc, +}) + +const getInitialUser = () => { + return JSON.parse(localStorage.getItem('currentUser')) || { + name: getRandomName(), + color: getRandomColor(), + } +} + +export default () => { + const [status, setStatus] = useState('connecting') + const [currentUser, setCurrentUser] = useState(getInitialUser) + + const editor = useEditor({ + extensions: [ + StarterKit.configure({ + history: false, + }), + CharacterCount.configure({ + limit: 10000, + }), + Collaboration.configure({ + document: ydoc, + }), + CollaborationCursor.configure({ + provider: websocketProvider, + }), + ], + }) + + useEffect(() => { + // Update status changes + websocketProvider.on('status', event => { + setStatus(event.status) + }) + }, []) + + // Save current user to localStorage and emit to editor + useEffect(() => { + if (editor && currentUser) { + localStorage.setItem('currentUser', JSON.stringify(currentUser)) + editor.chain().focus().updateUser(currentUser).run() + } + }, [editor, currentUser]) + + const setName = useCallback(() => { + const name = (window.prompt('Name') || '').trim().substring(0, 32) + + if (name) { + return setCurrentUser({ ...currentUser, name }) + } + }, [currentUser]) + + return ( +
+
+
+ + + +
+
+
+ {status === 'connected' + ? `${editor.storage.collaborationCursor.users.length} user${editor.storage.collaborationCursor.users.length === 1 ? '' : 's'} online in ${room}` + : 'offline'} +
+
+ +
+
+
+ +
+ ) +} diff --git a/demos/src/Demos/SingleRoomCollab/React/index.spec.js b/demos/src/Demos/SingleRoomCollab/React/index.spec.js new file mode 100644 index 00000000000..b31746f1a21 --- /dev/null +++ b/demos/src/Demos/SingleRoomCollab/React/index.spec.js @@ -0,0 +1,21 @@ +context('/src/Examples/CollaborativeEditing/React/', () => { + beforeEach(() => { + cy.visit('/src/Examples/CollaborativeEditing/React/') + }) + + /* it('should show the current room with participants', () => { + cy.wait(6000) + cy.get('.editor__status') + .should('contain', 'rooms.') + .should('contain', 'users online') + }) + + it('should allow user to change name', () => { + cy.window().then(win => { + cy.stub(win, 'prompt').returns('John Doe') + cy.get('.editor__name > button').click() + cy.wait(6000) + cy.get('.editor__name').should('contain', 'John Doe') + }) + }) */ +}) diff --git a/demos/src/Demos/SingleRoomCollab/React/styles.scss b/demos/src/Demos/SingleRoomCollab/React/styles.scss new file mode 100644 index 00000000000..57be3700e3f --- /dev/null +++ b/demos/src/Demos/SingleRoomCollab/React/styles.scss @@ -0,0 +1,199 @@ +/* Basic editor styles */ +.tiptap { + > * + * { + margin-top: 0.75em; + } + + ul, + ol { + padding: 0 1rem; + } + + h1, + h2, + h3, + h4, + h5, + h6 { + line-height: 1.1; + } + + code { + background-color: rgba(#616161, 0.1); + color: #616161; + } + + pre { + background: #0d0d0d; + border-radius: 0.5rem; + color: #fff; + font-family: "JetBrainsMono", monospace; + padding: 0.75rem 1rem; + + code { + background: none; + color: inherit; + font-size: 0.8rem; + padding: 0; + } + } + + mark { + background-color: #faf594; + } + + img { + height: auto; + max-width: 100%; + } + + hr { + margin: 1rem 0; + } + + blockquote { + border-left: 2px solid rgba(#0d0d0d, 0.1); + padding-left: 1rem; + } + + hr { + border: none; + border-top: 2px solid rgba(#0d0d0d, 0.1); + margin: 2rem 0; + } + + ul[data-type="taskList"] { + list-style: none; + padding: 0; + + li { + align-items: center; + display: flex; + + > label { + flex: 0 0 auto; + margin-right: 0.5rem; + user-select: none; + } + + > div { + flex: 1 1 auto; + } + } + } +} + +.editor { + background-color: #fff; + border: 2px solid #0d0d0d; + border-radius: 0.75rem; + box-shadow: 5px 5px #000; + color: #0d0d0d; + display: flex; + flex-direction: column; + max-height: 26rem; + + &__header { + align-items: center; + border-bottom: 2px solid #0d0d0d; + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; + display: flex; + justify-content: space-between; + padding: 0.5rem 1rem; + } + + &__users { + color: rgba(#000, 0.8); + display: flex; + font-size: 0.85rem; + gap: 1rem; + } + + &__content { + flex: 1 1 auto; + overflow-x: hidden; + overflow-y: auto; + padding: 1.25rem 1rem; + -webkit-overflow-scrolling: touch; + } + + /* Some information about the status */ + &__status { + align-items: center; + border-radius: 5px; + display: flex; + + &::before { + background: rgba(#0d0d0d, 0.5); + border-radius: 50%; + content: " "; + display: inline-block; + flex: 0 0 auto; + height: 0.5rem; + margin-right: 0.5rem; + width: 0.5rem; + } + + &--connecting::before { + background: #616161; + } + + &--connected::before { + background: #b9f18d; + } + } + + &__name button { + appearance: none; + background: transparent; + border: none; + color: inherit; + cursor: pointer; + font: inherit; + line-height: normal; + margin: 0; + padding: 0; + overflow: visible; + width: auto; + } +} + +/* Give a remote user a caret */ +.collaboration-cursor__caret { + border-left: 1px solid #0d0d0d; + border-right: 1px solid #0d0d0d; + margin-left: -1px; + margin-right: -1px; + pointer-events: none; + position: relative; + word-break: normal; +} + +/* Render the username above the caret */ +.collaboration-cursor__label { + border-radius: 3px 3px 3px 0; + color: #0d0d0d; + font-size: 0.75rem; + font-style: normal; + font-weight: 600; + left: -1px; + line-height: normal; + padding: 0.1rem 0.3rem; + position: absolute; + top: -1.4em; + user-select: none; + white-space: nowrap; +} + +.dots { + display: flex; + gap: 6px; +} + +.dot { + background: #000; + border-radius: 100%; + height: 0.625rem; + width: 0.625rem; +} diff --git a/demos/src/Dev/.gitkeep b/demos/src/Dev/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/demos/src/Examples/AutolinkValidation/React/index.spec.js b/demos/src/Examples/AutolinkValidation/React/index.spec.js index 0967dabaab9..de99ed56e97 100644 --- a/demos/src/Examples/AutolinkValidation/React/index.spec.js +++ b/demos/src/Examples/AutolinkValidation/React/index.spec.js @@ -4,7 +4,7 @@ context('/src/Examples/AutolinkValidation/React/', () => { }) beforeEach(() => { - cy.get('.ProseMirror').type('{selectall}{backspace}') + cy.get('.tiptap').type('{selectall}{backspace}') }) const validLinks = [ @@ -24,84 +24,77 @@ context('/src/Examples/AutolinkValidation/React/', () => { 'https://tiptap.dev', ] - validLinks.forEach(link => { - it(`${link[0]} should get autolinked`, () => { - cy.get('.ProseMirror').type(link[0]) - cy.get('.ProseMirror').should('have.text', link[0]) - cy.get('.ProseMirror') - .find('a') - .should('have.length', 1) - .should('have.attr', 'href', link[1]) + validLinks.forEach(([rawTextInput, textThatShouldBeLinked]) => { + it(`should autolink ${rawTextInput}`, () => { + cy.get('.tiptap').type(rawTextInput) + cy.get('.tiptap a').contains(textThatShouldBeLinked) }) }) - invalidLinks.forEach(link => { - it(`${link} should NOT get autolinked`, () => { - cy.get('.ProseMirror').type(link) - cy.get('.ProseMirror').should('have.text', link) - cy.get('.ProseMirror') - .find('a') - .should('have.length', 0) + invalidLinks.forEach(rawTextInput => { + it(`should not autolink ${rawTextInput}`, () => { + cy.get('.tiptap').type(`{selectall}{backspace}${rawTextInput}`) + cy.get('.tiptap a').should('not.exist') }) }) it('should not relink unset links after entering second link', () => { - cy.get('.ProseMirror').type('https://tiptap.dev {home}') - cy.get('.ProseMirror').should('have.text', 'https://tiptap.dev ') + cy.get('.tiptap').type('https://tiptap.dev {home}') + cy.get('.tiptap').should('have.text', 'https://tiptap.dev ') cy.get('[data-testid=unsetLink]').click() - cy.get('.ProseMirror') + cy.get('.tiptap') .find('a') .should('have.length', 0) - cy.get('.ProseMirror').type('{end}http://www.example.com/ ') - cy.get('.ProseMirror') + cy.get('.tiptap').type('{end}http://www.example.com/ ') + cy.get('.tiptap') .find('a') .should('have.length', 1) .should('have.attr', 'href', 'http://www.example.com/') }) it('should not relink unset links after hitting next paragraph', () => { - cy.get('.ProseMirror').type('https://tiptap.dev {home}') - cy.get('.ProseMirror').should('have.text', 'https://tiptap.dev ') + cy.get('.tiptap').type('https://tiptap.dev {home}') + cy.get('.tiptap').should('have.text', 'https://tiptap.dev ') cy.get('[data-testid=unsetLink]').click() - cy.get('.ProseMirror') + cy.get('.tiptap') .find('a') .should('have.length', 0) - cy.get('.ProseMirror').type('{end}typing other text should prevent the link from relinking when hitting enter{enter}') - cy.get('.ProseMirror') + cy.get('.tiptap').type('{end}typing other text should prevent the link from relinking when hitting enter{enter}') + cy.get('.tiptap') .find('a') .should('have.length', 0) }) it('should not relink unset links after modifying', () => { - cy.get('.ProseMirror').type('https://tiptap.dev {home}') - cy.get('.ProseMirror').should('have.text', 'https://tiptap.dev ') + cy.get('.tiptap').type('https://tiptap.dev {home}') + cy.get('.tiptap').should('have.text', 'https://tiptap.dev ') cy.get('[data-testid=unsetLink]').click() - cy.get('.ProseMirror') + cy.get('.tiptap') .find('a') .should('have.length', 0) - cy.get('.ProseMirror') + cy.get('.tiptap') .type('{home}') .type('{rightArrow}'.repeat('https://'.length)) .type('blah') - cy.get('.ProseMirror').should('have.text', 'https://blahtiptap.dev ') - cy.get('.ProseMirror') + cy.get('.tiptap').should('have.text', 'https://blahtiptap.dev ') + cy.get('.tiptap') .find('a') .should('have.length', 0) }) it('should autolink after hitting enter (new paragraph)', () => { - cy.get('.ProseMirror').type('https://tiptap.dev{enter}') - cy.get('.ProseMirror').should('have.text', 'https://tiptap.dev') - cy.get('.ProseMirror') + cy.get('.tiptap').type('https://tiptap.dev{enter}') + cy.get('.tiptap').should('have.text', 'https://tiptap.dev') + cy.get('.tiptap') .find('a') .should('have.length', 1) .should('have.attr', 'href', 'https://tiptap.dev') }) it('should autolink after hitting shift-enter (hardbreak)', () => { - cy.get('.ProseMirror').type('https://tiptap.dev{shift+enter}') - cy.get('.ProseMirror').should('have.text', 'https://tiptap.dev') - cy.get('.ProseMirror') + cy.get('.tiptap').type('https://tiptap.dev{shift+enter}') + cy.get('.tiptap').should('have.text', 'https://tiptap.dev') + cy.get('.tiptap') .find('a') .should('have.length', 1) .should('have.attr', 'href', 'https://tiptap.dev') diff --git a/demos/src/Examples/AutolinkValidation/React/styles.scss b/demos/src/Examples/AutolinkValidation/React/styles.scss index 9a6d1a7c558..01978738f8c 100644 --- a/demos/src/Examples/AutolinkValidation/React/styles.scss +++ b/demos/src/Examples/AutolinkValidation/React/styles.scss @@ -1,5 +1,5 @@ /* Basic editor styles */ -.ProseMirror { +.tiptap { > * + * { margin-top: 0.75em; } diff --git a/demos/src/Examples/AutolinkValidation/Vue/index.spec.js b/demos/src/Examples/AutolinkValidation/Vue/index.spec.js index c08e2df52c6..f19376f78f1 100644 --- a/demos/src/Examples/AutolinkValidation/Vue/index.spec.js +++ b/demos/src/Examples/AutolinkValidation/Vue/index.spec.js @@ -4,7 +4,7 @@ context('/src/Examples/AutolinkValidation/Vue/', () => { }) beforeEach(() => { - cy.get('.ProseMirror').type('{selectall}{backspace}') + cy.get('.tiptap').type('{selectall}{backspace}') }) const validLinks = [ @@ -24,24 +24,17 @@ context('/src/Examples/AutolinkValidation/Vue/', () => { 'https://tiptap.dev', ] - validLinks.forEach(link => { - it(`${link[0]} should get autolinked`, () => { - cy.get('.ProseMirror').type(link[0]) - cy.get('.ProseMirror').should('have.text', link[0]) - cy.get('.ProseMirror') - .find('a') - .should('have.length', 1) - .should('have.attr', 'href', link[1]) + validLinks.forEach(([rawTextInput, textThatShouldBeLinked]) => { + it(`should autolink ${rawTextInput}`, () => { + cy.get('.tiptap').type(rawTextInput) + cy.get('.tiptap a').contains(textThatShouldBeLinked) }) }) - invalidLinks.forEach(link => { - it(`${link} should NOT get autolinked`, () => { - cy.get('.ProseMirror').type(link) - cy.get('.ProseMirror').should('have.text', link) - cy.get('.ProseMirror') - .find('a') - .should('have.length', 0) + invalidLinks.forEach(rawTextInput => { + it(`should not autolink ${rawTextInput}`, () => { + cy.get('.tiptap').type(`{selectall}{backspace}${rawTextInput}`) + cy.get('.tiptap a').should('not.exist') }) }) }) diff --git a/demos/src/Examples/AutolinkValidation/Vue/index.vue b/demos/src/Examples/AutolinkValidation/Vue/index.vue index 7ff6ed7e4a0..071f79ad446 100644 --- a/demos/src/Examples/AutolinkValidation/Vue/index.vue +++ b/demos/src/Examples/AutolinkValidation/Vue/index.vue @@ -45,7 +45,7 @@ export default { diff --git a/demos/src/Examples/CollaborativeEditing/Vue/MenuItem.vue b/demos/src/Examples/CollaborativeEditing/Vue/MenuItem.vue index 955e6bd7ac3..a683360822f 100644 --- a/demos/src/Examples/CollaborativeEditing/Vue/MenuItem.vue +++ b/demos/src/Examples/CollaborativeEditing/Vue/MenuItem.vue @@ -47,25 +47,25 @@ export default { diff --git a/demos/src/Examples/CollaborativeEditing/Vue/index.vue b/demos/src/Examples/CollaborativeEditing/Vue/index.vue index d163a55991e..fdc602ccbe0 100644 --- a/demos/src/Examples/CollaborativeEditing/Vue/index.vue +++ b/demos/src/Examples/CollaborativeEditing/Vue/index.vue @@ -21,7 +21,7 @@ + + diff --git a/demos/src/Examples/CustomParagraph/Vue/Extension.js b/demos/src/Examples/CustomParagraph/Vue/Extension.js new file mode 100644 index 00000000000..cc53c39195f --- /dev/null +++ b/demos/src/Examples/CustomParagraph/Vue/Extension.js @@ -0,0 +1,10 @@ +import { Paragraph as BaseParagraph } from '@tiptap/extension-paragraph' +import { VueNodeViewRenderer } from '@tiptap/vue-3' + +import Component from './Component.vue' + +export default BaseParagraph.extend({ + addNodeView() { + return VueNodeViewRenderer(Component) + }, +}) diff --git a/demos/src/Examples/CustomParagraph/Vue/index.html b/demos/src/Examples/CustomParagraph/Vue/index.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/demos/src/Examples/CustomParagraph/Vue/index.spec.js b/demos/src/Examples/CustomParagraph/Vue/index.spec.js new file mode 100644 index 00000000000..9d460a016d5 --- /dev/null +++ b/demos/src/Examples/CustomParagraph/Vue/index.spec.js @@ -0,0 +1,23 @@ +context('/src/Examples/CustomParagraph/React/', () => { + beforeEach(() => { + cy.visit('/src/Examples/CustomParagraph/React/') + }) + + it('should have a working tiptap instance', () => { + cy.get('.tiptap').then(([{ editor }]) => { + // eslint-disable-next-line + expect(editor).to.not.be.null + }) + }) + + it('should have a paragraph and text length', () => { + cy.get('.tiptap p').should('exist').should('have.text', 'Each line shows the number of characters in the paragraph.') + cy.get('.tiptap .label').should('exist').should('have.text', '58') + }) + + it('should have new paragraph', () => { + cy.get('.tiptap').type('{selectall}{moveToEnd}{enter}') + cy.get('.tiptap p').eq(1).should('exist').should('have.text', '') + cy.get('.tiptap .label').eq(1).should('exist').should('have.text', '0') + }) +}) diff --git a/demos/src/Examples/CustomParagraph/Vue/index.vue b/demos/src/Examples/CustomParagraph/Vue/index.vue new file mode 100644 index 00000000000..3c0aca32ad7 --- /dev/null +++ b/demos/src/Examples/CustomParagraph/Vue/index.vue @@ -0,0 +1,55 @@ + + + + + +n diff --git a/demos/src/Examples/Default/React/index.jsx b/demos/src/Examples/Default/React/index.jsx index 42c168adb72..00c9f575486 100644 --- a/demos/src/Examples/Default/React/index.jsx +++ b/demos/src/Examples/Default/React/index.jsx @@ -1,10 +1,15 @@ import './styles.scss' -import { EditorContent, useEditor } from '@tiptap/react' +import { Color } from '@tiptap/extension-color' +import ListItem from '@tiptap/extension-list-item' +import TextStyle from '@tiptap/extension-text-style' +import { EditorProvider, useCurrentEditor } from '@tiptap/react' import StarterKit from '@tiptap/starter-kit' import React from 'react' -const MenuBar = ({ editor }) => { +const MenuBar = () => { + const { editor } = useCurrentEditor() + if (!editor) { return null } @@ -165,51 +170,64 @@ const MenuBar = ({ editor }) => { > redo + ) } -export default () => { - const editor = useEditor({ - extensions: [ - StarterKit, - ], - content: ` -

- Hi there, -

-

- this is a basic example of tiptap. Sure, there are all kind of basic text styles you’d probably expect from a text editor. But wait until you see the lists: -

- -

- Isn’t that great? And all of that is editable. But wait, there’s more. Let’s try a code block: -

-
body {
-  display: none;
+const extensions = [
+  Color.configure({ types: [TextStyle.name, ListItem.name] }),
+  TextStyle.configure({ types: [ListItem.name] }),
+  StarterKit.configure({
+    bulletList: {
+      keepMarks: true,
+      keepAttributes: false, // TODO : Making this as `false` becase marks are not preserved when I try to preserve attrs, awaiting a bit of help
+    },
+    orderedList: {
+      keepMarks: true,
+      keepAttributes: false, // TODO : Making this as `false` becase marks are not preserved when I try to preserve attrs, awaiting a bit of help
+    },
+  }),
+]
+
+const content = `
+

+ Hi there, +

+

+ this is a basic example of tiptap. Sure, there are all kind of basic text styles you’d probably expect from a text editor. But wait until you see the lists: +

+ +

+ Isn’t that great? And all of that is editable. But wait, there’s more. Let’s try a code block: +

+
body {
+display: none;
 }
-

- I know, I know, this is impressive. It’s only the tip of the iceberg though. Give it a try and click a little bit around. Don’t forget to check the other examples too. -

-
- Wow, that’s amazing. Good work, boy! 👏 -
- — Mom -
- `, - }) +

+ I know, I know, this is impressive. It’s only the tip of the iceberg though. Give it a try and click a little bit around. Don’t forget to check the other examples too. +

+
+ Wow, that’s amazing. Good work, boy! 👏 +
+ — Mom +
+` +export default () => { return ( -
- - -
+ } extensions={extensions} content={content}> ) } diff --git a/demos/src/Examples/Default/React/index.spec.js b/demos/src/Examples/Default/React/index.spec.js index 02720962139..b23e72c17e4 100644 --- a/demos/src/Examples/Default/React/index.spec.js +++ b/demos/src/Examples/Default/React/index.spec.js @@ -4,17 +4,17 @@ context('/src/Examples/Default/React/', () => { }) beforeEach(() => { - cy.get('.ProseMirror').then(([{ editor }]) => { + cy.get('.tiptap').then(([{ editor }]) => { editor.commands.setContent('

Example Text

') - cy.get('.ProseMirror').type('{selectall}') + cy.get('.tiptap').type('{selectall}') }) }) it('should apply the paragraph style when the keyboard shortcut is pressed', () => { - cy.get('.ProseMirror h1').should('exist') - cy.get('.ProseMirror p').should('not.exist') + cy.get('.tiptap h1').should('exist') + cy.get('.tiptap p').should('not.exist') - cy.get('.ProseMirror') + cy.get('.tiptap') .trigger('keydown', { modKey: true, altKey: true, key: '0' }) .find('p') .should('contain', 'Example Text') @@ -28,58 +28,58 @@ context('/src/Examples/Default/React/', () => { buttonMarks.forEach(m => { it(`should disable ${m.label} when the code tag is enabled for cursor`, () => { - cy.get('.ProseMirror').type('{selectall}Hello world') + cy.get('.tiptap').type('{selectall}Hello world') cy.get('button').contains('code').click() cy.get('button').contains(m.label).should('be.disabled') }) it(`should enable ${m.label} when the code tag is disabled for cursor`, () => { - cy.get('.ProseMirror').type('{selectall}Hello world') + cy.get('.tiptap').type('{selectall}Hello world') cy.get('button').contains('code').click() cy.get('button').contains('code').click() cy.get('button').contains(m.label).should('not.be.disabled') }) it(`should disable ${m.label} when the code tag is enabled for selection`, () => { - cy.get('.ProseMirror').type('{selectall}Hello world{selectall}') + cy.get('.tiptap').type('{selectall}Hello world{selectall}') cy.get('button').contains('code').click() cy.get('button').contains(m.label).should('be.disabled') }) it(`should enable ${m.label} when the code tag is disabled for selection`, () => { - cy.get('.ProseMirror').type('{selectall}Hello world{selectall}') + cy.get('.tiptap').type('{selectall}Hello world{selectall}') cy.get('button').contains('code').click() cy.get('button').contains('code').click() cy.get('button').contains(m.label).should('not.be.disabled') }) it(`should apply ${m.label} when the button is pressed`, () => { - cy.get('.ProseMirror').type('{selectall}Hello world') + cy.get('.tiptap').type('{selectall}Hello world') cy.get('button').contains('paragraph').click() - cy.get('.ProseMirror').type('{selectall}') + cy.get('.tiptap').type('{selectall}') cy.get('button').contains(m.label).click() - cy.get(`.ProseMirror ${m.tag}`).should('exist').should('have.text', 'Hello world') + cy.get(`.tiptap ${m.tag}`).should('exist').should('have.text', 'Hello world') }) }) it('should clear marks when the button is pressed', () => { - cy.get('.ProseMirror').type('{selectall}Hello world') + cy.get('.tiptap').type('{selectall}Hello world') cy.get('button').contains('paragraph').click() - cy.get('.ProseMirror').type('{selectall}') + cy.get('.tiptap').type('{selectall}') cy.get('button').contains('bold').click() - cy.get('.ProseMirror strong').should('exist').should('have.text', 'Hello world') + cy.get('.tiptap strong').should('exist').should('have.text', 'Hello world') cy.get('button').contains('clear marks').click() - cy.get('.ProseMirror strong').should('not.exist') + cy.get('.tiptap strong').should('not.exist') }) it('should clear nodes when the button is pressed', () => { - cy.get('.ProseMirror').type('{selectall}Hello world') + cy.get('.tiptap').type('{selectall}Hello world') cy.get('button').contains('bullet list').click() - cy.get('.ProseMirror ul').should('exist').should('have.text', 'Hello world') - cy.get('.ProseMirror').type('{enter}A second item{enter}A third item{selectall}') + cy.get('.tiptap ul').should('exist').should('have.text', 'Hello world') + cy.get('.tiptap').type('{enter}A second item{enter}A third item{selectall}') cy.get('button').contains('clear nodes').click() - cy.get('.ProseMirror ul').should('not.exist') - cy.get('.ProseMirror p').should('have.length', 3) + cy.get('.tiptap ul').should('not.exist') + cy.get('.tiptap p').should('have.length', 3) }) const buttonNodes = [ @@ -98,46 +98,46 @@ context('/src/Examples/Default/React/', () => { buttonNodes.forEach(n => { it(`should set ${n.label} when the button is pressed`, () => { cy.get('button').contains('paragraph').click() - cy.get('.ProseMirror').type('{selectall}Hello world{selectall}') + cy.get('.tiptap').type('{selectall}Hello world{selectall}') cy.get('button').contains(n.label).click() - cy.get(`.ProseMirror ${n.tag}`).should('exist').should('have.text', 'Hello world') + cy.get(`.tiptap ${n.tag}`).should('exist').should('have.text', 'Hello world') cy.get('button').contains(n.label).click() - cy.get(`.ProseMirror ${n.tag}`).should('not.exist') + cy.get(`.tiptap ${n.tag}`).should('not.exist') }) }) it('should add a hr when on the same line as a node', () => { - cy.get('.ProseMirror').type('{rightArrow}') + cy.get('.tiptap').type('{rightArrow}') cy.get('button').contains('horizontal rule').click() - cy.get('.ProseMirror hr').should('exist') - cy.get('.ProseMirror h1').should('exist') + cy.get('.tiptap hr').should('exist') + cy.get('.tiptap h1').should('exist') }) it('should add a hr when on a new line', () => { - cy.get('.ProseMirror').type('{rightArrow}{enter}') + cy.get('.tiptap').type('{rightArrow}{enter}') cy.get('button').contains('horizontal rule').click() - cy.get('.ProseMirror hr').should('exist') - cy.get('.ProseMirror h1').should('exist') + cy.get('.tiptap hr').should('exist') + cy.get('.tiptap h1').should('exist') }) it('should add a br', () => { - cy.get('.ProseMirror').type('{rightArrow}') + cy.get('.tiptap').type('{rightArrow}') cy.get('button').contains('hard break').click() - cy.get('.ProseMirror h1 br').should('exist') + cy.get('.tiptap h1 br').should('exist') }) it('should undo', () => { - cy.get('.ProseMirror').type('{selectall}{backspace}') + cy.get('.tiptap').type('{selectall}{backspace}') cy.get('button').contains('undo').click() - cy.get('.ProseMirror').should('contain', 'Hello world') + cy.get('.tiptap').should('contain', 'Hello world') }) it('should redo', () => { - cy.get('.ProseMirror').type('{selectall}{backspace}') + cy.get('.tiptap').type('{selectall}{backspace}') cy.get('button').contains('undo').click() - cy.get('.ProseMirror').should('contain', 'Hello world') + cy.get('.tiptap').should('contain', 'Hello world') cy.get('button').contains('redo').click() - cy.get('.ProseMirror').should('not.contain', 'Hello world') + cy.get('.tiptap').should('not.contain', 'Hello world') }) }) diff --git a/demos/src/Examples/Default/React/styles.scss b/demos/src/Examples/Default/React/styles.scss index 9ba5fc022a0..4d2b2c81ea5 100644 --- a/demos/src/Examples/Default/React/styles.scss +++ b/demos/src/Examples/Default/React/styles.scss @@ -1,5 +1,5 @@ /* Basic editor styles */ -.ProseMirror { +.tiptap { > * + * { margin-top: 0.75em; } diff --git a/demos/src/Examples/Default/Svelte/index.spec.js b/demos/src/Examples/Default/Svelte/index.spec.js index b6702ded905..4e2c71b7920 100644 --- a/demos/src/Examples/Default/Svelte/index.spec.js +++ b/demos/src/Examples/Default/Svelte/index.spec.js @@ -4,17 +4,17 @@ context('/src/Examples/Default/React/', () => { }) beforeEach(() => { - cy.get('.ProseMirror').then(([{ editor }]) => { + cy.get('.tiptap').then(([{ editor }]) => { editor.commands.setContent('

Example Text

') - cy.get('.ProseMirror').type('{selectall}') + cy.get('.tiptap').type('{selectall}') }) }) it('should apply the paragraph style when the keyboard shortcut is pressed', () => { - cy.get('.ProseMirror h1').should('exist') - cy.get('.ProseMirror p').should('not.exist') + cy.get('.tiptap h1').should('exist') + cy.get('.tiptap p').should('not.exist') - cy.get('.ProseMirror') + cy.get('.tiptap') .trigger('keydown', { modKey: true, altKey: true, key: '0' }) .find('p') .should('contain', 'Example Text') @@ -28,32 +28,32 @@ context('/src/Examples/Default/React/', () => { buttonMarks.forEach(m => { it(`should apply ${m.label} when the button is pressed`, () => { - cy.get('.ProseMirror').type('{selectall}Hello world') + cy.get('.tiptap').type('{selectall}Hello world') cy.get('button').contains('paragraph').click() - cy.get('.ProseMirror').type('{selectall}') + cy.get('.tiptap').type('{selectall}') cy.get('button').contains(m.label).click() - cy.get(`.ProseMirror ${m.tag}`).should('exist').should('have.text', 'Hello world') + cy.get(`.tiptap ${m.tag}`).should('exist').should('have.text', 'Hello world') }) }) it('should clear marks when the button is pressed', () => { - cy.get('.ProseMirror').type('{selectall}Hello world') + cy.get('.tiptap').type('{selectall}Hello world') cy.get('button').contains('paragraph').click() - cy.get('.ProseMirror').type('{selectall}') + cy.get('.tiptap').type('{selectall}') cy.get('button').contains('bold').click() - cy.get('.ProseMirror strong').should('exist').should('have.text', 'Hello world') + cy.get('.tiptap strong').should('exist').should('have.text', 'Hello world') cy.get('button').contains('clear marks').click() - cy.get('.ProseMirror strong').should('not.exist') + cy.get('.tiptap strong').should('not.exist') }) it('should clear nodes when the button is pressed', () => { - cy.get('.ProseMirror').type('{selectall}Hello world') + cy.get('.tiptap').type('{selectall}Hello world') cy.get('button').contains('bullet list').click() - cy.get('.ProseMirror ul').should('exist').should('have.text', 'Hello world') - cy.get('.ProseMirror').type('{enter}A second item{enter}A third item{selectall}') + cy.get('.tiptap ul').should('exist').should('have.text', 'Hello world') + cy.get('.tiptap').type('{enter}A second item{enter}A third item{selectall}') cy.get('button').contains('clear nodes').click() - cy.get('.ProseMirror ul').should('not.exist') - cy.get('.ProseMirror p').should('have.length', 3) + cy.get('.tiptap ul').should('not.exist') + cy.get('.tiptap p').should('have.length', 3) }) const buttonNodes = [ @@ -72,46 +72,46 @@ context('/src/Examples/Default/React/', () => { buttonNodes.forEach(n => { it(`should set ${n.label} when the button is pressed`, () => { cy.get('button').contains('paragraph').click() - cy.get('.ProseMirror').type('{selectall}Hello world{selectall}') + cy.get('.tiptap').type('{selectall}Hello world{selectall}') cy.get('button').contains(n.label).click() - cy.get(`.ProseMirror ${n.tag}`).should('exist').should('have.text', 'Hello world') + cy.get(`.tiptap ${n.tag}`).should('exist').should('have.text', 'Hello world') cy.get('button').contains(n.label).click() - cy.get(`.ProseMirror ${n.tag}`).should('not.exist') + cy.get(`.tiptap ${n.tag}`).should('not.exist') }) }) it('should add a hr when on the same line as a node', () => { - cy.get('.ProseMirror').type('{rightArrow}') + cy.get('.tiptap').type('{rightArrow}') cy.get('button').contains('horizontal rule').click() - cy.get('.ProseMirror hr').should('exist') - cy.get('.ProseMirror h1').should('exist') + cy.get('.tiptap hr').should('exist') + cy.get('.tiptap h1').should('exist') }) it('should add a hr when on a new line', () => { - cy.get('.ProseMirror').type('{rightArrow}{enter}') + cy.get('.tiptap').type('{rightArrow}{enter}') cy.get('button').contains('horizontal rule').click() - cy.get('.ProseMirror hr').should('exist') - cy.get('.ProseMirror h1').should('exist') + cy.get('.tiptap hr').should('exist') + cy.get('.tiptap h1').should('exist') }) it('should add a br', () => { - cy.get('.ProseMirror').type('{rightArrow}') + cy.get('.tiptap').type('{rightArrow}') cy.get('button').contains('hard break').click() - cy.get('.ProseMirror h1 br').should('exist') + cy.get('.tiptap h1 br').should('exist') }) it('should undo', () => { - cy.get('.ProseMirror').type('{selectall}{backspace}') + cy.get('.tiptap').type('{selectall}{backspace}') cy.get('button').contains('undo').click() - cy.get('.ProseMirror').should('contain', 'Hello world') + cy.get('.tiptap').should('contain', 'Hello world') }) it('should redo', () => { - cy.get('.ProseMirror').type('{selectall}{backspace}') + cy.get('.tiptap').type('{selectall}{backspace}') cy.get('button').contains('undo').click() - cy.get('.ProseMirror').should('contain', 'Hello world') + cy.get('.tiptap').should('contain', 'Hello world') cy.get('button').contains('redo').click() - cy.get('.ProseMirror').should('not.contain', 'Hello world') + cy.get('.tiptap').should('not.contain', 'Hello world') }) }) diff --git a/demos/src/Examples/Default/Svelte/styles.scss b/demos/src/Examples/Default/Svelte/styles.scss index 9ba5fc022a0..4d2b2c81ea5 100644 --- a/demos/src/Examples/Default/Svelte/styles.scss +++ b/demos/src/Examples/Default/Svelte/styles.scss @@ -1,5 +1,5 @@ /* Basic editor styles */ -.ProseMirror { +.tiptap { > * + * { margin-top: 0.75em; } diff --git a/demos/src/Examples/Default/Vue/index.spec.js b/demos/src/Examples/Default/Vue/index.spec.js index 7a3d59f2742..87600d69206 100644 --- a/demos/src/Examples/Default/Vue/index.spec.js +++ b/demos/src/Examples/Default/Vue/index.spec.js @@ -4,17 +4,17 @@ context('/src/Examples/Default/Vue/', () => { }) beforeEach(() => { - cy.get('.ProseMirror').then(([{ editor }]) => { + cy.get('.tiptap').then(([{ editor }]) => { editor.commands.setContent('

Example Text

') - cy.get('.ProseMirror').type('{selectall}') + cy.get('.tiptap').type('{selectall}') }) }) it('should apply the paragraph style when the keyboard shortcut is pressed', () => { - cy.get('.ProseMirror h1').should('exist') - cy.get('.ProseMirror p').should('not.exist') + cy.get('.tiptap h1').should('exist') + cy.get('.tiptap p').should('not.exist') - cy.get('.ProseMirror') + cy.get('.tiptap') .trigger('keydown', { modKey: true, altKey: true, key: '0' }) .find('p') .should('contain', 'Example Text') @@ -28,32 +28,32 @@ context('/src/Examples/Default/Vue/', () => { buttonMarks.forEach(m => { it(`should apply ${m.label} when the button is pressed`, () => { - cy.get('.ProseMirror').type('{selectall}Hello world') + cy.get('.tiptap').type('{selectall}Hello world') cy.get('button').contains('paragraph').click() - cy.get('.ProseMirror').type('{selectall}') + cy.get('.tiptap').type('{selectall}') cy.get('button').contains(m.label).click() - cy.get(`.ProseMirror ${m.tag}`).should('exist').should('have.text', 'Hello world') + cy.get(`.tiptap ${m.tag}`).should('exist').should('have.text', 'Hello world') }) }) it('should clear marks when the button is pressed', () => { - cy.get('.ProseMirror').type('{selectall}Hello world') + cy.get('.tiptap').type('{selectall}Hello world') cy.get('button').contains('paragraph').click() - cy.get('.ProseMirror').type('{selectall}') + cy.get('.tiptap').type('{selectall}') cy.get('button').contains('bold').click() - cy.get('.ProseMirror strong').should('exist').should('have.text', 'Hello world') + cy.get('.tiptap strong').should('exist').should('have.text', 'Hello world') cy.get('button').contains('clear marks').click() - cy.get('.ProseMirror strong').should('not.exist') + cy.get('.tiptap strong').should('not.exist') }) it('should clear nodes when the button is pressed', () => { - cy.get('.ProseMirror').type('{selectall}Hello world') + cy.get('.tiptap').type('{selectall}Hello world') cy.get('button').contains('bullet list').click() - cy.get('.ProseMirror ul').should('exist').should('have.text', 'Hello world') - cy.get('.ProseMirror').type('{enter}A second item{enter}A third item{selectall}') + cy.get('.tiptap ul').should('exist').should('have.text', 'Hello world') + cy.get('.tiptap').type('{enter}A second item{enter}A third item{selectall}') cy.get('button').contains('clear nodes').click() - cy.get('.ProseMirror ul').should('not.exist') - cy.get('.ProseMirror p').should('have.length', 3) + cy.get('.tiptap ul').should('not.exist') + cy.get('.tiptap p').should('have.length', 3) }) const buttonNodes = [ @@ -72,46 +72,46 @@ context('/src/Examples/Default/Vue/', () => { buttonNodes.forEach(n => { it(`should set ${n.label} when the button is pressed`, () => { cy.get('button').contains('paragraph').click() - cy.get('.ProseMirror').type('{selectall}Hello world{selectall}') + cy.get('.tiptap').type('{selectall}Hello world{selectall}') cy.get('button').contains(n.label).click() - cy.get(`.ProseMirror ${n.tag}`).should('exist').should('have.text', 'Hello world') + cy.get(`.tiptap ${n.tag}`).should('exist').should('have.text', 'Hello world') cy.get('button').contains(n.label).click() - cy.get(`.ProseMirror ${n.tag}`).should('not.exist') + cy.get(`.tiptap ${n.tag}`).should('not.exist') }) }) it('should add a hr when on the same line as a node', () => { - cy.get('.ProseMirror').type('{rightArrow}') + cy.get('.tiptap').type('{rightArrow}') cy.get('button').contains('horizontal rule').click() - cy.get('.ProseMirror hr').should('exist') - cy.get('.ProseMirror h1').should('exist') + cy.get('.tiptap hr').should('exist') + cy.get('.tiptap h1').should('exist') }) it('should add a hr when on a new line', () => { - cy.get('.ProseMirror').type('{rightArrow}{enter}') + cy.get('.tiptap').type('{rightArrow}{enter}') cy.get('button').contains('horizontal rule').click() - cy.get('.ProseMirror hr').should('exist') - cy.get('.ProseMirror h1').should('exist') + cy.get('.tiptap hr').should('exist') + cy.get('.tiptap h1').should('exist') }) it('should add a br', () => { - cy.get('.ProseMirror').type('{rightArrow}') + cy.get('.tiptap').type('{rightArrow}') cy.get('button').contains('hard break').click() - cy.get('.ProseMirror h1 br').should('exist') + cy.get('.tiptap h1 br').should('exist') }) it('should undo', () => { - cy.get('.ProseMirror').type('{selectall}{backspace}') + cy.get('.tiptap').type('{selectall}{backspace}') cy.get('button').contains('undo').click() - cy.get('.ProseMirror').should('contain', 'Hello world') + cy.get('.tiptap').should('contain', 'Hello world') }) it('should redo', () => { - cy.get('.ProseMirror').type('{selectall}{backspace}') + cy.get('.tiptap').type('{selectall}{backspace}') cy.get('button').contains('undo').click() - cy.get('.ProseMirror').should('contain', 'Hello world') + cy.get('.tiptap').should('contain', 'Hello world') cy.get('button').contains('redo').click() - cy.get('.ProseMirror').should('not.contain', 'Hello world') + cy.get('.tiptap').should('not.contain', 'Hello world') }) }) diff --git a/demos/src/Examples/Default/Vue/index.vue b/demos/src/Examples/Default/Vue/index.vue index 6fe89b63970..a01e6ded2db 100644 --- a/demos/src/Examples/Default/Vue/index.vue +++ b/demos/src/Examples/Default/Vue/index.vue @@ -128,7 +128,7 @@ export default { diff --git a/demos/src/Experiments/Embeds/Vue/index.vue b/demos/src/Experiments/Embeds/Vue/index.vue index 76f553f8b67..1674afed30a 100644 --- a/demos/src/Experiments/Embeds/Vue/index.vue +++ b/demos/src/Experiments/Embeds/Vue/index.vue @@ -12,7 +12,7 @@ import StarterKit from '@tiptap/starter-kit' import { Editor, EditorContent } from '@tiptap/vue-3' -import Iframe from './iframe' +import Iframe from './iframe.ts' export default { components: { @@ -56,7 +56,7 @@ export default { diff --git a/demos/src/Experiments/MultipleEditors/Vue/index.vue b/demos/src/Experiments/MultipleEditors/Vue/index.vue index 2a1a2ae0755..8a3561fce31 100644 --- a/demos/src/Experiments/MultipleEditors/Vue/index.vue +++ b/demos/src/Experiments/MultipleEditors/Vue/index.vue @@ -142,7 +142,7 @@ export default { diff --git a/demos/src/Nodes/TaskList/React/index.spec.js b/demos/src/Nodes/TaskList/React/index.spec.js index f9dab673a32..72772aba3eb 100644 --- a/demos/src/Nodes/TaskList/React/index.spec.js +++ b/demos/src/Nodes/TaskList/React/index.spec.js @@ -4,14 +4,14 @@ context('/src/Nodes/TaskList/React/', () => { }) beforeEach(() => { - cy.get('.ProseMirror').then(([{ editor }]) => { + cy.get('.tiptap').then(([{ editor }]) => { editor.commands.setContent('

Example Text

') - cy.get('.ProseMirror').type('{selectall}') + cy.get('.tiptap').type('{selectall}') }) }) it('should parse unordered lists correctly', () => { - cy.get('.ProseMirror').then(([{ editor }]) => { + cy.get('.tiptap').then(([{ editor }]) => { editor.commands.setContent( '', ) @@ -22,7 +22,7 @@ context('/src/Nodes/TaskList/React/', () => { }) it('should parse unordered lists without paragraphs correctly', () => { - cy.get('.ProseMirror').then(([{ editor }]) => { + cy.get('.tiptap').then(([{ editor }]) => { editor.commands.setContent( '', ) @@ -33,79 +33,79 @@ context('/src/Nodes/TaskList/React/', () => { }) it('the button should make the selected line a task list item', () => { - cy.get('.ProseMirror ul').should('not.exist') + cy.get('.tiptap ul').should('not.exist') - cy.get('.ProseMirror ul li').should('not.exist') + cy.get('.tiptap ul li').should('not.exist') cy.get('button:nth-child(1)').click() - cy.get('.ProseMirror').find('ul[data-type="taskList"]').should('contain', 'Example Text') + cy.get('.tiptap').find('ul[data-type="taskList"]').should('contain', 'Example Text') - cy.get('.ProseMirror').find('ul[data-type="taskList"] li').should('contain', 'Example Text') + cy.get('.tiptap').find('ul[data-type="taskList"] li').should('contain', 'Example Text') }) it('the button should toggle the task list', () => { - cy.get('.ProseMirror ul').should('not.exist') + cy.get('.tiptap ul').should('not.exist') cy.get('button:nth-child(1)').click() - cy.get('.ProseMirror').find('ul[data-type="taskList"]').should('contain', 'Example Text') + cy.get('.tiptap').find('ul[data-type="taskList"]').should('contain', 'Example Text') cy.get('button:nth-child(1)').click() - cy.get('.ProseMirror ul').should('not.exist') + cy.get('.tiptap ul').should('not.exist') }) it('should make the paragraph a task list when the keyboard shortcut is pressed', () => { - cy.get('.ProseMirror') + cy.get('.tiptap') .trigger('keydown', { modKey: true, shiftKey: true, key: '9' }) .find('ul li') .should('contain', 'Example Text') }) it('should leave the list with double enter', () => { - cy.get('.ProseMirror').then(([{ editor }]) => { + cy.get('.tiptap').then(([{ editor }]) => { editor.commands.clearContent() }) - cy.get('.ProseMirror').type('[ ] List Item 1{enter}{enter}Paragraph') + cy.get('.tiptap').type('[ ] List Item 1{enter}{enter}Paragraph') - cy.get('.ProseMirror').find('li').its('length').should('eq', 1) + cy.get('.tiptap').find('li').its('length').should('eq', 1) - cy.get('.ProseMirror').find('p').should('contain', 'Paragraph') + cy.get('.tiptap').find('p').should('contain', 'Paragraph') }) it('should make a task list from square brackets', () => { - cy.get('.ProseMirror').then(([{ editor }]) => { + cy.get('.tiptap').then(([{ editor }]) => { editor.commands.clearContent() }) - cy.get('.ProseMirror').type('[ ] List Item 1{enter}List Item 2') + cy.get('.tiptap').type('[ ] List Item 1{enter}List Item 2') - cy.get('.ProseMirror') + cy.get('.tiptap') .find('li:nth-child(1)') .should('contain', 'List Item 1') .should('have.attr', 'data-checked', 'false') - cy.get('.ProseMirror') + cy.get('.tiptap') .find('li:nth-child(2)') .should('contain', 'List Item 2') .should('have.attr', 'data-checked', 'false') }) it('should make a task list from checked square brackets', () => { - cy.get('.ProseMirror').then(([{ editor }]) => { + cy.get('.tiptap').then(([{ editor }]) => { editor.commands.clearContent() }) - cy.get('.ProseMirror').type('[x] List Item 1{enter}List Item 2') + cy.get('.tiptap').type('[x] List Item 1{enter}List Item 2') - cy.get('.ProseMirror') + cy.get('.tiptap') .find('li:nth-child(1)') .should('contain', 'List Item 1') .should('have.attr', 'data-checked', 'true') - cy.get('.ProseMirror') + cy.get('.tiptap') .find('li:nth-child(2)') .should('contain', 'List Item 2') .should('have.attr', 'data-checked', 'false') diff --git a/demos/src/Nodes/TaskList/React/styles.scss b/demos/src/Nodes/TaskList/React/styles.scss index 2a3190c0f88..694e786bf06 100644 --- a/demos/src/Nodes/TaskList/React/styles.scss +++ b/demos/src/Nodes/TaskList/React/styles.scss @@ -18,5 +18,14 @@ ul[data-type="taskList"] { > div { flex: 1 1 auto; } + + ul li, + ol li { + display: list-item; + } + + ul[data-type="taskList"] > li { + display: flex; + } } } diff --git a/demos/src/Nodes/TaskList/Vue/index.spec.js b/demos/src/Nodes/TaskList/Vue/index.spec.js index e2f23e56cd4..471efc228b0 100644 --- a/demos/src/Nodes/TaskList/Vue/index.spec.js +++ b/demos/src/Nodes/TaskList/Vue/index.spec.js @@ -4,121 +4,121 @@ context('/src/Nodes/TaskList/Vue/', () => { }) beforeEach(() => { - cy.get('.ProseMirror').then(([{ editor }]) => { + cy.get('.tiptap').then(([{ editor }]) => { editor.commands.setContent('

Example Text

') - cy.get('.ProseMirror').type('{selectall}') + cy.get('.tiptap').type('{selectall}') }) }) it('should parse unordered lists correctly', () => { - cy.get('.ProseMirror').then(([{ editor }]) => { + cy.get('.tiptap').then(([{ editor }]) => { editor.commands.setContent('') expect(editor.getHTML()).to.eq('') }) }) it('should parse unordered lists without paragraphs correctly', () => { - cy.get('.ProseMirror').then(([{ editor }]) => { + cy.get('.tiptap').then(([{ editor }]) => { editor.commands.setContent('') expect(editor.getHTML()).to.eq('') }) }) it('the button should make the selected line a task list item', () => { - cy.get('.ProseMirror ul') + cy.get('.tiptap ul') .should('not.exist') - cy.get('.ProseMirror ul li') + cy.get('.tiptap ul li') .should('not.exist') cy.get('button:nth-child(1)') .click() - cy.get('.ProseMirror') + cy.get('.tiptap') .find('ul[data-type="taskList"]') .should('contain', 'Example Text') - cy.get('.ProseMirror') + cy.get('.tiptap') .find('ul[data-type="taskList"] li') .should('contain', 'Example Text') }) it('the button should toggle the task list', () => { - cy.get('.ProseMirror ul') + cy.get('.tiptap ul') .should('not.exist') cy.get('button:nth-child(1)') .click() - cy.get('.ProseMirror') + cy.get('.tiptap') .find('ul[data-type="taskList"]') .should('contain', 'Example Text') cy.get('button:nth-child(1)') .click() - cy.get('.ProseMirror ul') + cy.get('.tiptap ul') .should('not.exist') }) it('should make the paragraph a task list when the keyboard shortcut is pressed', () => { - cy.get('.ProseMirror') + cy.get('.tiptap') .trigger('keydown', { modKey: true, shiftKey: true, key: '9' }) .find('ul li') .should('contain', 'Example Text') }) it('should leave the list with double enter', () => { - cy.get('.ProseMirror').then(([{ editor }]) => { + cy.get('.tiptap').then(([{ editor }]) => { editor.commands.clearContent() }) - cy.get('.ProseMirror') + cy.get('.tiptap') .type('[ ] List Item 1{enter}{enter}Paragraph') - cy.get('.ProseMirror') + cy.get('.tiptap') .find('li') .its('length') .should('eq', 1) - cy.get('.ProseMirror') + cy.get('.tiptap') .find('p') .should('contain', 'Paragraph') }) it('should make a task list from square brackets', () => { - cy.get('.ProseMirror').then(([{ editor }]) => { + cy.get('.tiptap').then(([{ editor }]) => { editor.commands.clearContent() }) - cy.get('.ProseMirror') + cy.get('.tiptap') .type('[ ] List Item 1{enter}List Item 2') - cy.get('.ProseMirror') + cy.get('.tiptap') .find('li:nth-child(1)') .should('contain', 'List Item 1') .should('have.attr', 'data-checked', 'false') - cy.get('.ProseMirror') + cy.get('.tiptap') .find('li:nth-child(2)') .should('contain', 'List Item 2') .should('have.attr', 'data-checked', 'false') }) it('should make a task list from checked square brackets', () => { - cy.get('.ProseMirror').then(([{ editor }]) => { + cy.get('.tiptap').then(([{ editor }]) => { editor.commands.clearContent() }) - cy.get('.ProseMirror') + cy.get('.tiptap') .type('[x] List Item 1{enter}List Item 2') - cy.get('.ProseMirror') + cy.get('.tiptap') .find('li:nth-child(1)') .should('contain', 'List Item 1') .should('have.attr', 'data-checked', 'true') - cy.get('.ProseMirror') + cy.get('.tiptap') .find('li:nth-child(2)') .should('contain', 'List Item 2') .should('have.attr', 'data-checked', 'false') diff --git a/demos/src/Nodes/TaskList/Vue/index.vue b/demos/src/Nodes/TaskList/Vue/index.vue index 0684f205e47..7a0e0517e83 100644 --- a/demos/src/Nodes/TaskList/Vue/index.vue +++ b/demos/src/Nodes/TaskList/Vue/index.vue @@ -83,6 +83,15 @@ ul[data-type="taskList"] { > div { flex: 1 1 auto; } + + ul li, + ol li { + display: list-item; + } + + ul[data-type="taskList"] > li { + display: flex; + } } } diff --git a/demos/src/Nodes/Text/React/index.spec.js b/demos/src/Nodes/Text/React/index.spec.js index 28ae8618234..95de137aee8 100644 --- a/demos/src/Nodes/Text/React/index.spec.js +++ b/demos/src/Nodes/Text/React/index.spec.js @@ -4,12 +4,12 @@ context('/src/Nodes/Text/React/', () => { }) beforeEach(() => { - cy.get('.ProseMirror').then(([{ editor }]) => { + cy.get('.tiptap').then(([{ editor }]) => { editor.commands.clearContent() }) }) it('text should be wrapped in a paragraph by default', () => { - cy.get('.ProseMirror').type('Example Text').find('p').should('contain', 'Example Text') + cy.get('.tiptap').type('Example Text').find('p').should('contain', 'Example Text') }) }) diff --git a/demos/src/Nodes/Text/Vue/index.spec.js b/demos/src/Nodes/Text/Vue/index.spec.js index 5dd4f2dc759..a33836c51b4 100644 --- a/demos/src/Nodes/Text/Vue/index.spec.js +++ b/demos/src/Nodes/Text/Vue/index.spec.js @@ -4,13 +4,13 @@ context('/src/Nodes/Text/Vue/', () => { }) beforeEach(() => { - cy.get('.ProseMirror').then(([{ editor }]) => { + cy.get('.tiptap').then(([{ editor }]) => { editor.commands.clearContent() }) }) it('text should be wrapped in a paragraph by default', () => { - cy.get('.ProseMirror') + cy.get('.tiptap') .type('Example Text') .find('p') .should('contain', 'Example Text') diff --git a/demos/src/Nodes/Youtube/React/index.jsx b/demos/src/Nodes/Youtube/React/index.jsx index 306e8d38595..b0f664647a7 100644 --- a/demos/src/Nodes/Youtube/React/index.jsx +++ b/demos/src/Nodes/Youtube/React/index.jsx @@ -23,16 +23,18 @@ const MenuBar = ({ editor }) => { const addYoutubeVideo = () => { const url = prompt('Enter YouTube URL') - editor.commands.setYoutubeVideo({ - src: url, - width: Math.max(320, parseInt(widthRef.current.value, 10)) || 640, - height: Math.max(180, parseInt(heightRef.current.value, 10)) || 480, - }) + if (url) { + editor.commands.setYoutubeVideo({ + src: url, + width: Math.max(320, parseInt(widthRef.current.value, 10)) || 640, + height: Math.max(180, parseInt(heightRef.current.value, 10)) || 480, + }) + } } return ( <> - + @@ -48,7 +50,7 @@ export default () => { }), ], content: ` -

Tiptap now supports youtube embeds! Awesome!

+

Tiptap now supports YouTube embeds! Awesome!

diff --git a/demos/src/Nodes/Youtube/React/index.spec.js b/demos/src/Nodes/Youtube/React/index.spec.js index 537adda323f..666a314ba5d 100644 --- a/demos/src/Nodes/Youtube/React/index.spec.js +++ b/demos/src/Nodes/Youtube/React/index.spec.js @@ -4,14 +4,14 @@ context('/src/Nodes/Youtube/React/', () => { }) beforeEach(() => { - cy.get('.ProseMirror').type('{selectall}{backspace}') + cy.get('.tiptap').type('{selectall}{backspace}') }) it('adds a video', () => { cy.window().then(win => { cy.stub(win, 'prompt', () => 'https://music.youtube.com/watch?v=hBp4dgE7Bho&feature=share') cy.get('#add').eq(0).click() - cy.get('.ProseMirror div[data-youtube-video] iframe') + cy.get('.tiptap div[data-youtube-video] iframe') .should('have.length', 1) .should('have.attr', 'src', 'https://www.youtube.com/embed/hBp4dgE7Bho?controls=0') }) @@ -23,7 +23,7 @@ context('/src/Nodes/Youtube/React/', () => { cy.get('#width').type('{selectall}{backspace}320') cy.get('#height').type('{selectall}{backspace}240') cy.get('#add').eq(0).click() - cy.get('.ProseMirror div[data-youtube-video] iframe').should('have.length', 1) + cy.get('.tiptap div[data-youtube-video] iframe').should('have.length', 1) .should('have.attr', 'src', 'https://www.youtube.com/embed/hBp4dgE7Bho?controls=0') .should('have.css', 'width', '320px') .should('have.css', 'height', '240px') @@ -43,16 +43,16 @@ context('/src/Nodes/Youtube/React/', () => { }) cy.get('#add').eq(0).click() - cy.get('.ProseMirror div[data-youtube-video] iframe') + cy.get('.tiptap div[data-youtube-video] iframe') .should('have.length', 1) .should('have.attr', 'src', 'https://www.youtube.com/embed/hBp4dgE7Bho?controls=0') - cy.get('.ProseMirror div[data-youtube-video] iframe') + cy.get('.tiptap div[data-youtube-video] iframe') .click() cy.get('#add').eq(0).click() - cy.get('.ProseMirror div[data-youtube-video] iframe') + cy.get('.tiptap div[data-youtube-video] iframe') .should('have.length', 1) .should('have.attr', 'src', 'https://www.youtube.com/embed/wRakoMYVHm8?controls=0') }) diff --git a/demos/src/Nodes/Youtube/React/styles.scss b/demos/src/Nodes/Youtube/React/styles.scss index 7235e0b989c..d1805b3a651 100644 --- a/demos/src/Nodes/Youtube/React/styles.scss +++ b/demos/src/Nodes/Youtube/React/styles.scss @@ -1,5 +1,5 @@ /* Basic editor styles */ -.ProseMirror { +.tiptap { > * + * { margin-top: 0.75em; } diff --git a/demos/src/Nodes/Youtube/Vue/index.spec.js b/demos/src/Nodes/Youtube/Vue/index.spec.js index 761ba23fe88..e6222d14b58 100644 --- a/demos/src/Nodes/Youtube/Vue/index.spec.js +++ b/demos/src/Nodes/Youtube/Vue/index.spec.js @@ -4,14 +4,14 @@ context('/src/Nodes/Youtube/Vue/', () => { }) beforeEach(() => { - cy.get('.ProseMirror').type('{selectall}{backspace}') + cy.get('.tiptap').type('{selectall}{backspace}') }) it('adds a video', () => { cy.window().then(win => { cy.stub(win, 'prompt', () => 'https://music.youtube.com/watch?v=hBp4dgE7Bho&feature=share') cy.get('#add').eq(0).click() - cy.get('.ProseMirror div[data-youtube-video] iframe') + cy.get('.tiptap div[data-youtube-video] iframe') .should('have.length', 1) .should('have.attr', 'src', 'https://www.youtube.com/embed/hBp4dgE7Bho?controls=0') }) @@ -23,7 +23,7 @@ context('/src/Nodes/Youtube/Vue/', () => { cy.get('#width').type('{selectall}{backspace}320') cy.get('#height').type('{selectall}{backspace}240') cy.get('#add').eq(0).click() - cy.get('.ProseMirror div[data-youtube-video] iframe').should('have.length', 1) + cy.get('.tiptap div[data-youtube-video] iframe').should('have.length', 1) .should('have.attr', 'src', 'https://www.youtube.com/embed/hBp4dgE7Bho?controls=0') .should('have.css', 'width', '320px') .should('have.css', 'height', '240px') @@ -43,16 +43,16 @@ context('/src/Nodes/Youtube/Vue/', () => { }) cy.get('#add').eq(0).click() - cy.get('.ProseMirror div[data-youtube-video] iframe') + cy.get('.tiptap div[data-youtube-video] iframe') .should('have.length', 1) .should('have.attr', 'src', 'https://www.youtube.com/embed/hBp4dgE7Bho?controls=0') - cy.get('.ProseMirror div[data-youtube-video] iframe') + cy.get('.tiptap div[data-youtube-video] iframe') .click() cy.get('#add').eq(0).click() - cy.get('.ProseMirror div[data-youtube-video] iframe') + cy.get('.tiptap div[data-youtube-video] iframe') .should('have.length', 1) .should('have.attr', 'src', 'https://www.youtube.com/embed/wRakoMYVHm8?controls=0') }) diff --git a/demos/src/Nodes/Youtube/Vue/index.vue b/demos/src/Nodes/Youtube/Vue/index.vue index b5f051cd99c..7261d760174 100644 --- a/demos/src/Nodes/Youtube/Vue/index.vue +++ b/demos/src/Nodes/Youtube/Vue/index.vue @@ -2,7 +2,7 @@
Tiptap now supports youtube embeds! Awesome!

+

Tiptap now supports YouTube embeds! Awesome!

@@ -86,7 +86,7 @@ export default { diff --git a/docs/installation/cdn.md b/docs/installation/cdn.md index 163ce2b739d..674c261d8b1 100644 --- a/docs/installation/cdn.md +++ b/docs/installation/cdn.md @@ -1,9 +1,6 @@ # CDN -:::warning -There’s [an issue with skypack](https://github.com/skypackjs/skypack-cdn/issues/159), which causes trouble every now and then. We can’t do much about that for now. -::: -For testing purposes or demos, use our [Skypack](https://www.skypack.dev/) CDN builds. Here are the few lines of code you need to get started: +For testing purposes or demos, use our [esm.sh](https://esm.sh.dev/) CDN builds. Here are the few lines of code you need to get started: ```html @@ -14,8 +11,8 @@ For testing purposes or demos, use our [Skypack](https://www.skypack.dev/) CDN b