Loading...
Files
components/demo.tsx
'use client';
import * as React from 'react';
import { Plate, usePlateEditor } from 'platejs/react';
import { EditorKit } from '@/components/editor/editor-kit';
import { Editor, EditorContainer } from '@/components/ui/editor';
import { DEMO_VALUES } from './values/demo-values';
export default function Demo({ id }: { id: string }) {
const editor = usePlateEditor({
plugins: EditorKit,
value: DEMO_VALUES[id],
});
return (
<Plate editor={editor}>
<EditorContainer variant="demo">
<Editor />
</EditorContainer>
</Plate>
);
}
Kit Usage
Installation
The fastest way to add line height functionality is with the LineHeightKit
, which includes pre-configured LineHeightPlugin
targeting paragraph and heading elements.
'use client';
import { LineHeightPlugin } from '@platejs/basic-styles/react';
import { KEYS } from 'platejs';
export const LineHeightKit = [
LineHeightPlugin.configure({
inject: {
nodeProps: {
defaultNodeValue: 1.5,
validNodeValues: [1, 1.2, 1.5, 2, 3],
},
targetPlugins: [...KEYS.heading, KEYS.p],
},
}),
];
- Configures
Paragraph
andHeading
elements (H1-H6) to support thelineHeight
property. - Provides a default line height of
1.5
and valid values[1, 1.2, 1.5, 2, 3]
.
Add Kit
Add the kit to your plugins:
import { createPlateEditor } from 'platejs/react';
import { LineHeightKit } from '@/components/editor/plugins/line-height-kit';
const editor = createPlateEditor({
plugins: [
// ...otherPlugins,
...LineHeightKit,
],
});
Manual Usage
Installation
pnpm add @platejs/basic-styles
Add Plugin
Include LineHeightPlugin
in your Plate plugins array when creating the editor.
import { LineHeightPlugin } from '@platejs/basic-styles/react';
import { createPlateEditor } from 'platejs/react';
const editor = createPlateEditor({
plugins: [
// ...otherPlugins,
LineHeightPlugin,
],
});
Configure Plugin
You can configure the LineHeightPlugin
to target specific elements and define default or valid line height values.
import { LineHeightPlugin } from '@platejs/basic-styles/react';
import { KEYS } from 'platejs/react';
import { createPlateEditor } from 'platejs/react';
const editor = createPlateEditor({
plugins: [
// ...otherPlugins,
LineHeightPlugin.configure({
inject: {
nodeProps: {
defaultNodeValue: 1.5,
validNodeValues: [1, 1.2, 1.5, 2, 3],
},
targetPlugins: [KEYS.p, KEYS.h1, KEYS.h2, KEYS.h3],
},
}),
],
});
inject.nodeProps.defaultNodeValue
: Sets a default line height (e.g.,1.5
).inject.nodeProps.validNodeValues
: Defines a list of common line height values, useful for toolbar dropdowns.inject.targetPlugins
: An array of plugin keys (e.g.,KEYS.p
,KEYS.h1
) indicating which element types will receive thelineHeight
prop.
Add Toolbar Button
You can add LineHeightToolbarButton
to your Toolbar to control line height.
Plugins
LineHeightPlugin
Plugin for setting line height on blocks. It injects a lineHeight
prop into the elements specified by inject.targetPlugins
.
Transforms
tf.lineHeight.setNodes
Sets the line height for selected nodes in the editor.