ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â ð shadcn/directory/udecode/plate/(plugins)/(styles)/indent.cn â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â
title: çŒ©è¿ docs:
indent 屿§ãæ·»å 猩è¿åèœæå¿«çæ¹æ³æ¯äœ¿çš IndentKitïŒå®å
å«é¢é
眮ç IndentPluginïŒé对段èœãæ é¢ãåŒçšåã代ç åå忢å
çŽ ã
ParagraphãHeadingãBlockquoteãCodeBlock å Toggle å
çŽ ä»¥æ¯æ indent 屿§ã24pxãå° kit æ·»å å°äœ çæä»¶äžïŒ
import { createPlateEditor } from 'platejs/react';
import { IndentKit } from '@/components/editor/plugins/indent-kit';
const editor = createPlateEditor({
plugins: [
// ...otherPlugins,
...IndentKit,
],
});
</Steps>
npm install @platejs/indent
åšå建çŒèŸåšæ¶ïŒå° IndentPlugin å
å«åšäœ ç Plate æä»¶æ°ç»äžã
import { IndentPlugin } from '@platejs/indent/react';
import { createPlateEditor } from 'platejs/react';
const editor = createPlateEditor({
plugins: [
// ...otherPlugins,
IndentPlugin,
],
});
äœ å¯ä»¥é
眮 IndentPlugin 以é对ç¹å®å
çŽ å¹¶èªå®ä¹çŒ©è¿è¡äžºã
import { IndentPlugin } from '@platejs/indent/react';
import { KEYS } from 'platejs';
import { createPlateEditor } from 'platejs/react';
const editor = createPlateEditor({
plugins: [
// ...otherPlugins,
IndentPlugin.configure({
inject: {
nodeProps: {
styleKey: 'marginLeft',
},
targetPlugins: [...KEYS.heading, KEYS.p, KEYS.blockquote],
},
options: {
offset: 24,
unit: 'px',
indentMax: 10,
},
}),
],
});
inject.nodeProps.styleKeyïŒå°æ³šå
¥ç屿§æ å°å° CSS marginLeft 屿§ãinject.targetPluginsïŒäžäžªæä»¶é®æ°ç»ïŒæç€ºåªäºå
çŽ ç±»åå¯ä»¥çŒ©è¿ãoptions.offsetïŒçŒ©è¿åç§»éïŒåçŽ ïŒïŒé»è®€ïŒ24ïŒãoptions.unitïŒçŒ©è¿åŒçåäœïŒé»è®€ïŒ'px'ïŒãoptions.indentMaxïŒå
讞çæå€§çŒ©è¿æ¬¡æ°ãäœ å¯ä»¥å° IndentToolbarButton æ·»å å°äœ çå·¥å
·æ äžä»¥æ§å¶çŒ©è¿ã
IndentPluginçšäºçŒ©è¿å级å
çŽ çæä»¶ãå®å inject.targetPlugins æå®çå
çŽ æ³šå
¥ indent 屿§å¹¶åºçš marginLeft æ ·åŒã
indent猩è¿çŒèŸåšäžçéå®åã
<API name="indent"> <APIOptions type="SetIndentOptions" optional> çšäºçŒ©è¿åçé项ã </APIOptions> </API>outdentåå°éå®åç猩è¿ã
<API name="outdent"> <APIOptions type="SetIndentOptions" optional> çšäºåæ¶çŒ©è¿åçé项ã </APIOptions> </API>setIndent䞺éå®çåæ·»å 猩è¿åç§»éã
<API name="setIndent"> <APIOptions type="SetIndentOptions"> <APIItem name="offset" type="number" optional> åš `(offset * element.indent) + unit` äžäœ¿çšç猩è¿åç§»éã - **é»è®€åŒïŒ** `1` </APIItem> <APIItem name="getNodesOptions" type="EditorNodesOptions" optional> è·åèŠçŒ©è¿çèç¹çé项ã </APIItem> <APIItem name="setNodesProps" type="object" optional> èŠè®Ÿçœ®å°èŠçŒ©è¿çèç¹äžçå ¶ä»å±æ§ã </APIItem> <APIItem name="unsetNodesProps" type="string[]" optional> èŠä»æªçŒ©è¿çèç¹äžåæ¶è®Ÿçœ®çå ¶ä»å±æ§ã - **é»è®€åŒïŒ** `[]` </APIItem> </APIOptions> </API>SetIndentOptionsçšäºæäŸè®Ÿçœ®ææ¬å猩è¿çé项ã
<API name="SetIndentOptions"> <APIOptions> <APIItem name="offset" type="number"> 猩è¿çååïŒ1 衚瀺猩è¿ïŒ-1 è¡šç€ºåæ¶çŒ©è¿ïŒã - **é»è®€åŒïŒ** `1` </APIItem> <APIItem name="getNodesOptions" type="EditorNodesOptions<V>"> é¢å€ç `getNodes` é项ã </APIItem> <APIItem name="setNodesProps" type="object"> é¢å€ç `setNodes` é项ã </APIItem> <APIItem name="unsetNodesProps" type="string[]"> åœçŒ©è¿äžº 0 æ¶èŠåæ¶è®Ÿçœ®ç屿§ã </APIItem> </APIOptions> </API>useIndentButtonçŒ©è¿æé®ç»ä»¶çè¡äžº hookã
<API name="useIndentButton"> <APIReturns type="object"> <APIItem name="props" type="object"> çŒ©è¿æé®ç屿§ã <APISubList> <APISubListItem parent="props" name="onClick" type="function"> å€çç¹å»äºä»¶çåè°ã猩è¿éå®çå 容并èçŠçŒèŸåšã </APISubListItem> </APISubList> </APIItem> </APIReturns> </API>useOutdentButtonåæ¶çŒ©è¿æé®ç»ä»¶çè¡äžº hookã
<API name="useOutdentButton"> <APIReturns type="object"> <APIItem name="props" type="object"> åæ¶çŒ©è¿æé®ç屿§ã <APISubList> <APISubListItem parent="props" name="onClick" type="function"> å€çç¹å»äºä»¶çåè°ãåæ¶éå®å 容ç猩è¿å¹¶èçŠçŒèŸåšã </APISubListItem> </APISubList> </APIItem> </APIReturns> </API>â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ