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
ParagraphandHeadingelements (H1-H6) to support thelineHeightproperty. - Provides a default line height of
1.5and 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 thelineHeightprop.
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.