diff --git a/packages/core/src/components/ComponentBuilder/ComponentBuilder.tsx b/packages/core/src/components/ComponentBuilder/ComponentBuilder.tsx index e81f8232..02d71533 100644 --- a/packages/core/src/components/ComponentBuilder/ComponentBuilder.tsx +++ b/packages/core/src/components/ComponentBuilder/ComponentBuilder.tsx @@ -1,4 +1,10 @@ -import React, { ComponentType, Fragment, ReactElement } from "react"; +import React, { + ComponentType, + Fragment, + ReactElement, + Ref, + forwardRef, +} from "react"; import { findComponentDefinitionById } from "../../compiler/findComponentDefinition"; import { isSchemaPropComponent, @@ -319,7 +325,10 @@ export type InternalNoCodeComponentProps = NoCodeComponentProps & { }; }; -function ComponentBuilder(props: ComponentBuilderProps): ReactElement | null { +const ComponentBuilder = forwardRef(function ComponentBuilder( + props: ComponentBuilderProps, + ref: Ref +): ReactElement | null { const { compiled, passedProps, path, components, ...restProps } = props; const allPassedProps: Record = { @@ -431,7 +440,7 @@ function ComponentBuilder(props: ComponentBuilderProps): ReactElement | null { }); // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { ref, __isSelected, ...restPassedProps } = allPassedProps || {}; + const { __isSelected, ...restPassedProps } = allPassedProps || {}; const runtime = { stitches: meta.stitches, @@ -459,8 +468,8 @@ function ComponentBuilder(props: ComponentBuilderProps): ReactElement | null { __easyblocks: easyblocksProp, }; - return ; -} + return ; +}); function getComponent( componentDefinition: InternalComponentDefinition, diff --git a/packages/editor/src/EditableComponentBuilder/EditableComponentBuilder.editor.tsx b/packages/editor/src/EditableComponentBuilder/EditableComponentBuilder.editor.tsx index aff58017..fbf89368 100644 --- a/packages/editor/src/EditableComponentBuilder/EditableComponentBuilder.editor.tsx +++ b/packages/editor/src/EditableComponentBuilder/EditableComponentBuilder.editor.tsx @@ -2,7 +2,7 @@ import { ComponentBuilder, ComponentBuilderProps, } from "@easyblocks/core/_internals"; -import React from "react"; +import React, { Ref, forwardRef } from "react"; import { BlocksControls } from "./BlockControls"; type EditableComponentBuilderProps = ComponentBuilderProps & { @@ -10,7 +10,10 @@ type EditableComponentBuilderProps = ComponentBuilderProps & { length: number; }; -function EditableComponentBuilder(props: EditableComponentBuilderProps) { +const EditableComponentBuilder = forwardRef(function EditableComponentBuilder( + props: EditableComponentBuilderProps, + ref: Ref +) { const { path, compiled, index, length, components, ...restPassedProps } = props; @@ -30,11 +33,12 @@ function EditableComponentBuilder(props: EditableComponentBuilderProps) { path={path} passedProps={restPassedProps} components={components} + ref={ref} /> ); return content; -} +}); export default EditableComponentBuilder;