commit 083a46e93bc260b26e842609089def15bc431962 Author: upstream-mirror Date: Tue Sep 15 21:11:02 2026 +0500 snapshot of https://github.com/ueberdosis/tiptap.git (main, 2026-09-15; blobs > 131072B omitted) diff --git a/.changeset/2026-08-20-ordered-list-markdown-indent.md b/.changeset/2026-08-20-ordered-list-markdown-indent.md new file mode 100644 index 0000000..3324ff3 --- /dev/null +++ b/.changeset/2026-08-20-ordered-list-markdown-indent.md @@ -0,0 +1,6 @@ +--- +'@tiptap/core': patch +'@tiptap/extension-list': patch +--- + +Nested lists exported to Markdown now keep their hierarchy when the file is read back by other Markdown tools. diff --git a/.changeset/2026-08-23-youtube-missing-src.md b/.changeset/2026-08-23-youtube-missing-src.md new file mode 100644 index 0000000..0b0b5ac --- /dev/null +++ b/.changeset/2026-08-23-youtube-missing-src.md @@ -0,0 +1,5 @@ +--- +'@tiptap/extension-youtube': patch +--- + +Pasting a YouTube iframe without a `src` attribute no longer crashes the editor. The embed is kept without a source. diff --git a/.changeset/2026-08-25-remove-deprecated-packages.md b/.changeset/2026-08-25-remove-deprecated-packages.md new file mode 100644 index 0000000..b099ded --- /dev/null +++ b/.changeset/2026-08-25-remove-deprecated-packages.md @@ -0,0 +1,7 @@ +--- +'@tiptap/starter-kit': major +--- + +StarterKit no longer installs the deprecated `@tiptap/extension-dropcursor`, `@tiptap/extension-gapcursor`, `@tiptap/extension-list-item`, and `@tiptap/extension-list-keymap` packages. We will not publish further updates to these packages. StarterKit still includes their extensions, so you do not need to change your configuration. + +If you import these extensions directly, switch to the new packages: `Dropcursor` and `Gapcursor` from `@tiptap/extensions`, and `ListItem` and `ListKeymap` from `@tiptap/extension-list`. diff --git a/.changeset/2026-08-26-fix-markdown-whitespace-only-marked-text.md b/.changeset/2026-08-26-fix-markdown-whitespace-only-marked-text.md new file mode 100644 index 0000000..fa4671f --- /dev/null +++ b/.changeset/2026-08-26-fix-markdown-whitespace-only-marked-text.md @@ -0,0 +1,5 @@ +--- +'@tiptap/markdown': patch +--- + +Fix Markdown serialization of whitespace-only marked text. diff --git a/.changeset/2026-08-26-markdown-attribute-redos.md b/.changeset/2026-08-26-markdown-attribute-redos.md new file mode 100644 index 0000000..fcc34e4 --- /dev/null +++ b/.changeset/2026-08-26-markdown-attribute-redos.md @@ -0,0 +1,6 @@ +--- +'@tiptap/core': patch +'@tiptap/extension-mention': patch +--- + +Fix a denial-of-service risk where crafted block or inline Markdown attributes could consume excessive CPU and block the browser or server event loop. diff --git a/.changeset/2026-08-26-validate-collaboration-caret-colors.md b/.changeset/2026-08-26-validate-collaboration-caret-colors.md new file mode 100644 index 0000000..f2f4bb7 --- /dev/null +++ b/.changeset/2026-08-26-validate-collaboration-caret-colors.md @@ -0,0 +1,5 @@ +--- +'@tiptap/extension-collaboration-caret': patch +--- + +Fixed a bug which allowed potentially unsafe color values being sent by other clients. Those unsafe colors received from collaboration users are now ignored. diff --git a/.changeset/2026-08-28-react-shared-node-view-selection.md b/.changeset/2026-08-28-react-shared-node-view-selection.md new file mode 100644 index 0000000..959a60d --- /dev/null +++ b/.changeset/2026-08-28-react-shared-node-view-selection.md @@ -0,0 +1,5 @@ +--- +'@tiptap/react': patch +--- + +Reduce overhead in React node views on documents with many nodes. diff --git a/.changeset/2026-08-31-bump-prosemirror-view.md b/.changeset/2026-08-31-bump-prosemirror-view.md new file mode 100644 index 0000000..0f7551d --- /dev/null +++ b/.changeset/2026-08-31-bump-prosemirror-view.md @@ -0,0 +1,5 @@ +--- +'@tiptap/pm': patch +--- + +Bump `prosemirror-view` to `^1.42.3`, which fixes an XSS vulnerability where pasting crafted HTML could run arbitrary JavaScript (GHSA-c8x8-7fp4-3x9w). diff --git a/.changeset/2026-08-31-react-nodeview-selection-state.md b/.changeset/2026-08-31-react-nodeview-selection-state.md new file mode 100644 index 0000000..ad5b62a --- /dev/null +++ b/.changeset/2026-08-31-react-nodeview-selection-state.md @@ -0,0 +1,5 @@ +--- +'@tiptap/react': minor +--- + +Align `selected` with ProseMirror node selections by default, expose text selections through `selectionInside`, and keep `selectedOnTextSelection` compatible. diff --git a/.changeset/2026-09-04-react-editor-namespace-ts2694.md b/.changeset/2026-09-04-react-editor-namespace-ts2694.md new file mode 100644 index 0000000..bb34826 --- /dev/null +++ b/.changeset/2026-09-04-react-editor-namespace-ts2694.md @@ -0,0 +1,5 @@ +--- +'@tiptap/react': patch +--- + +Fix a TypeScript error (TS2694) in the shipped type declarations when `skipLibCheck` is turned off. diff --git a/.changeset/README.md b/.changeset/README.md new file mode 100644 index 0000000..e5b6d8d --- /dev/null +++ b/.changeset/README.md @@ -0,0 +1,8 @@ +# Changesets + +Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works +with multi-package repos, or single-package repos to help you version and publish your code. You can +find the full documentation for it [in our repository](https://github.com/changesets/changesets) + +We have a quick list of common questions to get you started engaging with this project in +[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) diff --git a/.changeset/config.json b/.changeset/config.json new file mode 100644 index 0000000..a9336fa --- /dev/null +++ b/.changeset/config.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@3.0.1/schema.json", + "changelog": "@changesets/cli/changelog", + "commit": false, + "fixed": [["@tiptap/*", "!@tiptap/ai-toolkit"]], + "linked": [], + "access": "public", + "baseBranch": "main", + "updateInternalDependencies": "patch", + "ignore": [], + "___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": { + "onlyUpdatePeerDependentsWhenOutOfRange": true + } +} diff --git a/.changeset/fix-ios-ignore-mutation-contentdom.md b/.changeset/fix-ios-ignore-mutation-contentdom.md new file mode 100644 index 0000000..ba55bd0 --- /dev/null +++ b/.changeset/fix-ios-ignore-mutation-contentdom.md @@ -0,0 +1,5 @@ +--- +'@tiptap/core': patch +--- + +Fix freezes in framework-based node views on iOS and Android diff --git a/.changeset/fix-merge-attributes-prototype.md b/.changeset/fix-merge-attributes-prototype.md new file mode 100644 index 0000000..4b43dd7 --- /dev/null +++ b/.changeset/fix-merge-attributes-prototype.md @@ -0,0 +1,5 @@ +--- +'@tiptap/core': patch +--- + +Prevent untrusted HTML attributes from changing an object's prototype when merged with `mergeAttributes`. diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 0000000..e7317ad --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,68 @@ +{ + "mode": "pre", + "tag": "next", + "initialVersions": { + "tiptap-demos": "3.0.3", + "@tiptap/ai-toolkit": "0.4.0", + "@tiptap/core": "3.30.3", + "@tiptap/extension-audio": "3.30.3", + "@tiptap/extension-blockquote": "3.30.3", + "@tiptap/extension-bold": "3.30.3", + "@tiptap/extension-bubble-menu": "3.30.3", + "@tiptap/extension-bullet-list": "3.30.3", + "@tiptap/extension-code": "3.30.3", + "@tiptap/extension-code-block": "3.30.3", + "@tiptap/extension-code-block-lowlight": "3.30.3", + "@tiptap/extension-collaboration": "3.30.3", + "@tiptap/extension-collaboration-caret": "3.30.3", + "@tiptap/extension-color": "3.30.3", + "@tiptap/extension-details": "3.30.3", + "@tiptap/extension-document": "3.30.3", + "@tiptap/extension-drag-handle": "3.30.3", + "@tiptap/extension-drag-handle-react": "3.30.3", + "@tiptap/extension-drag-handle-vue": "3.30.3", + "@tiptap/extension-emoji": "3.30.3", + "@tiptap/extension-file-handler": "3.30.3", + "@tiptap/extension-find-and-replace": "3.30.3", + "@tiptap/extension-floating-menu": "3.30.3", + "@tiptap/extension-font-family": "3.30.3", + "@tiptap/extension-hard-break": "3.30.3", + "@tiptap/extension-heading": "3.30.3", + "@tiptap/extension-highlight": "3.30.3", + "@tiptap/extension-horizontal-rule": "3.30.3", + "@tiptap/extension-image": "3.30.3", + "@tiptap/extension-invisible-characters": "3.30.3", + "@tiptap/extension-italic": "3.30.3", + "@tiptap/extension-link": "3.30.3", + "@tiptap/extension-list": "3.30.3", + "@tiptap/extension-mathematics": "3.30.3", + "@tiptap/extension-mention": "3.30.3", + "@tiptap/extension-node-range": "3.30.3", + "@tiptap/extension-ordered-list": "3.30.3", + "@tiptap/extension-paragraph": "3.30.3", + "@tiptap/extension-ruby-text": "3.30.3", + "@tiptap/extension-strike": "3.30.3", + "@tiptap/extension-subscript": "3.30.3", + "@tiptap/extension-superscript": "3.30.3", + "@tiptap/extension-table": "3.30.3", + "@tiptap/extension-table-of-contents": "3.30.3", + "@tiptap/extension-text": "3.30.3", + "@tiptap/extension-text-align": "3.30.3", + "@tiptap/extension-text-style": "3.30.3", + "@tiptap/extension-twitch": "3.30.3", + "@tiptap/extension-typography": "3.30.3", + "@tiptap/extension-underline": "3.30.3", + "@tiptap/extension-unique-id": "3.30.3", + "@tiptap/extension-youtube": "3.30.3", + "@tiptap/extensions": "3.30.3", + "@tiptap/html": "3.30.3", + "@tiptap/markdown": "3.30.3", + "@tiptap/pm": "3.30.3", + "@tiptap/react": "3.30.3", + "@tiptap/starter-kit": "3.30.3", + "@tiptap/static-renderer": "3.30.3", + "@tiptap/suggestion": "3.30.3", + "@tiptap/vue": "3.30.3" + }, + "changesets": [] +} diff --git a/.changeset/remove-vue-2.md b/.changeset/remove-vue-2.md new file mode 100644 index 0000000..efe17f2 --- /dev/null +++ b/.changeset/remove-vue-2.md @@ -0,0 +1,18 @@ +--- +'@tiptap/vue': major +'@tiptap/extension-drag-handle-vue': major +--- + +Vue 2 support is removed. `@tiptap/vue-3` is now `@tiptap/vue`, and `@tiptap/extension-drag-handle-vue-3` is now `@tiptap/extension-drag-handle-vue`. + +Update imports and dependencies: + +```diff +- import { EditorContent } from '@tiptap/vue-3' ++ import { EditorContent } from '@tiptap/vue' + +- import DragHandle from '@tiptap/extension-drag-handle-vue-3' ++ import DragHandle from '@tiptap/extension-drag-handle-vue' +``` + +Vue 2 users must migrate to Vue 3 before using the new packages. The planned Codemod Registry package `@tiptap/codemod-v3-to-v4` updates package imports and dependencies. diff --git a/.coderabbit.yaml b/.coderabbit.yaml new file mode 100644 index 0000000..86e81db --- /dev/null +++ b/.coderabbit.yaml @@ -0,0 +1,123 @@ +inheritance: true + +reviews: + request_changes_workflow: true + high_level_summary_instructions: + Short and simple, keep it cohesive, no complex wording, assume everyone including the + PR reviewer is new to the project or to code in general - simple english so even non-english native speakers + understand everything just fine. + high_level_summary_in_walkthrough: true + in_progress_fortune: false + slop_detection: + label: slop + suggested_labels: true + auto_apply_labels: true + labeling_instructions: + - label: 'area: ai' + instructions: Apply this label if the PR changes AI features, AI integrations, prompts, or AI-related dependencies. + - label: 'area: ci' + instructions: Apply this label if the PR changes CI workflows, build pipelines, checks, or release automation. + - label: 'area: cloud' + instructions: Apply this label if the PR changes Tiptap Cloud features, integrations, or configuration. + - label: 'area: convert' + instructions: Apply this label if the PR changes Tiptap Convert or document conversion behavior. + - label: 'area: core' + instructions: Apply this label if the PR changes Tiptap Core APIs, commands, extensions, or editor behavior. + - label: 'area: docs' + instructions: Apply this label if the PR changes documentation, examples, guides, or API reference content. + - label: 'area: editor' + instructions: Apply this label if the PR changes the Tiptap Editor or its user-facing editing behavior. + - label: 'area: markdown' + instructions: Apply this label if the PR changes Markdown parsing, serialization, or Markdown-related extensions. + - label: 'area: pages' + instructions: Apply this label if the PR changes Tiptap Pages, pagination, or Word-like UI behavior. + - label: 'area: react' + instructions: Apply this label if the PR changes the Tiptap React implementation, hooks, or React examples. + - label: 'area: ui-components' + instructions: Apply this label if the PR changes Tiptap UI Components, their styles, or component behavior. + - label: 'area: vue' + instructions: Apply this label if the PR changes the Tiptap Vue implementation, composables, or Vue examples. + - label: 'complexity: easy' + instructions: Apply this label if the PR makes a clearly scoped change in one isolated component or package. + - label: 'complexity: expert' + instructions: Apply this label if the PR changes fundamental architecture, core APIs across extensions, or collaboration behavior. + - label: 'complexity: hard' + instructions: Apply this label if the PR changes ProseMirror internals, transaction handling, or node view rendering. + - label: 'complexity: medium' + instructions: Apply this label if the PR changes multiple components or the ProseMirror/Tiptap integration with a clear implementation path. + - label: 'complexity: trivial' + instructions: Apply this label if the PR is an obvious change under 10 lines, such as a documentation typo or missing type check. + - label: good first issue + instructions: Apply this label if the PR is a small, self-contained change that is easy for a first-time contributor to understand. + - label: 'impact: critical' + instructions: Apply this label if the PR fixes data loss, a security vulnerability, broken core functionality, or a problem affecting nearly all users of a feature. + - label: 'impact: high' + instructions: Apply this label if the PR fixes behavior affecting a large portion of users or a common workflow. + - label: 'impact: low' + instructions: Apply this label if the PR fixes an obscure edge case, a specific browser condition, or a rarely used feature. + - label: 'impact: medium' + instructions: Apply this label if the PR fixes a common feature usage or a workflow shared by a group of users. + - label: 'status: needs-info' + instructions: Apply this label if the PR lacks the context needed to understand or validate the changes. + - label: 'status: needs-reproduction' + instructions: Apply this label if the PR fixes a bug without a reproduction or regression test for the reported behavior. + auto_review: + ignore_usernames: + - github-actions[bot] + +issue_enrichment: + auto_enrich: + enabled: true + labeling: + auto_apply_labels: true + labeling_instructions: + - label: 'area: ai' + instructions: Add this label if an item is related to AI features + - label: 'area: ci' + instructions: Add this label if an item is related to the CI + - label: 'area: cloud' + instructions: Add this label if an item is related to Tiptap Cloud + - label: 'area: convert' + instructions: Apply this label if the item is related to Tiptap Convert / Conversion + - label: 'area: core' + instructions: Apply this label if an item is related to the Tiptap Core + - label: 'area: docs' + instructions: Apply this label if an item is related to documentation + - label: 'area: editor' + instructions: Add this label if an item is related to the Tiptap Editor + - label: 'area: markdown' + instructions: Apply this if the item relates to Markdown Parsing or Serialization + - label: 'area: pages' + instructions: Apply this label if an issue is related to Tiptap Pages / Pagination (Word-like UI) + - label: 'area: react' + instructions: Apply this label if the item is related to the Tiptap React implementation + - label: 'area: ui-components' + instructions: Apply this label if the item is related to Tiptap UI Components + - label: 'area: vue' + instructions: Apply this label if an item is related to the Tiptap Vue implementation + - label: 'complexity: easy' + instructions: 'clearly described, affects one isolated component, fix localized to a single package' + - label: 'complexity: expert' + instructions: 'fundamental architecture conflict, core API changes affecting all extensions, or concurrent/collaboration behavior' + - label: 'complexity: hard' + instructions: 'requires deep understanding of ProseMirror internals, transaction handling, or node view rendering; no obvious solution' + - label: 'complexity: medium' + instructions: 'touches multiple components or requires understanding ProseMirror/Tiptap interaction, but solution path is clear' + - label: 'complexity: trivial' + instructions: 'typo in docs, missing type check, obvious fix in <10 lines' + - label: good first issue + instructions: + Apply this label if the issue is a good ticket to pick up as a first-time contributor or beginner at + ProseMirror or Tiptap. + - label: 'impact: critical' + instructions: 'data loss, security vulnerability, completely broken core functionality, or affects nearly everyone using a specific feature' + - label: 'impact: high' + instructions: 'affects a large portion of users, blocks a common use case, or causes noticeable UX problem many will run into' + - label: 'impact: low' + instructions: 'obscure edge case, specific browser under specific conditions, or feature request very few would use' + - label: 'impact: medium' + instructions: 'affects a common usage of a feature (e.g. specific extension combination) or handful of users with similar workflows' + - label: 'status: needs-info' + instructions: Apply this label if the item needs more info to become actionable. + - label: 'status: needs-reproduction' + instructions: Add this label to an item if it needs more reproduction to become actionable. diff --git a/.codex/environments/environment.toml b/.codex/environments/environment.toml new file mode 100644 index 0000000..d0f13e1 --- /dev/null +++ b/.codex/environments/environment.toml @@ -0,0 +1,6 @@ +# THIS IS AUTOGENERATED. DO NOT EDIT MANUALLY +version = 1 +name = "tiptap" + +[setup] +script = "pnpm install --frozen-lockfile" diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..efb4918 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +# EditorConfig is awesome: http://EditorConfig.org + +root = true + +[*] +end_of_line = lf +charset = utf-8 +insert_final_newline = true +max_line_length = 100 +trim_trailing_whitespace = true +indent_style = space +indent_size = 2 diff --git a/.fallowrc.json b/.fallowrc.json new file mode 100644 index 0000000..14440cc --- /dev/null +++ b/.fallowrc.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://raw.githubusercontent.com/fallow-rs/fallow/main/schema.json", + "ignorePatterns": ["**/*.spec.ts"], + "ignoreExports": [{ "file": "**/*", "exports": ["default"] }], + "dynamicallyLoaded": ["demos/src/**/index.*"] +} diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..c324011 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,5 @@ +# Repository-wide ownership +* @ueberdosis/editor-maintainers + +# LICENSE +LICENSE.md @philipisik @ueberdosis/editor-maintainers diff --git a/.github/DISCUSSION_TEMPLATE/community-extensions.yml b/.github/DISCUSSION_TEMPLATE/community-extensions.yml new file mode 100644 index 0000000..81af9fc --- /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 0000000..e5e99c0 --- /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 0000000..6f4b367 --- /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 new file mode 100644 index 0000000..dd7db54 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,81 @@ +name: Bug Report +description: Found a bug in the editor core or one of the extensions? Report it here to help us improve. + +labels: ['status: triage'] +type: 'Bug' + +body: + - type: markdown + attributes: + value: | + Please use simple, human-written English. Keep your answers short and clear. + Small code examples that show the problem are welcome. Do not include a code fix or a complete implementation in an issue. If you already have a fix, please open a pull request instead. + - type: input + id: packages + attributes: + label: Affected Packages + description: List the Tiptap packages involved in the problem. + placeholder: core, extension-mention, react + validations: + required: true + - type: input + id: version + attributes: + label: Tiptap Version + description: Which Tiptap version or package versions are affected? + placeholder: 3.0.0 + validations: + required: true + - type: dropdown + id: browser + attributes: + label: Browser Used + description: Select the browser where you saw the problem. + options: + - Chrome + - Firefox + - Safari + - Edge + - Other + - Not browser-specific + validations: + required: true + - type: textarea + id: body + attributes: + label: What happened? + description: Describe what happens, when it happens, and why it is a problem. Use short sentences and simple English. Do not write a wall of text, use complicated language, or include a complete code fix. + placeholder: The issue happens when... + validations: + required: true + - type: textarea + id: expectation + attributes: + label: Expected Behavior + description: Describe what you expected to happen. + placeholder: I expected... + validations: + required: true + - type: markdown + attributes: + value: | + A small reproducible example is the best way to help us investigate the issue. Please add one if you can. + + CodeSandbox templates: + * JavaScript: [JS Template](https://codesandbox.io/s/tiptap-js-fv1lyo) + * React: [React Template](https://codesandbox.io/s/tiptap-react-qidlsv) + * Vue 3: [Vue 3 Template](https://codesandbox.io/p/sandbox/tiptap-vue-3-ci7q9h) + - type: input + id: sandbox + attributes: + label: Reproducible Example URL (Optional) + description: Link a CodeSandbox, StackBlitz, GitHub repository, or similar example if you have one. + placeholder: https://codesandbox.io/s/example + - type: textarea + id: context + attributes: + label: Additional Context (Optional) + description: Add useful screenshots, videos, or other short details. Avoid long explanations. + - type: markdown + attributes: + value: 'Thank you for helping us improve our open-source projects by reporting this issue!' diff --git a/.github/ISSUE_TEMPLATE/bug_report_pro.yml b/.github/ISSUE_TEMPLATE/bug_report_pro.yml new file mode 100644 index 0000000..caefa3c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report_pro.yml @@ -0,0 +1,81 @@ +name: Bug Report (Tiptap Pro) +description: If you've encountered a bug with Tiptap Pro features, please report it here. + +labels: ['tier: pro', 'status: triage'] +type: 'Bug' + +body: + - type: markdown + attributes: + value: | + Please use simple, human-written English. Keep your answers short and clear. + Small code examples that show the problem are welcome. Do not include a code fix or a complete implementation in an issue. If you already have a fix, please open a pull request instead. + - type: input + id: packages + attributes: + label: Affected Packages + description: List the Tiptap Pro packages involved in the problem. + placeholder: pro-extension, pro-collaboration + validations: + required: true + - type: input + id: version + attributes: + label: Tiptap Version + description: Which Tiptap or Tiptap Pro version or package versions are affected? + placeholder: 3.0.0 + validations: + required: true + - type: dropdown + id: browser + attributes: + label: Browser Used + description: Select the browser where you saw the problem. + options: + - Chrome + - Firefox + - Safari + - Edge + - Other + - Not browser-specific + validations: + required: true + - type: textarea + id: body + attributes: + label: What happened? + description: Describe what happens, when it happens, and why it is a problem. Use short sentences and simple English. Do not write a wall of text, use complicated language, or include a complete code fix. + placeholder: The issue happens when... + validations: + required: true + - type: textarea + id: expectation + attributes: + label: Expected Behavior + description: Describe what you expected to happen. + placeholder: I expected... + validations: + required: true + - type: markdown + attributes: + value: | + A small reproducible example is the best way to help us investigate the issue. Please add one if you can. + + CodeSandbox templates: + - JavaScript: [Template](https://codesandbox.io/s/tiptap-js-fv1lyo) + - React: [Template](https://codesandbox.io/s/tiptap-react-qidlsv) + - Vue 3: [Template](https://codesandbox.io/p/sandbox/tiptap-vue-3-ci7q9h) + - type: input + id: sandbox + attributes: + label: Reproducible Example URL (Optional) + description: Link a CodeSandbox, StackBlitz, GitHub repository, or similar example if you have one. + placeholder: https://codesandbox.io/s/example + - type: textarea + id: context + attributes: + label: Additional Context (Optional) + description: Add useful screenshots, videos, or other short details. Avoid long explanations. + - type: markdown + attributes: + value: 'Thank you for contributing to Tiptap Pro by reporting this issue!' diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..2c17251 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,17 @@ +blank_issues_enabled: false +contact_links: + - name: New Feature Request + url: https://github.com/ueberdosis/tiptap/discussions/new?category=feature-requests + about: Interested in proposing a new feature for Tiptap? Submit your feature request here. + - name: Help & Support + url: https://github.com/ueberdosis/tiptap/discussions/new?category=questions-help + about: Require assistance or have inquiries about using Tiptap? Ask your questions here. + - name: Join our Discord + url: https://discord.gg/WtJ49jGshW + about: Interested in engaging with the Tiptap community? Join our Discord server. + - name: Present your project + url: https://github.com/ueberdosis/tiptap/discussions/new?category=showcase + about: Developed something impressive using Tiptap? Share your project with the community here. + - name: Present your Tiptap extensions + url: https://github.com/ueberdosis/tiptap/discussions/new?category=community-extensions + about: Created a Tiptap extension? Showcase your work to the community here. diff --git a/.github/ISSUE_TEMPLATE/documentation.yml b/.github/ISSUE_TEMPLATE/documentation.yml new file mode 100644 index 0000000..b9eeda0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/documentation.yml @@ -0,0 +1,45 @@ +name: Documentation feedback +description: Share what we need to explain better. +title: '[Documentation]: ' +labels: + - 'Type: Documentation' + - 'Category: Open Source' + - 'Status: New' +body: + - type: input + id: url + attributes: + label: What’s the URL to the page you’re sending feedback for? + placeholder: https://tiptap.dev/example + validations: + required: true + - type: textarea + id: part-of-the-documentation + attributes: + label: What part of the documentation needs improvement? + placeholder: 'I’ve read the following page of the documentation …' + validations: + required: true + - type: textarea + id: good-parts + attributes: + label: What is helpful about that part? + placeholder: 'I think this part is really good: …' + validations: + required: true + - type: textarea + id: bad-parts + attributes: + label: What is hard to understand, missing or misleading? + placeholder: 'But you really need to improve …' + validations: + required: true + - type: textarea + id: context + attributes: + label: Anything to add? (optional) + description: 'Add any other context or screenshots here.' + - type: markdown + attributes: + value: | + Thanks for taking the time to send us feedback! diff --git a/.github/actions/restore-dependencies/action.yml b/.github/actions/restore-dependencies/action.yml new file mode 100644 index 0000000..6a45cf7 --- /dev/null +++ b/.github/actions/restore-dependencies/action.yml @@ -0,0 +1,9 @@ +name: Restore dependencies +description: Install dependencies from the cached package manager data + +runs: + using: composite + steps: + - name: Restore dependencies + shell: bash + run: vp install --offline --frozen-lockfile -- --strict-peer-dependencies diff --git a/.github/actions/setup-env/action.yml b/.github/actions/setup-env/action.yml new file mode 100644 index 0000000..db1549a --- /dev/null +++ b/.github/actions/setup-env/action.yml @@ -0,0 +1,20 @@ +name: Setup Vite+ environment +description: Install Vite+ and set up Node.js and dependency caching + +inputs: + node-version: + description: Node.js version + required: true + cache: + description: Whether to cache package manager data + default: 'false' + required: false + +runs: + using: composite + steps: + - uses: voidzero-dev/setup-vp@v1.18.0 + with: + node-version: ${{ inputs.node-version }} + cache: ${{ inputs.cache == 'true' && 'true' || 'false' }} + run-install: false diff --git a/.github/actions/setup-playwright/action.yml b/.github/actions/setup-playwright/action.yml new file mode 100644 index 0000000..8927c60 --- /dev/null +++ b/.github/actions/setup-playwright/action.yml @@ -0,0 +1,27 @@ +name: Setup Playwright +description: Cache and install Playwright browsers with system dependencies + +runs: + using: composite + steps: + - name: Get Playwright version + id: playwright-version + shell: bash + run: echo "version=$(node -p 'require("@playwright/test/package.json").version')" >> "$GITHUB_OUTPUT" + + - name: Cache Playwright browsers + id: playwright-cache + uses: actions/cache@v6 + with: + path: ~/.cache/ms-playwright + key: playwright-${{ runner.os }}-${{ steps.playwright-version.outputs.version }} + + - name: Install Playwright browsers + if: steps.playwright-cache.outputs.cache-hit != 'true' + shell: bash + run: vp exec playwright install --with-deps chromium + + - name: Install Playwright system deps + if: steps.playwright-cache.outputs.cache-hit == 'true' + shell: bash + run: vp exec playwright install-deps chromium diff --git a/.github/assets/cover.png b/.github/assets/cover.png new file mode 100644 index 0000000..2bd9053 Binary files /dev/null and b/.github/assets/cover.png differ diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..7000b35 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,13 @@ +# Dependabot creates pull requests to keep your dependencies secure and up-to-date. +# Documentation: https://docs.github.com/en/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + - package-ecosystem: 'github-actions' + directory: '/' + open-pull-requests-limit: 10 + schedule: + interval: 'weekly' + day: 'monday' + reviewers: + - 'bdbch' diff --git a/.github/instructions/PR.instructions.md b/.github/instructions/PR.instructions.md new file mode 100644 index 0000000..45ca6ce --- /dev/null +++ b/.github/instructions/PR.instructions.md @@ -0,0 +1,43 @@ +--- +applyTo: '**' +--- + +When asked to write a pull request description, use the following template: + +``` +## Changes Overview + + + +## Implementation Approach + + + +## Testing Done + + + +## Verification Steps + + + +## Additional Notes + + + +## Checklist + +- [ ] I have created a [changeset](https://github.com/changesets/changesets) for this PR if necessary. +- [ ] My changes do not break the library. +- [ ] I have added tests where applicable. +- [ ] I have followed the project guidelines. +- [ ] I have fixed any lint issues. + +## Related Issues + + +``` + +When generating the pull request description, ensure it is clear, concise, and follows the provided template. Focus on the key aspects of the changes made, how they were implemented, and how they can be verified. + +Make it as minimal as possible to convey the necessary information effectively without causing to much noise and making it hard to read. diff --git a/.github/instructions/changeset.instructions.md b/.github/instructions/changeset.instructions.md new file mode 100644 index 0000000..0c22a4d --- /dev/null +++ b/.github/instructions/changeset.instructions.md @@ -0,0 +1,9 @@ +--- +applyTo: '**' +--- + +When a user asks for a changeset to be generated, follow the following rules: + +Create a good changeset file for the changes in the diff. Don't include non-frontfacing changes, as the changeset file will be used for the changelog. Our users don't care about deep logic that they'll not interact with so we only want to generate changelog entries for front-facing/user-facing changes and API changes our users will need to know about. + +Make sure that the changeset file stays minimal and short but includes important information that may be important for our users to understand what actually changed. diff --git a/.github/instructions/tiptap.instructions.md b/.github/instructions/tiptap.instructions.md new file mode 100644 index 0000000..0ad70bb --- /dev/null +++ b/.github/instructions/tiptap.instructions.md @@ -0,0 +1,261 @@ +--- +applyTo: '**' +--- + +# Tiptap + +This document explains how to work on the Tiptap monorepo in VS Code. It covers repo layout, local dev, linting and formatting, tests, docs, and release workflow. It is written to be friendly for both humans and AI coding assistants. + +--- + +## What is Tiptap + +Tiptap is a headless rich text editor toolkit built on ProseMirror. It ships a small Core and many opt-in Extensions so you can compose exactly the editor you need for React, Vue, or vanilla apps. The project is optimized for user experience and developer experience. APIs are predictable, behavior is testable, and everything should be documented with JSDoc and runnable examples so we can generate API docs automatically. + +Key points for AI assistants: + +- Treat Tiptap as a collection of focused packages that together form an editor system. +- Do not assume a single framework. Many packages are framework agnostic, with separate bindings for React and Vue. +- Favor small pure utilities and deterministic code. Side effects should be explicit. + +--- + +## Repository layout + +``` +. +├─ packages/ # Core and all first-party extensions +│ ├─ core/ # Editor core (@tiptap/core) +│ ├─ extension-*/ # Individual extensions +│ ├─ pm/ # ProseMirror related internals and helpers +│ └─ ... # Shared utilities, framework bindings, etc. +├─ demos/ # Vite app for live examples and colocated e2e specs +│ ├─ src/ +│ │ ├─ react/ # React demos +│ │ └─ vue/ # Vue demos +│ └─ test/ # Playwright helpers (getEditor, setEditorContent, ...) +├─ .changeset/ # Changesets for versioning and changelogs +└─ .github/ # Workflows and docs like this file +``` + +Notes: + +- All packages we publish or use live under `packages/*`. +- The `demos/` folder contains a Vite app. It automatically discovers and parses React and Vue demos so they appear in the UI without manual wiring. +- Playwright e2e specs live alongside their demos as `demos/src/**/index.spec.ts`. `playwright.config.ts` auto-starts the Vite dev server on `http://127.0.0.1:4080` — no need to launch it manually. + +## NPM scripts + +Scripts defined at the repo root. Run them with `vp run ` + + const expected = ` +` + + assert.equal(transformVueSource(source), expected) +}) + +test('does not scan past local exports', () => { + const source = `` + + const expected = `` + + assert.equal(transformVueSource(source), expected) +}) diff --git a/codemods/tiptap-v4-migration/tsconfig.json b/codemods/tiptap-v4-migration/tsconfig.json new file mode 100644 index 0000000..0264e93 --- /dev/null +++ b/codemods/tiptap-v4-migration/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "module": "NodeNext", + "moduleResolution": "NodeNext", + "types": ["@codemod.com/jssg-types"], + "allowImportingTsExtensions": true, + "noEmit": true, + "verbatimModuleSyntax": true, + "erasableSyntaxOnly": true, + "strict": true, + "strictNullChecks": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedIndexedAccess": true, + "skipLibCheck": true + }, + "exclude": ["tests"] +} diff --git a/codemods/tiptap-v4-migration/workflow.yaml b/codemods/tiptap-v4-migration/workflow.yaml new file mode 100644 index 0000000..c0490bf --- /dev/null +++ b/codemods/tiptap-v4-migration/workflow.yaml @@ -0,0 +1,51 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/codemod/codemod/refs/heads/main/schemas/workflow.json + +version: '1' + +params: + schema: + vue_target_path: + name: Vue target path + description: Directory containing Vue SFC files + type: string + default: '.' + +nodes: + - id: migrate-package-specifiers + name: Migrate Vue package specifiers + type: automatic + steps: + - name: Migrate JavaScript imports + js-ast-grep: + js_file: scripts/vue-package-renames.ts + base_path: '.' + language: 'javascript' + include: ['**/*.{js,mjs,cjs}'] + exclude: ['**/node_modules/**', '**/dist/**', '**/build/**'] + + - name: Migrate TypeScript imports + js-ast-grep: + js_file: scripts/vue-package-renames.ts + base_path: '.' + language: 'typescript' + include: ['**/*.{ts,mts,cts}'] + exclude: ['**/node_modules/**', '**/dist/**', '**/build/**'] + + - name: Migrate TSX imports + js-ast-grep: + js_file: scripts/vue-package-renames.ts + base_path: '.' + language: 'tsx' + include: ['**/*.{tsx,jsx}'] + exclude: ['**/node_modules/**', '**/dist/**', '**/build/**'] + + - name: Migrate package manifests + js-ast-grep: + js_file: scripts/vue-package-renames.ts + base_path: '.' + language: 'json' + include: ['**/package.json'] + exclude: ['**/node_modules/**'] + + - name: Migrate Vue SFC imports + run: node scripts/vue-sfc-imports.mjs "${{ params.vue_target_path }}" diff --git a/commitlint.config.mjs b/commitlint.config.mjs new file mode 100644 index 0000000..7c4ff4d --- /dev/null +++ b/commitlint.config.mjs @@ -0,0 +1 @@ +export default { extends: ['@commitlint/config-conventional'] } diff --git a/demos/CHANGELOG.md b/demos/CHANGELOG.md new file mode 100644 index 0000000..8cc65a1 --- /dev/null +++ b/demos/CHANGELOG.md @@ -0,0 +1,571 @@ +# Change Log + +## 3.0.3 + +### Patch Changes + +- a1c6243: Allow KaTeX 0.17 + +## 3.0.2 + +### Patch Changes + +- 75e8404: Fix the `Selection` extension highlighting beyond the selected text on multi-line selections: the native browser selection is now hidden while the editor is blurred, so only the styled `.selection` decoration is shown. + +## 3.0.1 + +### Major Changes + +- a92f4a6: We are now building packages with tsup which does not support UMD builds, please repackage if you require UMD builds + +### Patch Changes + +- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory +- 8c69002: Synced beta with stable features + +## 3.0.0-beta.1 + +### Patch Changes + +- 8c69002: Synced beta with stable features + +## 3.0.0-next.2 + +### Patch Changes + +- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory + +## 3.0.0-next.1 + +### Major Changes + +- a92f4a6: We are now building packages with tsup which does not support UMD builds, please repackage if you require UMD builds + +## 3.0.0-next.0 + +### Major Changes + +- a92f4a6: We are now building packages with tsup which does not support UMD builds, please repackage if you require UMD builds + +## 2.5.2 + +### Patch Changes + +- 98fffbb: Upgraded prosemirror-tables to 1.6.3 to fix cells being resizable while the editor is uneditable + +## 2.5.1 + +### Patch Changes + +- 7619215: The link extension's `validate` option now applies to both auto-linking and XSS mitigation. While, the new `shouldAutoLink` option is used to disable auto linking on an otherwise valid url. + +## 2.5.0 + +### Minor Changes + +- 6834a7f: Bundling of packages no longer includes tiptap dependency type definitions + +## 2.4.2 + +### Patch Changes + +- d6e56c4: declare lowlight to be a peer dep of extension-code-block-lowlight, update usage to v3 + +## 2.4.1 + +### Patch Changes + +- 85d21ca: Updated demos and reverted vue specific performance enhancements until we know they work + + > in commit ff04353b3ee0e6fc63733a673e2b27d2272a3355 revert: "fix(vue-3): faster component rendering (#5206)" + > This reverts commit 31f37464912b7b21f3a565ca63222b9f5b6cce00. + + and + + > in commit dbab8e42eac893a0237566fb30c14b4ed0f3674a revert: "fix(vue-3): fix editor.state updating too late during a transaction due to reactiveState fixes #4870 (#5252)" + > This reverts commit 509676ed4a63b84b904a98c1e34d18449d25c2a7. + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [2.4.0](https://github.com/ueberdosis/tiptap/compare/v2.3.2...v2.4.0) (2024-05-14) + +**Note:** Version bump only for package tiptap-demos + +## [2.3.2](https://github.com/ueberdosis/tiptap/compare/v2.3.1...v2.3.2) (2024-05-08) + +### Bug Fixes + +- NodePos querySelectorAll function ([#5094](https://github.com/ueberdosis/tiptap/issues/5094)) ([4900a27](https://github.com/ueberdosis/tiptap/commit/4900a27c5389d9a2d0d69f407ca3db0155304315)) + +## [2.3.1](https://github.com/ueberdosis/tiptap/compare/v2.3.0...v2.3.1) (2024-04-30) + +**Note:** Version bump only for package tiptap-demos + +# [2.3.0](https://github.com/ueberdosis/tiptap/compare/v2.2.6...v2.3.0) (2024-04-09) + +### Bug Fixes + +- **core:** fix nodepos child lookup ([#5038](https://github.com/ueberdosis/tiptap/issues/5038)) ([22ced31](https://github.com/ueberdosis/tiptap/commit/22ced318723003365fbfd8f59b8dac79c7563017)) + +### Features + +- **core:** apply input and paste rules when using insertContent methods ([#5046](https://github.com/ueberdosis/tiptap/issues/5046)) ([96b6abc](https://github.com/ueberdosis/tiptap/commit/96b6abcf6edbc6cac03a391130d9feebb6de3a04)) + +## [2.2.6](https://github.com/ueberdosis/tiptap/compare/v2.2.5...v2.2.6) (2024-04-06) + +**Note:** Version bump only for package tiptap-demos + +## [2.2.5](https://github.com/ueberdosis/tiptap/compare/v2.2.4...v2.2.5) (2024-04-05) + +**Note:** Version bump only for package tiptap-demos + +## [2.2.4](https://github.com/ueberdosis/tiptap/compare/v2.2.3...v2.2.4) (2024-02-23) + +**Note:** Version bump only for package tiptap-demos + +## [2.2.3](https://github.com/ueberdosis/tiptap/compare/v2.2.2...v2.2.3) (2024-02-15) + +### Bug Fixes + +- fix test path ([21aa96d](https://github.com/ueberdosis/tiptap/commit/21aa96dee8deab1f439b7f655b8ed266a516a4cd)) + +## [2.2.2](https://github.com/ueberdosis/tiptap/compare/v2.2.1...v2.2.2) (2024-02-07) + +**Note:** Version bump only for package tiptap-demos + +## [2.2.1](https://github.com/ueberdosis/tiptap/compare/v2.2.0...v2.2.1) (2024-01-31) + +**Note:** Version bump only for package tiptap-demos + +# [2.2.0](https://github.com/ueberdosis/tiptap/compare/v2.1.16...v2.2.0) (2024-01-29) + +### Bug Fixes + +- **core:** fix new lines being added via elementFromString ([#4767](https://github.com/ueberdosis/tiptap/issues/4767)) ([b7a2504](https://github.com/ueberdosis/tiptap/commit/b7a2504f16f46563537c890930cb2c332c256175)) +- fix imports, fix demos, unpin y-prosemirror ([681aa57](https://github.com/ueberdosis/tiptap/commit/681aa577bff500015c3f925e300c55a71c73efaf)) +- fix newline stripping via insertContent ([8954007](https://github.com/ueberdosis/tiptap/commit/8954007b2b92b040d69b26a0866ae58fabf5e512)) + +# [2.2.0-rc.8](https://github.com/ueberdosis/tiptap/compare/v2.1.14...v2.2.0-rc.8) (2024-01-08) + +# [2.2.0-rc.7](https://github.com/ueberdosis/tiptap/compare/v2.2.0-rc.6...v2.2.0-rc.7) (2023-11-27) + +# [2.2.0-rc.6](https://github.com/ueberdosis/tiptap/compare/v2.2.0-rc.5...v2.2.0-rc.6) (2023-11-23) + +# [2.2.0-rc.4](https://github.com/ueberdosis/tiptap/compare/v2.1.11...v2.2.0-rc.4) (2023-10-10) + +# [2.2.0-rc.3](https://github.com/ueberdosis/tiptap/compare/v2.2.0-rc.2...v2.2.0-rc.3) (2023-08-18) + +# [2.2.0-rc.1](https://github.com/ueberdosis/tiptap/compare/v2.2.0-rc.0...v2.2.0-rc.1) (2023-08-18) + +# [2.2.0-rc.0](https://github.com/ueberdosis/tiptap/compare/v2.1.5...v2.2.0-rc.0) (2023-08-18) + +### Features + +- **placeholder:** allow editor-is-empty class on any node ([#4335](https://github.com/ueberdosis/tiptap/issues/4335)) ([ff929b1](https://github.com/ueberdosis/tiptap/commit/ff929b179de930619005a773bb4186ae2aa2ec58)) + +## [2.1.16](https://github.com/ueberdosis/tiptap/compare/v2.1.15...v2.1.16) (2024-01-10) + +### Bug Fixes + +- **core:** fix new lines being added via elementFromString ([#4767](https://github.com/ueberdosis/tiptap/issues/4767)) ([2235908](https://github.com/ueberdosis/tiptap/commit/2235908c28f388eda041d1d5d017554d513fe909)) + +## [2.1.15](https://github.com/ueberdosis/tiptap/compare/v2.1.14...v2.1.15) (2024-01-08) + +### Bug Fixes + +- **core:** fix insertContentAt keeping new lines in html content ([#4465](https://github.com/ueberdosis/tiptap/issues/4465)) ([135a12f](https://github.com/ueberdosis/tiptap/commit/135a12f7aa2df839a0b619704110a360b980c738)) +- **link:** fix tests ([d495d92](https://github.com/ueberdosis/tiptap/commit/d495d92a1f7b1c51e09ac8f4934e15a2d1cf070d)) + +## [2.1.14](https://github.com/ueberdosis/tiptap/compare/v2.1.13...v2.1.14) (2024-01-08) + +### Bug Fixes + +- **typography:** require spaces after divisions to not break date formats ([#4696](https://github.com/ueberdosis/tiptap/issues/4696)) ([f6d7e00](https://github.com/ueberdosis/tiptap/commit/f6d7e00a746a67fa440a3fa0f5362295959873d2)) + +## [2.1.13](https://github.com/ueberdosis/tiptap/compare/v2.1.12...v2.1.13) (2023-11-30) + +**Note:** Version bump only for package tiptap-demos + +## [2.1.12](https://github.com/ueberdosis/tiptap/compare/v2.1.11...v2.1.12) (2023-10-11) + +**Note:** Version bump only for package tiptap-demos + +## [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.2.0-rc.2](https://github.com/ueberdosis/tiptap/compare/v2.1.6...v2.2.0-rc.2) (2023-08-18) + +# [2.2.0-rc.1](https://github.com/ueberdosis/tiptap/compare/v2.2.0-rc.0...v2.2.0-rc.1) (2023-08-18) + +# [2.2.0-rc.0](https://github.com/ueberdosis/tiptap/compare/v2.1.5...v2.2.0-rc.0) (2023-08-18) + +### Features + +- **placeholder:** allow editor-is-empty class on any node ([#4335](https://github.com/ueberdosis/tiptap/issues/4335)) ([ff929b1](https://github.com/ueberdosis/tiptap/commit/ff929b179de930619005a773bb4186ae2aa2ec58)) + +# [2.2.0-rc.1](https://github.com/ueberdosis/tiptap/compare/v2.2.0-rc.0...v2.2.0-rc.1) (2023-08-18) + +**Note:** Version bump only for package tiptap-demos + +# [2.2.0-rc.0](https://github.com/ueberdosis/tiptap/compare/v2.1.5...v2.2.0-rc.0) (2023-08-18) + +### Features + +- **placeholder:** allow editor-is-empty class on any node ([#4335](https://github.com/ueberdosis/tiptap/issues/4335)) ([ff929b1](https://github.com/ueberdosis/tiptap/commit/ff929b179de930619005a773bb4186ae2aa2ec58)) + +## [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 + +# [2.0.0-beta.198](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.197...v2.0.0-beta.198) (2022-09-29) + +**Note:** Version bump only for package tiptap-demos + +# [2.0.0-beta.197](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.196...v2.0.0-beta.197) (2022-09-26) + +### Bug Fixes + +- **core:** Can() does not work for setting marks ([#3223](https://github.com/ueberdosis/tiptap/issues/3223)) ([17a41da](https://github.com/ueberdosis/tiptap/commit/17a41da5a7a14879cf490c81914084791c4c494c)) + +# [2.0.0-beta.196](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.195...v2.0.0-beta.196) (2022-09-20) + +**Note:** Version bump only for package tiptap-demos + +# [2.0.0-beta.195](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.194...v2.0.0-beta.195) (2022-09-14) + +### 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)) + +# [2.0.0-beta.194](https://github.com/ueberdosis/tiptap/compare/v2.0.0-beta.193...v2.0.0-beta.194) (2022-09-11) + +**Note:** Version bump only for package tiptap-demos + +# [2.0.0-beta.193](https://github.com/ueberdosis/tiptap/compare/v0.1.2...v2.0.0-beta.193) (2022-09-10) + +### Bug Fixes + +- bump documents ([43611ea](https://github.com/ueberdosis/tiptap/commit/43611ea2e70d3dc66ff907ba7ca377bf74814543)) +- disable broken tests for experiements with further todo message ([b8ae9e2](https://github.com/ueberdosis/tiptap/commit/b8ae9e27622857093c6ca539901956da5cc291e5)) +- 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)) +- **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)) +- fix RangeError bug when selecting all text, fix [#2490](https://github.com/ueberdosis/tiptap/issues/2490) ([70422dd](https://github.com/ueberdosis/tiptap/commit/70422dd107ed1ecdd8dfe41a8a93297124d2f1e0)) +- **maintainment:** fix cjs issues with prosemirror-tables ([eb92597](https://github.com/ueberdosis/tiptap/commit/eb925976038fbf59f6ba333ccc57ea84113da00e)) +- remove some magic strings ([6c34dec](https://github.com/ueberdosis/tiptap/commit/6c34dec33ac39c9f037a0a72e4525f3fc6d422bf)) +- **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) +- temp fix collaboration demo ([4528756](https://github.com/ueberdosis/tiptap/commit/45287563f3cfb389095a2794cb2001d65e56d633)) + +### Features + +- Add extension storage ([#2069](https://github.com/ueberdosis/tiptap/issues/2069)) ([7ffabf2](https://github.com/ueberdosis/tiptap/commit/7ffabf251c408a652eec1931cc78a8bd43cccb67)) +- 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 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 support for autolink ([#2226](https://github.com/ueberdosis/tiptap/issues/2226)) ([3d68981](https://github.com/ueberdosis/tiptap/commit/3d68981b47d087fff40549d2143eb952fc9e0a50)) +- **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)) +- 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)) +- 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)) diff --git a/demos/dedupeDeps.txt b/demos/dedupeDeps.txt new file mode 100644 index 0000000..e5c2daa --- /dev/null +++ b/demos/dedupeDeps.txt @@ -0,0 +1,39 @@ +d3 +highlight.js/lib/languages/css +highlight.js/lib/languages/javascript +highlight.js/lib/languages/typescript +highlight.js/lib/languages/xml +highlight.js/lib/core +linkifyjs +lowlight +react +react-dom +react-dom/client +use-sync-external-store/shim +use-sync-external-store/shim/with-selector +shiki +@floating-ui/dom +uuid +y-webrtc +yjs +prosemirror-changeset +prosemirror-collab +prosemirror-commands +prosemirror-dropcursor +prosemirror-gapcursor +prosemirror-history +prosemirror-inputrules +prosemirror-keymap +prosemirror-markdown +prosemirror-menu +prosemirror-model +prosemirror-schema-basic +prosemirror-schema-list +prosemirror-state +prosemirror-tables +prosemirror-trailing-node +prosemirror-transform +prosemirror-view +@hocuspocus/provider +@lifeomic/attempt +@tiptap/y-tiptap diff --git a/demos/index.html b/demos/index.html new file mode 100644 index 0000000..297cea7 --- /dev/null +++ b/demos/index.html @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/demos/package.json b/demos/package.json new file mode 100644 index 0000000..6880339 --- /dev/null +++ b/demos/package.json @@ -0,0 +1,71 @@ +{ + "name": "tiptap-demos", + "version": "3.0.3", + "private": true, + "type": "module", + "scripts": { + "start": "vp dev --host", + "start:e2e": "vp dev --host --port 4080", + "build:demos": "vp build", + "preview": "vp preview" + }, + "dependencies": { + "@floating-ui/dom": "^1.6.13", + "@hocuspocus/provider": "^2.15.0", + "@hocuspocus/transformer": "^2.15.0", + "@lexical/react": "^0.36.2", + "@lifeomic/attempt": "3.1.0", + "@shikijs/core": "1.10.3", + "@tiptap/y-tiptap": "^3.0.7", + "d3": "^7.9.0", + "fast-glob": "^3.3.2", + "highlight.js": "^11.11.1", + "katex": "^0.18.0", + "lexical": "^0.36.2", + "linkifyjs": "^4.3.2", + "lowlight": "^3.3.0", + "prosemirror-changeset": "^2.4.1", + "prosemirror-collab": "^1.3.1", + "prosemirror-commands": "^1.7.1", + "prosemirror-dropcursor": "^1.8.2", + "prosemirror-gapcursor": "^1.4.1", + "prosemirror-history": "^1.5.0", + "prosemirror-inputrules": "^1.5.1", + "prosemirror-keymap": "^1.2.3", + "prosemirror-markdown": "^1.13.4", + "prosemirror-menu": "^1.3.2", + "prosemirror-model": "^1.25.9", + "prosemirror-schema-basic": "^1.2.4", + "prosemirror-schema-list": "^1.5.1", + "prosemirror-state": "^1.4.4", + "prosemirror-tables": "^1.8.5", + "prosemirror-trailing-node": "^3.0.0", + "prosemirror-transform": "^1.12.0", + "prosemirror-view": "^1.42.3", + "remixicon": "^2.5.0", + "shiki": "^1.25.1", + "y-webrtc": "10.3.0", + "yjs": "13.6.23" + }, + "devDependencies": { + "@sveltejs/vite-plugin-svelte": "7.2.0", + "@types/node": "^22.12.0", + "@vitejs/plugin-react": "6.0.5", + "@vitejs/plugin-vue": "6.0.8", + "autoprefixer": "^10.4.20", + "iframe-resizer": "^4.4.5", + "postcss": "^8.5.23", + "postcss-import": "^15.1.0", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "sass-embedded": "^1.99.0", + "svelte": "^5.56.8", + "tailwindcss": "^3.4.17", + "typescript": "^5.7.2", + "uuid": "^14.0.0", + "vite": "catalog:", + "vite-plus": "catalog:", + "vue": "^3.5.13", + "vue-router": "^4.5.0" + } +} diff --git a/demos/postcss.config.cjs b/demos/postcss.config.cjs new file mode 100644 index 0000000..825cb18 --- /dev/null +++ b/demos/postcss.config.cjs @@ -0,0 +1,8 @@ +module.exports = { + plugins: { + 'postcss-import': {}, + 'tailwindcss/nesting': {}, + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/demos/preview/Demo.vue b/demos/preview/Demo.vue new file mode 100644 index 0000000..d3309df --- /dev/null +++ b/demos/preview/Demo.vue @@ -0,0 +1,233 @@ + + + diff --git a/demos/preview/DemoFrame.vue b/demos/preview/DemoFrame.vue new file mode 100644 index 0000000..d9f0c3b --- /dev/null +++ b/demos/preview/DemoFrame.vue @@ -0,0 +1,56 @@ +