@@ -39,27 +39,27 @@ const MyPlugin = createPlatePlugin<MyPluginConfig>({
3939Plate 用于存储插件的唯一标识符,通过 ` editor.plugins ` 键。
4040</APIItem >
4141
42- <APIItem name = " api" type = " UnionToIntersection<InferApi<C> >" >
42+ <APIItem name = " api" type = " Record<string, Function >" >
4343插件提供的 API 函数对象。这些函数通过 ` editor.api[key] ` 访问。
4444</APIItem >
4545
46- <APIItem name = " transforms" type = " UnionToIntersection<InferTransforms<C> >" >
46+ <APIItem name = " transforms" type = " Record<string, Function >" >
4747插件提供的变换函数,用于修改编辑器状态。这些函数通过 ` editor.tf[key] ` 访问。
4848</APIItem >
4949
50- <APIItem name = " options" type = " InferOptions<C >" >
50+ <APIItem name = " options" type = " Record<string, any >" >
5151插件作为选项使用的扩展属性。
5252</APIItem >
5353
54- <APIItem name = " handlers" type = " Nullable<DOMHandlers<WithAnyKey<C>> & { onChange?: OnChange<WithAnyKey<C>> } >" >
54+ <APIItem name = " handlers" type = " { onChange?: (editor: PlateEditor) => void } & Record<string, Function >" >
5555各种编辑器事件的事件处理程序,包括 ` onChange ` 。
5656</APIItem >
5757
58- <APIItem name = " inject" type = " Nullable<{...}> " >
58+ <APIItem name = " inject" type = " object " >
5959定义插件如何将功能注入其他插件或编辑器。
6060
6161<APISubList >
62- <APISubListItem parent = " inject" name = " nodeProps" type = " InjectNodeProps<WithAnyKey<C> >" optional >
62+ <APISubListItem parent = " inject" name = " nodeProps" type = " Record<string, any >" optional >
6363Plate 用于将属性注入任何节点组件的属性。
6464</APISubListItem >
6565
@@ -84,7 +84,7 @@ Plate 用于将属性注入任何节点组件的属性。
8484<APISubListItem parent = " inject" name = " maxLevel" type = " number" optional >
8585节点属性注入的最大嵌套级别。深度大于此级别的节点将不会接收注入的属性。
8686</APISubListItem >
87- <APISubListItem parent = " inject" name = " plugins" type = " Record<string, Partial<EditorPlatePlugin<AnyPluginConfig> >>" optional >
87+ <APISubListItem parent = " inject" name = " plugins" type = " Record<string, Partial<PlatePlugin >>" optional >
8888插件可以使用的属性,用于允许其他插件注入代码。
8989</APISubListItem >
9090<APISubListItem parent = " inject" name = " targetPluginToInject" type = " function" optional >
@@ -98,7 +98,7 @@ Plate 用于将属性注入任何节点组件的属性。
9898</APISubList >
9999</APIItem >
100100
101- <APIItem name = " node" type = " BasePluginNode " >
101+ <APIItem name = " node" type = " object " >
102102定义插件的节点特定配置。
103103
104104<APISubList >
@@ -164,14 +164,14 @@ HTML React 序列化器配置。
164164</APISubList >
165165</APIItem >
166166
167- <APIItem name = " render" type = " Nullable<{...}> " >
168- 定义编辑器各个部分的渲染函数 。
167+ <APIItem name = " render" type = " object " >
168+ 定义插件如何渲染组件 。
169169
170170<APISubList >
171- <APISubListItem parent = " render" name = " aboveEditable" type = " React.FC<{ children: React.ReactNode }> " optional >
171+ <APISubListItem parent = " render" name = " aboveEditable" type = " Component " optional >
172172在 ` Editable ` 组件上方但在 ` Slate ` 包装器内渲染组件。
173173</APISubListItem >
174- <APISubListItem parent = " render" name = " aboveNodes" type = " NodeWrapperComponent<WithAnyKey<C>> " optional >
174+ <APISubListItem parent = " render" name = " aboveNodes" type = " Component " optional >
175175在所有其他插件的 ` node ` 组件上方渲染组件。
176176</APISubListItem >
177177<APISubListItem parent = " render" name = " aboveSlate" type = " React.FC<{ children: React.ReactNode }>" optional >
@@ -222,30 +222,40 @@ HTML React 序列化器配置。
222222Plate 用来装饰编辑器范围的属性。
223223</APIItem >
224224
225- <APIItem name = " useHooks" type = " UseHooks<WithAnyKey<C>>" optional >
226- Hook called when the editor is initialized.
225+ <APIItem name = " extendEditor" type = " ExtendEditor<WithAnyKey<C>>" optional >
226+ 用于扩展编辑器实例的函数。主要用于集成需要直接编辑器变更的传统 Slate 插件。每个插件只允许一个 ` extendEditor ` 。
227+
228+ ``` ts
229+ extendEditor : ({ editor }) => {
230+ // 示例:集成传统 Slate 插件
231+ return withYjs (editor );
232+ }}
233+ < / APIItem >
234+
235+ < APIItem name = " useHooks" type = " () => void" optional >
236+ 当编辑器初始化时调用的钩子。
227237< / APIItem >
228238< / APIAttributes >
229239
230240## Plugin Methods
231241
232242<APIAttributes >
233- <APIItem name = " configure" type = " function " >
243+ < APIItem name = " configure" type = " (config: PlatePluginConfig | ((ctx: PlatePluginContext) => PlatePluginConfig)) => PlatePlugin " >
234244创建一个具有更新选项的新插件实例。
235245
236246` ` ` ts
237247(config: PlatePluginConfig<C['key'], InferOptions<C>, InferApi<C>, InferTransforms<C>> | ((ctx: PlatePluginContext<C>) => PlatePluginConfig<C['key'], InferOptions<C>, InferApi<C>, InferTransforms<C>>)) => PlatePlugin<C>
238248` ` `
239249< / APIItem >
240250
241- <APIItem name = " extend" type = " function " >
251+ < APIItem name = " extend" type = " (config: Partial<PlatePlugin> | ((ctx: PlatePluginContext) => Partial<PlatePlugin>)) => PlatePlugin " >
242252创建一个具有附加配置的新插件实例。可以接受一个对象或一个函数。
243253
244254` ` ` ts
245255(extendConfig: Partial<PlatePlugin> | ((ctx: PlatePluginContext<AnyPluginConfig>) => Partial<PlatePlugin>)) => PlatePlugin
246256` ` `
247257< / APIItem >
248- <APIItem name = " extendPlugin" type = " function " >
258+ < APIItem name = " extendPlugin" type = " (key: string, config: Partial<PlatePlugin> | ((ctx: PlatePluginContext) => Partial<PlatePlugin>)) => PlatePlugin " >
249259扩展一个现有的嵌套插件或添加一个新的插件,如果未找到。支持深度嵌套。
250260
251261` ` ` ts
@@ -261,45 +271,71 @@ Hook called when the editor is initialized.
261271` ` `
262272< / APIItem >
263273
264- <APIItem name = " extendApi" type = " function " >
274+ < APIItem name = " extendApi" type = " (api: (ctx: PlatePluginContext) => Record<string, Function>) => PlatePlugin " >
265275扩展插件的 API 。
266276
267277` ` ` ts
268278(api: (ctx: PlatePluginContext<AnyPluginConfig>) => any) => PlatePlugin<C>
269279` ` `
270280< / APIItem >
271281
272- <APIItem name = " extendEditorApi" type = " function " >
282+ < APIItem name = " extendEditorApi" type = " (api: (ctx: PlatePluginContext) => Record<string, Function>) => PlatePlugin " >
273283使用插件特定的方法扩展编辑器的 API 。
274284
275285` ` ` ts
276286(api: (ctx: PlatePluginContext<AnyPluginConfig>) => any) => PlatePlugin<C>
277287` ` `
278288< / APIItem >
279289
280- <APIItem name = " extendTransforms" type = " function " >
281- 使用插件特定的方法扩展插件的变换 。
290+ < APIItem name = " extendTransforms" type = " (transforms: (ctx: PlatePluginContext) => Record<string, Function>) => PlatePlugin " >
291+ 扩展插件的变换 。
282292
283293` ` ` ts
284294(transforms: (ctx: PlatePluginContext<AnyPluginConfig>) => any) => PlatePlugin<C>
285295` ` `
286296< / APIItem >
287297
288- <APIItem name = " extendEditorTransforms" type = " function " >
298+ < APIItem name = " extendEditorTransforms" type = " (transforms: (ctx: PlatePluginContext) => Record<string, Function>) => PlatePlugin " >
289299使用插件特定的方法扩展编辑器的变换。
290300
291301` ` ` ts
292302(transforms: (ctx: PlatePluginContext<AnyPluginConfig>) => any) => PlatePlugin<C>
293303` ` `
294304< / APIItem >
295305
296- <APIItem name = " extendOptions" type = " function " >
306+ < APIItem name = " extendOptions" type = " (options: (ctx: PlatePluginContext) => Record<string, any>) => PlatePlugin " >
297307使用选择器扩展插件选项。
298308
299309` ` ` ts
300310(options: (ctx: PlatePluginContext<AnyPluginConfig>) => any) => PlatePlugin<C>
301311` ` `
302312< / APIItem >
313+
314+ < APIItem name = " overrideEditor" type = " function" >
315+ 创建一个具有覆盖编辑器方法的新插件实例。通过 ` tf ` 和 ` api ` 参数提供对原始方法的访问。可以多次调用以层叠不同的覆盖。
316+
317+ ` ` ` ts
318+ overrideEditor(({ editor, tf: { deleteForward }, api: { isInline } }) => ({
319+ transforms: {
320+ // 覆盖 transforms
321+ deleteForward(options) {
322+ deleteForward(options);
323+ },
324+ },
325+ api: {
326+ // 覆盖 API 方法
327+ isInline(element) {
328+ return isInline(element);
329+ },
330+ },
331+ })) => PlatePlugin<C>
332+ ` ` `
333+
334+ - 修改编辑器行为的首选方法
335+ - 对原始方法的类型安全访问
336+ - 在 transforms 和 API 之间清晰分离
337+ - 可以多次链式调用
338+ < / APIItem >
303339< / APIAttributes >
304340
305341## Plugin Context
0 commit comments