Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[编辑器插件开发bug] 使用Decoration.inline设置style属性后,页面无响应 #7063

Closed
4 tasks done
Aziteee opened this issue Nov 22, 2024 · 5 comments
Closed
4 tasks done

Comments

@Aziteee
Copy link

Aziteee commented Nov 22, 2024

前置条件

  • 已经在 issues 列表中搜索了相关问题。
  • 这是 Halo 项目本身存在的问题,如果是非项目本身的问题(如:安装部署问题),建议在 Discussions 提交。
  • 已经尝试过停用所有的插件,排除是插件导致的问题。
  • 如果是插件和主题的问题,请在对应的插件和主题仓库提交。

系统信息

使用的哪种方式运行?

Docker

发生了什么?

我准备编写一个shiki代码高亮的插件。我是在原highlightjs插件的基础上改的。但是使用Decoration.inline设置style属性后,页面无响应,过了一段时间后提示内存溢出了。

const decoration = Decoration.inline(from, to, {
  style: node.style,
});

然后我尝试把style属性改为其他的比如class

const decoration = Decoration.inline(from, to, {
  class: node.style,
});

结果一切正常,输出的dom如下

<span class="color:#CB7676;">const </span>
<span class="color:#BD976A;">message</span>
<span class="color:#666666;"> =</span>
<span class="color:#C98A7D77;"> '</span>
<span class="color:#C98A7D;">Hello World</span>
<span class="color:#C98A7D77;">'</span>
<span class="color:#666666;">;</span>

然后我就想会不会是tiptap或者prosmirror的问题。于是我尝试用tiptap搞了个小demo,plugin的代码完全一样,结果能正常渲染。那么问题只可能出在halo上了

我感觉可能是halo的codeblock extension的问题

Image

这个demo的codesandbox地址如下 https://codesandbox.io/p/devbox/holy-leftpad-jxncq7

我正在开发的插件的github仓库是 https://github.com/Aziteee/halo-plugin-shiki

其中出问题的代码在 https://github.com/Aziteee/halo-plugin-shiki/blob/main/ui/src/editor/lowlight-plugin.ts 的 106 行

复现步骤

No response

相关日志输出

附加信息

No response

@ruibaby
Copy link
Member

ruibaby commented Nov 22, 2024

要不要考虑参与维护 halo-sigs/plugin-shiki#1

目前这个插件是完全可用的,只是可能和主题有一些兼容性问题。

或者你可以先看看这个插件的实现。

@ruibaby
Copy link
Member

ruibaby commented Nov 22, 2024

要不要考虑参与维护 halo-sigs/plugin-shiki#1

目前这个插件是完全可用的,只是可能和主题有一些兼容性问题。

或者你可以先看看这个插件的实现。

晚点我会先合并这个 PR,再详细看看还有什么问题。

@Aziteee
Copy link
Author

Aziteee commented Nov 22, 2024

没发现原来已经有一个仓库了,我去看看

@Aziteee
Copy link
Author

Aziteee commented Nov 22, 2024

我擦。我找到原因了。没绷住,原来是我的一个深色模式的浏览器插件的锅,它会一直遍历所有节点去修改颜色,然后prosmirror发现节点被修改了又触发重绘导致死循环然后卡死。
此贴终结。

@Aziteee Aziteee closed this as completed Nov 22, 2024
@Aziteee
Copy link
Author

Aziteee commented Nov 22, 2024

我会帮助开发原有的项目,我这个就不维护了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants