Back to Plate

标题组件

docs/(plugins)/(functionality)/caption.cn.mdx

1.0.04.6 KB
Original Source
<ComponentPreview name="media-demo" /> <PackageInfo>

功能特性

  • 为图片、视频、音频文件等媒体元素添加标题说明
  • 通过方向键在区块内选择标题
  • 使用文本区域组件进行内联标题编辑
</PackageInfo>

套件使用

<Steps>

安装

最快捷的方式是使用MediaKit套件,它包含预配置的CaptionPlugin以及媒体插件和它们的Plate UI组件。

<ComponentSource name="media-kit" />
  • Caption: 为媒体元素渲染标题组件

添加套件

tsx
import { createPlateEditor } from 'platejs/react';
import { MediaKit } from '@/components/editor/plugins/media-kit';

const editor = createPlateEditor({
  plugins: [
    // ...其他插件
    ...MediaKit,
  ],
});
</Steps>

手动配置

<Steps>

安装

bash
npm install @platejs/caption

添加插件

tsx
import { CaptionPlugin } from '@platejs/caption/react';
import { createPlateEditor } from 'platejs/react';

const editor = createPlateEditor({
  plugins: [
    // ...其他插件
    CaptionPlugin,
  ],
});

配置插件

配置哪些媒体插件应支持标题功能:

tsx
import { KEYS } from 'platejs';
import { CaptionPlugin } from '@platejs/caption/react';
import {
  AudioPlugin,
  FilePlugin,
  ImagePlugin,
  MediaEmbedPlugin,
  VideoPlugin,
} from '@platejs/media/react';

const editor = createPlateEditor({
  plugins: [
    // ...其他插件
    ImagePlugin,
    VideoPlugin,
    AudioPlugin,
    FilePlugin,
    MediaEmbedPlugin,
    CaptionPlugin.configure({
      options: {
        query: {
          allow: [KEYS.img, KEYS.video, KEYS.audio, KEYS.file, KEYS.mediaEmbed],
        },
      },
    }),
  ],
});
  • query.allow: 支持标题功能的插件键名数组
</Steps>

插件

CaptionPlugin

为媒体元素添加标题功能的插件。

<API name="CaptionPlugin"> <APIOptions> <APIItem name="query" type="{ allow: string[] }" required> 配置哪些插件支持标题功能 <APISubList> <APISubListItem parent="query" name="allow" type="string[]"> 可添加标题的区块插件键名 </APISubListItem> </APISubList> </APIItem> <APIItem name="focusEndPath" type="Path" optional> 标题末尾的聚焦路径 - **默认值:** `null` </APIItem> <APIItem name="focusStartPath" type="Path" optional> 标题起始的聚焦路径 - **默认值:** `null` </APIItem> <APIItem name="visibleId" type="string" optional> 当前可见标题的ID - **默认值:** `null` </APIItem> </APIOptions> </API>

类型

TCaptionElement

继承自TElement

<API name="TCaptionElement"> <APIAttributes> <APIItem name="caption" type="Descendant[]" optional> 标题值,由子节点数组构成 </APIItem> </APIAttributes> </API>

组件

<Caption>

<API name="Caption"> <APIProps> <APIItem name="options" type="object" optional> 标题组件的配置选项 </APIItem> <APIItem name="state" type="object" optional> 标题组件的状态 <APISubList> <APISubListItem parent="state" name="captionString" type="string" optional> 表示标题的字符串 </APISubListItem> <APISubListItem parent="state" name="selected" type="boolean" optional> 标题组件是否被选中 </APISubListItem> <APISubListItem parent="state" name="readOnly" type="boolean" optional> 标题组件是否处于只读模式 </APISubListItem> </APISubList> </APIItem> <APIOptions type="object"> <APIItem name="readOnly" type="boolean" optional> 标题组件是否处于只读模式 </APIItem> </APIOptions> </APIProps> </API>

<CaptionTextarea>

<API name="CaptionTextarea"> <APIProps> <APIItem name="state" type="object"> 标题文本区域的状态 <APISubList> <APISubListItem parent="state" name="textareaRef" type="Ref"> 文本区域元素的引用 </APISubListItem> <APISubListItem parent="state" name="captionValue" type="TextareaAutosizeProps['value']"> 文本区域中显示的标题值 </APISubListItem> <APISubListItem parent="state" name="setCaptionValue" type="(value: TextareaAutosizeProps['value']) => void"> 更新标题值的函数 </APISubListItem> <APISubListItem parent="state" name="readOnly" type="boolean"> 标题组件是否处于只读模式 </APISubListItem> <APISubListItem parent="state" name="element" type="TCaptionElement"> 标题元素 </APISubListItem> </APISubList> </APIItem> </APIProps> </API>