reframe editor

This commit is contained in:
Nate Kelley 2025-08-07 22:35:41 -06:00
parent 064bc3e9c9
commit 6fa31403aa
No known key found for this signature in database
GPG Key ID: FD90372AB8D98B4F
7 changed files with 59 additions and 117 deletions

View File

@ -70,6 +70,8 @@ export const ReportPlayground: React.FC = () => {
value={usedValue}
useFixedToolbarKit={true}
readOnly={false}
containerClassName="overflow-y-auto!"
className="overflow-y-auto!"
onValueChange={logValueChanges}
/>
</div>
@ -178,6 +180,16 @@ const value: ReportElements = [
type: 'callout',
id: 'KQ0_YKgdqy'
},
{
type: 'metric',
children: [{ text: '' }],
metricId: '',
caption: [{ text: 'This is a caption' }]
},
{
type: 'characterCounter' as 'p',
children: [{ text: 'This is my character counter' }]
},
{
type: 'p',
id: 'k5Id6hcBYM',

View File

@ -1,3 +1,5 @@
'use client';
import React, { useImperativeHandle, useRef } from 'react';
import type { Value, AnyPluginConfig } from 'platejs';
import { Plate, type TPlateEditor } from 'platejs/react';

View File

@ -3,7 +3,7 @@
import { type Value, TrailingBlockPlugin } from 'platejs';
import { type TPlateEditor, useEditorRef } from 'platejs/react';
import { AIKit } from './plugins/ai-kit';
// import { AIKit } from './plugins/ai-kit';
import { AlignKit } from './plugins/align-kit';
import { AutoformatKit } from './plugins/autoformat-kit';
import { BasicBlocksKit } from './plugins/basic-blocks-kit';
@ -39,8 +39,14 @@ import { ToggleKit } from './plugins/toggle-kit';
import { BusterStreamKit } from './plugins/buster-stream-kit';
export const EditorKit = [
...AIKit,
...BlockMenuKit,
// Editing
...SlashKit,
...AutoformatKit,
...CursorOverlayKit,
...DndKit,
...EmojiKit,
...ExitBreakKit,
TrailingBlockPlugin,
// Elements
...BasicBlocksKit,
@ -60,6 +66,9 @@ export const EditorKit = [
...BasicMarksKit,
...FontKit,
// ...AIKit,
...BlockMenuKit,
// Block Style
...ListKit,
...AlignKit,
@ -70,15 +79,6 @@ export const EditorKit = [
...CommentKit,
...SuggestionKit,
// Editing
...SlashKit,
...AutoformatKit,
...CursorOverlayKit,
...DndKit,
...EmojiKit,
...ExitBreakKit,
TrailingBlockPlugin,
// Custom
...BusterStreamKit,

View File

@ -1,93 +0,0 @@
'use client';
import { type Value, TrailingBlockPlugin } from 'platejs';
import { type TPlateEditor, useEditorRef } from 'platejs/react';
import { AIKit } from './plugins/ai-kit';
import { AlignKit } from './plugins/align-kit';
import { AutoformatKit } from './plugins/autoformat-kit';
import { BasicBlocksKit } from './plugins/basic-blocks-kit';
import { BasicMarksKit } from './plugins/basic-marks-kit';
import { BlockMenuKit } from './plugins/block-menu-kit';
import { BlockPlaceholderKit } from './plugins/block-placeholder-kit';
import { CalloutKit } from './plugins/callout-kit';
import { CodeBlockKit } from './plugins/code-block-kit';
import { ColumnKit } from './plugins/column-kit';
import { CommentKit } from './plugins/comment-kit';
import { CursorOverlayKit } from './plugins/cursor-overlay-kit';
import { DateKit } from './plugins/date-kit';
import { DiscussionKit } from './plugins/discussion-kit';
import { DndKit } from './plugins/dnd-kit';
import { DocxKit } from './plugins/docx-kit';
import { EmojiKit } from './plugins/emoji-kit';
import { ExitBreakKit } from './plugins/exit-break-kit';
import { FixedToolbarKit } from './plugins/fixed-toolbar-kit';
import { FloatingToolbarKit } from './plugins/floating-toolbar-kit';
import { FontKit } from './plugins/font-kit';
import { LineHeightKit } from './plugins/line-height-kit';
import { LinkKit } from './plugins/link-kit';
import { ListKit } from './plugins/list-kit';
import { MarkdownKit } from './plugins/markdown-kit';
import { MathKit } from './plugins/math-kit';
import { MediaKit } from './plugins/media-kit';
import { MentionKit } from './plugins/mention-kit';
import { SlashKit } from './plugins/slash-kit';
import { SuggestionKit } from './plugins/suggestion-kit';
import { TableKit } from './plugins/table-kit';
import { TocKit } from './plugins/toc-kit';
import { ToggleKit } from './plugins/toggle-kit';
export const EditorKit = [
...AIKit,
...BlockMenuKit,
// Elements
...BasicBlocksKit,
...CodeBlockKit,
...TableKit,
...ToggleKit,
...TocKit,
...MediaKit,
...CalloutKit,
...ColumnKit,
...MathKit,
...DateKit,
...LinkKit,
...MentionKit,
// Marks
...BasicMarksKit,
...FontKit,
// Block Style
...ListKit,
...AlignKit,
...LineHeightKit,
// Collaboration
...DiscussionKit,
...CommentKit,
...SuggestionKit,
// Editing
...SlashKit,
...AutoformatKit,
...CursorOverlayKit,
...DndKit,
...EmojiKit,
...ExitBreakKit,
TrailingBlockPlugin,
// Parsers
...DocxKit,
...MarkdownKit,
// UI
...BlockPlaceholderKit,
...FixedToolbarKit,
...FloatingToolbarKit
];
export type MyEditor = TPlateEditor<Value, (typeof EditorKit)[number]>;
export const useEditor = () => useEditorRef<MyEditor>();

View File

@ -1,3 +1,5 @@
'use client';
import { MarkdownPlugin } from '@platejs/markdown'; //use this an not the one from server-utils
export const MarkdownKit = [MarkdownPlugin];

View File

@ -1,3 +1,5 @@
'use client';
import { type Value } from 'platejs';
import { useEditorRef, usePlateEditor, type TPlateEditor } from 'platejs/react';
import { useMemo } from 'react';
@ -6,6 +8,8 @@ import { EditorKit } from './editor-kit';
import { FIXED_TOOLBAR_KIT_KEY } from './plugins/fixed-toolbar-kit';
import type { IReportEditor } from './ReportEditor';
// Debug logs removed to avoid module-evaluation side effects
export const useReportEditor = ({
value,
disabled,
@ -30,6 +34,8 @@ export const useReportEditor = ({
return EditorKit;
}, [useFixedToolbarKit]);
// console.log('plugins', { plugins });
return usePlateEditor({
plugins,
value,

View File

@ -9,6 +9,9 @@ import { useDebounceFn } from '@/hooks/useDebounce';
import type { ReportElements } from '@buster/server-shared/reports';
//import DynamicReportEditor from '@/components/ui/report/DynamicReportEditor';
import { ReportEditor } from '@/components/ui/report/ReportEditor';
import { ReportEditorSkeleton } from '../../../components/ui/report/ReportEditorSkeleton';
import DynamicReportEditor from '@/components/ui/report/DynamicReportEditor';
import type { Value } from 'platejs';
export const ReportPageController: React.FC<{
reportId: string;
@ -42,19 +45,29 @@ export const ReportPageController: React.FC<{
return (
<div className={cn('space-y-1.5 pt-9 sm:px-[max(64px,calc(50%-350px))]', className)}>
<ReportPageHeader
name={report?.name}
updatedAt={report?.updated_at}
onChangeName={onChangeName}
/>
{report ? (
<>
<ReportPageHeader
name={report?.name}
updatedAt={report?.updated_at}
onChangeName={onChangeName}
/>
<ReportEditor
// ref={editor}
value={content}
onValueChange={onChangeContent}
readOnly={readOnly || !report}
className="px-0!"
/>
<ReportEditor
// ref={editor}
value={content}
placeholder="Start typing..."
disabled={false}
variant="default"
useFixedToolbarKit={true}
onValueChange={onChangeContent}
readOnly={readOnly || !report}
className="px-0!"
/>
</>
) : (
<ReportEditorSkeleton />
)}
</div>
);
};