halo/ui/packages/editor
Takagi 21db06a507
refactor: editor code block to be extensible by plugins (#6428)
#### What type of PR is this?

/kind improvement
/area editor
/area ui

#### What this PR does / why we need it:

此 PR 重构了默认编辑器中代码块的相关代码,使编辑器能够被插件扩展。这样做的优点是当用户使用例如 [highlightjs](https://github.com/halo-sigs/plugin-highlightjs) 这类的高亮插件时,可以保证在 Console 端选择的语言及主题可以在主题端完美适配。

具体做了以下几处重构:

1. 在默认编辑器的代码块中,不再提供高亮样式,代码块高亮将完全交由插件来适配。(但可以在默认的代码块中自定义输入语言,主题端自行处理)。
2. 为了防止出现重复的插件功能,将会根据插件优先级及加载顺序(后加载优先级高于先加载),对同类型且同名的插件进行过滤,只保留一个。
3. 重构代码块 `Select` 组件,使得选择语言或主题更加方便。
4. 为代码块提供主题的扩展设置项。

建议在此 PR 合并之后,由 Halo 默认提供一个高亮插件作为预设插件,这样可以用于解决原有功能升级之后丢失的问题。

<img width="1067" alt="image" src="https://github.com/user-attachments/assets/f9e2c5eb-a48a-4d2c-9fee-442e9d16ef19">

#### How to test it?

测试是否会改变已有代码块的语言等。
测试使用第三方插件之后,是否具有高亮。
设置高亮语言后,保存并刷新,查看高亮语言是否存在。主题同理。
查看主题端是否能够正常渲染。

#### Does this PR introduce a user-facing change?
```release-note
重构默认编辑器代码块使其能够被插件扩展。
```
2024-08-26 02:55:13 +00:00
..
docs fix: resolving the issue of the draggable extension not working in the editor (#5570) 2024-03-27 04:26:06 +00:00
src refactor: editor code block to be extensible by plugins (#6428) 2024-08-26 02:55:13 +00:00
.eslintrc.cjs Move folder console to ui 2024-02-02 22:22:51 +08:00
.gitignore Move folder console to ui 2024-02-02 22:22:51 +08:00
.release-it.json Move folder console to ui 2024-02-02 22:22:51 +08:00
env.d.ts Move folder console to ui 2024-02-02 22:22:51 +08:00
index.html Move folder console to ui 2024-02-02 22:22:51 +08:00
package.json refactor: editor code block to be extensible by plugins (#6428) 2024-08-26 02:55:13 +00:00
postcss.config.js Move folder console to ui 2024-02-02 22:22:51 +08:00
prettier.config.js chore: bump vite to 5.x (#5920) 2024-05-16 06:18:36 +00:00
tailwind.config.js Move folder console to ui 2024-02-02 22:22:51 +08:00
tsconfig.app.json Move folder console to ui 2024-02-02 22:22:51 +08:00
tsconfig.json Move folder console to ui 2024-02-02 22:22:51 +08:00
tsconfig.node.json Move folder console to ui 2024-02-02 22:22:51 +08:00
tsconfig.vitest.json Move folder console to ui 2024-02-02 22:22:51 +08:00
vite.config.ts chore: organize and fix imports (#6152) 2024-06-26 10:42:50 +00:00
vite.lib.config.ts Move folder console to ui 2024-02-02 22:22:51 +08:00