@haklex/rich-renderers 0.0.65 → 0.0.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -174
- package/package.json +27 -22
package/README.md
CHANGED
|
@@ -1,204 +1,82 @@
|
|
|
1
1
|
# @haklex/rich-renderers
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
为 `@haklex/rich-renderer` 提供一套增强版 `rendererConfig`,并统一导出常见扩展节点与工具。
|
|
3
|
+
Static renderer aggregator that bundles all static (read-only) renderers and extension renderers into a single configuration.
|
|
5
4
|
|
|
6
|
-
##
|
|
7
|
-
|
|
8
|
-
- 面向只读渲染场景(文章页、SSR、预览页)
|
|
9
|
-
- 聚合多个 feature 包(codeblock/image/video/linkcard/...)
|
|
10
|
-
- 不负责编辑器插件挂载(编辑态请看 `@haklex/rich-renderers-edit`)
|
|
11
|
-
|
|
12
|
-
## 安装
|
|
5
|
+
## Installation
|
|
13
6
|
|
|
14
7
|
```bash
|
|
15
|
-
pnpm add @haklex/rich-renderers
|
|
8
|
+
pnpm add @haklex/rich-renderers
|
|
16
9
|
```
|
|
17
10
|
|
|
18
|
-
##
|
|
11
|
+
## Peer Dependencies
|
|
12
|
+
|
|
13
|
+
| Package | Version |
|
|
14
|
+
| --- | --- |
|
|
15
|
+
| `lexical` | `^0.41.0` |
|
|
16
|
+
| `@lexical/react` | `^0.41.0` |
|
|
17
|
+
| `react` | `>=19` |
|
|
18
|
+
| `react-dom` | `>=19` |
|
|
19
|
+
|
|
20
|
+
## Usage
|
|
19
21
|
|
|
20
22
|
```tsx
|
|
23
|
+
import { enhancedRendererConfig } from '@haklex/rich-renderers'
|
|
21
24
|
import { RichRenderer } from '@haklex/rich-static-renderer'
|
|
22
|
-
import {
|
|
23
|
-
codeSnippetNodes,
|
|
24
|
-
embedNodes,
|
|
25
|
-
enhancedRendererConfig,
|
|
26
|
-
galleryNodes,
|
|
27
|
-
TldrawNode,
|
|
28
|
-
} from '@haklex/rich-renderers'
|
|
29
25
|
|
|
30
26
|
import '@haklex/rich-editor/style.css'
|
|
31
27
|
import '@haklex/rich-renderers/style.css'
|
|
32
|
-
import '@haklex/rich-ext-code-snippet/style.css'
|
|
33
|
-
import '@haklex/rich-ext-embed/style.css'
|
|
34
|
-
import 'katex/dist/katex.min.css'
|
|
35
|
-
import 'tldraw/tldraw.css'
|
|
36
|
-
|
|
37
|
-
const extraNodes = [
|
|
38
|
-
TldrawNode,
|
|
39
|
-
...embedNodes,
|
|
40
|
-
...galleryNodes,
|
|
41
|
-
...codeSnippetNodes,
|
|
42
|
-
]
|
|
43
|
-
|
|
44
|
-
export function Article({ value }) {
|
|
45
|
-
return (
|
|
46
|
-
<RichRenderer
|
|
47
|
-
value={value}
|
|
48
|
-
rendererConfig={enhancedRendererConfig}
|
|
49
|
-
extraNodes={extraNodes}
|
|
50
|
-
variant="article"
|
|
51
|
-
/>
|
|
52
|
-
)
|
|
53
|
-
}
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
## `enhancedRendererConfig` 包含项
|
|
57
|
-
|
|
58
|
-
| key | renderer |
|
|
59
|
-
| --- | --- |
|
|
60
|
-
| `Alert` | `AlertRenderer` |
|
|
61
|
-
| `Banner` | `BannerRenderer` |
|
|
62
|
-
| `CodeBlock` | `CodeBlockRenderer` |
|
|
63
|
-
| `Image` | `ImageRenderer` |
|
|
64
|
-
| `LinkCard` | `LinkCardRenderer` |
|
|
65
|
-
| `Mention` | `MentionRenderer` |
|
|
66
|
-
| `Gallery` | `GalleryRenderer` |
|
|
67
|
-
| `Mermaid` | `MermaidRenderer` |
|
|
68
|
-
| `Video` | `VideoRenderer` |
|
|
69
|
-
| `CodeSnippet` | `CodeSnippetRenderer` |
|
|
70
|
-
|
|
71
|
-
## 样式引入策略
|
|
72
|
-
|
|
73
|
-
`@haklex/rich-renderers/style.css` 已包含:
|
|
74
|
-
|
|
75
|
-
- alert/banner/codeblock/gallery/image/linkcard/mention/mermaid/video/tldraw 扩展样式
|
|
76
|
-
|
|
77
|
-
仍需按需额外引入:
|
|
78
|
-
|
|
79
|
-
- `@haklex/rich-ext-code-snippet/style.css`(CodeSnippet)
|
|
80
|
-
- `@haklex/rich-ext-embed/style.css`(Embed)
|
|
81
|
-
- `katex/dist/katex.min.css`(KaTeX)
|
|
82
|
-
- `tldraw/tldraw.css`(Tldraw 内核)
|
|
83
|
-
|
|
84
|
-
## 核心导出
|
|
85
|
-
|
|
86
|
-
### 1) 预置配置
|
|
87
|
-
|
|
88
|
-
```ts
|
|
89
|
-
enhancedRendererConfig
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
### 2) 扩展节点
|
|
93
28
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
// code-snippet
|
|
101
|
-
codeSnippetNodes
|
|
102
|
-
CodeSnippetNode
|
|
103
|
-
|
|
104
|
-
// embed
|
|
105
|
-
embedNodes
|
|
106
|
-
EmbedNode
|
|
107
|
-
|
|
108
|
-
// tldraw
|
|
109
|
-
TldrawNode
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
### 3) 各功能渲染器
|
|
113
|
-
|
|
114
|
-
```ts
|
|
115
|
-
AlertRenderer
|
|
116
|
-
BannerRenderer
|
|
117
|
-
CodeBlockRenderer
|
|
118
|
-
ImageRenderer
|
|
119
|
-
LinkCardRenderer
|
|
120
|
-
MentionRenderer
|
|
121
|
-
MermaidRenderer
|
|
122
|
-
VideoRenderer
|
|
123
|
-
GalleryRenderer
|
|
124
|
-
CodeSnippetRenderer
|
|
125
|
-
EmbedStaticRenderer
|
|
126
|
-
EmbedLinkRenderer
|
|
127
|
-
TldrawStaticRenderer
|
|
29
|
+
<RichRenderer
|
|
30
|
+
value={value}
|
|
31
|
+
rendererConfig={enhancedRendererConfig}
|
|
32
|
+
variant="article"
|
|
33
|
+
/>
|
|
128
34
|
```
|
|
129
35
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
```ts
|
|
133
|
-
plugins
|
|
134
|
-
pluginMap
|
|
135
|
-
getPluginByName
|
|
136
|
-
githubRepoPlugin
|
|
137
|
-
githubPrPlugin
|
|
138
|
-
githubIssuePlugin
|
|
139
|
-
githubCommitPlugin
|
|
140
|
-
githubDiscussionPlugin
|
|
141
|
-
arxivPlugin
|
|
142
|
-
tmdbPlugin
|
|
143
|
-
bangumiPlugin
|
|
144
|
-
qqMusicPlugin
|
|
145
|
-
neteaseMusicPlugin
|
|
146
|
-
leetcodePlugin
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
## 子路径按需引入
|
|
150
|
-
|
|
151
|
-
可用子路径(对应 `package.json exports`):
|
|
152
|
-
|
|
153
|
-
- `@haklex/rich-renderers/alert`
|
|
154
|
-
- `@haklex/rich-renderers/banner`
|
|
155
|
-
- `@haklex/rich-renderers/codeblock`
|
|
156
|
-
- `@haklex/rich-renderers/code-snippet`
|
|
157
|
-
- `@haklex/rich-renderers/image`
|
|
158
|
-
- `@haklex/rich-renderers/linkcard`
|
|
159
|
-
- `@haklex/rich-renderers/mention`
|
|
160
|
-
- `@haklex/rich-renderers/mermaid`
|
|
161
|
-
- `@haklex/rich-renderers/video`
|
|
162
|
-
- `@haklex/rich-renderers/gallery`
|
|
163
|
-
- `@haklex/rich-renderers/embed`
|
|
164
|
-
- `@haklex/rich-renderers/tldraw`
|
|
165
|
-
- `@haklex/rich-renderers/style.css`
|
|
166
|
-
|
|
167
|
-
## 设计模式
|
|
36
|
+
This aggregator re-exports all static renderers from individual renderer packages as well as extension static renderers, so you do not need to install or configure them individually.
|
|
168
37
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
把复杂渲染能力汇总为单个对象 `enhancedRendererConfig`,业务只需要:
|
|
172
|
-
|
|
173
|
-
- 注入这一个 config
|
|
174
|
-
- 注册扩展节点(`extraNodes`)
|
|
175
|
-
- 引入对应样式
|
|
176
|
-
|
|
177
|
-
### 2) 静态与编辑分层
|
|
178
|
-
|
|
179
|
-
本包只关注静态渲染,不在这里装配编辑插件。
|
|
180
|
-
编辑行为统一在 `@haklex/rich-renderers-edit` 处理,保持 bundle 边界清晰。
|
|
181
|
-
|
|
182
|
-
### 3) 可覆写不 fork
|
|
183
|
-
|
|
184
|
-
你可以基于预置配置增量覆写:
|
|
38
|
+
The config can be extended or overridden:
|
|
185
39
|
|
|
186
40
|
```tsx
|
|
187
41
|
const rendererConfig = {
|
|
188
42
|
...enhancedRendererConfig,
|
|
189
|
-
CodeBlock:
|
|
43
|
+
CodeBlock: MyCustomCodeBlockRenderer,
|
|
190
44
|
}
|
|
191
45
|
```
|
|
192
46
|
|
|
193
|
-
##
|
|
47
|
+
## Exports
|
|
48
|
+
|
|
49
|
+
### Configuration
|
|
50
|
+
|
|
51
|
+
- `enhancedRendererConfig` — Pre-configured renderer config with all static renderers registered
|
|
194
52
|
|
|
195
|
-
|
|
53
|
+
### Re-exports
|
|
196
54
|
|
|
197
|
-
|
|
198
|
-
2. 在本包 `config.ts` 注册静态 renderer(如适配 `RendererConfig` key)
|
|
199
|
-
3. 在本包 `index.ts` 与必要的子路径导出 API
|
|
55
|
+
All static renderers from individual packages, extension static renderers, and LinkCard plugins are re-exported for convenience.
|
|
200
56
|
|
|
201
|
-
|
|
57
|
+
### Sub-path Exports
|
|
58
|
+
|
|
59
|
+
| Path | Description |
|
|
60
|
+
| --- | --- |
|
|
61
|
+
| `@haklex/rich-renderers` | Full exports with `enhancedRendererConfig` |
|
|
62
|
+
| `@haklex/rich-renderers/alert` | Alert static renderer |
|
|
63
|
+
| `@haklex/rich-renderers/banner` | Banner static renderer |
|
|
64
|
+
| `@haklex/rich-renderers/codeblock` | CodeBlock static renderer |
|
|
65
|
+
| `@haklex/rich-renderers/image` | Image static renderer |
|
|
66
|
+
| `@haklex/rich-renderers/linkcard` | LinkCard static renderer + plugins |
|
|
67
|
+
| `@haklex/rich-renderers/mention` | Mention static renderer |
|
|
68
|
+
| `@haklex/rich-renderers/mermaid` | Mermaid static renderer |
|
|
69
|
+
| `@haklex/rich-renderers/ruby` | Ruby static renderer |
|
|
70
|
+
| `@haklex/rich-renderers/video` | Video static renderer |
|
|
71
|
+
| `@haklex/rich-renderers/code-snippet` | Code snippet extension renderer |
|
|
72
|
+
| `@haklex/rich-renderers/gallery` | Gallery extension renderer |
|
|
73
|
+
| `@haklex/rich-renderers/excalidraw` | Excalidraw extension renderer |
|
|
74
|
+
| `@haklex/rich-renderers/embed` | Embed extension renderer |
|
|
75
|
+
| `@haklex/rich-renderers/style.css` | Combined stylesheet |
|
|
76
|
+
|
|
77
|
+
## Part of Haklex
|
|
78
|
+
|
|
79
|
+
This package is part of the [Haklex](../../README.md) rich editor ecosystem.
|
|
202
80
|
|
|
203
81
|
## License
|
|
204
82
|
|
package/package.json
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@haklex/rich-renderers",
|
|
3
|
-
"
|
|
4
|
-
"version": "0.0.65",
|
|
3
|
+
"version": "0.0.67",
|
|
5
4
|
"description": "Static renderers aggregator for haklex rich editor",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/Innei/haklex.git",
|
|
8
|
+
"directory": "packages/rich-renderers"
|
|
9
|
+
},
|
|
6
10
|
"license": "MIT",
|
|
11
|
+
"type": "module",
|
|
7
12
|
"exports": {
|
|
8
13
|
".": {
|
|
9
14
|
"import": "./dist/index.mjs",
|
|
@@ -68,27 +73,21 @@
|
|
|
68
73
|
"dist",
|
|
69
74
|
"src/style.css"
|
|
70
75
|
],
|
|
71
|
-
"peerDependencies": {
|
|
72
|
-
"@lexical/react": "^0.41.0",
|
|
73
|
-
"lexical": "^0.41.0",
|
|
74
|
-
"react": ">=19",
|
|
75
|
-
"react-dom": ">=19"
|
|
76
|
-
},
|
|
77
76
|
"dependencies": {
|
|
78
|
-
"@haklex/rich-editor": "0.0.
|
|
79
|
-
"@haklex/rich-ext-
|
|
80
|
-
"@haklex/rich-ext-
|
|
81
|
-
"@haklex/rich-ext-
|
|
82
|
-
"@haklex/rich-
|
|
83
|
-
"@haklex/rich-renderer-
|
|
84
|
-
"@haklex/rich-
|
|
85
|
-
"@haklex/rich-renderer-
|
|
86
|
-
"@haklex/rich-renderer-codeblock": "0.0.
|
|
87
|
-
"@haklex/rich-renderer-linkcard": "0.0.
|
|
88
|
-
"@haklex/rich-renderer-mention": "0.0.
|
|
89
|
-
"@haklex/rich-renderer-mermaid": "0.0.
|
|
90
|
-
"@haklex/rich-renderer-
|
|
91
|
-
"@haklex/rich-renderer-
|
|
77
|
+
"@haklex/rich-editor": "0.0.67",
|
|
78
|
+
"@haklex/rich-ext-excalidraw": "0.0.67",
|
|
79
|
+
"@haklex/rich-ext-embed": "0.0.67",
|
|
80
|
+
"@haklex/rich-ext-gallery": "0.0.67",
|
|
81
|
+
"@haklex/rich-renderer-banner": "0.0.67",
|
|
82
|
+
"@haklex/rich-renderer-alert": "0.0.67",
|
|
83
|
+
"@haklex/rich-ext-code-snippet": "0.0.67",
|
|
84
|
+
"@haklex/rich-renderer-image": "0.0.67",
|
|
85
|
+
"@haklex/rich-renderer-codeblock": "0.0.67",
|
|
86
|
+
"@haklex/rich-renderer-linkcard": "0.0.67",
|
|
87
|
+
"@haklex/rich-renderer-mention": "0.0.67",
|
|
88
|
+
"@haklex/rich-renderer-mermaid": "0.0.67",
|
|
89
|
+
"@haklex/rich-renderer-ruby": "0.0.67",
|
|
90
|
+
"@haklex/rich-renderer-video": "0.0.67"
|
|
92
91
|
},
|
|
93
92
|
"devDependencies": {
|
|
94
93
|
"@lexical/react": "^0.41.0",
|
|
@@ -101,6 +100,12 @@
|
|
|
101
100
|
"vite": "^7.3.1",
|
|
102
101
|
"vite-plugin-dts": "^4.5.4"
|
|
103
102
|
},
|
|
103
|
+
"peerDependencies": {
|
|
104
|
+
"@lexical/react": "^0.41.0",
|
|
105
|
+
"lexical": "^0.41.0",
|
|
106
|
+
"react": ">=19",
|
|
107
|
+
"react-dom": ">=19"
|
|
108
|
+
},
|
|
104
109
|
"publishConfig": {
|
|
105
110
|
"access": "public"
|
|
106
111
|
},
|