diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index ff7436d5..0793b969 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -22,7 +22,7 @@ jobs: strategy: matrix: - ruby: ['3.2', '3.1'] + ruby: ['3.3', '3.2'] node-version: [20.x] services: diff --git a/CHANGELOG.md b/CHANGELOG.md index c5818951..d8ea9ee9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## 0.13.2 + +### Patch Changes + +- [#220](https://github.com/KonnorRogers/rhino-editor/pull/220) [`5fcb5ac`](https://github.com/KonnorRogers/rhino-editor/commit/5fcb5aca2f8e6b99eb419badfd5bfabe017a8bab) Thanks [@KonnorRogers](https://github.com/KonnorRogers)! - Fixed a CSS bug with inline code + +- [#220](https://github.com/KonnorRogers/rhino-editor/pull/220) [`5fcb5ac`](https://github.com/KonnorRogers/rhino-editor/commit/5fcb5aca2f8e6b99eb419badfd5bfabe017a8bab) Thanks [@KonnorRogers](https://github.com/KonnorRogers)! - Fixed link dialogs not showing when the selection is not in view + +## 0.13.1 + +### Patch Changes + +- [`61241c0`](https://github.com/KonnorRogers/rhino-editor/commit/61241c0d9706b1ccfe6857853730876e047f08b0) Thanks [@KonnorRogers](https://github.com/KonnorRogers)! - Fix some bugs around prosemirror-view versioning + ## 0.13.0 ### Minor Changes diff --git a/docs/src/rhino-editor/exports/styles/trix.css b/docs/src/rhino-editor/exports/styles/trix.css index 7a441e16..2f71a277 100644 --- a/docs/src/rhino-editor/exports/styles/trix.css +++ b/docs/src/rhino-editor/exports/styles/trix.css @@ -10,13 +10,13 @@ border-color: Canvas; } } -.no-cursor { +.rhino-editor .no-cursor { caret-color: transparent; } -.fake-cursor { +.rhino-editor .fake-cursor { margin: 0; padding: 0; - margin-left: -1px; + margin-right: -1px; border-left-width: 1px; border-left-style: solid; animation: blink 1s; @@ -151,13 +151,13 @@ .trix-content li { margin-inline-start: 1em; } -.trix-content :where(:not(pre code)) code { +.trix-content :not(pre) code { background-color: #eee; border-radius: 2px; padding: 2px; margin: 0 1px; border: 1px solid rgba(192, 192, 192, 0.5); - display: inline-block; + display: inline; } .trix-content code, .trix-content pre { diff --git a/package.json b/package.json index aa743fb6..54e58719 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rhino-editor", - "version": "0.13.0", + "version": "0.13.2", "description": "A custom element wrapped rich text editor", "type": "module", "main": "exports/index.js", @@ -82,6 +82,7 @@ "prosemirror-codemark": "^0.4.2", "prosemirror-utils": "^1.2.2", "role-components": "^3.1.0", + "prosemirror-view": "^1.0.0", "tslib": "^2.8.0" }, "repository": "git@github.com:KonnorRogers/rhino-editor.git", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6b6ea84f..fc890982 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -53,6 +53,9 @@ importers: prosemirror-utils: specifier: ^1.2.2 version: 1.2.2(prosemirror-model@1.23.0)(prosemirror-state@1.4.3) + prosemirror-view: + specifier: ^1.0.0 + version: 1.35.0 role-components: specifier: ^3.1.0 version: 3.1.0 diff --git a/src/exports/elements/tip-tap-editor.ts b/src/exports/elements/tip-tap-editor.ts index 19433fd8..5adfd576 100644 --- a/src/exports/elements/tip-tap-editor.ts +++ b/src/exports/elements/tip-tap-editor.ts @@ -17,7 +17,59 @@ 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"; +import { Editor, isNodeSelection, posToDOMRect } from "@tiptap/core"; + +function findElement(editor: 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?.({ + editor, + view, + from, + }) || (view.nodeDOM(from) as HTMLElement); + + if (node) { + node.scrollIntoView({ block: "nearest" }); + clientRect = () => { + const rect = node.getBoundingClientRect(); + return rect; + }; + } + } else { + const toNode = view.domAtPos(to).node; + if (toNode instanceof HTMLElement) { + // Scroll it into view so we can see the bubble menu + toNode.scrollIntoView({ block: "nearest" }); + } + + clientRect = () => { + const rect = posToDOMRect(view, from, to); + rect.x = rect.x - rect.width / 2; + return rect; + }; + } + + return clientRect; +} /** * This is the meat and potatoes. This is the element you'll @@ -264,9 +316,11 @@ export class TipTapEditor extends TipTapEditorBase { this.__invalidLink__ = false; this.linkDialogExpanded = true; setTimeout(() => { - if (inputElement != null) { - inputElement.focus(); - } + requestAnimationFrame(() => { + if (inputElement != null) { + inputElement.focus(); + } + }); }); } @@ -1367,55 +1421,9 @@ export class TipTapEditor extends TipTapEditorBase { }; 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; + const clientRect = this.linkDialogExpanded + ? findElement(this.editor as Editor) + : null; return html` { if (e.defaultPrevented) { return; } - const self = e.currentTarget as RoleAnchoredRegion; - self.anchor = null; - self.active = false; + const anchoredRegion = e.currentTarget as RoleAnchoredRegion; + anchoredRegion.anchor = null; + anchoredRegion.active = false; }} anchored-popover-type="manual" distance="4" diff --git a/src/exports/extensions/attachment.ts b/src/exports/extensions/attachment.ts index 4926c001..cd6a059a 100644 --- a/src/exports/extensions/attachment.ts +++ b/src/exports/extensions/attachment.ts @@ -683,7 +683,7 @@ export const Attachment = Node.create({ } let mouseIsDown = false; - let mouseTimeout: number | null = null; + let mouseTimeout: ReturnType | null = null; // This is a very simple drag handler. This allows us to drag non-previewable nodes. // https://discuss.prosemirror.net/t/dragndrop-a-drag-handle-element/4563 diff --git a/src/exports/extensions/bubble-menu.ts b/src/exports/extensions/bubble-menu.ts index c38ef018..7f5a14e2 100644 --- a/src/exports/extensions/bubble-menu.ts +++ b/src/exports/extensions/bubble-menu.ts @@ -294,7 +294,6 @@ export class BubbleMenuView { if (node) { clientRect = () => { const rect = node.getBoundingClientRect(); - rect.x = rect.x - rect.width / 2; return rect; }; } diff --git a/src/exports/styles/trix-core.css b/src/exports/styles/trix-core.css index 7690e908..281c1282 100644 --- a/src/exports/styles/trix-core.css +++ b/src/exports/styles/trix-core.css @@ -203,7 +203,7 @@ } /** This is for `` inline code code elements. */ -.trix-content :where(:not(pre code)) code { +.trix-content :not(pre) code { background-color: #eee; border-radius: 2px; padding: 2px; diff --git a/src/exports/styles/trix.css b/src/exports/styles/trix.css index c82c7745..cdf27f76 100644 --- a/src/exports/styles/trix.css +++ b/src/exports/styles/trix.css @@ -204,7 +204,7 @@ } /** This is for `` inline code code elements. */ -.trix-content :where(:not(pre code)) code { +.trix-content :not(pre) code { background-color: #eee; border-radius: 2px; padding: 2px; diff --git a/tests/rails/app/controllers/posts_controller.rb b/tests/rails/app/controllers/posts_controller.rb index d6f79e70..ec73874e 100644 --- a/tests/rails/app/controllers/posts_controller.rb +++ b/tests/rails/app/controllers/posts_controller.rb @@ -25,7 +25,7 @@ def create respond_to do |format| if @post.save - format.html { redirect_to post_url(@post) + "#my-post", notice: "Post was successfully created." } + format.html { redirect_to post_url(@post), notice: "Post was successfully created." } format.json { render :show, status: :created, location: @post } else format.html { render :new, status: :unprocessable_entity } diff --git a/tests/rails/app/frontend/controllers/embed_controller.js b/tests/rails/app/frontend/controllers/embed_controller.js index db793f97..b67330dd 100644 --- a/tests/rails/app/frontend/controllers/embed_controller.js +++ b/tests/rails/app/frontend/controllers/embed_controller.js @@ -33,15 +33,21 @@ export default class EmbedController extends Controller { } async embed() { - const attrs = await this.fetch() - console.log(attrs) - let trixAttachment = new Trix.Attachment({ ...attrs }) - const trix = document.querySelector("trix-editor") - trix.editor.insertAttachment(trixAttachment) - trix.focus() - - let attachment = new AttachmentManager({...attrs}) - const tiptap = document.querySelector("rhino-editor") - tiptap.editor.chain().focus().setAttachment(attachment).run(); - } + const isRhino = this.element.closest("rhino-editor") + const isTrix = this.element.parentElement.querySelector("trix-editor") + const attrs = await this.fetch() + + if (isTrix) { + let trixAttachment = new Trix.Attachment({ ...attrs }) + const trix = document.querySelector("trix-editor") + trix.editor.insertAttachment(trixAttachment) + trix.focus() + } + + if (isRhino) { + let attachment = new AttachmentManager({...attrs}) + const tiptap = document.querySelector("rhino-editor") + tiptap.editor.chain().focus().setAttachment(attachment).run(); + } + } } diff --git a/tests/rails/app/frontend/controllers/tip_tap_mirror_controller.js b/tests/rails/app/frontend/controllers/tip_tap_mirror_controller.js index 2684010e..970f556a 100644 --- a/tests/rails/app/frontend/controllers/tip_tap_mirror_controller.js +++ b/tests/rails/app/frontend/controllers/tip_tap_mirror_controller.js @@ -1,28 +1,25 @@ import { Controller } from "@hotwired/stimulus" export default class TipTapMirrorController extends Controller { - get trixInput () { - return document.querySelector(`#${document.querySelector("trix-editor").getAttribute("input")}`) - } - connect () { - const editor = this.element - setTimeout(() => { - replaceWithWrapper(this.trixInput, "value", (_obj, _property, value) => { - editor.editor.commands.setContent(value) - }) - }, 30) - } -} + get trixInput () { + return document.querySelector("trix-editor") + } + connect () { + this.trixInput.addEventListener("trix-change", this.handleChange) + + } + + disconnect () { + this.trixInput.removeEventListener("trix-change", this.handleChange) + } -function replaceWithWrapper(obj, property, callback) { - Object.defineProperty(obj, property, { - set (value) { - obj.setAttribute(property, value) - callback(obj, property, value) - }, - get: function() { - return _value; - } - }); + + handleChange = () => { + const editor = this.element + const value = this.trixInput.value + editor.editor.commands.setContent(value) + } } + + diff --git a/tests/rails/app/frontend/entrypoints/application.js b/tests/rails/app/frontend/entrypoints/application.js index cc06db27..3d1dd230 100644 --- a/tests/rails/app/frontend/entrypoints/application.js +++ b/tests/rails/app/frontend/entrypoints/application.js @@ -74,12 +74,3 @@ ActiveStorage.start() } })() -document.addEventListener("turbo:before-fetch-response", (e) => { - const response = e.detail.fetchResponse.response - const url = response.url - const hash = response.headers - - if (hash) { - console.log(hash) - } -}) diff --git a/tests/rails/app/views/home/index.html.erb b/tests/rails/app/views/home/index.html.erb index fcf655fc..bd722f69 100644 --- a/tests/rails/app/views/home/index.html.erb +++ b/tests/rails/app/views/home/index.html.erb @@ -2,6 +2,13 @@ <%= link_to "Posts", posts_path %> + +

TipTap Editor

diff --git a/tests/rails/package.json b/tests/rails/package.json index bcc98c42..079b922d 100644 --- a/tests/rails/package.json +++ b/tests/rails/package.json @@ -1,8 +1,8 @@ { "type": "module", "devDependencies": { - "@playwright/test": "^1.48.2", - "playwright": "^1.48.2", + "@playwright/test": "1.48.0", + "playwright": "1.48.2", "vite": "^5.4.10", "vite-plugin-ruby": "^5.1.0" }, @@ -15,9 +15,9 @@ "@tiptap/extension-collaboration": "^2.9.1", "@tiptap/extension-collaboration-cursor": "^2.9.1", "@y-rb/actioncable": "^0.2.1", - "prosemirror-view": "~1.28.0", + "prosemirror-view": "^1.0.0", "rhino-editor": "link:../..", - "trix": "^2.1.8", + "trix": "2.1.7", "y-prosemirror": "^1.2.12", "y-protocols": "^1.0.6", "y-websocket": "^2.0.4", diff --git a/tests/rails/pnpm-lock.yaml b/tests/rails/pnpm-lock.yaml index 6e26abfa..85cf08ab 100644 --- a/tests/rails/pnpm-lock.yaml +++ b/tests/rails/pnpm-lock.yaml @@ -4,9 +4,6 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false -overrides: - prosemirror-view: ~1.28.0 - importers: .: @@ -22,31 +19,31 @@ importers: version: 7.2.200 '@rails/actiontext': specifier: ^7.2.200 - version: 7.2.200(trix@2.1.8) + version: 7.2.200(trix@2.1.7) '@rails/activestorage': specifier: ^7.2.200 version: 7.2.200 '@tiptap/extension-collaboration': specifier: ^2.9.1 - version: 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))(@tiptap/pm@2.9.1)(y-prosemirror@1.2.12(prosemirror-model@1.23.0)(prosemirror-state@1.4.3)(prosemirror-view@1.28.3)(y-protocols@1.0.6(yjs@13.6.20))(yjs@13.6.20)) + version: 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))(@tiptap/pm@2.9.1)(y-prosemirror@1.2.12(prosemirror-model@1.23.0)(prosemirror-state@1.4.3)(prosemirror-view@1.35.0)(y-protocols@1.0.6(yjs@13.6.20))(yjs@13.6.20)) '@tiptap/extension-collaboration-cursor': specifier: ^2.9.1 - version: 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))(y-prosemirror@1.2.12(prosemirror-model@1.23.0)(prosemirror-state@1.4.3)(prosemirror-view@1.28.3)(y-protocols@1.0.6(yjs@13.6.20))(yjs@13.6.20)) + version: 2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))(y-prosemirror@1.2.12(prosemirror-model@1.23.0)(prosemirror-state@1.4.3)(prosemirror-view@1.35.0)(y-protocols@1.0.6(yjs@13.6.20))(yjs@13.6.20)) '@y-rb/actioncable': specifier: ^0.2.1 version: 0.2.1 prosemirror-view: - specifier: ~1.28.0 - version: 1.28.3 + specifier: ^1.0.0 + version: 1.35.0 rhino-editor: specifier: link:../.. version: link:../.. trix: - specifier: ^2.1.8 - version: 2.1.8 + specifier: 2.1.7 + version: 2.1.7 y-prosemirror: specifier: ^1.2.12 - version: 1.2.12(prosemirror-model@1.23.0)(prosemirror-state@1.4.3)(prosemirror-view@1.28.3)(y-protocols@1.0.6(yjs@13.6.20))(yjs@13.6.20) + version: 1.2.12(prosemirror-model@1.23.0)(prosemirror-state@1.4.3)(prosemirror-view@1.35.0)(y-protocols@1.0.6(yjs@13.6.20))(yjs@13.6.20) y-protocols: specifier: ^1.0.6 version: 1.0.6(yjs@13.6.20) @@ -58,10 +55,10 @@ importers: version: 13.6.20 devDependencies: '@playwright/test': - specifier: ^1.48.2 - version: 1.48.2 + specifier: 1.48.0 + version: 1.48.0 playwright: - specifier: ^1.48.2 + specifier: 1.48.2 version: 1.48.2 vite: specifier: ^5.4.10 @@ -229,8 +226,8 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@playwright/test@1.48.2': - resolution: {integrity: sha512-54w1xCWfXuax7dz4W2M9uw0gDyh+ti/0K/MxcCUxChFh37kkdxPdfZDw5QBbuPUJHr1CiHJ1hXgSs+GgeQc5Zw==} + '@playwright/test@1.48.0': + resolution: {integrity: sha512-W5lhqPUVPqhtc/ySvZI5Q8X2ztBOUgZ8LbAFy0JQgrXZs2xaILrUcNO3rQjwbLPfGK13+rZsDa1FpG+tqYkT5w==} engines: {node: '>=18'} hasBin: true @@ -581,11 +578,21 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + playwright-core@1.48.0: + resolution: {integrity: sha512-RBvzjM9rdpP7UUFrQzRwR8L/xR4HyC1QXMzGYTbf1vjw25/ya9NRAVnXi/0fvFopjebvyPzsmoK58xxeEOaVvA==} + engines: {node: '>=18'} + hasBin: true + 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==} + engines: {node: '>=18'} + hasBin: true + playwright@1.48.2: resolution: {integrity: sha512-NjYvYgp4BPmiwfe31j4gHLa3J7bD2WiBz8Lk2RoSsmX38SVIARZ18VYjxLjAcDsAhA+F4iSEXTSGgjua0rrlgQ==} engines: {node: '>=18'} @@ -645,13 +652,13 @@ packages: 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.2: resolution: {integrity: sha512-2iUq0wv2iRoJO/zj5mv8uDUriOHWzXRnOTVgCzSXnktS/2iQRa3UUQwVlkBlYZFtygw6Nh1+X4mGqoYBINn5KQ==} - prosemirror-view@1.28.3: - resolution: {integrity: sha512-YnJxLRzIaCNEt3VKiy+PBxtpwsCbjrfiBKIgHJeqbKhdeP8bU2qL4ngdGmxp9K4+06cZG5bE9vipuhP+KUl+BQ==} + prosemirror-view@1.35.0: + resolution: {integrity: sha512-Umtbh22fmUlpZpRTiOVXA0PpdRZeYEeXQsLp51VfnMhjkJrqJ0n8APinIZrRAD5Jr3UxH8FnOaUqRylSuMsqHA==} prr@1.0.1: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} @@ -699,8 +706,8 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - trix@2.1.8: - resolution: {integrity: sha512-y1h5mKQcjMsZDsUOqOgyIUfw+Z31u4Fe9JqXtKGUzIC7FM9cTpxZFFWxQggwXBo18ccIKYx1Fn9toVO5mCpn9g==} + trix@2.1.7: + resolution: {integrity: sha512-RyFmjLJfxP2nuAKqgVqJ40wk4qoYfDQtyi71q6ozkP+X4EOILe+j5ll5g/suvTyMx7BacGszNWzjnx9Vbj17sw==} uc.micro@2.1.0: resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} @@ -776,7 +783,7 @@ packages: peerDependencies: prosemirror-model: ^1.7.1 prosemirror-state: ^1.2.3 - prosemirror-view: ~1.28.0 + prosemirror-view: ^1.9.10 y-protocols: ^1.0.1 yjs: ^13.5.38 @@ -884,16 +891,16 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@playwright/test@1.48.2': + '@playwright/test@1.48.0': dependencies: - playwright: 1.48.2 + playwright: 1.48.0 '@rails/actioncable@7.2.200': {} - '@rails/actiontext@7.2.200(trix@2.1.8)': + '@rails/actiontext@7.2.200(trix@2.1.7)': dependencies: '@rails/activestorage': 7.2.200 - trix: 2.1.8 + trix: 2.1.7 '@rails/activestorage@7.2.200': dependencies: @@ -959,16 +966,16 @@ snapshots: dependencies: '@tiptap/pm': 2.9.1 - '@tiptap/extension-collaboration-cursor@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))(y-prosemirror@1.2.12(prosemirror-model@1.23.0)(prosemirror-state@1.4.3)(prosemirror-view@1.28.3)(y-protocols@1.0.6(yjs@13.6.20))(yjs@13.6.20))': + '@tiptap/extension-collaboration-cursor@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))(y-prosemirror@1.2.12(prosemirror-model@1.23.0)(prosemirror-state@1.4.3)(prosemirror-view@1.35.0)(y-protocols@1.0.6(yjs@13.6.20))(yjs@13.6.20))': dependencies: '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) - y-prosemirror: 1.2.12(prosemirror-model@1.23.0)(prosemirror-state@1.4.3)(prosemirror-view@1.28.3)(y-protocols@1.0.6(yjs@13.6.20))(yjs@13.6.20) + y-prosemirror: 1.2.12(prosemirror-model@1.23.0)(prosemirror-state@1.4.3)(prosemirror-view@1.35.0)(y-protocols@1.0.6(yjs@13.6.20))(yjs@13.6.20) - '@tiptap/extension-collaboration@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))(@tiptap/pm@2.9.1)(y-prosemirror@1.2.12(prosemirror-model@1.23.0)(prosemirror-state@1.4.3)(prosemirror-view@1.28.3)(y-protocols@1.0.6(yjs@13.6.20))(yjs@13.6.20))': + '@tiptap/extension-collaboration@2.9.1(@tiptap/core@2.9.1(@tiptap/pm@2.9.1))(@tiptap/pm@2.9.1)(y-prosemirror@1.2.12(prosemirror-model@1.23.0)(prosemirror-state@1.4.3)(prosemirror-view@1.35.0)(y-protocols@1.0.6(yjs@13.6.20))(yjs@13.6.20))': dependencies: '@tiptap/core': 2.9.1(@tiptap/pm@2.9.1) '@tiptap/pm': 2.9.1 - y-prosemirror: 1.2.12(prosemirror-model@1.23.0)(prosemirror-state@1.4.3)(prosemirror-view@1.28.3)(y-protocols@1.0.6(yjs@13.6.20))(yjs@13.6.20) + y-prosemirror: 1.2.12(prosemirror-model@1.23.0)(prosemirror-state@1.4.3)(prosemirror-view@1.35.0)(y-protocols@1.0.6(yjs@13.6.20))(yjs@13.6.20) '@tiptap/pm@2.9.1': dependencies: @@ -987,9 +994,9 @@ snapshots: prosemirror-schema-list: 1.4.1 prosemirror-state: 1.4.3 prosemirror-tables: 1.6.1 - prosemirror-trailing-node: 3.0.0(prosemirror-model@1.23.0)(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) prosemirror-transform: 1.10.2 - prosemirror-view: 1.28.3 + prosemirror-view: 1.35.0 '@types/estree@1.0.6': {} @@ -1258,8 +1265,16 @@ snapshots: picomatch@2.3.1: {} + playwright-core@1.48.0: {} + playwright-core@1.48.2: {} + playwright@1.48.0: + dependencies: + playwright-core: 1.48.0 + optionalDependencies: + fsevents: 2.3.2 + playwright@1.48.2: dependencies: playwright-core: 1.48.2 @@ -1290,20 +1305,20 @@ snapshots: dependencies: prosemirror-state: 1.4.3 prosemirror-transform: 1.10.2 - prosemirror-view: 1.28.3 + prosemirror-view: 1.35.0 prosemirror-gapcursor@1.3.2: dependencies: prosemirror-keymap: 1.2.2 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.2 - prosemirror-view: 1.28.3 + prosemirror-view: 1.35.0 rope-sequence: 1.3.4 prosemirror-inputrules@1.4.0: @@ -1347,7 +1362,7 @@ snapshots: dependencies: prosemirror-model: 1.23.0 prosemirror-transform: 1.10.2 - prosemirror-view: 1.28.3 + prosemirror-view: 1.35.0 prosemirror-tables@1.6.1: dependencies: @@ -1355,21 +1370,21 @@ snapshots: prosemirror-model: 1.23.0 prosemirror-state: 1.4.3 prosemirror-transform: 1.10.2 - prosemirror-view: 1.28.3 + prosemirror-view: 1.35.0 - prosemirror-trailing-node@3.0.0(prosemirror-model@1.23.0)(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.23.0 prosemirror-state: 1.4.3 - prosemirror-view: 1.28.3 + prosemirror-view: 1.35.0 prosemirror-transform@1.10.2: dependencies: prosemirror-model: 1.23.0 - prosemirror-view@1.28.3: + prosemirror-view@1.35.0: dependencies: prosemirror-model: 1.23.0 prosemirror-state: 1.4.3 @@ -1437,7 +1452,7 @@ snapshots: dependencies: is-number: 7.0.0 - trix@2.1.8: {} + trix@2.1.7: {} uc.micro@2.1.0: {} @@ -1481,12 +1496,12 @@ snapshots: yjs: 13.6.20 optional: true - y-prosemirror@1.2.12(prosemirror-model@1.23.0)(prosemirror-state@1.4.3)(prosemirror-view@1.28.3)(y-protocols@1.0.6(yjs@13.6.20))(yjs@13.6.20): + y-prosemirror@1.2.12(prosemirror-model@1.23.0)(prosemirror-state@1.4.3)(prosemirror-view@1.35.0)(y-protocols@1.0.6(yjs@13.6.20))(yjs@13.6.20): dependencies: lib0: 0.2.98 prosemirror-model: 1.23.0 prosemirror-state: 1.4.3 - prosemirror-view: 1.28.3 + prosemirror-view: 1.35.0 y-protocols: 1.0.6(yjs@13.6.20) yjs: 13.6.20