1- import { memo , useMemo } from "react" ;
1+ import { useMemo } from "react" ;
22import { useShallow } from "zustand/react/shallow" ;
33
44import { useAppStore } from "../../../../../store" ;
@@ -10,29 +10,46 @@ import { rootDroppableId } from "../../../../../lib/root-droppable-id";
1010import {
1111 ComponentData ,
1212 DefaultRootRenderProps ,
13+ FieldTransforms ,
1314 RootData ,
1415} from "../../../../../types" ;
1516
16- import { useRichtextProps } from "../../../../RichTextEditor/lib/use-richtext-props" ;
1717import { DropZoneEditPure , DropZonePure } from "../../../../DropZone" ;
18+ import { getInlineTextTransform } from "../../../../../lib/field-transforms/default-transforms/inline-text-transform" ;
19+ import { getRichTextTransform } from "../../../../../lib/field-transforms/default-transforms/rich-text-transform" ;
1820
1921const slotFieldTransforms = getSlotTransform ( DropZoneEditPure ) ;
2022
2123/**
22- * Renders the puck data in the editor where this component is rendered as an editable page.
24+ * Renders the puck data as an editable page.
2325 */
24- const EditorPage = memo ( ( ) => {
26+ const EditPage = ( ) => {
2527 // All the props, slot props are defaulted to null
2628 const flatRootProps = useAppStore (
2729 useShallow ( ( s ) => s . state . indexes . nodes . root ?. flatData . props )
2830 ) ;
2931 const config = useAppStore ( ( s ) => s . config ) ;
3032 const metadata = useAppStore ( ( s ) => s . metadata ) ;
3133 const userFieldTransforms = useAppStore ( ( s ) => s . fieldTransforms ) ;
34+ const plugins = useAppStore ( ( s ) => s . plugins ) ;
3235
3336 const combinedFieldTransforms = useMemo (
34- ( ) => ( { ...slotFieldTransforms , ...userFieldTransforms } ) ,
35- [ userFieldTransforms ]
37+ ( ) => ( {
38+ ...slotFieldTransforms ,
39+ ...getInlineTextTransform ( ) ,
40+ ...getRichTextTransform ( ) ,
41+ ...plugins . reduce < FieldTransforms > ( ( acc , plugin ) => {
42+ if ( ! plugin . fieldTransforms ) return acc ;
43+
44+ Object . keys ( plugin . fieldTransforms ) . forEach ( ( key ) => {
45+ acc [ key as keyof typeof acc ] = plugin . fieldTransforms ! [ key ] ;
46+ } ) ;
47+
48+ return acc ;
49+ } , { } ) ,
50+ ...userFieldTransforms ,
51+ } ) ,
52+ [ plugins , userFieldTransforms ]
3653 ) ;
3754
3855 // Root as object with slots still defaulted to null
@@ -67,24 +84,14 @@ const EditorPage = memo(() => {
6784 } ;
6885 } , [ propsWithSlots , metadata ] ) ;
6986
70- // Get the richtext props for the root render.
71- const richtextProps = useRichtextProps (
72- config . root ?. fields ?? { } ,
73- renderProps ,
74- userFieldTransforms
75- ) ;
76-
7787 return config . root ?. render ? (
7888 config . root ?. render ( {
7989 ...renderProps ,
80- ...richtextProps ,
8190 id : "puck-root" ,
8291 } )
8392 ) : (
8493 < > { renderProps . children } </ >
8594 ) ;
86- } ) ;
87-
88- EditorPage . displayName = "EditorPage" ;
95+ } ;
8996
90- export default EditorPage ;
97+ export default EditPage ;
0 commit comments