From 3a48ae774984d641f5cc12e8a69480f623263e86 Mon Sep 17 00:00:00 2001 From: Barry Hess Date: Sat, 26 Oct 2024 16:18:42 -0500 Subject: [PATCH 1/3] Readme updates from a first time installer (#213) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * README updates. I had some challenges getting things up and running, so here are some README updates. Curated over a lovely session on Discord. * .gitignore RubyMine files. If that's okay to land in the repo? ❤️ --- .gitignore | 3 +++ README.md | 23 +++++++++++++++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 2770b16e..a4078958 100644 --- a/.gitignore +++ b/.gitignore @@ -161,6 +161,9 @@ docs/.bridgetown-cache .DS_Store +# Ignore RubyMine files. +.idea/ + /exports /internal /cdn diff --git a/README.md b/README.md index e9dc9d22..06a53feb 100644 --- a/README.md +++ b/README.md @@ -19,15 +19,20 @@ We have a test suite using Ruby on Rails and is intended to provide a good demonstration of how this package can hook into ActionText. +Contributions should be made on a feature branch in a +forked repository. + ### Prerequisites - Ruby 3.1.2 - Rails 7.0.4 - PNPM (`npm install -g pnpm`) -- Playwright +- Playwright (`npm install -g playwright`) - Node >= 16 - Docker (Used to run a simulated S3 server) -- Overmind (Preferred, not needed) +- A Docker virtualizer ([Orbstack](https://orbstack.dev/) or + [Docker Desktop](https://www.docker.com/products/docker-desktop/)) +- Overmind (Preferred, not needed `npm install -g overmind`) ### Installation @@ -42,9 +47,19 @@ pnpm run setup ### Running the server -The easiest way to run the server is using [Overmind](https://github.com/DarthSim/overmind) +The easiest way to run the server is using [Overmind](https://github.com/DarthSim/overmind). +First start up your Docker virtualizer, then in two termainals… + +Terminal 1: + +```bash +pnpm run start +``` + +Terminal 2: ```bash +cd tests/rails overmind start -f Procfile.dev ``` @@ -53,7 +68,7 @@ Then navigate to `localhost:5100` #### Without Overmind -To run the server without overmind do the following in +To run the server without Overmind do the following in seperate terminals: ```bash From 0031ec1b8f939593724460e7929d531bd5c29ab7 Mon Sep 17 00:00:00 2001 From: Konnor Rogers Date: Fri, 1 Nov 2024 19:10:52 -0400 Subject: [PATCH 2/3] Konnorrogers/fix links in captions (#216) * many fixes * add codemark * fixing up inline code * fixing everything * prettieR * prettieR * final tweaks * add note about link dialogs * add note about link dialogs * add note about link dialogs --- .changeset/brown-adults-sort.md | 5 + .changeset/famous-zebras-itch.md | 5 + .changeset/fuzzy-buttons-wash.md | 5 + .changeset/good-rivers-drop.md | 5 + .changeset/hot-berries-do.md | 5 + .changeset/hungry-tables-live.md | 5 + .changeset/light-mails-crash.md | 5 + .changeset/rare-emus-visit.md | 5 + .changeset/serious-geckos-provide.md | 5 + docs/package.json | 8 - docs/pnpm-lock.yaml | 14 +- docs/src/rhino-editor/exports/styles/trix.css | 56 +- package.json | 36 +- pnpm-lock.yaml | 511 +++++++++--------- src/exports/elements/tip-tap-editor-base.ts | 31 +- src/exports/elements/tip-tap-editor.ts | 180 +++++- src/exports/extensions/bubble-menu.ts | 67 ++- src/exports/extensions/codemark-plugin.ts | 17 + src/exports/extensions/rhino-starter-kit.ts | 13 +- src/exports/extensions/selection-decorator.ts | 104 ++++ src/exports/styles/editor.js | 25 +- src/exports/styles/trix-core.css | 74 ++- src/exports/styles/trix.css | 74 ++- src/exports/translations.ts | 6 +- src/internal/icons.ts | 16 +- tests/rails/Gemfile.lock | 17 +- .../rails/app/controllers/posts_controller.rb | 2 +- .../app/frontend/entrypoints/application.js | 14 +- .../app/frontend/entrypoints/collaboration.js | 29 +- .../app/views/collaborations/index.html.erb | 1 + tests/rails/app/views/posts/index.html.erb | 4 +- tests/rails/docker-compose.yml | 2 - tests/rails/package.json | 36 +- tests/rails/pnpm-lock.yaml | 446 +++++++-------- tests/rails/vite.config.ts | 9 + tests/unit/extensions.test.js | 54 ++ 36 files changed, 1228 insertions(+), 663 deletions(-) create mode 100644 .changeset/brown-adults-sort.md create mode 100644 .changeset/famous-zebras-itch.md create mode 100644 .changeset/fuzzy-buttons-wash.md create mode 100644 .changeset/good-rivers-drop.md create mode 100644 .changeset/hot-berries-do.md create mode 100644 .changeset/hungry-tables-live.md create mode 100644 .changeset/light-mails-crash.md create mode 100644 .changeset/rare-emus-visit.md create mode 100644 .changeset/serious-geckos-provide.md create mode 100644 src/exports/extensions/codemark-plugin.ts create mode 100644 src/exports/extensions/selection-decorator.ts create mode 100644 tests/unit/extensions.test.js diff --git a/.changeset/brown-adults-sort.md b/.changeset/brown-adults-sort.md new file mode 100644 index 00000000..2d371b12 --- /dev/null +++ b/.changeset/brown-adults-sort.md @@ -0,0 +1,5 @@ +--- +"rhino-editor": patch +--- + +Fix: behavior around cursors with inline-code using Codemark plugin. diff --git a/.changeset/famous-zebras-itch.md b/.changeset/famous-zebras-itch.md new file mode 100644 index 00000000..ceec9015 --- /dev/null +++ b/.changeset/famous-zebras-itch.md @@ -0,0 +1,5 @@ +--- +"rhino-editor": minor +--- + +Styles: blockquote has had its icon changed to represent a block code icon. diff --git a/.changeset/fuzzy-buttons-wash.md b/.changeset/fuzzy-buttons-wash.md new file mode 100644 index 00000000..9c5fbc27 --- /dev/null +++ b/.changeset/fuzzy-buttons-wash.md @@ -0,0 +1,5 @@ +--- +"rhino-editor": minor +--- + +Styling of link dialogs has changed now that it follows the selection cursor. diff --git a/.changeset/good-rivers-drop.md b/.changeset/good-rivers-drop.md new file mode 100644 index 00000000..1f44c678 --- /dev/null +++ b/.changeset/good-rivers-drop.md @@ -0,0 +1,5 @@ +--- +"rhino-editor": minor +--- + +Fix: code blocks now properly display their correct keybinding diff --git a/.changeset/hot-berries-do.md b/.changeset/hot-berries-do.md new file mode 100644 index 00000000..960d4275 --- /dev/null +++ b/.changeset/hot-berries-do.md @@ -0,0 +1,5 @@ +--- +"rhino-editor": patch +--- + +Fix: links now properly render inside of `
` diff --git a/.changeset/hungry-tables-live.md b/.changeset/hungry-tables-live.md new file mode 100644 index 00000000..01d7cf48 --- /dev/null +++ b/.changeset/hungry-tables-live.md @@ -0,0 +1,5 @@ +--- +"rhino-editor": patch +--- + +Fix: double error extension registration has been fixed diff --git a/.changeset/light-mails-crash.md b/.changeset/light-mails-crash.md new file mode 100644 index 00000000..0cc261d1 --- /dev/null +++ b/.changeset/light-mails-crash.md @@ -0,0 +1,5 @@ +--- +"rhino-editor": minor +--- + +Feature: Added an "inline code" toolbar button, bubble menu buttons, and default styles. diff --git a/.changeset/rare-emus-visit.md b/.changeset/rare-emus-visit.md new file mode 100644 index 00000000..f9ceaa4e --- /dev/null +++ b/.changeset/rare-emus-visit.md @@ -0,0 +1,5 @@ +--- +"rhino-editor": minor +--- + +Feature: Link dialogs now follow your selection cursor instead of always being in the top left of the editor diff --git a/.changeset/serious-geckos-provide.md b/.changeset/serious-geckos-provide.md new file mode 100644 index 00000000..80853ea3 --- /dev/null +++ b/.changeset/serious-geckos-provide.md @@ -0,0 +1,5 @@ +--- +"rhino-editor": patch +--- + +Fix: keybindings now swap to using "option" instead of "alt" for iOS / MacOS. diff --git a/docs/package.json b/docs/package.json index 14165b8d..94544d4d 100644 --- a/docs/package.json +++ b/docs/package.json @@ -25,25 +25,17 @@ "@hotwired/turbo": "^7.3.0", "@konnorr/bridgetown-quick-search": "^3.10.4", "@shoelace-style/shoelace": "^2.17.1", - "@tiptap/core": "^2.8.0", "@tiptap/extension-character-count": "^2.8.0", "@tiptap/extension-code-block": "^2.8.0", "@tiptap/extension-code-block-lowlight": "^2.8.0", - "@tiptap/pm": "^2.8.0", "bridgetown-quick-search": "3.0.3", "esbuild-plugin-copy": "^2.1.1", "linkifyjs": "^4.1.3", "lit": "^3.2.0", "lowlight": "^3.1.0", "prism-esm": "1.29.0-fix.6", - "prosemirror-view": "^1.34.3", "read-cache": "^1.0.0", "rhino-editor": "link:..", "web-component-lazy-loader": "^1.0.1" - }, - "pnpm": { - "overrides": { - "prosemirror-view": "$prosemirror-view" - } } } diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml index acc2732b..eb6866fc 100644 --- a/docs/pnpm-lock.yaml +++ b/docs/pnpm-lock.yaml @@ -4,9 +4,6 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false -overrides: - prosemirror-view: ^1.34.3 - importers: .: @@ -26,9 +23,6 @@ importers: '@shoelace-style/shoelace': specifier: ^2.17.1 version: 2.17.1(@types/react@18.3.3) - '@tiptap/core': - specifier: ^2.8.0 - version: 2.8.0(@tiptap/pm@2.8.0) '@tiptap/extension-character-count': specifier: ^2.8.0 version: 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))(@tiptap/pm@2.8.0) @@ -38,9 +32,6 @@ importers: '@tiptap/extension-code-block-lowlight': specifier: ^2.8.0 version: 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))(@tiptap/extension-code-block@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))(@tiptap/pm@2.8.0))(@tiptap/pm@2.8.0)(highlight.js@11.9.0)(lowlight@3.1.0) - '@tiptap/pm': - specifier: ^2.8.0 - version: 2.8.0 bridgetown-quick-search: specifier: 3.0.3 version: 3.0.3 @@ -59,9 +50,6 @@ importers: prism-esm: specifier: 1.29.0-fix.6 version: 1.29.0-fix.6 - prosemirror-view: - specifier: ^1.34.3 - version: 1.34.3 read-cache: specifier: ^1.0.0 version: 1.0.0 @@ -1652,7 +1640,7 @@ packages: peerDependencies: prosemirror-model: ^1.22.1 prosemirror-state: ^1.4.2 - prosemirror-view: ^1.34.3 + prosemirror-view: ^1.33.8 prosemirror-transform@1.10.0: resolution: {integrity: sha512-9UOgFSgN6Gj2ekQH5CTDJ8Rp/fnKR2IkYfGdzzp5zQMFsS4zDllLVx/+jGcX86YlACpG7UR5fwAXiWzxqWtBTg==} diff --git a/docs/src/rhino-editor/exports/styles/trix.css b/docs/src/rhino-editor/exports/styles/trix.css index 6d3ff0b2..7a441e16 100644 --- a/docs/src/rhino-editor/exports/styles/trix.css +++ b/docs/src/rhino-editor/exports/styles/trix.css @@ -1,4 +1,29 @@ /* src/exports/styles/trix.css */ +@keyframes blink { + 49% { + border-color: unset; + } + 50% { + border-color: Canvas; + } + 99% { + border-color: Canvas; + } +} +.no-cursor { + caret-color: transparent; +} +.fake-cursor { + margin: 0; + padding: 0; + margin-left: -1px; + border-left-width: 1px; + border-left-style: solid; + animation: blink 1s; + animation-iteration-count: infinite; + position: relative; + z-index: 1; +} .trix-content { border: 1px solid var(--rhino-border-color); border-radius: 0px 0px var(--rhino-border-radius) var(--rhino-border-radius); @@ -126,16 +151,27 @@ .trix-content li { margin-inline-start: 1em; } -.trix-content :where(pre) { +.trix-content :where(:not(pre code)) code { + background-color: #eee; + border-radius: 2px; + padding: 2px; + margin: 0 1px; + border: 1px solid rgba(192, 192, 192, 0.5); display: inline-block; +} +.trix-content code, +.trix-content pre { + box-decoration-break: clone; +} +.trix-content pre { + display: block; width: 100%; - vertical-align: top; font-family: monospace; - font-size: 0.9em; padding: 0.5em; white-space: pre; - background-color: #eee; overflow-x: auto; + background-color: #eee; + font-size: 0.9em; } .trix-content img { max-width: 100%; @@ -146,13 +182,13 @@ position: relative; max-width: 100%; } -.trix-content .attachment a { - color: inherit; - text-decoration: none; +.trix-content .attachment figcaption a, +.trix-content .attachment figcaption a:hover { + color: LinkText; } -.trix-content .attachment a:hover, -.trix-content .attachment a:visited:hover { - color: inherit; +.trix-content .attachment figcaption a:visited, +.trix-content .attachment figcaption a:hover:visited { + color: VisitedText; } .trix-content .attachment__caption { text-align: center; diff --git a/package.json b/package.json index 86e0999c..2a0edcc9 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "@custom-elements-manifest/analyzer": "^0.10.3", "@esm-bundle/chai": "4.3.4-fix.0", "@open-wc/testing": "^3.2.2", - "@playwright/test": "^1.48.0", + "@playwright/test": "^1.48.2", "@types/mocha": "^10.0.9", "@types/rails__activestorage": "^7.1.1", "@typescript-eslint/parser": "^6.21.0", @@ -58,7 +58,7 @@ "eslint": "^8.57.1", "glob": "^10.4.5", "mocha": "^10.7.3", - "playwright": "^1.48.0", + "playwright": "^1.48.2", "prettier": "^3.3.3", "rhino-editor": "link:", "sinon": "^15.2.0", @@ -66,27 +66,23 @@ "typescript": "^5.6.2" }, "dependencies": { - "@rails/activestorage": "^7.2.100", - "@tiptap/core": "^2.2.0", - "@tiptap/extension-code-block": "^2.2.0", - "@tiptap/extension-focus": "^2.2.0", - "@tiptap/extension-image": "^2.2.0", - "@tiptap/extension-link": "^2.2.0", - "@tiptap/extension-placeholder": "^2.2.0", - "@tiptap/extension-strike": "^2.2.0", - "@tiptap/pm": "^2.2.0", - "@tiptap/starter-kit": "^2.2.0", + "@rails/activestorage": "^7.2.102", + "@tiptap/core": "^2.9.1", + "@tiptap/extension-code": "^2.9.1", + "@tiptap/extension-code-block": "^2.9.1", + "@tiptap/extension-focus": "^2.9.1", + "@tiptap/extension-image": "^2.9.1", + "@tiptap/extension-link": "^2.9.1", + "@tiptap/extension-placeholder": "^2.9.1", + "@tiptap/extension-strike": "^2.9.1", + "@tiptap/pm": "^2.9.1", + "@tiptap/starter-kit": "^2.9.1", "linkifyjs": "^4.1.3", "lit": "^3.2.0", + "prosemirror-codemark": "^0.4.2", "prosemirror-utils": "^1.2.2", - "prosemirror-view": "~1.28.0", - "role-components": "^3.0.1", - "tslib": "^2.7.0" - }, - "pnpm": { - "overrides": { - "prosemirror-view": "$prosemirror-view" - } + "role-components": "^3.1.0", + "tslib": "^2.8.0" }, "repository": "git@github.com:KonnorRogers/rhino-editor.git", "bugs": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d1e49381..6b6ea84f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,61 +4,61 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false -overrides: - prosemirror-view: ~1.28.0 - importers: .: dependencies: '@rails/activestorage': - specifier: ^7.2.100 - version: 7.2.100 + specifier: ^7.2.102 + version: 7.2.102 '@tiptap/core': - specifier: ^2.2.0 - version: 2.8.0(@tiptap/pm@2.8.0) + specifier: ^2.9.1 + version: 2.9.1(@tiptap/pm@2.9.1) + '@tiptap/extension-code': + specifier: ^2.9.1 + version: 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1)) '@tiptap/extension-code-block': - specifier: ^2.2.0 - version: 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))(@tiptap/pm@2.8.0) + specifier: ^2.9.1 + version: 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))(@tiptap/pm@2.9.1) '@tiptap/extension-focus': - specifier: ^2.2.0 - version: 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))(@tiptap/pm@2.8.0) + specifier: ^2.9.1 + version: 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))(@tiptap/pm@2.9.1) '@tiptap/extension-image': - specifier: ^2.2.0 - version: 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0)) + specifier: ^2.9.1 + version: 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1)) '@tiptap/extension-link': - specifier: ^2.2.0 - version: 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))(@tiptap/pm@2.8.0) + specifier: ^2.9.1 + version: 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))(@tiptap/pm@2.9.1) '@tiptap/extension-placeholder': - specifier: ^2.2.0 - version: 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))(@tiptap/pm@2.8.0) + specifier: ^2.9.1 + version: 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))(@tiptap/pm@2.9.1) '@tiptap/extension-strike': - specifier: ^2.2.0 - version: 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0)) + specifier: ^2.9.1 + version: 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1)) '@tiptap/pm': - specifier: ^2.2.0 - version: 2.8.0 + specifier: ^2.9.1 + version: 2.9.1 '@tiptap/starter-kit': - specifier: ^2.2.0 - version: 2.8.0(@tiptap/extension-text-style@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))) + specifier: ^2.9.1 + version: 2.9.1 linkifyjs: specifier: ^4.1.3 version: 4.1.3 lit: specifier: ^3.2.0 version: 3.2.0 + prosemirror-codemark: + specifier: ^0.4.2 + version: 0.4.2(prosemirror-inputrules@1.4.0)(prosemirror-model@1.23.0)(prosemirror-state@1.4.3)(prosemirror-view@1.35.0) prosemirror-utils: specifier: ^1.2.2 - version: 1.2.2(prosemirror-model@1.22.3)(prosemirror-state@1.4.3) - prosemirror-view: - specifier: ~1.28.0 - version: 1.28.3 + version: 1.2.2(prosemirror-model@1.23.0)(prosemirror-state@1.4.3) role-components: - specifier: ^3.0.1 - version: 3.0.1 + specifier: ^3.1.0 + version: 3.1.0 tslib: - specifier: ^2.7.0 - version: 2.7.0 + specifier: ^2.8.0 + version: 2.8.0 devDependencies: '@changesets/changelog-github': specifier: ^0.5.0 @@ -76,8 +76,8 @@ importers: specifier: ^3.2.2 version: 3.2.2 '@playwright/test': - specifier: ^1.48.0 - version: 1.48.0 + specifier: ^1.48.2 + version: 1.48.2 '@types/mocha': specifier: ^10.0.9 version: 10.0.9 @@ -121,8 +121,8 @@ importers: specifier: ^10.7.3 version: 10.7.3 playwright: - specifier: ^1.48.0 - version: 1.48.0 + specifier: ^1.48.2 + version: 1.48.2 prettier: specifier: ^3.3.3 version: 3.3.3 @@ -617,8 +617,8 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@playwright/test@1.48.0': - resolution: {integrity: sha512-W5lhqPUVPqhtc/ySvZI5Q8X2ztBOUgZ8LbAFy0JQgrXZs2xaILrUcNO3rQjwbLPfGK13+rZsDa1FpG+tqYkT5w==} + '@playwright/test@1.48.2': + resolution: {integrity: sha512-54w1xCWfXuax7dz4W2M9uw0gDyh+ti/0K/MxcCUxChFh37kkdxPdfZDw5QBbuPUJHr1CiHJ1hXgSs+GgeQc5Zw==} engines: {node: '>=18'} hasBin: true @@ -627,8 +627,8 @@ packages: engines: {node: '>=18'} hasBin: true - '@rails/activestorage@7.2.100': - resolution: {integrity: sha512-gohCilm1E10W51Hc9iT960xX9TP11L5TJ4W1ufs9f3h5Ncsw01S/eHgVUfcdfszqw3G+28Z0MFu999+iSpgdTg==} + '@rails/activestorage@7.2.102': + resolution: {integrity: sha512-indJKK6bhETIfyYqUtbE3neUQCZ7Qm3lcPXSHqlVBYsJ3DnUKKejqvaIHHA5MrmqTKNbnnrX4zyeA1mrJgLk9Q==} '@remirror/core-constants@3.0.0': resolution: {integrity: sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==} @@ -746,143 +746,139 @@ packages: '@sinonjs/text-encoding@0.7.3': resolution: {integrity: sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==} - '@tiptap/core@2.8.0': - resolution: {integrity: sha512-xsqDI4BNzYRWRtBq7+/38ThhqEr7uG9Njip1x+9/wgR3vWPBFnBkYJTz6jSxS35NRE6BSnERm4/B/vrLuY1Hdw==} + '@tiptap/core@2.9.1': + resolution: {integrity: sha512-tifnLL/ARzQ6/FGEJjVwj9UT3v+pENdWHdk9x6F3X0mB1y0SeCjV21wpFLYESzwNdBPAj8NMp8Behv7dBnhIfw==} peerDependencies: '@tiptap/pm': ^2.7.0 - '@tiptap/extension-blockquote@2.8.0': - resolution: {integrity: sha512-m3CKrOIvV7fY1Ak2gYf5LkKiz6AHxHpg6wxfVaJvdBqXgLyVtHo552N+A4oSHOSRbB4AG9EBQ2NeBM8cdEQ4MA==} + '@tiptap/extension-blockquote@2.9.1': + resolution: {integrity: sha512-Y0jZxc/pdkvcsftmEZFyG+73um8xrx6/DMfgUcNg3JAM63CISedNcr+OEI11L0oFk1KFT7/aQ9996GM6Kubdqg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-bold@2.8.0': - resolution: {integrity: sha512-U1YkZBxDkSLNvPNiqxB5g42IeJHr27C7zDb/yGQN2xL4UBeg4O9xVhCFfe32f6tLwivSL0dar4ScElpaCJuqow==} + '@tiptap/extension-bold@2.9.1': + resolution: {integrity: sha512-e2P1zGpnnt4+TyxTC5pX/lPxPasZcuHCYXY0iwQ3bf8qRQQEjDfj3X7EI+cXqILtnhOiviEOcYmeu5op2WhQDg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-bullet-list@2.8.0': - resolution: {integrity: sha512-H4O2X0ozbc/ce9/XF1H98sqWVUdtt7jzy7hMBunwmY8ZxI4dHtcRkeg81CZbpKTqOqRrMCLWjE3M2tgiDXrDkA==} + '@tiptap/extension-bullet-list@2.9.1': + resolution: {integrity: sha512-0hizL/0j9PragJObjAWUVSuGhN1jKjCFnhLQVRxtx4HutcvS/lhoWMvFg6ZF8xqWgIa06n6A7MaknQkqhTdhKA==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-list-item': ^2.7.0 - '@tiptap/extension-text-style': ^2.7.0 - '@tiptap/extension-code-block@2.8.0': - resolution: {integrity: sha512-POuA5Igx+Dto0DTazoBFAQTj/M/FCdkqRVD9Uhsxhv49swPyANTJRr05vgbgtHB+NDDsZfCawVh7pI0IAD/O0w==} + '@tiptap/extension-code-block@2.9.1': + resolution: {integrity: sha512-A/50wPWDqEUUUPhrwRKILP5gXMO5UlQ0F6uBRGYB9CEVOREam9yIgvONOnZVJtszHqOayjIVMXbH/JMBeq11/g==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-code@2.8.0': - resolution: {integrity: sha512-VSFn3sFF6qPpOGkXFhik8oYRH5iByVJpFEFd/duIEftmS0MdPzkbSItOpN3mc9xsJ5dCX80LYaResSj5hr5zkA==} + '@tiptap/extension-code@2.9.1': + resolution: {integrity: sha512-WQqcVGe7i/E+yO3wz5XQteU1ETNZ00euUEl4ylVVmH2NM4Dh0KDjEhbhHlCM0iCfLUo7jhjC7dmS+hMdPUb+Tg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-document@2.8.0': - resolution: {integrity: sha512-mp7Isx1sVc/ifeW4uW/PexGQ9exN3NRUOebSpnLfqXeWYk4y1RS1PA/3+IHkOPVetbnapgPjFx/DswlCP3XLjA==} + '@tiptap/extension-document@2.9.1': + resolution: {integrity: sha512-1a+HCoDPnBttjqExfYLwfABq8MYdiowhy/wp8eCxVb6KGFEENO53KapstISvPzqH7eOi+qRjBB1KtVYb/ZXicg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-dropcursor@2.8.0': - resolution: {integrity: sha512-rAFvx44YuT6dtS1c+ALw0ROAGI16l5L1HxquL4hR1gtxDcTieST5xhw5bkshXlmrlfotZXPrhokzqA7qjhZtJw==} + '@tiptap/extension-dropcursor@2.9.1': + resolution: {integrity: sha512-wJZspSmJRkDBtPkzFz1g7gvZOEOayk8s93UHsgbJxcV4VWHYleZ5XhT74sZunSjefNDm3qC6v2BSgLp3vNHVKQ==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-focus@2.8.0': - resolution: {integrity: sha512-zBT0rjWnYLmmzvYxlxPp1w22oL98ODjG9gvVM/3u788zoNmGU1Elf0aORoLu6tLZACQ8FY2spH9AGiYS3lAh+A==} + '@tiptap/extension-focus@2.9.1': + resolution: {integrity: sha512-I2uSrn0xMNSbvM/DdCWQn4qY3F0nypbwKvZJlYrj6vKtoKCeif/TcQB3wZbArXe9h5WUNTgGs2liFzhlDAKfVw==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-gapcursor@2.8.0': - resolution: {integrity: sha512-Be1LWCmvteQInOnNVN+HTqc1XWsj1bCl+Q7et8qqNjtGtTaCbdCp8ppcH1SKJxNTM/RLUtPyJ8FDgOTj51ixCA==} + '@tiptap/extension-gapcursor@2.9.1': + resolution: {integrity: sha512-jsRBmX01vr+5H02GljiHMo0n5H1vzoMLmFarxe0Yq2d2l9G/WV2VWX2XnGliqZAYWd1bI0phs7uLQIN3mxGQTw==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-hard-break@2.8.0': - resolution: {integrity: sha512-vqiIfviNiCmy/pJTHuDSCAGL2O4QDEdDmAvGJu8oRmElUrnlg8DbJUfKvn6DWQHNSQwRb+LDrwWlzAYj1K9u6A==} + '@tiptap/extension-hard-break@2.9.1': + resolution: {integrity: sha512-fCuaOD/b7nDjm47PZ58oanq7y4ccS2wjPh42Qm0B0yipu/1fmC8eS1SmaXmk28F89BLtuL6uOCtR1spe+lZtlQ==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-heading@2.8.0': - resolution: {integrity: sha512-4inWgrTPiqlivPmEHFOM5ck2UsmOsbKKPtqga6bALvWPmCv24S6/EBwFp8Jz4YABabXDnkviihmGu0LpP9D69w==} + '@tiptap/extension-heading@2.9.1': + resolution: {integrity: sha512-SjZowzLixOFaCrV2cMaWi1mp8REK0zK1b3OcVx7bCZfVSmsOETJyrAIUpCKA8o60NwF7pwhBg0MN8oXlNKMeFw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-history@2.8.0': - resolution: {integrity: sha512-u5YS0J5Egsxt8TUWMMAC3QhPZaak+IzQeyHch4gtqxftx96tprItY7AD/A3pGDF2uCSnN+SZrk6yVexm6EncDw==} + '@tiptap/extension-history@2.9.1': + resolution: {integrity: sha512-wp9qR1NM+LpvyLZFmdNaAkDq0d4jDJ7z7Fz7icFQPu31NVxfQYO3IXNmvJDCNu8hFAbImpA5aG8MBuwzRo0H9w==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-horizontal-rule@2.8.0': - resolution: {integrity: sha512-Sn/MI8WVFBoIYSIHA9NJryJIyCEzZdRysau8pC5TFnfifre0QV1ksPz2bgF+DyCD69ozQiRdBBHDEwKe47ZbfQ==} + '@tiptap/extension-horizontal-rule@2.9.1': + resolution: {integrity: sha512-ydUhABeaBI1CoJp+/BBqPhXINfesp1qMNL/jiDcMsB66fsD4nOyphpAJT7FaRFZFtQVF06+nttBtFZVkITQVqg==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-image@2.8.0': - resolution: {integrity: sha512-5CReomgHGTUgxaX8P3i6qiC9VRWcWQgVoYtds4ZM52LVx/oGwMxQ4ECyzdVYKaRW+6PrNnAe6ew3Qpd5Wk0cIg==} + '@tiptap/extension-image@2.9.1': + resolution: {integrity: sha512-aGqJnsuS8oagIhsx7wetm8jw4NEDsOV0OSx4FQ4VPlUqWlnzK0N+erFKKJmXTdAxL8PGzoPSlITFH63MV3eV3Q==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-italic@2.8.0': - resolution: {integrity: sha512-PwwSE2LTYiHI47NJnsfhBmPiLE8IXZYqaSoNPU6flPrk1KxEzqvRI1joKZBmD9wuqzmHJ93VFIeZcC+kfwi8ZA==} + '@tiptap/extension-italic@2.9.1': + resolution: {integrity: sha512-VkNA6Vz96+/+7uBlsgM7bDXXx4b62T1fDam/3UKifA72aD/fZckeWrbT7KrtdUbzuIniJSbA0lpTs5FY29+86Q==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-link@2.8.0': - resolution: {integrity: sha512-p67hCG/pYCiOK/oCTPZnlkw9Ei7KJ7kCKFaluTcAmr5j8IBdYfDqSMDNCT4vGXBvKFh4X6xD7S7QvOqcH0Gn9A==} + '@tiptap/extension-link@2.9.1': + resolution: {integrity: sha512-yG+e3e8cCCN9dZjX4ttEe3e2xhh58ryi3REJV4MdiEkOT9QF75Bl5pUbMIS4tQ8HkOr04QBFMHKM12kbSxg1BA==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-list-item@2.8.0': - resolution: {integrity: sha512-o7OGymGxB0B9x3x2prp3KBDYFuBYGc5sW69O672jk8G52DqhzzndgPnkk0qUn8nXAUKuDGbJmpmHVA2kagqnRg==} + '@tiptap/extension-list-item@2.9.1': + resolution: {integrity: sha512-6O4NtYNR5N2Txi4AC0/4xMRJq9xd4+7ShxCZCDVL0WDVX37IhaqMO7LGQtA6MVlYyNaX4W1swfdJaqrJJ5HIUw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-ordered-list@2.8.0': - resolution: {integrity: sha512-sCvNbcTS1+5QTTXwUPFa10vf5I1pr8sGcOTIh0G+a5ZkS5+6FxT12k7VLzPt39QyNbOi+77U2o4Xr4XyaEkfSg==} + '@tiptap/extension-ordered-list@2.9.1': + resolution: {integrity: sha512-6J9jtv1XP8dW7/JNSH/K4yiOABc92tBJtgCsgP8Ep4+fjfjdj4HbjS1oSPWpgItucF2Fp/VF8qg55HXhjxHjTw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-list-item': ^2.7.0 - '@tiptap/extension-text-style': ^2.7.0 - '@tiptap/extension-paragraph@2.8.0': - resolution: {integrity: sha512-XgxxNNbuBF48rAGwv7/s6as92/xjm/lTZIGTq9aG13ClUKFtgdel7C33SpUCcxg3cO2WkEyllXVyKUiauFZw/A==} + '@tiptap/extension-paragraph@2.9.1': + resolution: {integrity: sha512-JOmT0xd4gd3lIhLwrsjw8lV+ZFROKZdIxLi0Ia05XSu4RLrrvWj0zdKMSB+V87xOWfSB3Epo95zAvnPox5Q16A==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-placeholder@2.8.0': - resolution: {integrity: sha512-BMqv/C9Tcjd7L1/OphUAJTZhWfpWs0rTQJ0bs3RRGsC8L+K20Fg+li45vw7M0teojpfrw57zwJogJd/m23Zr1Q==} + '@tiptap/extension-placeholder@2.9.1': + resolution: {integrity: sha512-Q/w3OOg/C6jGBf4QKEWKF9k+iaCQCgPoaIg2IDTPx8QmaxRfgoVE5Csd+oTOY/brdmSNXOxykZWEci6OJP+MbA==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-strike@2.8.0': - resolution: {integrity: sha512-ezkDiXxQ3ME/dDMMM7tAMkKRi6UWw7tIu+Mx7Os0z8HCGpVBk1gFhLlhEd8I5rJaPZr4tK1wtSehMA9bscFGQw==} + '@tiptap/extension-strike@2.9.1': + resolution: {integrity: sha512-V5aEXdML+YojlPhastcu7w4biDPwmzy/fWq0T2qjfu5Te/THcqDmGYVBKESBm5x6nBy5OLkanw2O+KHu2quDdg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-text-style@2.8.0': - resolution: {integrity: sha512-jJp0vcZ2Ty7RvIL0VU6dm1y+fTfXq1lN2GwtYzYM0ueFuESa+Qo8ticYOImyWZ3wGJGVrjn7OV9r0ReW0/NYkQ==} + '@tiptap/extension-text-style@2.9.1': + resolution: {integrity: sha512-LAxc0SeeiPiAVBwksczeA7BJSZb6WtVpYhy5Esvy9K0mK5kttB4KxtnXWeQzMIJZQbza65yftGKfQlexf/Y7yg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-text@2.8.0': - resolution: {integrity: sha512-EDAdFFzWOvQfVy7j3qkKhBpOeE5thkJaBemSWfXI93/gMVc0ZCdLi24mDvNNgUHlT+RjlIoQq908jZaaxLKN2A==} + '@tiptap/extension-text@2.9.1': + resolution: {integrity: sha512-3wo9uCrkLVLQFgbw2eFU37QAa1jq1/7oExa+FF/DVxdtHRS9E2rnUZ8s2hat/IWzvPUHXMwo3Zg2XfhoamQpCA==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/pm@2.8.0': - resolution: {integrity: sha512-eMGpRooUMvKz/vOpnKKppApMSoNM325HxTdAJvTlVAmuHp5bOY5kyY1kfUlePRiVx1t1UlFcXs3kecFwkkBD3Q==} + '@tiptap/pm@2.9.1': + resolution: {integrity: sha512-mvV86fr7kEuDYEApQ2uMPCKL2uagUE0BsXiyyz3KOkY1zifyVm1fzdkscb24Qy1GmLzWAIIihA+3UHNRgYdOlQ==} - '@tiptap/starter-kit@2.8.0': - resolution: {integrity: sha512-r7UwaTrECkQoheWVZKFDqtL5tBx07x7IFT+prfgnsVlYFutGWskVVqzCDvD3BDmrg5PzeCWYZrQGlPaLib7tjg==} + '@tiptap/starter-kit@2.9.1': + resolution: {integrity: sha512-nsw6UF/7wDpPfHRhtGOwkj1ipIEiWZS1VGw+c14K61vM1CNj0uQ4jogbHwHZqN1dlL5Hh+FCqUHDPxG6ECbijg==} '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} @@ -1772,6 +1768,7 @@ packages: eslint@8.57.1: resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true espree@9.6.1: @@ -2769,13 +2766,13 @@ packages: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} - playwright-core@1.48.0: - resolution: {integrity: sha512-RBvzjM9rdpP7UUFrQzRwR8L/xR4HyC1QXMzGYTbf1vjw25/ya9NRAVnXi/0fvFopjebvyPzsmoK58xxeEOaVvA==} + playwright-core@1.48.2: + resolution: {integrity: sha512-sjjw+qrLFlriJo64du+EK0kJgZzoQPsabGF4lBvsid+3CNIZIYLgnMj9V6JY5VhM2Peh20DJWIVpVljLLnlawA==} engines: {node: '>=18'} hasBin: true - playwright@1.48.0: - resolution: {integrity: sha512-qPqFaMEHuY/ug8o0uteYJSRfMGFikhUysk8ZvAtfKmUK3kc/6oNl/y3EczF8OFGYIi/Ex2HspMfzYArk6+XQSA==} + playwright@1.48.2: + resolution: {integrity: sha512-NjYvYgp4BPmiwfe31j4gHLa3J7bD2WiBz8Lk2RoSsmX38SVIARZ18VYjxLjAcDsAhA+F4iSEXTSGgjua0rrlgQ==} engines: {node: '>=18'} hasBin: true @@ -2807,11 +2804,19 @@ packages: prosemirror-changeset@2.2.1: resolution: {integrity: sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==} + prosemirror-codemark@0.4.2: + resolution: {integrity: sha512-4n+PnGQToa/vTjn0OiivUvE8/moLtguUAfry8UA4Q8p47MhqT2Qpf2zBLustX5Upi4mSp3z1ZYBqLLovZC6abA==} + peerDependencies: + prosemirror-inputrules: ^1.2.0 + prosemirror-model: ^1.18.1 + prosemirror-state: ^1.4.1 + prosemirror-view: ^1.26.2 + prosemirror-collab@1.3.1: resolution: {integrity: sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==} - prosemirror-commands@1.6.0: - resolution: {integrity: sha512-xn1U/g36OqXn2tn5nGmvnnimAj/g1pUx2ypJJIe8WkVX83WyJVC5LTARaxZa2AtQRwntu9Jc5zXs9gL9svp/mg==} + prosemirror-commands@1.6.2: + resolution: {integrity: sha512-0nDHH++qcf/BuPLYvmqZTUUsPJUCPBUXt0J1ErTcDIS369CTp773itzLGIgIXG4LJXOlwYCr44+Mh4ii6MP1QA==} prosemirror-dropcursor@1.8.1: resolution: {integrity: sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==} @@ -2834,8 +2839,8 @@ packages: prosemirror-menu@1.2.4: resolution: {integrity: sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==} - prosemirror-model@1.22.3: - resolution: {integrity: sha512-V4XCysitErI+i0rKFILGt/xClnFJaohe/wrrlT2NSZ+zk8ggQfDH4x2wNK7Gm0Hp4CIoWizvXFP7L9KMaCuI0Q==} + prosemirror-model@1.23.0: + resolution: {integrity: sha512-Q/fgsgl/dlOAW9ILu4OOhYWQbc7TQd4BwKH/RwmUjyVf8682Be4zj3rOYdLnYEcGzyg8LL9Q5IWYKD8tdToreQ==} prosemirror-schema-basic@1.2.3: resolution: {integrity: sha512-h+H0OQwZVqMon1PNn0AG9cTfx513zgIG2DY00eJ00Yvgb3UD+GQ/VlWW5rcaxacpCGT1Yx8nuhwXk4+QbXUfJA==} @@ -2846,18 +2851,18 @@ packages: prosemirror-state@1.4.3: resolution: {integrity: sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==} - prosemirror-tables@1.5.0: - resolution: {integrity: sha512-VMx4zlYWm7aBlZ5xtfJHpqa3Xgu3b7srV54fXYnXgsAcIGRqKSrhiK3f89omzzgaAgAtDOV4ImXnLKhVfheVNQ==} + prosemirror-tables@1.6.1: + resolution: {integrity: sha512-p8WRJNA96jaNQjhJolmbxTzd6M4huRE5xQ8OxjvMhQUP0Nzpo4zz6TztEiwk6aoqGBhz9lxRWR1yRZLlpQN98w==} prosemirror-trailing-node@3.0.0: resolution: {integrity: sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==} peerDependencies: prosemirror-model: ^1.22.1 prosemirror-state: ^1.4.2 - prosemirror-view: ~1.28.0 + prosemirror-view: ^1.33.8 - prosemirror-transform@1.10.0: - resolution: {integrity: sha512-9UOgFSgN6Gj2ekQH5CTDJ8Rp/fnKR2IkYfGdzzp5zQMFsS4zDllLVx/+jGcX86YlACpG7UR5fwAXiWzxqWtBTg==} + prosemirror-transform@1.10.2: + resolution: {integrity: sha512-2iUq0wv2iRoJO/zj5mv8uDUriOHWzXRnOTVgCzSXnktS/2iQRa3UUQwVlkBlYZFtygw6Nh1+X4mGqoYBINn5KQ==} prosemirror-utils@1.2.2: resolution: {integrity: sha512-7a2MPf99oCW8/587rQYI1/snX71Ban40+apr1hLkY8TmU9YXd7JeR6QsmktcTisJURO3WRjxIia4lTMsYgZVOw==} @@ -2865,8 +2870,8 @@ packages: prosemirror-model: ^1.19.2 prosemirror-state: ^1.4.3 - prosemirror-view@1.28.3: - resolution: {integrity: sha512-YnJxLRzIaCNEt3VKiy+PBxtpwsCbjrfiBKIgHJeqbKhdeP8bU2qL4ngdGmxp9K4+06cZG5bE9vipuhP+KUl+BQ==} + prosemirror-view@1.35.0: + resolution: {integrity: sha512-Umtbh22fmUlpZpRTiOVXA0PpdRZeYEeXQsLp51VfnMhjkJrqJ0n8APinIZrRAD5Jr3UxH8FnOaUqRylSuMsqHA==} proxy-agent@6.4.0: resolution: {integrity: sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==} @@ -2997,8 +3002,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - role-components@3.0.1: - resolution: {integrity: sha512-8I4g3EC858AWqlk1fKL95cAxMrW7+Q9brSO5O+GmT6Ek1qR71voKvgXAIkXOqLyY2KSqBikRSdf50cxY10rmmw==} + role-components@3.1.0: + resolution: {integrity: sha512-d0vq9H4Hqe24fGzd79s+e/X/GzNz+OI5dsThsn1cNaix+VKfr/I+UbkErZ8G8lWEqWe+ULOTa25/t5oRng2xkQ==} rollup@3.29.5: resolution: {integrity: sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==} @@ -3293,8 +3298,8 @@ packages: peerDependencies: typescript: '>=4.2.0' - tslib@2.7.0: - resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + tslib@2.8.0: + resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} tsscmp@1.0.6: resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} @@ -4030,9 +4035,9 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@playwright/test@1.48.0': + '@playwright/test@1.48.2': dependencies: - playwright: 1.48.0 + playwright: 1.48.2 '@puppeteer/browsers@2.4.0': dependencies: @@ -4047,7 +4052,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@rails/activestorage@7.2.100': + '@rails/activestorage@7.2.102': dependencies: spark-md5: 3.0.2 @@ -4157,120 +4162,116 @@ snapshots: '@sinonjs/text-encoding@0.7.3': {} - '@tiptap/core@2.8.0(@tiptap/pm@2.8.0)': + '@tiptap/core@2.9.1(@tiptap/pm@2.9.1)': dependencies: - '@tiptap/pm': 2.8.0 + '@tiptap/pm': 2.9.1 - '@tiptap/extension-blockquote@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))': + '@tiptap/extension-blockquote@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.8.0) + '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) - '@tiptap/extension-bold@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))': + '@tiptap/extension-bold@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.8.0) + '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) - '@tiptap/extension-bullet-list@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))(@tiptap/extension-list-item@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0)))(@tiptap/extension-text-style@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0)))': + '@tiptap/extension-bullet-list@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.8.0) - '@tiptap/extension-list-item': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0)) - '@tiptap/extension-text-style': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0)) + '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) - '@tiptap/extension-code-block@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))(@tiptap/pm@2.8.0)': + '@tiptap/extension-code-block@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))(@tiptap/pm@2.9.1)': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.8.0) - '@tiptap/pm': 2.8.0 + '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) + '@tiptap/pm': 2.9.1 - '@tiptap/extension-code@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))': + '@tiptap/extension-code@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.8.0) + '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) - '@tiptap/extension-document@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))': + '@tiptap/extension-document@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.8.0) + '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) - '@tiptap/extension-dropcursor@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))(@tiptap/pm@2.8.0)': + '@tiptap/extension-dropcursor@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))(@tiptap/pm@2.9.1)': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.8.0) - '@tiptap/pm': 2.8.0 + '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) + '@tiptap/pm': 2.9.1 - '@tiptap/extension-focus@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))(@tiptap/pm@2.8.0)': + '@tiptap/extension-focus@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))(@tiptap/pm@2.9.1)': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.8.0) - '@tiptap/pm': 2.8.0 + '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) + '@tiptap/pm': 2.9.1 - '@tiptap/extension-gapcursor@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))(@tiptap/pm@2.8.0)': + '@tiptap/extension-gapcursor@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))(@tiptap/pm@2.9.1)': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.8.0) - '@tiptap/pm': 2.8.0 + '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) + '@tiptap/pm': 2.9.1 - '@tiptap/extension-hard-break@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))': + '@tiptap/extension-hard-break@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.8.0) + '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) - '@tiptap/extension-heading@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))': + '@tiptap/extension-heading@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.8.0) + '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) - '@tiptap/extension-history@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))(@tiptap/pm@2.8.0)': + '@tiptap/extension-history@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))(@tiptap/pm@2.9.1)': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.8.0) - '@tiptap/pm': 2.8.0 + '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) + '@tiptap/pm': 2.9.1 - '@tiptap/extension-horizontal-rule@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))(@tiptap/pm@2.8.0)': + '@tiptap/extension-horizontal-rule@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))(@tiptap/pm@2.9.1)': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.8.0) - '@tiptap/pm': 2.8.0 + '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) + '@tiptap/pm': 2.9.1 - '@tiptap/extension-image@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))': + '@tiptap/extension-image@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.8.0) + '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) - '@tiptap/extension-italic@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))': + '@tiptap/extension-italic@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.8.0) + '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) - '@tiptap/extension-link@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))(@tiptap/pm@2.8.0)': + '@tiptap/extension-link@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))(@tiptap/pm@2.9.1)': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.8.0) - '@tiptap/pm': 2.8.0 + '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) + '@tiptap/pm': 2.9.1 linkifyjs: 4.1.3 - '@tiptap/extension-list-item@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))': + '@tiptap/extension-list-item@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.8.0) + '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) - '@tiptap/extension-ordered-list@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))(@tiptap/extension-list-item@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0)))(@tiptap/extension-text-style@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0)))': + '@tiptap/extension-ordered-list@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.8.0) - '@tiptap/extension-list-item': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0)) - '@tiptap/extension-text-style': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0)) + '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) - '@tiptap/extension-paragraph@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))': + '@tiptap/extension-paragraph@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.8.0) + '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) - '@tiptap/extension-placeholder@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))(@tiptap/pm@2.8.0)': + '@tiptap/extension-placeholder@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))(@tiptap/pm@2.9.1)': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.8.0) - '@tiptap/pm': 2.8.0 + '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) + '@tiptap/pm': 2.9.1 - '@tiptap/extension-strike@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))': + '@tiptap/extension-strike@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.8.0) + '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) - '@tiptap/extension-text-style@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))': + '@tiptap/extension-text-style@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.8.0) + '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) - '@tiptap/extension-text@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))': + '@tiptap/extension-text@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))': dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.8.0) + '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) - '@tiptap/pm@2.8.0': + '@tiptap/pm@2.9.1': dependencies: prosemirror-changeset: 2.2.1 prosemirror-collab: 1.3.1 - prosemirror-commands: 1.6.0 + prosemirror-commands: 1.6.2 prosemirror-dropcursor: 1.8.1 prosemirror-gapcursor: 1.3.2 prosemirror-history: 1.4.1 @@ -4278,39 +4279,38 @@ snapshots: prosemirror-keymap: 1.2.2 prosemirror-markdown: 1.13.1 prosemirror-menu: 1.2.4 - prosemirror-model: 1.22.3 + prosemirror-model: 1.23.0 prosemirror-schema-basic: 1.2.3 prosemirror-schema-list: 1.4.1 prosemirror-state: 1.4.3 - prosemirror-tables: 1.5.0 - prosemirror-trailing-node: 3.0.0(prosemirror-model@1.22.3)(prosemirror-state@1.4.3)(prosemirror-view@1.28.3) - prosemirror-transform: 1.10.0 - prosemirror-view: 1.28.3 - - '@tiptap/starter-kit@2.8.0(@tiptap/extension-text-style@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0)))': - dependencies: - '@tiptap/core': 2.8.0(@tiptap/pm@2.8.0) - '@tiptap/extension-blockquote': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0)) - '@tiptap/extension-bold': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0)) - '@tiptap/extension-bullet-list': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))(@tiptap/extension-list-item@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0)))(@tiptap/extension-text-style@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))) - '@tiptap/extension-code': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0)) - '@tiptap/extension-code-block': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))(@tiptap/pm@2.8.0) - '@tiptap/extension-document': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0)) - '@tiptap/extension-dropcursor': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))(@tiptap/pm@2.8.0) - '@tiptap/extension-gapcursor': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))(@tiptap/pm@2.8.0) - '@tiptap/extension-hard-break': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0)) - '@tiptap/extension-heading': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0)) - '@tiptap/extension-history': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))(@tiptap/pm@2.8.0) - '@tiptap/extension-horizontal-rule': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))(@tiptap/pm@2.8.0) - '@tiptap/extension-italic': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0)) - '@tiptap/extension-list-item': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0)) - '@tiptap/extension-ordered-list': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))(@tiptap/extension-list-item@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0)))(@tiptap/extension-text-style@2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0))) - '@tiptap/extension-paragraph': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0)) - '@tiptap/extension-strike': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0)) - '@tiptap/extension-text': 2.8.0(@tiptap/core@2.8.0(@tiptap/pm@2.8.0)) - '@tiptap/pm': 2.8.0 - transitivePeerDependencies: - - '@tiptap/extension-text-style' + prosemirror-tables: 1.6.1 + prosemirror-trailing-node: 3.0.0(prosemirror-model@1.23.0)(prosemirror-state@1.4.3)(prosemirror-view@1.35.0) + prosemirror-transform: 1.10.2 + prosemirror-view: 1.35.0 + + '@tiptap/starter-kit@2.9.1': + dependencies: + '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) + '@tiptap/extension-blockquote': 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1)) + '@tiptap/extension-bold': 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1)) + '@tiptap/extension-bullet-list': 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1)) + '@tiptap/extension-code': 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1)) + '@tiptap/extension-code-block': 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))(@tiptap/pm@2.9.1) + '@tiptap/extension-document': 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1)) + '@tiptap/extension-dropcursor': 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))(@tiptap/pm@2.9.1) + '@tiptap/extension-gapcursor': 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))(@tiptap/pm@2.9.1) + '@tiptap/extension-hard-break': 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1)) + '@tiptap/extension-heading': 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1)) + '@tiptap/extension-history': 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))(@tiptap/pm@2.9.1) + '@tiptap/extension-horizontal-rule': 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))(@tiptap/pm@2.9.1) + '@tiptap/extension-italic': 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1)) + '@tiptap/extension-list-item': 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1)) + '@tiptap/extension-ordered-list': 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1)) + '@tiptap/extension-paragraph': 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1)) + '@tiptap/extension-strike': 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1)) + '@tiptap/extension-text': 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1)) + '@tiptap/extension-text-style': 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1)) + '@tiptap/pm': 2.9.1 '@tootallnate/quickjs-emscripten@0.23.0': {} @@ -4741,7 +4741,7 @@ snapshots: dependencies: '@web/test-runner-core': 0.13.4 '@web/test-runner-coverage-v8': 0.8.0 - playwright: 1.48.0 + playwright: 1.48.2 transitivePeerDependencies: - bufferutil - supports-color @@ -4844,13 +4844,13 @@ snapshots: ast-types@0.13.4: dependencies: - tslib: 2.7.0 + tslib: 2.8.0 astral-regex@2.0.0: {} async-mutex@0.4.0: dependencies: - tslib: 2.7.0 + tslib: 2.8.0 async@2.6.4: dependencies: @@ -6526,11 +6526,11 @@ snapshots: pify@4.0.1: {} - playwright-core@1.48.0: {} + playwright-core@1.48.2: {} - playwright@1.48.0: + playwright@1.48.2: dependencies: - playwright-core: 1.48.0 + playwright-core: 1.48.2 optionalDependencies: fsevents: 2.3.2 @@ -6554,42 +6554,49 @@ snapshots: prosemirror-changeset@2.2.1: dependencies: - prosemirror-transform: 1.10.0 + prosemirror-transform: 1.10.2 + + prosemirror-codemark@0.4.2(prosemirror-inputrules@1.4.0)(prosemirror-model@1.23.0)(prosemirror-state@1.4.3)(prosemirror-view@1.35.0): + dependencies: + prosemirror-inputrules: 1.4.0 + prosemirror-model: 1.23.0 + prosemirror-state: 1.4.3 + prosemirror-view: 1.35.0 prosemirror-collab@1.3.1: dependencies: prosemirror-state: 1.4.3 - prosemirror-commands@1.6.0: + prosemirror-commands@1.6.2: dependencies: - prosemirror-model: 1.22.3 + prosemirror-model: 1.23.0 prosemirror-state: 1.4.3 - prosemirror-transform: 1.10.0 + prosemirror-transform: 1.10.2 prosemirror-dropcursor@1.8.1: dependencies: prosemirror-state: 1.4.3 - prosemirror-transform: 1.10.0 - prosemirror-view: 1.28.3 + prosemirror-transform: 1.10.2 + prosemirror-view: 1.35.0 prosemirror-gapcursor@1.3.2: dependencies: prosemirror-keymap: 1.2.2 - prosemirror-model: 1.22.3 + prosemirror-model: 1.23.0 prosemirror-state: 1.4.3 - prosemirror-view: 1.28.3 + prosemirror-view: 1.35.0 prosemirror-history@1.4.1: dependencies: prosemirror-state: 1.4.3 - prosemirror-transform: 1.10.0 - prosemirror-view: 1.28.3 + prosemirror-transform: 1.10.2 + prosemirror-view: 1.35.0 rope-sequence: 1.3.4 prosemirror-inputrules@1.4.0: dependencies: prosemirror-state: 1.4.3 - prosemirror-transform: 1.10.0 + prosemirror-transform: 1.10.2 prosemirror-keymap@1.2.2: dependencies: @@ -6600,65 +6607,65 @@ snapshots: dependencies: '@types/markdown-it': 14.1.2 markdown-it: 14.1.0 - prosemirror-model: 1.22.3 + prosemirror-model: 1.23.0 prosemirror-menu@1.2.4: dependencies: crelt: 1.0.6 - prosemirror-commands: 1.6.0 + prosemirror-commands: 1.6.2 prosemirror-history: 1.4.1 prosemirror-state: 1.4.3 - prosemirror-model@1.22.3: + prosemirror-model@1.23.0: dependencies: orderedmap: 2.1.1 prosemirror-schema-basic@1.2.3: dependencies: - prosemirror-model: 1.22.3 + prosemirror-model: 1.23.0 prosemirror-schema-list@1.4.1: dependencies: - prosemirror-model: 1.22.3 + prosemirror-model: 1.23.0 prosemirror-state: 1.4.3 - prosemirror-transform: 1.10.0 + prosemirror-transform: 1.10.2 prosemirror-state@1.4.3: dependencies: - prosemirror-model: 1.22.3 - prosemirror-transform: 1.10.0 - prosemirror-view: 1.28.3 + prosemirror-model: 1.23.0 + prosemirror-transform: 1.10.2 + prosemirror-view: 1.35.0 - prosemirror-tables@1.5.0: + prosemirror-tables@1.6.1: dependencies: prosemirror-keymap: 1.2.2 - prosemirror-model: 1.22.3 + prosemirror-model: 1.23.0 prosemirror-state: 1.4.3 - prosemirror-transform: 1.10.0 - prosemirror-view: 1.28.3 + prosemirror-transform: 1.10.2 + prosemirror-view: 1.35.0 - prosemirror-trailing-node@3.0.0(prosemirror-model@1.22.3)(prosemirror-state@1.4.3)(prosemirror-view@1.28.3): + prosemirror-trailing-node@3.0.0(prosemirror-model@1.23.0)(prosemirror-state@1.4.3)(prosemirror-view@1.35.0): dependencies: '@remirror/core-constants': 3.0.0 escape-string-regexp: 4.0.0 - prosemirror-model: 1.22.3 + prosemirror-model: 1.23.0 prosemirror-state: 1.4.3 - prosemirror-view: 1.28.3 + prosemirror-view: 1.35.0 - prosemirror-transform@1.10.0: + prosemirror-transform@1.10.2: dependencies: - prosemirror-model: 1.22.3 + prosemirror-model: 1.23.0 - prosemirror-utils@1.2.2(prosemirror-model@1.22.3)(prosemirror-state@1.4.3): + prosemirror-utils@1.2.2(prosemirror-model@1.23.0)(prosemirror-state@1.4.3): dependencies: - prosemirror-model: 1.22.3 + prosemirror-model: 1.23.0 prosemirror-state: 1.4.3 - prosemirror-view@1.28.3: + prosemirror-view@1.35.0: dependencies: - prosemirror-model: 1.22.3 + prosemirror-model: 1.23.0 prosemirror-state: 1.4.3 - prosemirror-transform: 1.10.0 + prosemirror-transform: 1.10.2 proxy-agent@6.4.0: dependencies: @@ -6810,7 +6817,7 @@ snapshots: dependencies: glob: 7.2.3 - role-components@3.0.1: + role-components@3.1.0: dependencies: '@floating-ui/dom': 1.6.11 form-associated-helpers: 0.0.10 @@ -6851,7 +6858,7 @@ snapshots: rxjs@7.8.1: dependencies: - tslib: 2.7.0 + tslib: 2.8.0 safe-buffer@5.1.2: {} @@ -7129,7 +7136,7 @@ snapshots: dependencies: typescript: 5.6.2 - tslib@2.7.0: {} + tslib@2.8.0: {} tsscmp@1.0.6: {} diff --git a/src/exports/elements/tip-tap-editor-base.ts b/src/exports/elements/tip-tap-editor-base.ts index 87c4c26f..9dc3f784 100644 --- a/src/exports/elements/tip-tap-editor-base.ts +++ b/src/exports/elements/tip-tap-editor-base.ts @@ -175,7 +175,9 @@ export class TipTapEditorBase extends BaseElement { this.__getInitialAttributes(); // Make sure we dont render the editor more than once. - if (this.editor) this.editor.destroy(); + if (this.editor) { + this.editor.destroy(); + } editors.forEach((el) => { // @ts-expect-error @@ -478,16 +480,23 @@ export class TipTapEditorBase extends BaseElement { | EditorOptions["extensions"] | Array ) { - const ary: EditorOptions["extensions"] = []; + let ary: EditorOptions["extensions"] = []; extensions.forEach((ext) => { if (Array.isArray(ext)) { - ary.push(ext.flat(1) as unknown as AnyExtension); + ary = ary.concat(ext.flat(1) as unknown as AnyExtension); return; } ary.push(ext); }); + const existingExtensions = this.extensions.map((ext) => ext.name); + + // Make sure we're not pushing duplicate extensions. + ary = ary.filter((ext) => { + return !existingExtensions.includes(ext.name); + }); + this.extensions = this.extensions.concat(ary); } @@ -691,7 +700,9 @@ export class TipTapEditorBase extends BaseElement { return html``; } - renderDialog() {} + renderDialog() { + return html``; + } render(): TemplateResult { return html` @@ -708,10 +719,10 @@ export class TipTapEditorBase extends BaseElement { } allOptions(element: Element) { - return Object.assign( - this.__defaultOptions(element), - this.editorOptions(element), - ); + return { + ...this.__defaultOptions(element), + ...this.editorOptions(element), + }; } /** @@ -792,9 +803,11 @@ export class TipTapEditorBase extends BaseElement { } catch (e) {} } + const extensions = this.__starterKitExtensions__.concat(this.extensions); + return { injectCSS: false, - extensions: this.__starterKitExtensions__.concat(this.extensions), + extensions, autofocus: false, element, content, diff --git a/src/exports/elements/tip-tap-editor.ts b/src/exports/elements/tip-tap-editor.ts index 32a7e65a..19433fd8 100644 --- a/src/exports/elements/tip-tap-editor.ts +++ b/src/exports/elements/tip-tap-editor.ts @@ -1,7 +1,7 @@ import { ref, createRef, Ref } from "lit/directives/ref.js"; import { toolbarButtonStyles } from "../styles/editor.js"; import { TipTapEditorBase } from "./tip-tap-editor-base.js"; -import { PropertyDeclarations, PropertyValues, TemplateResult } from "lit"; +import { PropertyDeclarations, PropertyValues } from "lit"; /** Imports and */ import RoleToolbar from "role-components/exports/components/toolbar/toolbar.js"; @@ -16,6 +16,8 @@ import { html } from "lit/html.js"; import { stringMap } from "../../internal/string-map.js"; import { isExactNodeActive } from "../../internal/is-exact-node-active.js"; import RoleAnchoredRegion from "role-components/exports/components/anchored-region/anchored-region.js"; +import { findNodeViewAnchor } from "../extensions/bubble-menu.js"; +import { isNodeSelection, posToDOMRect } from "@tiptap/core"; /** * This is the meat and potatoes. This is the element you'll @@ -105,7 +107,11 @@ export class TipTapEditor extends TipTapEditorBase { static get properties(): PropertyDeclarations { return Object.assign(TipTapEditorBase.properties, { - linkDialogExpanded: { type: Boolean }, + linkDialogExpanded: { + type: Boolean, + reflect: true, + attribute: "link-dialog-expanded", + }, linkInputRef: { state: true }, translations: { state: true }, __invalidLink__: { state: true, type: Boolean }, @@ -244,24 +250,23 @@ export class TipTapEditor extends TipTapEditorBase { } closeLinkDialog(): void { - if (this.linkDialog == null) return; - this.linkDialogExpanded = false; } showLinkDialog(): void { - if (this.linkDialog == null) return; - const inputElement = this.linkInputRef.value; if (inputElement != null) { - inputElement.value = ""; + inputElement.value = this.editor?.getAttributes("link").href || ""; + inputElement.setSelectionRange(0, inputElement.value.length); } this.__invalidLink__ = false; this.linkDialogExpanded = true; setTimeout(() => { - if (inputElement != null) inputElement.focus(); + if (inputElement != null) { + inputElement.focus(); + } }); } @@ -512,7 +517,9 @@ export class TipTapEditor extends TipTapEditorBase { if (!linkEnabled) return html``; - const isActive = Boolean(this.linkDialogExpanded); + const isActive = Boolean( + this.editor?.isActive("link") || this.linkDialogExpanded, + ); const isDisabled = this.editor == null || !this.editor.can().setLink({ href: "" }); @@ -683,6 +690,63 @@ export class TipTapEditor extends TipTapEditorBase { `; } + renderCodeButton(prefix = "") { + const codeEnabled = + this.starterKitOptions.code !== false || + Boolean(this.editor?.commands.toggleCode); + + if (!codeEnabled) return html``; + + const isActive = Boolean(this.editor?.isActive("code")); + const isDisabled = this.editor == null || !this.editor.can().toggleCode(); + + let tooltip_slot_name = "code-tooltip"; + let tooltip_id = "code"; + let tooltip_parts = "toolbar__tooltip toolbar__tooltip--code"; + let icon_slot_name = "code-icon"; + + if (prefix) { + icon_slot_name = prefix + "__" + icon_slot_name; + tooltip_slot_name = prefix + "__" + tooltip_slot_name; + tooltip_id = prefix + "__" + tooltip_id; + } + + return html` + + + ${this.translations.code} + + + + `; + } + renderCodeBlockButton(prefix = "") { const codeBlockEnabled = this.starterKitOptions.codeBlock !== false || @@ -1193,6 +1257,11 @@ export class TipTapEditor extends TipTapEditorBase { ${this.renderStrikeButton()} + + + ${this.renderCodeButton()} + + ${this.renderLinkButton()} @@ -1261,7 +1330,7 @@ export class TipTapEditor extends TipTapEditorBase { - ${this.renderBubbleMenuToolbar()} + ${this.renderBubbleMenuToolbar()} ${this.renderLinkDialogAnchoredRegion()} `; } @@ -1297,17 +1366,95 @@ export class TipTapEditor extends TipTapEditorBase { this.linkDialogExpanded = false; }; + renderLinkDialogAnchoredRegion() { + const findClientRect = () => { + const editor = this.editor; + if (!editor) { + return null; + } + + const state = editor.state; + const { selection } = state; + const view = editor.view; + + if (view.composing) { + return null; + } + + // support for CellSelections + const { ranges } = selection; + const from = Math.min(...ranges.map((range) => range.$from.pos)); + const to = Math.max(...ranges.map((range) => range.$to.pos)); + + let clientRect: null | (() => DOMRect) = null; + + if (isNodeSelection(state.selection)) { + const node = + findNodeViewAnchor({ + view, + from, + editor, + }) || (view.nodeDOM(from) as HTMLElement); + + if (node) { + const domRect = node.getBoundingClientRect(); + clientRect = () => + Object.assign(domRect, { + // Center it. + x: domRect.x - domRect.width / 2, + }); + } + } else { + const domRect = posToDOMRect(view, from, to); + clientRect = () => + Object.assign(domRect, { + // Center it. + x: domRect.x - domRect.width / 2, + }); + } + + return clientRect; + }; + const clientRect = this.linkDialogExpanded ? findClientRect() : null; + + return html` + + ${this.renderLinkDialog()} + + `; + } + /** @TODO: Lets think of a more friendly way to render dialogs for users to extend. */ - renderDialog(): TemplateResult { + renderLinkDialog() { if (this.readonly) { return html``; } return html`