âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â ð shadcn/directory/udecode/plate/(plugins)/(elements)/callout.cn â âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â
title: æç€ºæ¡ docs:
æå¿«æ·»å æç€ºæ¡æä»¶çæ¹åŒæ¯äœ¿çš CalloutKitïŒå®å
å«é¢é
眮ç CalloutPlugin å Plate UI ç»ä»¶ã
CalloutElement: æž²ææç€ºæ¡å
çŽ å°å¥ä»¶æ·»å å°äœ çæä»¶äžïŒ
import { createPlateEditor } from 'platejs/react';
import { CalloutKit } from '@/components/editor/plugins/callout-kit';
const editor = createPlateEditor({
plugins: [
// ...å
¶ä»æä»¶
...CalloutKit,
],
});
</Steps>
npm install @platejs/callout
åšå建çŒèŸåšæ¶ïŒå° CalloutPlugin å
å«å° Plate æä»¶æ°ç»äžã
import { CalloutPlugin } from '@platejs/callout/react';
import { createPlateEditor } from 'platejs/react';
const editor = createPlateEditor({
plugins: [
// ...å
¶ä»æä»¶
CalloutPlugin,
],
});
äœ å¯ä»¥éè¿èªå®ä¹ç»ä»¶æ¥é
眮 CalloutPlugin 以枲ææç€ºæ¡å
çŽ ã
import { CalloutPlugin } from '@platejs/callout/react';
import { createPlateEditor } from 'platejs/react';
import { CalloutElement } from '@/components/ui/callout-node';
const editor = createPlateEditor({
plugins: [
// ...å
¶ä»æä»¶
CalloutPlugin.withComponent(CalloutElement),
],
});
withComponent: æå® CalloutElement æ¥æž²ææç€ºæ¡å
çŽ CalloutPluginæç€ºæ¡å çŽ æä»¶ã
tf.insert.calloutåçŒèŸåšäžæå ¥æç€ºæ¡å çŽ ã
<API name="callout"> <APIOptions type="object"> <APIItem name="variant" type="string" optional> èŠæå ¥çæç€ºæ¡åäœç±»å </APIItem> <APIItem name="...InsertNodesOptions" type="InsertNodesOptions<V>"> æ¥èª `InsertNodesOptions` çå ¶ä»é项 </APIItem> </APIOptions> </API>useCalloutEmojiPicker管çæç€ºæ¡ç衚æ 笊å·éæ©åšåèœã
<API name="useCalloutEmojiPicker"> <APIOptions type="UseCalloutEmojiPickerOptions"> <APIItem name="isOpen" type="boolean"> 衚æ 笊å·éæ©åšæ¯åŠæåŒ </APIItem> <APIItem name="setIsOpen" type="(isOpen: boolean) => void"> 讟眮衚æ 笊å·éæ©åšæåŒç¶æçåœæ° </APIItem> </APIOptions> <APIReturns type="object"> <APIItem name="emojiToolbarDropdownProps" type="object"> 衚æ 笊å·å·¥å ·æ äžææ¡ç屿§ <APISubList> <APISubListItem parent="emojiToolbarDropdownProps" name="isOpen" type="boolean"> 衚æ 笊å·éæ©åšæ¯åŠæåŒ </APISubListItem> <APISubListItem parent="emojiToolbarDropdownProps" name="setIsOpen" type="(v: boolean) => void"> 讟眮衚æ 笊å·éæ©åšæåŒç¶æçåœæ°ïŒäŒèèåªè¯»æš¡åŒ </APISubListItem> </APISubList> </APIItem> <APIItem name="props" type="object"> 衚æ 笊å·éæ©åšç»ä»¶ç屿§ <APISubList> <APISubListItem parent="props" name="isOpen" type="boolean"> 衚æ 笊å·éæ©åšæ¯åŠæåŒ </APISubListItem> <APISubListItem parent="props" name="setIsOpen" type="(isOpen: boolean) => void"> 讟眮衚æ 笊å·éæ©åšæåŒç¶æçåœæ° </APISubListItem> <APISubListItem parent="props" name="onSelectEmoji" type="(options: { emojiValue?: any; icon?: any }) => void"> åœéæ©è¡šæ ç¬Šå·æ¶è°çšçåœæ°ãå®äŒæŽæ°æç€ºæ¡çåŸæ å¹¶å ³ééæ©åš </APISubListItem> </APISubList> </APIItem> </APIReturns> </API>TCalloutElementinterface TCalloutElement extends TElement {
variant?: string;
icon?: string;
}
<API name="TCalloutElement">
<APIAttributes>
<APIItem name="variant" type="string" optional>
æç€ºæ¡çåäœç±»å
</APIItem>
<APIItem name="icon" type="string" optional>
èŠæŸç€ºçåŸæ æè¡šæ
笊å·
</APIItem>
</APIAttributes>
</API>â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ