import React from "react"; import isEmpty from "lodash/isEmpty"; import type { UISchemaElement } from "@jsonforms/core"; import { JsonFormsCellRendererRegistryEntry, JsonFormsRendererRegistryEntry, JsonSchema, OwnPropsOfRenderer, } from "@jsonforms/core"; import { JsonFormsDispatch, useJsonForms } from "@jsonforms/react"; import Grid from "@mui/material/Grid2"; import { isHidden } from "../common/getHiddenKeys"; export const renderLayoutElements = ( elements: any, schema: JsonSchema | undefined, path: string | undefined, enabled: boolean | undefined, renderers?: JsonFormsRendererRegistryEntry[], cells?: JsonFormsCellRendererRegistryEntry[] ) => { return elements.map((child: any, index: number) => { if (isHidden(child, schema)) { return null; } return ( ); }); }; export interface MaterialLayoutRendererProps extends OwnPropsOfRenderer { elements: UISchemaElement[]; direction: "row" | "column"; } const MaterialLayoutRendererComponent = ({ visible, elements, schema, path, enabled, direction, renderers, cells, }: MaterialLayoutRendererProps) => { if (isEmpty(elements)) { return null; } else { return ( {renderLayoutElements( elements, schema, path, enabled, renderers, cells )} ); } }; export const MaterialLayoutRenderer = React.memo( MaterialLayoutRendererComponent );