-
Notifications
You must be signed in to change notification settings - Fork 952
Closed
Labels
Description
Description
I use generated link-toolbar-button component:
'use client';
import {
useLinkToolbarButton,
useLinkToolbarButtonState,
} from '@platejs/link/react';
import { Link } from 'lucide-react';
import { ToolbarButton } from './toolbar';
export function LinkToolbarButton(
props: React.ComponentProps<typeof ToolbarButton>
) {
const state = useLinkToolbarButtonState();
const { props: buttonProps } = useLinkToolbarButton(state);
return (
<ToolbarButton {...props} {...buttonProps} data-plate-focus tooltip="Link">
<Link />
</ToolbarButton>
);
}This is my editor:
const editor = usePlateEditor({
value: commentToEdit?.rawContent,
plugins: EditorKit,
});
return (
<>
<Plate editor={editor} onChange={async ({ value }) => {
setContent(await serializeHtml(editor));
setRawContent(value);
}}>
<FixedToolbar className="justify-start rounded-t-lg bg-white border-b-0">
<MarkToolbarButton className={"border-0"} nodeType="bold">B</MarkToolbarButton>
<MarkToolbarButton className={"border-0"} nodeType="italic">I</MarkToolbarButton>
<MarkToolbarButton className={"border-0"} nodeType="underline">U</MarkToolbarButton>
<LinkToolbarButton className={"border-0"} />
</FixedToolbar>
<EditorContainer className={"border border-outline-variant rounded-lg !h-auto"}>
<Editor placeholder="Type your comment here..." className={"!p-5 min-h-[180px]"} />
</EditorContainer>
</Plate>
</>
);EditorKit:
'use client';
import { TrailingBlockPlugin,type Value } from 'platejs';
import { type TPlateEditor, useEditorRef } from 'platejs/react';
import { BasicBlocksKit } from './basic-blocks-kit';
import { BasicMarksKit } from './basic-marks-kit';
import { LinkKit } from './link-kit';
export const EditorKit = [
...BasicBlocksKit,
...LinkKit,
...BasicMarksKit,
TrailingBlockPlugin,
];
export type PlateEditor = TPlateEditor<Value, (typeof EditorKit)[number]>;
export const useEditor = () => useEditorRef<PlateEditor>();LinkKit:
'use client';
import { LinkPlugin } from '@platejs/link/react';
import { LinkElement } from '../ui/link-node.tsx';
import { LinkFloatingToolbar } from '../ui/link-toolbar.tsx';
export const LinkKit = [
LinkPlugin.configure({
render: {
node: LinkElement,
afterEditable: () => <LinkFloatingToolbar />,
},
}),
];When I try to submit a link, it throws an error, refer to logs. Button and floating bar is rendered as it should. Am I doing something wrong?
Plate version
49.2.21
Slate React version
0.117.4
Logs
chunk-CR3ZKNR2.js?v=6c5e91d1:13030 Uncaught (in promise) Error: Plate hooks must be used inside a Plate or PlateController
at usePlateStore (chunk-CR3ZKNR2.js?v=6c5e91d1:13030:11)
at useEditorMounted (chunk-CR3ZKNR2.js?v=6c5e91d1:13067:30)
at PlateElement2 (chunk-CR3ZKNR2.js?v=6c5e91d1:12442:19)
at Object.react_stack_bottom_frame (server.browser-WUDB6M23.js:7078:18)
at renderWithHooks (server.browser-WUDB6M23.js:3734:24)
at renderElement (server.browser-WUDB6M23.js:4425:41)
at retryNode (server.browser-WUDB6M23.js:4708:43)
at renderNodeDestructive (server.browser-WUDB6M23.js:4668:270)
at finishFunctionComponent (server.browser-WUDB6M23.js:3752:238)
at renderElement (server.browser-WUDB6M23.js:4029:13)Reactions are currently unavailable