问题标签 [prose-mirror]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
350 浏览

javascript - Tiptap (Prosemirror) 提及标签的协作模式错误

我需要一些帮助来实现实时协作服务器(https://tiptap.dev/suggestions)中的提及。我的代码是这个的修改版本:https ://glitch.com/edit/#!/tiptap-sockets?path=server.js%3A1%3A0

我将这些步骤发送到我的套接字服务器以应用于文档的先前版本

并使用此模式来验证提及:

当我输入@Philip Isik 时,前端会发送以下步骤,

第 1 步:@philip Isik

第2步: ” ”

这些是服务器接收到的 JSON 格式的上述步骤:

在第 1 步之后,循环失败并抛出

RangeError:位置 15 超出范围

所以我在第一步之后检查了内容长度,它说它的长度是 3,而它应该是长度 12(@Philip Isik 的长度)

有谁知道为什么会这样?已经在这 2 天了。任何帮助是极大的赞赏!

TLDR:

  1. 所以我要向服务器发送一个@Name 以应用于当前版本的文档。

  2. 服务器接收到提到的步骤@Name

  3. 现在,当它发送下一步时,发送的步骤是位置 6(@Name 的长度为 5,因此 5+1th=6th pos)

  4. 这就是问题所在,根据tiptap/prose对象,@Name的长度是2,而不是5

  5. 因此,它会引发“位置超出范围错误”

0 投票
1 回答
362 浏览

reactjs - 尝试扩展丰富的降价编辑器

我正在尝试扩展这个降价编辑器库——它本身扩展了 Prosemirror。我想构建自己的节点,它具有以下架构:

并返回以下 HTML

这里的诀窍是,因为编辑器保存到降价。我们需要某种方式来理解这是一种特殊类型的节点 a Story,但我使用的是将它包装在一组独特的字符中%%%。这类似于我正在扩展的库如何:::用作其Notice节点的信号

我能够添加一个新Story节点,它可以正确呈现我的按钮和样式。当我去保存时,一切都会正确保存,我得到的降价看起来像

但是,当我想将 markdown 渲染回 DOM 元素时,它会失败,并且我再次在文档中获得纯文本。具体来说,DOM 看起来像

客户节点的代码如下。有没有人成功地扩展了这个库或者可以告诉我我做错了什么?谢谢

0 投票
0 回答
20 浏览

javascript - 如何使用 prosMirror 创建可变特征

我正在尝试创建可变功能。我无法理解如何执行架构功能。

我想要的结果:
在编辑器中查看:

查看获取 html 字符串:

0 投票
0 回答
570 浏览

vue.js - 只需在prosemiror中替换节点的内容

我在一个接收字符串作为输入的函数中:

我可以通过 Vue 道具 ( ) 访问编辑器props.editor。我想用这个文本替换当前节点的内容。我似乎无法找到如何做到这一点。我正在使用tiptap2,它是 ProseMirror 的包装器,可以访问所有 ProseMirror 的 api。

除非必要,否则我宁愿不尝试替换整个节点,我也尝试过,在下面做 - 但也不能让它工作:

非常感谢

0 投票
1 回答
111 浏览

reactjs - React useRef() 没有被定义

我有一个基于 prosemirror 的编辑器,我想启用实时协作。所以我设置了一个套接字服务器,如此处所述

我将其设置WebsocketProvider为 auseRef()这样我们就不会在每次渲染组件时都不断地重新创建它(在我启动数十个 websocket 之前)。但是,现在它甚至没有被定义,因为console.log(this.yXmlFragment, this.provider)inget plugins()都返回为undefined

我想要的行为是我想要provider并且yXmlFragment仅在sectionID更改时更新,而不是任何其他重新渲染。但它甚至不是第一次设置。谁能解释我错了?

0 投票
0 回答
85 浏览

reactjs - 如何在 `proseMirror` 编辑器中使用`react-hook-form`?

我如何react-hook-form与编辑器一起使用proseMirror

react-hook-form以下是我尝试整合proseMirror

但是当我单击submit按钮时,我得到:

似乎react-hook-form无法检索编辑器value内部proseMirror,如何从proseMirror编辑器中检索输入值?

0 投票
0 回答
70 浏览

tiptap - 如何嵌套 Tiptap 节点

我正在我的 Angular 11 应用程序中构建一个 Tiptap 2.0 编辑器。

在这个编辑器中,我想对一堆节点进行分组/嵌套。如何将节点添加为兄弟节点,即作为父容器/节点的子节点?

感谢所有帮助!

0 投票
0 回答
675 浏览

javascript - 如何在tiptap中制作节点可以在里面添加另一个节点

此代码有效但绝对无效(未创建节点)

此代码引发错误

需要放置节点时出错

<button @click="editor.chain().focus().togglePage().run()" :class="{ 'is-active': editor.isActive('PageNode') }"> 切换页面

也许我丢失了重要参数?

我以检查 TableCell 节点为例,工作正常,但我未能在我的代码中执行相同的功能

0 投票
1 回答
1575 浏览

javascript - tiptap - 在当前节点下方 / 末尾插入节点

我正在尝试使用 reactjs 创建一个带有tiptap的文本编辑器。我想在编辑器的每个“块”旁边创建一个按钮(paragraph块,blockquote块,codeblock块,...),允许用户在所选块之前添加一个新的空块。它看起来像这样(概念编辑器):

在当前演示下方添加块

所以我尝试这样做的方法是将光标位置设置在当前节点的末尾:

所以在这一点上,它起作用了。但是,当我尝试node在这个位置插入一个新的......

...我收到一个错误:TypeError: Cannot read property 'nodeType' of null

因此,为了让您详细了解此错误,我在 codesandbox.io 上制作了一个沙箱。要重现该错误,您只需专注于编辑器,随意编写一些内容,然后单击+按钮。您应该看到错误。

添加新块时出错

编辑 react-passing-local-state-to-parent-component

在此先感谢您的帮助 !

0 投票
0 回答
68 浏览

javascript - 如何在 Prosemirror 编辑器变为可编辑后立即显示插入符号?

我有一个用例,其中 ProseMirror 编辑器起初不可编辑(只读模式)。一旦用户双击编辑器,编辑器就变为可编辑的。

这一切都很好。这里的问题是插入符号在变为可编辑时不会立即可见。当然,我可以单击文本,它就会变得可见。

但是,我希望它立即显示在它被双击的位置。这可能吗?