@jsonforms/material-renderers 3.7.0 → 3.8.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonforms-react-material.esm.js","sources":["../src/complex/MaterialAllOfRenderer.tsx","../src/complex/CombinatorProperties.tsx","../src/complex/TabSwitchConfirmDialog.tsx","../src/complex/MaterialAnyOfRenderer.tsx","../src/complex/NoBorderTableCell.tsx","../src/complex/ValidationIcon.tsx","../src/complex/TableToolbar.tsx","../src/complex/MaterialTableControl.tsx","../src/complex/DeleteDialog.tsx","../src/complex/MaterialArrayControlRenderer.tsx","../src/util/focus.ts","../src/mui-controls/MuiAutocomplete.tsx","../src/mui-controls/MuiCheckbox.tsx","../src/util/datejs.tsx","../src/util/layout.tsx","../src/util/theme.ts","../src/util/debounce.ts","../src/util/i18nDefaults.ts","../src/mui-controls/MuiInputInteger.tsx","../src/mui-controls/MuiInputNumber.tsx","../src/mui-controls/MuiInputNumberFormat.tsx","../src/mui-controls/MuiInputText.tsx","../src/mui-controls/MuiInputTime.tsx","../src/mui-controls/MuiSelect.tsx","../src/mui-controls/MuiToggle.tsx","../src/complex/MaterialEnumArrayRenderer.tsx","../src/complex/MaterialObjectRenderer.tsx","../src/complex/MaterialOneOfRenderer.tsx","../src/additional/MaterialLabelRenderer.tsx","../src/layouts/ArrayToolbar.tsx","../src/additional/ListWithDetailMasterItem.tsx","../src/additional/MaterialListWithDetailRenderer.tsx","../src/controls/MaterialInputControl.tsx","../src/controls/MaterialAnyOfStringOrEnumControl.tsx","../src/controls/MaterialBooleanControl.tsx","../src/controls/MaterialBooleanToggleControl.tsx","../src/controls/MaterialDateControl.tsx","../src/controls/MaterialDateTimeControl.tsx","../src/controls/MaterialEnumControl.tsx","../src/controls/MaterialIntegerControl.tsx","../src/controls/MaterialNativeControl.tsx","../src/controls/MaterialNumberControl.tsx","../src/controls/MaterialOneOfEnumControl.tsx","../src/controls/MaterialRadioGroup.tsx","../src/controls/MaterialOneOfRadioGroupControl.tsx","../src/controls/MaterialRadioGroupControl.tsx","../src/controls/MaterialSliderControl.tsx","../src/controls/MaterialTextControl.tsx","../src/controls/MaterialTimeControl.tsx","../src/layouts/ExpandPanelRenderer.tsx","../src/layouts/MaterialGroupLayout.tsx","../src/layouts/MaterialHorizontalLayout.tsx","../src/layouts/MaterialVerticalLayout.tsx","../src/layouts/MaterialCategorizationLayout.tsx","../src/layouts/MaterialArrayLayout.tsx","../src/layouts/MaterialArrayLayoutRenderer.tsx","../src/cells/MaterialBooleanCell.tsx","../src/cells/MaterialBooleanToggleCell.tsx","../src/cells/MaterialDateCell.tsx","../src/cells/MaterialEnumCell.tsx","../src/cells/MaterialIntegerCell.tsx","../src/cells/MaterialNumberCell.tsx","../src/cells/MaterialNumberFormatCell.tsx","../src/cells/MaterialOneOfEnumCell.tsx","../src/cells/MaterialTextCell.tsx","../src/cells/MaterialTimeCell.tsx","../src/layouts/MaterialCategorizationStepperLayout.tsx","../src/additional/unwrapped.ts","../src/complex/unwrapped.ts","../src/controls/unwrapped.ts","../src/layouts/unwrapped.ts","../src/index.ts"],"sourcesContent":["/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\n\nimport {\n createCombinatorRenderInfos,\n findMatchingUISchema,\n isAllOfControl,\n JsonSchema,\n RankedTester,\n rankWith,\n StatePropsOfCombinator,\n} from '@jsonforms/core';\nimport { JsonFormsDispatch, withJsonFormsAllOfProps } from '@jsonforms/react';\n\nexport const MaterialAllOfRenderer = ({\n schema,\n rootSchema,\n visible,\n renderers,\n cells,\n path,\n uischemas,\n uischema,\n}: StatePropsOfCombinator) => {\n const delegateUISchema = findMatchingUISchema(uischemas)(\n schema,\n uischema.scope,\n path\n );\n\n if (!visible) {\n return null;\n }\n\n if (delegateUISchema) {\n return (\n <JsonFormsDispatch\n schema={schema}\n uischema={delegateUISchema}\n path={path}\n renderers={renderers}\n cells={cells}\n />\n );\n }\n const allOfRenderInfos = createCombinatorRenderInfos(\n (schema as JsonSchema).allOf,\n rootSchema,\n 'allOf',\n uischema,\n path,\n uischemas\n );\n\n return (\n <>\n {allOfRenderInfos.map((allOfRenderInfo, allOfIndex) => (\n <JsonFormsDispatch\n key={allOfIndex}\n schema={allOfRenderInfo.schema}\n uischema={allOfRenderInfo.uischema}\n path={path}\n renderers={renderers}\n cells={cells}\n />\n ))}\n </>\n );\n};\n\nexport const materialAllOfControlTester: RankedTester = rankWith(\n 3,\n isAllOfControl\n);\n\nexport default withJsonFormsAllOfProps(MaterialAllOfRenderer);\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n Generate,\n JsonSchema,\n UISchemaElement,\n isLayout,\n} from '@jsonforms/core';\nimport { JsonFormsDispatch } from '@jsonforms/react';\nimport omit from 'lodash/omit';\n\ninterface CombinatorPropertiesProps {\n schema: JsonSchema;\n combinatorKeyword: 'oneOf' | 'anyOf';\n path: string;\n rootSchema: JsonSchema;\n}\n\nexport class CombinatorProperties extends React.Component<\n CombinatorPropertiesProps,\n // TODO fix @typescript-eslint/ban-types\n // eslint-disable-next-line @typescript-eslint/ban-types\n {}\n> {\n render() {\n const { schema, combinatorKeyword, path, rootSchema } = this.props;\n\n const otherProps: JsonSchema = omit(\n schema,\n combinatorKeyword\n ) as JsonSchema;\n const foundUISchema: UISchemaElement = Generate.uiSchema(\n otherProps,\n 'VerticalLayout',\n undefined,\n rootSchema\n );\n let isLayoutWithElements = false;\n if (foundUISchema !== null && isLayout(foundUISchema)) {\n isLayoutWithElements = foundUISchema.elements.length > 0;\n }\n\n if (isLayoutWithElements) {\n return (\n <JsonFormsDispatch\n schema={otherProps}\n path={path}\n uischema={foundUISchema}\n />\n );\n }\n\n return null;\n }\n}\n\nexport default CombinatorProperties;\n","import React from 'react';\n\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n} from '@mui/material';\n\nexport interface TabSwitchConfirmDialogProps {\n open: boolean;\n handleClose: () => void;\n confirm: () => void;\n cancel: () => void;\n id: string;\n}\n\nexport const TabSwitchConfirmDialog = ({\n open,\n handleClose,\n confirm,\n cancel,\n id,\n}: TabSwitchConfirmDialogProps) => {\n return (\n <Dialog\n open={open}\n onClose={handleClose}\n aria-labelledby='alert-dialog-title'\n aria-describedby='alert-dialog-description'\n >\n <DialogTitle id='alert-dialog-title'>{'Clear form?'}</DialogTitle>\n <DialogContent>\n <DialogContentText id='alert-dialog-description'>\n Your data will be cleared if you navigate away from this tab. Do you\n want to proceed?\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button onClick={cancel} color='primary'>\n No\n </Button>\n <Button\n onClick={confirm}\n color='primary'\n autoFocus\n id={`${id}-confirm-yes`}\n >\n Yes\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { useCallback, useState } from 'react';\n\nimport {\n CombinatorRendererProps,\n createCombinatorRenderInfos,\n createDefaultValue,\n isAnyOfControl,\n JsonSchema,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport { JsonFormsDispatch, withJsonFormsAnyOfProps } from '@jsonforms/react';\nimport { Tab, Tabs } from '@mui/material';\nimport CombinatorProperties from './CombinatorProperties';\nimport isEmpty from 'lodash/isEmpty';\nimport { TabSwitchConfirmDialog } from './TabSwitchConfirmDialog';\n\nexport const MaterialAnyOfRenderer = ({\n handleChange,\n schema,\n rootSchema,\n indexOfFittingSchema,\n visible,\n path,\n renderers,\n cells,\n uischema,\n uischemas,\n id,\n data,\n}: CombinatorRendererProps) => {\n const [selectedAnyOf, setSelectedAnyOf] = useState(indexOfFittingSchema || 0);\n const [confirmDialogOpen, setConfirmDialogOpen] = useState(false);\n const [newSelectedIndex, setNewSelectedIndex] = useState(0);\n\n const handleClose = useCallback(\n () => setConfirmDialogOpen(false),\n [setConfirmDialogOpen]\n );\n\n const handleTabChange = useCallback(\n (_event: any, newIndex: number) => {\n if (\n isEmpty(data) ||\n typeof data ===\n typeof createDefaultValue(\n anyOfRenderInfos[newIndex].schema,\n rootSchema\n )\n ) {\n setSelectedAnyOf(newIndex);\n } else {\n setNewSelectedIndex(newIndex);\n setConfirmDialogOpen(true);\n }\n },\n [setConfirmDialogOpen, setSelectedAnyOf, data]\n );\n\n const openNewTab = (newIndex: number) => {\n handleChange(\n path,\n createDefaultValue(anyOfRenderInfos[newIndex].schema, rootSchema)\n );\n setSelectedAnyOf(newIndex);\n };\n\n const confirm = useCallback(() => {\n openNewTab(newSelectedIndex);\n setConfirmDialogOpen(false);\n }, [handleChange, createDefaultValue, newSelectedIndex]);\n\n const anyOf = 'anyOf';\n const anyOfRenderInfos = createCombinatorRenderInfos(\n (schema as JsonSchema).anyOf,\n rootSchema,\n anyOf,\n uischema,\n path,\n uischemas\n );\n\n if (!visible) {\n return null;\n }\n\n return (\n <>\n <CombinatorProperties\n schema={schema}\n combinatorKeyword={anyOf}\n path={path}\n rootSchema={rootSchema}\n />\n <Tabs value={selectedAnyOf} onChange={handleTabChange}>\n {anyOfRenderInfos.map((anyOfRenderInfo) => (\n <Tab key={anyOfRenderInfo.label} label={anyOfRenderInfo.label} />\n ))}\n </Tabs>\n {anyOfRenderInfos.map(\n (anyOfRenderInfo, anyOfIndex) =>\n selectedAnyOf === anyOfIndex && (\n <JsonFormsDispatch\n key={anyOfIndex}\n schema={anyOfRenderInfo.schema}\n uischema={anyOfRenderInfo.uischema}\n path={path}\n renderers={renderers}\n cells={cells}\n />\n )\n )}\n <TabSwitchConfirmDialog\n cancel={handleClose}\n confirm={confirm}\n id={'anyOf-' + id}\n open={confirmDialogOpen}\n handleClose={handleClose}\n />\n </>\n );\n};\n\nexport const materialAnyOfControlTester: RankedTester = rankWith(\n 3,\n isAnyOfControl\n);\n\nexport default withJsonFormsAnyOfProps(MaterialAnyOfRenderer);\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport { styled, TableCell } from '@mui/material';\nimport React from 'react';\n\nconst StyledTableCell = styled(TableCell)({\n borderBottom: 'none',\n});\n\nconst NoBorderTableCell = ({ children, ...otherProps }: any) => (\n <StyledTableCell {...otherProps}>{children}</StyledTableCell>\n);\n\nexport default NoBorderTableCell;\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\n\nimport { ErrorOutline } from '@mui/icons-material';\nimport { Badge, Tooltip, styled } from '@mui/material';\n\nconst StyledBadge = styled(Badge)(({ theme }: any) => ({\n color: theme.palette.error.main,\n}));\n\nexport interface ValidationProps {\n errorMessages: string;\n id: string;\n}\n\nconst ValidationIcon: React.FC<ValidationProps> = ({ errorMessages, id }) => {\n return (\n <Tooltip id={id} title={errorMessages}>\n <StyledBadge badgeContent={errorMessages.split('\\n').length}>\n <ErrorOutline color='inherit' />\n </StyledBadge>\n </Tooltip>\n );\n};\n\nexport default ValidationIcon;\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n ControlElement,\n createDefaultValue,\n JsonSchema,\n ArrayTranslations,\n} from '@jsonforms/core';\nimport {\n IconButton,\n TableRow,\n Tooltip,\n Grid,\n Typography,\n FormHelperText,\n Stack,\n} from '@mui/material';\nimport { Add } from '@mui/icons-material';\nimport ValidationIcon from './ValidationIcon';\nimport NoBorderTableCell from './NoBorderTableCell';\n\nexport interface MaterialTableToolbarProps {\n numColumns: number;\n errors: string;\n label: string;\n description: string;\n path: string;\n uischema: ControlElement;\n schema: JsonSchema;\n rootSchema: JsonSchema;\n enabled: boolean;\n translations: ArrayTranslations;\n addItem(path: string, value: any): () => void;\n disableAdd?: boolean;\n}\n\nconst fixedCellSmall = {\n paddingLeft: 0,\n paddingRight: 0,\n};\n\nconst TableToolbar = React.memo(function TableToolbar({\n numColumns,\n errors,\n label,\n description,\n path,\n addItem,\n schema,\n enabled,\n translations,\n rootSchema,\n disableAdd,\n}: MaterialTableToolbarProps) {\n return (\n <TableRow>\n <NoBorderTableCell colSpan={numColumns}>\n <Stack>\n <Grid\n container\n justifyContent={'flex-start'}\n alignItems={'center'}\n spacing={2}\n >\n <Grid>\n <Typography variant={'h6'}>{label}</Typography>\n </Grid>\n <Grid>\n {errors.length !== 0 && (\n <Grid>\n <ValidationIcon\n id='tooltip-validation'\n errorMessages={errors}\n />\n </Grid>\n )}\n </Grid>\n </Grid>\n {description && <FormHelperText>{description}</FormHelperText>}\n </Stack>\n </NoBorderTableCell>\n {enabled && !disableAdd ? (\n <NoBorderTableCell align='right' style={fixedCellSmall}>\n <Tooltip\n id='tooltip-add'\n title={translations.addTooltip}\n placement='bottom'\n >\n <IconButton\n aria-label={translations.addAriaLabel}\n onClick={addItem(path, createDefaultValue(schema, rootSchema))}\n size='large'\n >\n <Add />\n </IconButton>\n </Tooltip>\n </NoBorderTableCell>\n ) : null}\n </TableRow>\n );\n});\n\nexport default TableToolbar;\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport isEmpty from 'lodash/isEmpty';\nimport union from 'lodash/union';\nimport {\n DispatchCell,\n JsonFormsStateContext,\n useJsonForms,\n} from '@jsonforms/react';\nimport startCase from 'lodash/startCase';\nimport range from 'lodash/range';\nimport React, { Fragment, useMemo } from 'react';\nimport {\n FormHelperText,\n Grid,\n IconButton,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Tooltip,\n Typography,\n} from '@mui/material';\nimport {\n ArrayLayoutProps,\n ControlElement,\n errorAt,\n formatErrorMessage,\n JsonSchema,\n Paths,\n Resolve,\n JsonFormsRendererRegistryEntry,\n JsonFormsCellRendererRegistryEntry,\n encode,\n ArrayTranslations,\n} from '@jsonforms/core';\nimport { Delete, ArrowDownward, ArrowUpward } from '@mui/icons-material';\n\nimport { WithDeleteDialogSupport } from './DeleteDialog';\nimport NoBorderTableCell from './NoBorderTableCell';\nimport TableToolbar from './TableToolbar';\nimport { ErrorObject } from 'ajv';\nimport merge from 'lodash/merge';\n\n// we want a cell that doesn't automatically span\nconst styles = {\n fixedCell: {\n width: '150px',\n height: '50px',\n paddingLeft: 0,\n paddingRight: 0,\n textAlign: 'center',\n },\n fixedCellSmall: {\n width: '50px',\n height: '50px',\n paddingLeft: 0,\n paddingRight: 0,\n textAlign: 'center',\n },\n};\n\nconst generateCells = (\n Cell: React.ComponentType<OwnPropsOfNonEmptyCell | TableHeaderCellProps>,\n schema: JsonSchema,\n rowPath: string,\n enabled: boolean,\n cells?: JsonFormsCellRendererRegistryEntry[]\n) => {\n if (schema.type === 'object') {\n return getValidColumnProps(schema).map((prop) => {\n const cellPath = Paths.compose(rowPath, prop);\n const props = {\n propName: prop,\n schema,\n title: schema.properties?.[prop]?.title ?? startCase(prop),\n rowPath,\n cellPath,\n enabled,\n cells,\n };\n return <Cell key={cellPath} {...props} />;\n });\n } else {\n // primitives\n const props = {\n schema,\n rowPath,\n cellPath: rowPath,\n enabled,\n };\n return <Cell key={rowPath} {...props} />;\n }\n};\n\nconst getValidColumnProps = (scopedSchema: JsonSchema) => {\n if (\n scopedSchema.type === 'object' &&\n typeof scopedSchema.properties === 'object'\n ) {\n return Object.keys(scopedSchema.properties).filter(\n (prop) => scopedSchema.properties[prop].type !== 'array'\n );\n }\n // primitives\n return [''];\n};\n\nexport interface EmptyTableProps {\n numColumns: number;\n translations: ArrayTranslations;\n}\n\nconst EmptyTable = ({ numColumns, translations }: EmptyTableProps) => (\n <TableRow>\n <NoBorderTableCell colSpan={numColumns}>\n <Typography align='center'>{translations.noDataMessage}</Typography>\n </NoBorderTableCell>\n </TableRow>\n);\n\ninterface TableHeaderCellProps {\n title: string;\n}\n\nconst TableHeaderCell = React.memo(function TableHeaderCell({\n title,\n}: TableHeaderCellProps) {\n return <TableCell>{title}</TableCell>;\n});\n\ninterface NonEmptyCellProps extends OwnPropsOfNonEmptyCell {\n rootSchema: JsonSchema;\n errors: string;\n path: string;\n enabled: boolean;\n}\ninterface OwnPropsOfNonEmptyCell {\n rowPath: string;\n propName?: string;\n schema: JsonSchema;\n enabled: boolean;\n renderers?: JsonFormsRendererRegistryEntry[];\n cells?: JsonFormsCellRendererRegistryEntry[];\n}\nconst ctxToNonEmptyCellProps = (\n ctx: JsonFormsStateContext,\n ownProps: OwnPropsOfNonEmptyCell\n): NonEmptyCellProps => {\n const path =\n ownProps.rowPath +\n (ownProps.schema.type === 'object' ? '.' + ownProps.propName : '');\n const errors = formatErrorMessage(\n union(\n errorAt(\n path,\n ownProps.schema\n )(ctx.core).map((error: ErrorObject) => error.message)\n )\n );\n return {\n rowPath: ownProps.rowPath,\n propName: ownProps.propName,\n schema: ownProps.schema,\n rootSchema: ctx.core.schema,\n errors,\n path,\n enabled: ownProps.enabled,\n cells: ownProps.cells || ctx.cells,\n renderers: ownProps.renderers || ctx.renderers,\n };\n};\n\nconst controlWithoutLabel = (scope: string): ControlElement => ({\n type: 'Control',\n scope: scope,\n label: false,\n});\n\ninterface NonEmptyCellComponentProps {\n path: string;\n propName?: string;\n schema: JsonSchema;\n rootSchema: JsonSchema;\n errors: string;\n enabled: boolean;\n renderers?: JsonFormsRendererRegistryEntry[];\n cells?: JsonFormsCellRendererRegistryEntry[];\n isValid: boolean;\n}\nconst NonEmptyCellComponent = React.memo(function NonEmptyCellComponent({\n path,\n propName,\n schema,\n rootSchema,\n errors,\n enabled,\n renderers,\n cells,\n isValid,\n}: NonEmptyCellComponentProps) {\n return (\n <NoBorderTableCell>\n {schema.properties ? (\n <DispatchCell\n schema={Resolve.schema(\n schema,\n `#/properties/${encode(propName)}`,\n rootSchema\n )}\n uischema={controlWithoutLabel(`#/properties/${encode(propName)}`)}\n path={path}\n enabled={enabled}\n renderers={renderers}\n cells={cells}\n />\n ) : (\n <DispatchCell\n schema={schema}\n uischema={controlWithoutLabel('#')}\n path={path}\n enabled={enabled}\n renderers={renderers}\n cells={cells}\n />\n )}\n <FormHelperText error={!isValid}>{!isValid && errors}</FormHelperText>\n </NoBorderTableCell>\n );\n});\n\nconst NonEmptyCell = (ownProps: OwnPropsOfNonEmptyCell) => {\n const ctx = useJsonForms();\n const emptyCellProps = ctxToNonEmptyCellProps(ctx, ownProps);\n\n const isValid = isEmpty(emptyCellProps.errors);\n return <NonEmptyCellComponent {...emptyCellProps} isValid={isValid} />;\n};\n\ninterface NonEmptyRowProps {\n childPath: string;\n schema: JsonSchema;\n rowIndex: number;\n moveUpCreator: (path: string, position: number) => () => void;\n moveDownCreator: (path: string, position: number) => () => void;\n enableUp: boolean;\n enableDown: boolean;\n showSortButtons: boolean;\n enabled: boolean;\n cells?: JsonFormsCellRendererRegistryEntry[];\n path: string;\n translations: ArrayTranslations;\n disableRemove?: boolean;\n}\n\nconst NonEmptyRowComponent = ({\n childPath,\n schema,\n rowIndex,\n openDeleteDialog,\n moveUpCreator,\n moveDownCreator,\n enableUp,\n enableDown,\n showSortButtons,\n enabled,\n cells,\n path,\n translations,\n disableRemove,\n}: NonEmptyRowProps & WithDeleteDialogSupport) => {\n const moveUp = useMemo(\n () => moveUpCreator(path, rowIndex),\n [moveUpCreator, path, rowIndex]\n );\n const moveDown = useMemo(\n () => moveDownCreator(path, rowIndex),\n [moveDownCreator, path, rowIndex]\n );\n return (\n <TableRow key={childPath} hover>\n {generateCells(NonEmptyCell, schema, childPath, enabled, cells)}\n {enabled ? (\n <NoBorderTableCell\n style={showSortButtons ? styles.fixedCell : styles.fixedCellSmall}\n >\n <Grid\n container\n direction='row'\n justifyContent='flex-end'\n alignItems='center'\n >\n {showSortButtons ? (\n <Fragment>\n <Grid>\n <Tooltip\n id='tooltip-up'\n title={translations.up}\n placement='bottom'\n open={enableUp ? undefined : false}\n >\n <IconButton\n aria-label={translations.upAriaLabel}\n onClick={moveUp}\n disabled={!enableUp}\n size='large'\n >\n <ArrowUpward />\n </IconButton>\n </Tooltip>\n </Grid>\n <Grid>\n <Tooltip\n id='tooltip-down'\n title={translations.down}\n placement='bottom'\n open={enableDown ? undefined : false}\n >\n <IconButton\n aria-label={translations.downAriaLabel}\n onClick={moveDown}\n disabled={!enableDown}\n size='large'\n >\n <ArrowDownward />\n </IconButton>\n </Tooltip>\n </Grid>\n </Fragment>\n ) : null}\n {!disableRemove ? (\n <Grid>\n <Tooltip\n id='tooltip-remove'\n title={translations.removeTooltip}\n placement='bottom'\n >\n <IconButton\n aria-label={translations.removeAriaLabel}\n onClick={() => openDeleteDialog(childPath, rowIndex)}\n size='large'\n >\n <Delete />\n </IconButton>\n </Tooltip>\n </Grid>\n ) : null}\n </Grid>\n </NoBorderTableCell>\n ) : null}\n </TableRow>\n );\n};\nexport const NonEmptyRow = React.memo(NonEmptyRowComponent);\ninterface TableRowsProp {\n data: number;\n path: string;\n schema: JsonSchema;\n uischema: ControlElement;\n config?: any;\n enabled: boolean;\n cells?: JsonFormsCellRendererRegistryEntry[];\n moveUp?(path: string, toMove: number): () => void;\n moveDown?(path: string, toMove: number): () => void;\n translations: ArrayTranslations;\n disableRemove?: boolean;\n}\nconst TableRows = ({\n data,\n path,\n schema,\n openDeleteDialog,\n moveUp,\n moveDown,\n uischema,\n config,\n enabled,\n cells,\n translations,\n disableRemove,\n}: TableRowsProp & WithDeleteDialogSupport) => {\n const isEmptyTable = data === 0;\n\n if (isEmptyTable) {\n return (\n <EmptyTable\n numColumns={getValidColumnProps(schema).length + 1}\n translations={translations}\n />\n );\n }\n\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n\n return (\n <React.Fragment>\n {range(data).map((index: number) => {\n const childPath = Paths.compose(path, `${index}`);\n\n return (\n <NonEmptyRow\n key={childPath}\n childPath={childPath}\n rowIndex={index}\n schema={schema}\n openDeleteDialog={openDeleteDialog}\n moveUpCreator={moveUp}\n moveDownCreator={moveDown}\n enableUp={index !== 0}\n enableDown={index !== data - 1}\n showSortButtons={\n appliedUiSchemaOptions.showSortButtons ||\n appliedUiSchemaOptions.showArrayTableSortButtons\n }\n enabled={enabled}\n cells={cells}\n path={path}\n translations={translations}\n disableRemove={disableRemove}\n />\n );\n })}\n </React.Fragment>\n );\n};\n\nexport class MaterialTableControl extends React.Component<\n ArrayLayoutProps &\n WithDeleteDialogSupport & { translations: ArrayTranslations },\n any\n> {\n addItem = (path: string, value: any) => this.props.addItem(path, value);\n render() {\n const {\n label,\n description,\n path,\n schema,\n rootSchema,\n uischema,\n errors,\n openDeleteDialog,\n visible,\n enabled,\n cells,\n translations,\n disableAdd,\n disableRemove,\n config,\n } = this.props;\n\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const doDisableAdd = disableAdd || appliedUiSchemaOptions.disableAdd;\n const doDisableRemove =\n disableRemove || appliedUiSchemaOptions.disableRemove;\n\n const controlElement = uischema as ControlElement;\n const isObjectSchema = schema.type === 'object';\n const headerCells: any = isObjectSchema\n ? generateCells(TableHeaderCell, schema, path, enabled, cells)\n : undefined;\n\n if (!visible) {\n return null;\n }\n\n return (\n <Table>\n <TableHead>\n <TableToolbar\n errors={errors}\n label={label}\n description={description}\n addItem={this.addItem}\n numColumns={isObjectSchema ? headerCells.length : 1}\n path={path}\n uischema={controlElement}\n schema={schema}\n rootSchema={rootSchema}\n enabled={enabled}\n translations={translations}\n disableAdd={doDisableAdd}\n />\n {isObjectSchema && (\n <TableRow>\n {headerCells}\n {enabled ? <TableCell /> : null}\n </TableRow>\n )}\n </TableHead>\n <TableBody>\n <TableRows\n openDeleteDialog={openDeleteDialog}\n translations={translations}\n {...this.props}\n disableRemove={doDisableRemove}\n />\n </TableBody>\n </Table>\n );\n }\n}\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n} from '@mui/material';\n\nexport interface DeleteDialogProps {\n open: boolean;\n onClose(): void;\n onConfirm(): void;\n onCancel(): void;\n title: string;\n message: string;\n acceptText: string;\n declineText: string;\n}\n\nexport interface WithDeleteDialogSupport {\n openDeleteDialog(path: string, data: number): void;\n}\n\nexport const DeleteDialog = React.memo(function DeleteDialog({\n open,\n onClose,\n onConfirm,\n onCancel,\n title,\n message,\n acceptText,\n declineText,\n}: DeleteDialogProps) {\n return (\n <Dialog\n open={open}\n keepMounted\n onClose={onClose}\n aria-labelledby='alert-dialog-confirmdelete-title'\n aria-describedby='alert-dialog-confirmdelete-description'\n >\n <DialogTitle id='alert-dialog-confirmdelete-title'>{title}</DialogTitle>\n <DialogContent>\n <DialogContentText id='alert-dialog-confirmdelete-description'>\n {message}\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button onClick={onCancel} color='primary'>\n {declineText}\n </Button>\n <Button onClick={onConfirm} color='primary'>\n {acceptText}\n </Button>\n </DialogActions>\n </Dialog>\n );\n});\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { useCallback, useState } from 'react';\nimport {\n ArrayLayoutProps,\n ArrayTranslations,\n RankedTester,\n isObjectArrayControl,\n isPrimitiveArrayControl,\n or,\n rankWith,\n} from '@jsonforms/core';\nimport {\n withArrayTranslationProps,\n withJsonFormsArrayLayoutProps,\n withTranslateProps,\n} from '@jsonforms/react';\nimport { MaterialTableControl } from './MaterialTableControl';\nimport { DeleteDialog } from './DeleteDialog';\n\nexport const MaterialArrayControlRenderer = (\n props: ArrayLayoutProps & { translations: ArrayTranslations }\n) => {\n const [open, setOpen] = useState(false);\n const [path, setPath] = useState(undefined);\n const [rowData, setRowData] = useState(undefined);\n const { removeItems, visible, translations } = props;\n\n const openDeleteDialog = useCallback(\n (p: string, rowIndex: number) => {\n setOpen(true);\n setPath(p);\n setRowData(rowIndex);\n },\n [setOpen, setPath, setRowData]\n );\n const deleteCancel = useCallback(() => setOpen(false), [setOpen]);\n const deleteConfirm = useCallback(() => {\n const p = path.substring(0, path.lastIndexOf('.'));\n removeItems(p, [rowData])();\n setOpen(false);\n }, [setOpen, path, rowData]);\n const deleteClose = useCallback(() => setOpen(false), [setOpen]);\n\n if (!visible) {\n return null;\n }\n\n return (\n <>\n <MaterialTableControl\n {...props}\n openDeleteDialog={openDeleteDialog}\n translations={translations}\n />\n <DeleteDialog\n open={open}\n onCancel={deleteCancel}\n onConfirm={deleteConfirm}\n onClose={deleteClose}\n acceptText={translations.deleteDialogAccept}\n declineText={translations.deleteDialogDecline}\n title={translations.deleteDialogTitle}\n message={translations.deleteDialogMessage}\n />\n </>\n );\n};\n\nexport const materialArrayControlTester: RankedTester = rankWith(\n 3,\n or(isObjectArrayControl, isPrimitiveArrayControl)\n);\n\nexport default withJsonFormsArrayLayoutProps(\n withTranslateProps(withArrayTranslationProps(MaterialArrayControlRenderer))\n);\n","/*\n The MIT License\n \n Copyright (c) 2021 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport { useState, useCallback } from 'react';\n\nexport const useFocus = (): [boolean, () => void, () => void] => {\n const [focused, setFocused] = useState(false);\n const onFocus = useCallback(() => setFocused(true), []);\n const onBlur = useCallback(() => setFocused(false), []);\n return [focused, onFocus, onBlur];\n};\n","/*\n The MIT License\n\n Copyright (c) 2017-2020 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { ReactNode } from 'react';\nimport {\n ControlProps,\n EnumCellProps,\n EnumOption,\n isDescriptionHidden,\n WithClassname,\n} from '@jsonforms/core';\n\nimport {\n Autocomplete,\n AutocompleteRenderOptionState,\n FilterOptionsState,\n FormHelperText,\n TextField,\n} from '@mui/material';\nimport merge from 'lodash/merge';\nimport { useFocus } from '../util/focus';\n\nexport interface WithOptionLabel {\n getOptionLabel?(option: EnumOption): string;\n renderOption?(\n props: React.HTMLAttributes<HTMLLIElement>,\n option: EnumOption,\n state: AutocompleteRenderOptionState\n ): ReactNode;\n filterOptions?(\n options: EnumOption[],\n state: FilterOptionsState<EnumOption>\n ): EnumOption[];\n}\n\nexport const MuiAutocomplete = (\n props: ControlProps & EnumCellProps & WithClassname & WithOptionLabel\n) => {\n const {\n description,\n errors,\n visible,\n required,\n label,\n data,\n className,\n id,\n enabled,\n uischema,\n path,\n handleChange,\n options,\n config,\n getOptionLabel,\n renderOption,\n filterOptions,\n isValid,\n } = props;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const [inputValue, setInputValue] = React.useState(data ?? '');\n const [focused, onFocus, onBlur] = useFocus();\n\n const findOption = options.find((o) => o.value === data) ?? null;\n\n const showDescription = !isDescriptionHidden(\n visible,\n description,\n focused,\n appliedUiSchemaOptions.showUnfocusedDescription\n );\n\n const firstFormHelperText = showDescription\n ? description\n : !isValid\n ? errors\n : null;\n const secondFormHelperText = showDescription && !isValid ? errors : null;\n\n if (!visible) {\n return null;\n }\n\n return (\n <>\n <Autocomplete\n className={className}\n id={id}\n disabled={!enabled}\n value={findOption}\n onChange={(_event: any, newValue: EnumOption | null) => {\n handleChange(path, newValue?.value);\n }}\n inputValue={inputValue}\n onInputChange={(_event, newInputValue) => {\n setInputValue(newInputValue);\n }}\n autoHighlight\n autoComplete\n fullWidth\n options={options}\n getOptionLabel={getOptionLabel || ((option) => option?.label)}\n freeSolo={false}\n renderInput={(params) => {\n return (\n <TextField\n label={label}\n type='text'\n inputProps={params.inputProps}\n inputRef={params.InputProps.ref}\n autoFocus={appliedUiSchemaOptions.focus}\n disabled={!enabled}\n {...params}\n id={id}\n required={\n required && !appliedUiSchemaOptions.hideRequiredAsterisk\n }\n error={!isValid}\n fullWidth={!appliedUiSchemaOptions.trim}\n InputLabelProps={data ? { shrink: true } : undefined}\n onFocus={onFocus}\n onBlur={onBlur}\n focused={focused}\n />\n );\n }}\n renderOption={renderOption}\n filterOptions={filterOptions}\n />\n <FormHelperText error={!isValid && !showDescription}>\n {firstFormHelperText}\n </FormHelperText>\n <FormHelperText error={!isValid}>{secondFormHelperText}</FormHelperText>\n </>\n );\n};\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport { CellProps, WithClassname } from '@jsonforms/core';\nimport { Checkbox, InputProps } from '@mui/material';\nimport merge from 'lodash/merge';\n\ninterface MuiCheckboxInputProps {\n inputProps?: InputProps['inputProps'];\n}\n\nexport const MuiCheckbox = React.memo(function MuiCheckbox(\n props: CellProps & WithClassname & MuiCheckboxInputProps\n) {\n const {\n data,\n className,\n id,\n enabled,\n uischema,\n path,\n handleChange,\n config,\n inputProps,\n } = props;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const inputPropsMerged = merge({}, inputProps, {\n autoFocus: !!appliedUiSchemaOptions.focus,\n });\n // !! causes undefined value to be converted to false, otherwise has no effect\n const checked = !!data;\n\n return (\n <Checkbox\n checked={checked}\n onChange={(_ev, isChecked) => handleChange(path, isChecked)}\n className={className}\n id={id}\n disabled={!enabled}\n slotProps={{ input: inputPropsMerged }}\n />\n );\n});\n","import dayjs from 'dayjs';\nimport customParsing from 'dayjs/plugin/customParseFormat';\n\n// required for the custom save formats in the date, time and date-time pickers\ndayjs.extend(customParsing);\n\nexport const createOnChangeHandler =\n (\n path: string,\n handleChange: (path: string, value: any) => void,\n saveFormat: string\n ) =>\n (value: dayjs.Dayjs) => {\n if (!value) {\n handleChange(path, undefined);\n } else if (value.toString() !== 'Invalid Date') {\n const formatedDate = formatDate(value, saveFormat);\n handleChange(path, formatedDate);\n }\n };\n\nexport const createOnBlurHandler =\n (\n path: string,\n handleChange: (path: string, value: any) => void,\n format: string,\n saveFormat: string,\n rerenderChild: () => void,\n onBlur: () => void\n ) =>\n (e: React.FocusEvent<HTMLTextAreaElement | HTMLInputElement, Element>) => {\n const date = dayjs(e.target.value, format);\n const formatedDate = formatDate(date, saveFormat);\n if (formatedDate.toString() === 'Invalid Date') {\n handleChange(path, undefined);\n rerenderChild();\n } else {\n handleChange(path, formatedDate);\n }\n onBlur();\n };\n\nexport const formatDate = (date: dayjs.Dayjs, saveFormat: string) => {\n let formatedDate = date.format(saveFormat);\n // Workaround to address a bug in Dayjs, neglecting leading 0 (https://github.com/iamkun/dayjs/issues/1849)\n const indexOfYear = saveFormat.indexOf('YYYY');\n if (date.year() < 1000 && indexOfYear !== -1) {\n const stringUpToYear = formatedDate.slice(0, indexOfYear);\n const stringFromYear = formatedDate.slice(indexOfYear);\n if (date.year() >= 100) {\n formatedDate = [stringUpToYear, 0, stringFromYear].join('');\n } else if (date.year() >= 10) {\n formatedDate = [stringUpToYear, 0, 0, stringFromYear].join('');\n } else if (date.year() >= 1) {\n formatedDate = [stringUpToYear, 0, 0, 0, stringFromYear].join('');\n }\n }\n return formatedDate;\n};\n\nexport const getData = (\n data: any,\n saveFormat: string | undefined\n): dayjs.Dayjs | null => {\n if (!data) {\n return null;\n }\n const dayjsData = dayjs(data, saveFormat);\n if (dayjsData.toString() === 'Invalid Date') {\n return null;\n }\n return dayjsData;\n};\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport isEmpty from 'lodash/isEmpty';\nimport React, { ComponentType } from 'react';\nimport type Ajv from 'ajv';\nimport type { UISchemaElement } from '@jsonforms/core';\nimport {\n getAjv,\n JsonFormsCellRendererRegistryEntry,\n JsonFormsRendererRegistryEntry,\n JsonSchema,\n OwnPropsOfRenderer,\n} from '@jsonforms/core';\nimport { JsonFormsDispatch, useJsonForms } from '@jsonforms/react';\nimport { Grid } from '@mui/material';\n\nexport const renderLayoutElements = (\n elements: UISchemaElement[],\n schema: JsonSchema,\n path: string,\n enabled: boolean,\n renderers?: JsonFormsRendererRegistryEntry[],\n cells?: JsonFormsCellRendererRegistryEntry[]\n) => {\n return elements.map((child, index) => (\n <Grid key={`${path}-${index}`} size='grow'>\n <JsonFormsDispatch\n uischema={child}\n schema={schema}\n path={path}\n enabled={enabled}\n renderers={renderers}\n cells={cells}\n />\n </Grid>\n ));\n};\n\nexport interface MaterialLayoutRendererProps extends OwnPropsOfRenderer {\n elements: UISchemaElement[];\n direction: 'row' | 'column';\n}\nconst MaterialLayoutRendererComponent = ({\n visible,\n elements,\n schema,\n path,\n enabled,\n direction,\n renderers,\n cells,\n}: MaterialLayoutRendererProps) => {\n if (isEmpty(elements) || !visible) {\n return null;\n } else {\n return (\n <Grid\n container\n direction={direction}\n spacing={direction === 'row' ? 2 : 0}\n >\n {renderLayoutElements(\n elements,\n schema,\n path,\n enabled,\n renderers,\n cells\n )}\n </Grid>\n );\n }\n};\nexport const MaterialLayoutRenderer = React.memo(\n MaterialLayoutRendererComponent\n);\n\nexport interface AjvProps {\n ajv: Ajv;\n}\n\n// TODO fix @typescript-eslint/ban-types\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const withAjvProps = <P extends {}>(\n Component: ComponentType<AjvProps & P>\n) =>\n function WithAjvProps(props: P) {\n const ctx = useJsonForms();\n const ajv = getAjv({ jsonforms: { ...ctx } });\n\n return <Component {...props} ajv={ajv} />;\n };\n\nexport interface MaterialLabelableLayoutRendererProps\n extends MaterialLayoutRendererProps {\n label?: string;\n}\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport {\n Theme,\n FilledInput,\n Input,\n OutlinedInput,\n TextFieldProps,\n useThemeProps,\n InputBaseProps,\n} from '@mui/material';\n\nexport interface JsonFormsTheme extends Theme {\n jsonforms?: {\n input?: {\n delete?: {\n background?: string;\n };\n };\n };\n}\n\nexport interface WithInputProps {\n label?: string;\n}\n\nexport interface WithSelectProps {\n multiple?: boolean;\n}\n\nconst variantToInput = {\n standard: Input,\n filled: FilledInput,\n outlined: OutlinedInput,\n};\n\nexport const defaultInputVariant: TextFieldProps['variant'] = 'outlined';\n\nexport function useInputVariant(): TextFieldProps['variant'] {\n const { variant = defaultInputVariant } = useThemeProps({\n props: {} as TextFieldProps,\n name: 'MuiTextField',\n });\n return variant;\n}\n\nexport function useInputComponent(): React.JSXElementConstructor<\n InputBaseProps & WithInputProps\n> {\n const variant = useInputVariant();\n return variantToInput[variant] ?? variantToInput[defaultInputVariant];\n}\n","/*\n The MIT License\n\n Copyright (c) 2021 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport debounce from 'lodash/debounce';\nimport { useState, useCallback, useEffect } from 'react';\n\nconst eventToValue = (ev: any) => ev.target.value;\nexport const useDebouncedChange = (\n handleChange: (path: string, value: any) => void,\n defaultValue: any,\n data: any,\n path: string,\n eventToValueFunction: (ev: any) => any = eventToValue,\n timeout = 300,\n flushOnBlur = false,\n focused = false\n): [any, React.ChangeEventHandler, () => void] => {\n const [input, setInput] = useState(data ?? defaultValue);\n useEffect(() => {\n setInput(data ?? defaultValue);\n }, [data]);\n const debouncedUpdate = useCallback(\n debounce((newValue: string) => handleChange(path, newValue), timeout),\n [handleChange, path, timeout]\n );\n useEffect(() => {\n if (!focused && flushOnBlur) {\n debouncedUpdate.flush();\n }\n }, [focused, flushOnBlur, debouncedUpdate]);\n const onChange = useCallback(\n (ev: any) => {\n const newValue = eventToValueFunction(ev);\n setInput(newValue ?? defaultValue);\n debouncedUpdate(newValue);\n },\n [debouncedUpdate, eventToValueFunction]\n );\n const onClear = useCallback(() => {\n setInput(defaultValue);\n handleChange(path, undefined);\n }, [defaultValue, handleChange, path]);\n return [input, onChange, onClear];\n};\n","export const i18nDefaults = {\n 'enum.none': 'None',\n};\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport { CellProps, WithClassname } from '@jsonforms/core';\nimport merge from 'lodash/merge';\nimport {\n useDebouncedChange,\n useInputComponent,\n WithInputProps,\n useFocus,\n} from '../util';\n\nconst toNumber = (value: string) =>\n value === '' ? undefined : parseInt(value, 10);\nconst eventToValue = (ev: any) => toNumber(ev.target.value);\n\nexport const MuiInputInteger = React.memo(function MuiInputInteger(\n props: CellProps & WithClassname & WithInputProps\n) {\n const [focused, onFocus, onBlur] = useFocus();\n const {\n data,\n className,\n id,\n enabled,\n uischema,\n isValid,\n path,\n handleChange,\n config,\n label,\n } = props;\n const InputComponent = useInputComponent();\n const inputProps = { step: '1' };\n\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n\n const [inputValue, onChange] = useDebouncedChange(\n handleChange,\n '',\n data,\n path,\n eventToValue,\n undefined,\n true,\n focused\n );\n\n return (\n <InputComponent\n label={label}\n type='number'\n value={inputValue}\n onFocus={onFocus}\n onBlur={onBlur}\n onChange={onChange}\n className={className}\n id={id}\n disabled={!enabled}\n autoFocus={appliedUiSchemaOptions.focus}\n inputProps={inputProps}\n fullWidth={true}\n error={!isValid}\n />\n );\n});\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport { CellProps, WithClassname } from '@jsonforms/core';\nimport merge from 'lodash/merge';\nimport {\n useDebouncedChange,\n useInputComponent,\n WithInputProps,\n useFocus,\n} from '../util';\n\nconst toNumber = (value: string) =>\n value === '' ? undefined : parseFloat(value);\nconst eventToValue = (ev: any) => toNumber(ev.target.value);\nexport const MuiInputNumber = React.memo(function MuiInputNumber(\n props: CellProps & WithClassname & WithInputProps\n) {\n const [focused, onFocus, onBlur] = useFocus();\n const {\n data,\n className,\n id,\n enabled,\n uischema,\n isValid,\n path,\n handleChange,\n config,\n label,\n } = props;\n const InputComponent = useInputComponent();\n const inputProps = { step: '0.1' };\n\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const [inputValue, onChange] = useDebouncedChange(\n handleChange,\n '',\n data,\n path,\n eventToValue,\n undefined,\n true,\n focused\n );\n\n return (\n <InputComponent\n type='number'\n label={label}\n value={inputValue}\n onChange={onChange}\n onFocus={onFocus}\n onBlur={onBlur}\n className={className}\n id={id}\n disabled={!enabled}\n autoFocus={appliedUiSchemaOptions.focus}\n inputProps={inputProps}\n fullWidth={true}\n error={!isValid}\n />\n );\n});\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { useCallback } from 'react';\nimport { CellProps, Formatted, WithClassname } from '@jsonforms/core';\nimport merge from 'lodash/merge';\nimport {\n useDebouncedChange,\n useInputComponent,\n WithInputProps,\n useFocus,\n} from '../util';\n\nexport const MuiInputNumberFormat = React.memo(function MuiInputNumberFormat(\n props: CellProps & WithClassname & Formatted<number> & WithInputProps\n) {\n const [focused, onFocus, onBlur] = useFocus();\n const {\n className,\n id,\n enabled,\n uischema,\n isValid,\n path,\n handleChange,\n schema,\n config,\n label,\n } = props;\n const InputComponent = useInputComponent();\n const maxLength = schema.maxLength;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n let inputProps;\n if (appliedUiSchemaOptions.restrict) {\n inputProps = { maxLength: maxLength };\n } else {\n inputProps = {};\n }\n const formattedNumber = props.toFormatted(props.data);\n\n const validStringNumber = useCallback(\n (ev: any) => props.fromFormatted(ev.currentTarget.value),\n [props.fromFormatted]\n );\n const [inputValue, onChange] = useDebouncedChange(\n handleChange,\n '',\n formattedNumber,\n path,\n validStringNumber,\n undefined,\n true,\n focused\n );\n\n return (\n <InputComponent\n type='text'\n value={inputValue}\n onChange={onChange}\n onFocus={onFocus}\n onBlur={onBlur}\n className={className}\n id={id}\n label={label}\n disabled={!enabled}\n autoFocus={appliedUiSchemaOptions.focus}\n multiline={appliedUiSchemaOptions.multi}\n fullWidth={!appliedUiSchemaOptions.trim || maxLength === undefined}\n inputProps={inputProps}\n error={!isValid}\n />\n );\n});\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { useState } from 'react';\nimport { CellProps, WithClassname } from '@jsonforms/core';\nimport {\n IconButton,\n InputAdornment,\n InputBaseComponentProps,\n InputProps,\n useTheme,\n} from '@mui/material';\nimport merge from 'lodash/merge';\nimport { Close } from '@mui/icons-material';\nimport {\n JsonFormsTheme,\n WithInputProps,\n useDebouncedChange,\n useInputComponent,\n useFocus,\n} from '../util';\n\ninterface MuiTextInputProps {\n muiInputProps?: InputProps['inputProps'];\n inputComponent?: InputProps['inputComponent'];\n}\n\nconst eventToValue = (ev: any) =>\n ev.target.value === '' ? undefined : ev.target.value;\n\nexport const MuiInputText = React.memo(function MuiInputText(\n props: CellProps & WithClassname & MuiTextInputProps & WithInputProps\n) {\n const [focused, onFocus, onBlur] = useFocus();\n const [showAdornment, setShowAdornment] = useState(false);\n const {\n data,\n config,\n className,\n id,\n enabled,\n uischema,\n isValid,\n path,\n handleChange,\n schema,\n muiInputProps,\n label,\n inputComponent,\n } = props;\n const InputComponent = useInputComponent();\n const maxLength = schema.maxLength;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n let inputProps: InputBaseComponentProps;\n if (appliedUiSchemaOptions.restrict) {\n inputProps = { maxLength: maxLength };\n } else {\n inputProps = {};\n }\n\n inputProps = merge(inputProps, muiInputProps);\n\n if (appliedUiSchemaOptions.trim && maxLength !== undefined) {\n inputProps.size = maxLength;\n }\n\n const [inputText, onChange, onClear] = useDebouncedChange(\n handleChange,\n '',\n data,\n path,\n eventToValue,\n undefined,\n true,\n focused\n );\n const onPointerEnter = () => setShowAdornment(true);\n const onPointerLeave = () => setShowAdornment(false);\n\n const theme: JsonFormsTheme = useTheme();\n\n const closeStyle = {\n background:\n theme.jsonforms?.input?.delete?.background ||\n theme.palette.background.default,\n borderRadius: '50%',\n };\n\n return (\n <InputComponent\n label={label}\n type={appliedUiSchemaOptions.format === 'password' ? 'password' : 'text'}\n value={inputText}\n onChange={onChange}\n className={className}\n onBlur={onBlur}\n onFocus={onFocus}\n id={id}\n disabled={!enabled}\n autoFocus={appliedUiSchemaOptions.focus}\n multiline={appliedUiSchemaOptions.multi}\n fullWidth={!appliedUiSchemaOptions.trim || maxLength === undefined}\n inputProps={inputProps}\n error={!isValid}\n onPointerEnter={onPointerEnter}\n onPointerLeave={onPointerLeave}\n endAdornment={\n <InputAdornment\n position='end'\n style={{\n display:\n !showAdornment || !enabled || data === undefined\n ? 'none'\n : 'flex',\n position: 'absolute',\n right: 0,\n }}\n >\n <IconButton\n aria-label='Clear input field'\n onClick={onClear}\n size='large'\n >\n <Close style={closeStyle} />\n </IconButton>\n </InputAdornment>\n }\n inputComponent={inputComponent}\n />\n );\n});\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport { CellProps, WithClassname } from '@jsonforms/core';\nimport merge from 'lodash/merge';\nimport { WithInputProps, useDebouncedChange, useInputComponent } from '../util';\n\nexport const MuiInputTime = React.memo(function MuiInputTime(\n props: CellProps & WithClassname & WithInputProps\n) {\n const {\n data,\n className,\n id,\n enabled,\n uischema,\n isValid,\n path,\n handleChange,\n config,\n label,\n } = props;\n const InputComponent = useInputComponent();\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const [inputValue, onChange] = useDebouncedChange(\n handleChange,\n '',\n data,\n path\n );\n\n return (\n <InputComponent\n type='time'\n value={inputValue}\n onChange={onChange}\n className={className}\n id={id}\n label={label}\n disabled={!enabled}\n autoFocus={appliedUiSchemaOptions.focus}\n fullWidth={true}\n error={!isValid}\n />\n );\n});\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { useMemo } from 'react';\nimport { EnumCellProps, WithClassname } from '@jsonforms/core';\n\nimport { MenuItem, Select } from '@mui/material';\nimport merge from 'lodash/merge';\nimport { TranslateProps } from '@jsonforms/react';\nimport { i18nDefaults, WithInputProps, WithSelectProps } from '../util';\n\nexport const MuiSelect = React.memo(function MuiSelect(\n props: EnumCellProps &\n WithClassname &\n TranslateProps &\n WithInputProps &\n WithSelectProps\n) {\n const {\n data,\n className,\n id,\n enabled,\n schema,\n uischema,\n isValid,\n path,\n handleChange,\n options,\n config,\n label,\n t,\n multiple,\n } = props;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const noneOptionLabel = useMemo(\n () => t('enum.none', i18nDefaults['enum.none'], { schema, uischema, path }),\n [t, schema, uischema, path]\n );\n\n return (\n <Select\n className={className}\n id={id}\n label={label}\n disabled={!enabled}\n autoFocus={appliedUiSchemaOptions.focus}\n value={data !== undefined ? data : ''}\n onChange={(ev) => handleChange(path, ev.target.value || undefined)}\n fullWidth={true}\n multiple={multiple || false}\n error={!isValid}\n >\n {[\n <MenuItem value={''} key='jsonforms.enum.none'>\n <em>{noneOptionLabel}</em>\n </MenuItem>,\n ].concat(\n options.map((optionValue) => (\n <MenuItem value={optionValue.value} key={optionValue.value}>\n {optionValue.label}\n </MenuItem>\n ))\n )}\n </Select>\n );\n});\n","/*\n The MIT License\n\n Copyright (c) 2017-2021 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport { CellProps, WithClassname } from '@jsonforms/core';\nimport { Switch, InputProps } from '@mui/material';\nimport merge from 'lodash/merge';\n\ninterface MuiToggleInputProps {\n inputProps?: InputProps['inputProps'];\n}\n\nexport const MuiToggle = React.memo(function MuiToggle(\n props: CellProps & WithClassname & MuiToggleInputProps\n) {\n const {\n data,\n className,\n id,\n enabled,\n uischema,\n path,\n handleChange,\n config,\n inputProps,\n } = props;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const inputPropsMerged = merge({}, inputProps, {\n autoFocus: !!appliedUiSchemaOptions.focus,\n });\n const checked = !!data;\n\n return (\n <Switch\n checked={checked}\n onChange={(_ev, isChecked) => handleChange(path, isChecked)}\n className={className}\n id={id}\n disabled={!enabled}\n slotProps={{ input: inputPropsMerged }}\n />\n );\n});\n","import {\n and,\n ControlProps,\n DispatchPropsOfMultiEnumControl,\n hasType,\n isDescriptionHidden,\n JsonSchema,\n OwnPropsOfEnum,\n Paths,\n RankedTester,\n rankWith,\n resolveSchema,\n schemaMatches,\n schemaSubPathMatches,\n showAsRequired,\n uiTypeIs,\n} from '@jsonforms/core';\n\nimport { withJsonFormsMultiEnumProps } from '@jsonforms/react';\nimport { MuiCheckbox } from '../mui-controls';\nimport {\n FormControl,\n FormControlLabel,\n FormGroup,\n FormHelperText,\n FormLabel,\n} from '@mui/material';\nimport isEmpty from 'lodash/isEmpty';\nimport React from 'react';\nimport merge from 'lodash/merge';\nimport { useFocus } from '../util';\n\nexport const MaterialEnumArrayRenderer = ({\n config,\n id,\n schema,\n visible,\n errors,\n description,\n label,\n required,\n path,\n options,\n data,\n addItem,\n removeItem,\n handleChange: _handleChange,\n ...otherProps\n}: ControlProps & OwnPropsOfEnum & DispatchPropsOfMultiEnumControl) => {\n const [focused, onFocus, onBlur] = useFocus();\n const isValid = errors.length === 0;\n const appliedUiSchemaOptions = merge({}, config, otherProps.uischema.options);\n const showDescription = !isDescriptionHidden(\n visible,\n description,\n focused,\n appliedUiSchemaOptions.showUnfocusedDescription\n );\n\n if (!visible) {\n return null;\n }\n\n return (\n <FormControl\n component='fieldset'\n fullWidth={!appliedUiSchemaOptions.trim}\n onFocus={onFocus}\n onBlur={onBlur}\n >\n <FormLabel\n error={!isValid}\n component='legend'\n required={showAsRequired(\n required,\n appliedUiSchemaOptions.hideRequiredAsterisk\n )}\n >\n {label}\n </FormLabel>\n <FormGroup row>\n {options.map((option: any, index: number) => {\n const optionPath = Paths.compose(path, `${index}`);\n const checkboxValue = data?.includes(option.value)\n ? option.value\n : undefined;\n return (\n <FormControlLabel\n id={id + '-label-' + option.value}\n key={option.value}\n control={\n <MuiCheckbox\n id={id + '-' + option.value}\n key={'checkbox-' + option.value}\n isValid={isEmpty(errors)}\n path={optionPath}\n handleChange={(_childPath, newValue) =>\n newValue\n ? addItem(path, option.value)\n : removeItem(path, option.value)\n }\n data={checkboxValue}\n errors={errors}\n schema={schema}\n visible={visible}\n {...otherProps}\n />\n }\n label={option.label}\n />\n );\n })}\n </FormGroup>\n <FormHelperText error={!isValid}>\n {!isValid ? errors : showDescription ? description : null}\n </FormHelperText>\n </FormControl>\n );\n};\n\nconst hasOneOfItems = (schema: JsonSchema): boolean =>\n schema.oneOf !== undefined &&\n schema.oneOf.length > 0 &&\n (schema.oneOf as JsonSchema[]).every((entry: JsonSchema) => {\n return entry.const !== undefined;\n });\n\nconst hasEnumItems = (schema: JsonSchema): boolean =>\n schema.type === 'string' && schema.enum !== undefined;\n\nexport const materialEnumArrayRendererTester: RankedTester = rankWith(\n 5,\n and(\n uiTypeIs('Control'),\n and(\n schemaMatches(\n (schema) =>\n hasType(schema, 'array') &&\n !Array.isArray(schema.items) &&\n schema.uniqueItems === true\n ),\n schemaSubPathMatches('items', (schema, rootSchema) => {\n const resolvedSchema = schema.$ref\n ? resolveSchema(rootSchema, schema.$ref, rootSchema)\n : schema;\n return hasOneOfItems(resolvedSchema) || hasEnumItems(resolvedSchema);\n })\n )\n )\n);\n\nexport default withJsonFormsMultiEnumProps(MaterialEnumArrayRenderer);\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport isEmpty from 'lodash/isEmpty';\nimport {\n findUISchema,\n Generate,\n isObjectControl,\n RankedTester,\n rankWith,\n StatePropsOfControlWithDetail,\n} from '@jsonforms/core';\nimport { JsonFormsDispatch, withJsonFormsDetailProps } from '@jsonforms/react';\nimport React, { useMemo } from 'react';\n\nexport const MaterialObjectRenderer = ({\n renderers,\n cells,\n uischemas,\n schema,\n label,\n path,\n visible,\n enabled,\n uischema,\n rootSchema,\n}: StatePropsOfControlWithDetail) => {\n const detailUiSchema = useMemo(\n () =>\n findUISchema(\n uischemas,\n schema,\n uischema.scope,\n path,\n () =>\n isEmpty(path)\n ? Generate.uiSchema(schema, 'VerticalLayout', undefined, rootSchema)\n : {\n ...Generate.uiSchema(schema, 'Group', undefined, rootSchema),\n label,\n },\n uischema,\n rootSchema\n ),\n [uischemas, schema, uischema.scope, path, label, uischema, rootSchema]\n );\n\n if (!visible) {\n return null;\n }\n\n return (\n <JsonFormsDispatch\n visible={visible}\n enabled={enabled}\n schema={schema}\n uischema={detailUiSchema}\n path={path}\n renderers={renderers}\n cells={cells}\n />\n );\n};\n\nexport const materialObjectControlTester: RankedTester = rankWith(\n 2,\n isObjectControl\n);\n\nexport default withJsonFormsDetailProps(MaterialObjectRenderer);\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { useCallback, useMemo, useState } from 'react';\nimport isEmpty from 'lodash/isEmpty';\n\nimport { TabSwitchConfirmDialog } from './TabSwitchConfirmDialog';\n\nimport {\n CombinatorRendererProps,\n createCombinatorRenderInfos,\n createDefaultValue,\n isOneOfControl,\n JsonSchema,\n OwnPropsOfControl,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport { Tab, Tabs } from '@mui/material';\nimport { JsonFormsDispatch, withJsonFormsOneOfProps } from '@jsonforms/react';\nimport CombinatorProperties from './CombinatorProperties';\n\nexport interface OwnOneOfProps extends OwnPropsOfControl {\n indexOfFittingSchema?: number;\n}\n\nexport const MaterialOneOfRenderer = ({\n handleChange,\n schema,\n path,\n renderers,\n cells,\n rootSchema,\n id,\n visible,\n indexOfFittingSchema,\n uischema,\n uischemas,\n data,\n}: CombinatorRendererProps) => {\n const [confirmDialogOpen, setConfirmDialogOpen] = useState(false);\n const [selectedIndex, setSelectedIndex] = useState(indexOfFittingSchema || 0);\n const [newSelectedIndex, setNewSelectedIndex] = useState(0);\n const handleClose = useCallback(\n () => setConfirmDialogOpen(false),\n [setConfirmDialogOpen]\n );\n const cancel = useCallback(() => {\n setConfirmDialogOpen(false);\n }, [setConfirmDialogOpen]);\n const oneOfRenderInfos = useMemo(\n () =>\n createCombinatorRenderInfos(\n (schema as JsonSchema).oneOf,\n rootSchema,\n 'oneOf',\n uischema,\n path,\n uischemas\n ),\n [schema, rootSchema, uischema, path, uischemas]\n );\n\n const openNewTab = (newIndex: number) => {\n handleChange(\n path,\n createDefaultValue(oneOfRenderInfos[newIndex].schema, rootSchema)\n );\n setSelectedIndex(newIndex);\n };\n\n const confirm = useCallback(() => {\n openNewTab(newSelectedIndex);\n setConfirmDialogOpen(false);\n }, [handleChange, createDefaultValue, newSelectedIndex]);\n\n const handleTabChange = useCallback(\n (_event: any, newOneOfIndex: number) => {\n setNewSelectedIndex(newOneOfIndex);\n if (isEmpty(data)) {\n openNewTab(newOneOfIndex);\n } else {\n setConfirmDialogOpen(true);\n }\n },\n [setConfirmDialogOpen, setSelectedIndex, data]\n );\n\n if (!visible) {\n return null;\n }\n\n return (\n <>\n <CombinatorProperties\n schema={schema}\n combinatorKeyword={'oneOf'}\n path={path}\n rootSchema={rootSchema}\n />\n <Tabs value={selectedIndex} onChange={handleTabChange}>\n {oneOfRenderInfos.map((oneOfRenderInfo) => (\n <Tab key={oneOfRenderInfo.label} label={oneOfRenderInfo.label} />\n ))}\n </Tabs>\n {oneOfRenderInfos.map(\n (oneOfRenderInfo, oneOfIndex) =>\n selectedIndex === oneOfIndex && (\n <JsonFormsDispatch\n key={oneOfIndex}\n schema={oneOfRenderInfo.schema}\n uischema={oneOfRenderInfo.uischema}\n path={path}\n renderers={renderers}\n cells={cells}\n />\n )\n )}\n <TabSwitchConfirmDialog\n cancel={cancel}\n confirm={confirm}\n id={'oneOf-' + id}\n open={confirmDialogOpen}\n handleClose={handleClose}\n />\n </>\n );\n};\n\nexport const materialOneOfControlTester: RankedTester = rankWith(\n 3,\n isOneOfControl\n);\n\nexport default withJsonFormsOneOfProps(MaterialOneOfRenderer);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport { LabelProps, RankedTester, rankWith, uiTypeIs } from '@jsonforms/core';\nimport { withJsonFormsLabelProps } from '@jsonforms/react';\nimport { Typography } from '@mui/material';\n\n/**\n * Default tester for a label.\n * @type {RankedTester}\n */\nexport const materialLabelRendererTester: RankedTester = rankWith(\n 1,\n uiTypeIs('Label')\n);\n\n/**\n * Default renderer for a label.\n */\nexport const MaterialLabelRenderer = ({ text, visible }: LabelProps) => {\n if (!visible) {\n return null;\n }\n return <Typography variant='h6'>{text}</Typography>;\n};\n\nexport default withJsonFormsLabelProps(MaterialLabelRenderer);\n","import {\n FormHelperText,\n Grid,\n IconButton,\n Stack,\n Toolbar,\n Tooltip,\n Typography,\n} from '@mui/material';\nimport { Add } from '@mui/icons-material';\nimport React from 'react';\nimport ValidationIcon from '../complex/ValidationIcon';\nimport { ArrayTranslations } from '@jsonforms/core';\nexport interface ArrayLayoutToolbarProps {\n label: string;\n description: string;\n errors: string;\n path: string;\n enabled: boolean;\n addItem(path: string, data: any): () => void;\n createDefault(): any;\n translations: ArrayTranslations;\n disableAdd?: boolean;\n}\nexport const ArrayLayoutToolbar = React.memo(function ArrayLayoutToolbar({\n label,\n description,\n errors,\n addItem,\n path,\n enabled,\n createDefault,\n translations,\n disableAdd,\n}: ArrayLayoutToolbarProps) {\n return (\n <Toolbar disableGutters={true}>\n <Stack width='100%'>\n <Grid container alignItems='center' justifyContent='space-between'>\n <Grid>\n <Grid\n container\n justifyContent={'flex-start'}\n alignItems={'center'}\n spacing={2}\n >\n <Grid>\n <Typography variant={'h6'}>{label}</Typography>\n </Grid>\n <Grid>\n {errors.length !== 0 && (\n <Grid>\n <ValidationIcon\n id='tooltip-validation'\n errorMessages={errors}\n />\n </Grid>\n )}\n </Grid>\n </Grid>\n </Grid>\n {enabled && !disableAdd && (\n <Grid>\n <Grid container>\n <Grid>\n <Tooltip\n id='tooltip-add'\n title={translations.addTooltip}\n placement='bottom'\n >\n <IconButton\n aria-label={translations.addTooltip}\n onClick={addItem(path, createDefault())}\n size='large'\n >\n <Add />\n </IconButton>\n </Tooltip>\n </Grid>\n </Grid>\n </Grid>\n )}\n </Grid>\n {description && <FormHelperText>{description}</FormHelperText>}\n </Stack>\n </Toolbar>\n );\n});\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport type { StatePropsOfMasterItem } from '@jsonforms/core';\nimport { withJsonFormsMasterListItemProps } from '@jsonforms/react';\nimport {\n Avatar,\n IconButton,\n ListItemButton,\n ListItemAvatar,\n ListItemSecondaryAction,\n ListItemText,\n Tooltip,\n} from '@mui/material';\nimport { Delete } from '@mui/icons-material';\nimport React from 'react';\n\nexport const ListWithDetailMasterItem = ({\n index,\n childLabel,\n selected,\n enabled,\n handleSelect,\n removeItem,\n path,\n translations,\n disableRemove,\n}: StatePropsOfMasterItem) => {\n return (\n <ListItemButton selected={selected} onClick={handleSelect(index)}>\n <ListItemAvatar>\n <Avatar aria-label='Index'>{index + 1}</Avatar>\n </ListItemAvatar>\n <ListItemText primary={childLabel} />\n {enabled && !disableRemove && (\n <ListItemSecondaryAction>\n <Tooltip\n id='tooltip-remove'\n title={translations.removeTooltip}\n placement='bottom'\n >\n <IconButton\n aria-label={translations.removeAriaLabel}\n onClick={removeItem(path, index)}\n size='large'\n >\n <Delete />\n </IconButton>\n </Tooltip>\n </ListItemSecondaryAction>\n )}\n </ListItemButton>\n );\n};\n\nexport default withJsonFormsMasterListItemProps(ListWithDetailMasterItem);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport {\n and,\n ArrayLayoutProps,\n ArrayTranslations,\n composePaths,\n computeLabel,\n createDefaultValue,\n findUISchema,\n isObjectArray,\n RankedTester,\n rankWith,\n uiTypeIs,\n} from '@jsonforms/core';\nimport {\n JsonFormsDispatch,\n withArrayTranslationProps,\n withJsonFormsArrayLayoutProps,\n withTranslateProps,\n} from '@jsonforms/react';\nimport { Grid, List, Typography } from '@mui/material';\nimport map from 'lodash/map';\nimport range from 'lodash/range';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { ArrayLayoutToolbar } from '../layouts/ArrayToolbar';\nimport ListWithDetailMasterItem from './ListWithDetailMasterItem';\nimport merge from 'lodash/merge';\n\nexport const MaterialListWithDetailRenderer = ({\n uischemas,\n schema,\n uischema,\n path,\n enabled,\n errors,\n visible,\n label,\n required,\n removeItems,\n addItem,\n data,\n renderers,\n cells,\n config,\n rootSchema,\n description,\n disableAdd,\n disableRemove,\n translations,\n}: ArrayLayoutProps & { translations: ArrayTranslations }) => {\n const [selectedIndex, setSelectedIndex] = useState(undefined);\n const handleRemoveItem = useCallback(\n (p: string, value: any) => () => {\n removeItems(p, [value])();\n if (selectedIndex === value) {\n setSelectedIndex(undefined);\n } else if (selectedIndex > value) {\n setSelectedIndex(selectedIndex - 1);\n }\n },\n [removeItems, setSelectedIndex]\n );\n const handleListItemClick = useCallback(\n (index: number) => () => setSelectedIndex(index),\n [setSelectedIndex]\n );\n const handleCreateDefaultValue = useCallback(\n () => createDefaultValue(schema, rootSchema),\n [createDefaultValue]\n );\n const foundUISchema = useMemo(\n () =>\n findUISchema(\n uischemas,\n schema,\n uischema.scope,\n path,\n undefined,\n uischema,\n rootSchema\n ),\n [uischemas, schema, uischema.scope, path, uischema, rootSchema]\n );\n\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const doDisableAdd = disableAdd || appliedUiSchemaOptions.disableAdd;\n const doDisableRemove = disableRemove || appliedUiSchemaOptions.disableRemove;\n\n React.useEffect(() => {\n setSelectedIndex(undefined);\n }, [schema]);\n\n if (!visible) {\n return null;\n }\n\n return (\n <>\n <ArrayLayoutToolbar\n translations={translations}\n label={computeLabel(\n label,\n required,\n appliedUiSchemaOptions.hideRequiredAsterisk\n )}\n description={description}\n errors={errors}\n path={path}\n enabled={enabled}\n addItem={addItem}\n createDefault={handleCreateDefaultValue}\n disableAdd={doDisableAdd}\n />\n <Grid container direction='row' spacing={2}>\n <Grid size={3}>\n <List>\n {data > 0 ? (\n map(range(data), (index) => (\n <ListWithDetailMasterItem\n index={index}\n path={path}\n schema={schema}\n enabled={enabled}\n handleSelect={handleListItemClick}\n removeItem={handleRemoveItem}\n selected={selectedIndex === index}\n key={index}\n uischema={foundUISchema}\n childLabelProp={appliedUiSchemaOptions.elementLabelProp}\n translations={translations}\n disableRemove={doDisableRemove}\n />\n ))\n ) : (\n <p>{translations.noDataMessage}</p>\n )}\n </List>\n </Grid>\n <Grid size='grow'>\n {selectedIndex !== undefined ? (\n <JsonFormsDispatch\n renderers={renderers}\n cells={cells}\n visible={visible}\n schema={schema}\n uischema={foundUISchema}\n path={composePaths(path, `${selectedIndex}`)}\n />\n ) : (\n <Typography variant='h6'>{translations.noSelection}</Typography>\n )}\n </Grid>\n </Grid>\n </>\n );\n};\n\nexport const materialListWithDetailTester: RankedTester = rankWith(\n 4,\n and(uiTypeIs('ListWithDetail'), isObjectArray)\n);\n\nexport default withJsonFormsArrayLayoutProps(\n withTranslateProps(withArrayTranslationProps(MaterialListWithDetailRenderer))\n);\n","/*\n The MIT License\n\n Copyright (c) 2017-2021 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n showAsRequired,\n ControlProps,\n isDescriptionHidden,\n} from '@jsonforms/core';\n\nimport { InputLabel, FormControl, FormHelperText } from '@mui/material';\nimport merge from 'lodash/merge';\nimport { useFocus, useInputVariant } from '../util';\n\nexport interface WithInput {\n input: any;\n}\n\nexport const MaterialInputControl = (props: ControlProps & WithInput) => {\n const [focused, onFocus, onBlur] = useFocus();\n const {\n id,\n description,\n errors,\n label,\n uischema,\n visible,\n required,\n config,\n input,\n } = props;\n const variant = useInputVariant();\n const isValid = errors.length === 0;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n\n const showDescription = !isDescriptionHidden(\n visible,\n description,\n focused,\n appliedUiSchemaOptions.showUnfocusedDescription\n );\n\n const firstFormHelperText = showDescription\n ? description\n : !isValid\n ? errors\n : null;\n const secondFormHelperText = showDescription && !isValid ? errors : null;\n const InnerComponent = input;\n\n if (!visible) {\n return null;\n }\n\n return (\n <FormControl\n fullWidth={!appliedUiSchemaOptions.trim}\n onFocus={onFocus}\n onBlur={onBlur}\n variant={variant}\n id={id}\n >\n <InputLabel\n htmlFor={id + '-input'}\n error={!isValid}\n required={showAsRequired(\n required,\n appliedUiSchemaOptions.hideRequiredAsterisk\n )}\n >\n {label}\n </InputLabel>\n <InnerComponent\n {...props}\n id={id + '-input'}\n isValid={isValid}\n visible={visible}\n />\n <FormHelperText error={!isValid && !showDescription}>\n {firstFormHelperText}\n </FormHelperText>\n <FormHelperText error={!isValid}>{secondFormHelperText}</FormHelperText>\n </FormControl>\n );\n};\n","/*\n The MIT License\n\n Copyright (c) 2018-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport {\n and,\n ControlProps,\n ControlState,\n EnumCellProps,\n JsonSchema,\n RankedTester,\n rankWith,\n schemaMatches,\n uiTypeIs,\n WithClassname,\n} from '@jsonforms/core';\nimport { Control, withJsonFormsControlProps } from '@jsonforms/react';\nimport { InputBaseComponentProps } from '@mui/material';\nimport merge from 'lodash/merge';\nimport React, { useMemo } from 'react';\nimport {\n useDebouncedChange,\n useInputComponent,\n WithInputProps,\n useFocus,\n} from '../util';\nimport { MaterialInputControl } from './MaterialInputControl';\n\nconst findEnumSchema = (schemas: JsonSchema[]) =>\n schemas.find(\n (s) => s.enum !== undefined && (s.type === 'string' || s.type === undefined)\n );\nconst findTextSchema = (schemas: JsonSchema[]) =>\n schemas.find((s) => s.type === 'string' && s.enum === undefined);\n\nconst MuiAutocompleteInputText = (\n props: EnumCellProps & WithClassname & WithInputProps\n) => {\n const [focused, onFocus, onBlur] = useFocus();\n const {\n data,\n config,\n className,\n id,\n enabled,\n uischema,\n isValid,\n path,\n handleChange,\n schema,\n label,\n } = props;\n const InputComponent = useInputComponent();\n const enumSchema = findEnumSchema(schema.anyOf);\n const stringSchema = findTextSchema(schema.anyOf);\n const maxLength = stringSchema.maxLength;\n const appliedUiSchemaOptions = useMemo(\n () => merge({}, config, uischema.options),\n [config, uischema.options]\n );\n const inputProps: InputBaseComponentProps = useMemo(() => {\n let propMemo: InputBaseComponentProps = {};\n if (appliedUiSchemaOptions.restrict) {\n propMemo = { maxLength: maxLength };\n }\n if (appliedUiSchemaOptions.trim && maxLength !== undefined) {\n propMemo.size = maxLength;\n }\n propMemo.list = props.id + 'datalist';\n return propMemo;\n }, [appliedUiSchemaOptions, props.id]);\n const [inputText, onChange] = useDebouncedChange(\n handleChange,\n '',\n data,\n path,\n undefined,\n undefined,\n true,\n focused\n );\n\n const dataList = (\n <datalist id={props.id + 'datalist'}>\n {enumSchema.enum.map((optionValue) => (\n <option value={optionValue} key={optionValue} />\n ))}\n </datalist>\n );\n return (\n <InputComponent\n type='text'\n value={inputText}\n onChange={onChange}\n onFocus={onFocus}\n onBlur={onBlur}\n className={className}\n id={id}\n label={label}\n disabled={!enabled}\n autoFocus={appliedUiSchemaOptions.focus}\n fullWidth={!appliedUiSchemaOptions.trim || maxLength === undefined}\n inputProps={inputProps}\n error={!isValid}\n endAdornment={dataList}\n />\n );\n};\n\nexport class MaterialAnyOfStringOrEnumControl extends Control<\n ControlProps,\n ControlState\n> {\n render() {\n return (\n <MaterialInputControl {...this.props} input={MuiAutocompleteInputText} />\n );\n }\n}\nconst hasEnumAndText = (schemas: JsonSchema[]) => {\n // idea: map to type,enum and check that all types are string and at least one item is of type enum,\n const enumSchema = findEnumSchema(schemas);\n const stringSchema = findTextSchema(schemas);\n const remainingSchemas = schemas.filter(\n (s) => s !== enumSchema || s !== stringSchema\n );\n const wrongType = remainingSchemas.find((s) => s.type && s.type !== 'string');\n return enumSchema && stringSchema && !wrongType;\n};\nconst simpleAnyOf = and(\n uiTypeIs('Control'),\n schemaMatches(\n (schema) =>\n Object.prototype.hasOwnProperty.call(schema, 'anyOf') &&\n hasEnumAndText(schema.anyOf)\n )\n);\nexport const materialAnyOfStringOrEnumControlTester: RankedTester = rankWith(\n 5,\n simpleAnyOf\n);\nexport default withJsonFormsControlProps(MaterialAnyOfStringOrEnumControl);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport isEmpty from 'lodash/isEmpty';\nimport merge from 'lodash/merge';\nimport React from 'react';\nimport {\n isBooleanControl,\n RankedTester,\n rankWith,\n ControlProps,\n isDescriptionHidden,\n} from '@jsonforms/core';\nimport { withJsonFormsControlProps } from '@jsonforms/react';\nimport { FormControlLabel, FormHelperText, Tooltip } from '@mui/material';\nimport { MuiCheckbox } from '../mui-controls/MuiCheckbox';\n\nexport const MaterialBooleanControl = ({\n data,\n visible,\n label,\n id,\n enabled,\n uischema,\n schema,\n rootSchema,\n handleChange,\n errors,\n path,\n config,\n description,\n}: ControlProps) => {\n const isValid = errors.length === 0;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n\n const showDescription = !isDescriptionHidden(\n visible,\n description,\n // Checkboxes do not receive focus until they are used, so\n // we cannot rely on focus as criteria for showing descriptions.\n // So we pass \"false\" to treat it as unfocused.\n false,\n appliedUiSchemaOptions.showUnfocusedDescription\n );\n\n const showTooltip =\n !showDescription &&\n !isDescriptionHidden(\n visible,\n description,\n // Tooltips have their own focus handlers, so we do not need to rely\n // on focus state here. So we pass 'true' to treat it as focused.\n true,\n // We also pass true here for showUnfocusedDescription since it should\n // render regardless of that setting.\n true\n );\n\n const firstFormHelperText = showDescription\n ? description\n : !isValid\n ? errors\n : null;\n const secondFormHelperText = showDescription && !isValid ? errors : null;\n\n const descriptionIds = [];\n const tooltipId = `${id}-tip`;\n const helpId1 = `${id}-help1`;\n const helpId2 = `${id}-help2`;\n if (showTooltip) {\n descriptionIds.push(tooltipId);\n }\n if (firstFormHelperText) {\n descriptionIds.push(helpId1);\n }\n if (secondFormHelperText) {\n descriptionIds.push(helpId2);\n }\n const ariaDescribedBy = descriptionIds.join(' ');\n\n if (!visible) {\n return null;\n }\n\n return (\n <>\n <Tooltip id={tooltipId} title={showTooltip ? description : ''}>\n <FormControlLabel\n label={label}\n id={id}\n control={\n <MuiCheckbox\n id={`${id}-input`}\n isValid={isEmpty(errors)}\n data={data}\n enabled={enabled}\n visible={visible}\n path={path}\n uischema={uischema}\n schema={schema}\n rootSchema={rootSchema}\n handleChange={handleChange}\n errors={errors}\n config={config}\n inputProps={{\n 'aria-describedby': ariaDescribedBy,\n }}\n />\n }\n />\n </Tooltip>\n <FormHelperText id={helpId1} error={!isValid && !showDescription}>\n {firstFormHelperText}\n </FormHelperText>\n <FormHelperText id={helpId2} error={!isValid}>\n {secondFormHelperText}\n </FormHelperText>\n </>\n );\n};\n\nexport const materialBooleanControlTester: RankedTester = rankWith(\n 2,\n isBooleanControl\n);\nexport default withJsonFormsControlProps(MaterialBooleanControl);\n","/*\n The MIT License\n\n Copyright (c) 2017-2021 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport isEmpty from 'lodash/isEmpty';\nimport merge from 'lodash/merge';\nimport React from 'react';\nimport {\n isBooleanControl,\n RankedTester,\n rankWith,\n ControlProps,\n optionIs,\n and,\n isDescriptionHidden,\n} from '@jsonforms/core';\nimport { withJsonFormsControlProps } from '@jsonforms/react';\nimport { FormControlLabel, FormHelperText, Tooltip } from '@mui/material';\nimport { MuiToggle } from '../mui-controls/MuiToggle';\n\nexport const MaterialBooleanToggleControl = ({\n data,\n visible,\n label,\n id,\n enabled,\n uischema,\n schema,\n rootSchema,\n handleChange,\n errors,\n path,\n config,\n description,\n}: ControlProps) => {\n const isValid = errors.length === 0;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n\n const showDescription = !isDescriptionHidden(\n visible,\n description,\n // Checkboxes do not receive focus until they are used, so\n // we cannot rely on focus as criteria for showing descriptions.\n // So we pass \"false\" to treat it as unfocused.\n false,\n appliedUiSchemaOptions.showUnfocusedDescription\n );\n\n const showTooltip =\n !showDescription &&\n !isDescriptionHidden(\n visible,\n description,\n // Tooltips have their own focus handlers, so we do not need to rely\n // on focus state here. So we pass 'true' to treat it as focused.\n true,\n // We also pass true here for showUnfocusedDescription since it should\n // render regardless of that setting.\n true\n );\n\n const firstFormHelperText = showDescription\n ? description\n : !isValid\n ? errors\n : null;\n const secondFormHelperText = showDescription && !isValid ? errors : null;\n\n const descriptionIds = [];\n const tooltipId = `${id}-tip`;\n const helpId1 = `${id}-help1`;\n const helpId2 = `${id}-help2`;\n if (showTooltip) {\n descriptionIds.push(tooltipId);\n }\n if (firstFormHelperText) {\n descriptionIds.push(helpId1);\n }\n if (secondFormHelperText) {\n descriptionIds.push(helpId2);\n }\n const ariaDescribedBy = descriptionIds.join(' ');\n\n if (!visible) {\n return null;\n }\n\n return (\n <>\n <Tooltip id={tooltipId} title={showTooltip ? description : ''}>\n <FormControlLabel\n label={label}\n id={id}\n control={\n <MuiToggle\n id={`${id}-input`}\n isValid={isEmpty(errors)}\n data={data}\n enabled={enabled}\n visible={visible}\n path={path}\n uischema={uischema}\n schema={schema}\n rootSchema={rootSchema}\n handleChange={handleChange}\n errors={errors}\n config={config}\n inputProps={{\n 'aria-describedby': ariaDescribedBy,\n }}\n />\n }\n />\n </Tooltip>\n <FormHelperText id={helpId1} error={!isValid && !showDescription}>\n {firstFormHelperText}\n </FormHelperText>\n <FormHelperText id={helpId2} error={!isValid}>\n {secondFormHelperText}\n </FormHelperText>\n </>\n );\n};\n\nexport const materialBooleanToggleControlTester: RankedTester = rankWith(\n 3,\n and(isBooleanControl, optionIs('toggle', true))\n);\n\nexport default withJsonFormsControlProps(MaterialBooleanToggleControl);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport merge from 'lodash/merge';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport {\n ControlProps,\n defaultDateFormat,\n isDateControl,\n isDescriptionHidden,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport { withJsonFormsControlProps } from '@jsonforms/react';\nimport { FormHelperText } from '@mui/material';\nimport { DatePicker, LocalizationProvider } from '@mui/x-date-pickers';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport {\n createOnBlurHandler,\n createOnChangeHandler,\n getData,\n useFocus,\n useInputVariant,\n} from '../util';\n\nexport const MaterialDateControl = (props: ControlProps) => {\n const [focused, onFocus, onBlur] = useFocus();\n const inputVariant = useInputVariant();\n const {\n description,\n id,\n errors,\n label,\n uischema,\n visible,\n enabled,\n required,\n path,\n handleChange,\n data,\n config,\n } = props;\n const isValid = errors.length === 0;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const showDescription = !isDescriptionHidden(\n visible,\n description,\n focused,\n appliedUiSchemaOptions.showUnfocusedDescription\n );\n\n const [key, setKey] = useState<number>(0);\n const [open, setOpen] = useState<boolean>(false);\n\n const format = appliedUiSchemaOptions.dateFormat ?? 'YYYY-MM-DD';\n const saveFormat = appliedUiSchemaOptions.dateSaveFormat ?? defaultDateFormat;\n\n const views = appliedUiSchemaOptions.views ?? ['year', 'day'];\n const closeOnSelect = appliedUiSchemaOptions.closeOnSelect ?? true;\n\n const firstFormHelperText = showDescription\n ? description\n : !isValid\n ? errors\n : null;\n const secondFormHelperText = showDescription && !isValid ? errors : null;\n\n const updateChild = useCallback(() => setKey((key) => key + 1), []);\n\n const onChange = useMemo(\n () => createOnChangeHandler(path, handleChange, saveFormat),\n [path, handleChange, saveFormat]\n );\n\n const onBlurHandler = useMemo(\n () =>\n createOnBlurHandler(\n path,\n handleChange,\n format,\n saveFormat,\n updateChild,\n onBlur\n ),\n [path, handleChange, format, saveFormat, updateChild, onBlur]\n );\n const value = getData(data, saveFormat);\n\n if (!visible) {\n return null;\n }\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <DatePicker\n open={open}\n onOpen={() => setOpen(true)}\n onClose={() => setOpen(false)}\n key={key}\n label={label}\n value={value}\n onAccept={onChange}\n format={format}\n views={views}\n disabled={!enabled}\n closeOnSelect={closeOnSelect}\n slotProps={{\n actionBar: ({ pickerVariant }) => ({\n actions:\n pickerVariant === 'desktop' ? [] : ['clear', 'cancel', 'accept'],\n }),\n textField: {\n id: id + '-input',\n required: required && !appliedUiSchemaOptions.hideRequiredAsterisk,\n error: !isValid,\n fullWidth: !appliedUiSchemaOptions.trim,\n variant: inputVariant,\n inputProps: {\n autoFocus: appliedUiSchemaOptions.focus,\n type: 'text',\n onFocus: onFocus,\n onBlur: onBlurHandler,\n },\n InputLabelProps: data ? { shrink: true } : undefined,\n },\n }}\n />\n <FormHelperText error={!isValid && !showDescription}>\n {firstFormHelperText}\n </FormHelperText>\n <FormHelperText error={!isValid}>{secondFormHelperText}</FormHelperText>\n </LocalizationProvider>\n );\n};\n\nexport const materialDateControlTester: RankedTester = rankWith(\n 4,\n isDateControl\n);\n\nexport default withJsonFormsControlProps(MaterialDateControl);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { useCallback, useMemo, useState } from 'react';\nimport merge from 'lodash/merge';\nimport {\n ControlProps,\n defaultDateTimeFormat,\n isDateTimeControl,\n isDescriptionHidden,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport { withJsonFormsControlProps } from '@jsonforms/react';\nimport { FormHelperText } from '@mui/material';\nimport { DateTimePicker, LocalizationProvider } from '@mui/x-date-pickers';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport {\n createOnBlurHandler,\n createOnChangeHandler,\n getData,\n useFocus,\n useInputVariant,\n} from '../util';\n\nexport const MaterialDateTimeControl = (props: ControlProps) => {\n const [focused, onFocus, onBlur] = useFocus();\n const inputVariant = useInputVariant();\n const {\n id,\n description,\n errors,\n label,\n uischema,\n visible,\n enabled,\n required,\n path,\n handleChange,\n data,\n config,\n } = props;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const isValid = errors.length === 0;\n\n const showDescription = !isDescriptionHidden(\n visible,\n description,\n focused,\n appliedUiSchemaOptions.showUnfocusedDescription\n );\n\n const format = appliedUiSchemaOptions.dateTimeFormat ?? 'YYYY-MM-DD HH:mm';\n const saveFormat =\n appliedUiSchemaOptions.dateTimeSaveFormat ?? defaultDateTimeFormat;\n\n const [key, setKey] = useState<number>(0);\n const [open, setOpen] = useState<boolean>(false);\n\n const views = appliedUiSchemaOptions.views ?? [\n 'year',\n 'day',\n 'hours',\n 'minutes',\n ];\n const closeOnSelect = appliedUiSchemaOptions.closeOnSelect ?? true;\n\n const firstFormHelperText = showDescription\n ? description\n : !isValid\n ? errors\n : null;\n const secondFormHelperText = showDescription && !isValid ? errors : null;\n\n const updateChild = useCallback(() => setKey((key) => key + 1), []);\n\n const onChange = useMemo(\n () => createOnChangeHandler(path, handleChange, saveFormat),\n [path, handleChange, saveFormat]\n );\n\n const onBlurHandler = useMemo(\n () =>\n createOnBlurHandler(\n path,\n handleChange,\n format,\n saveFormat,\n updateChild,\n onBlur\n ),\n [path, handleChange, format, saveFormat, updateChild]\n );\n const value = getData(data, saveFormat);\n\n if (!visible) {\n return null;\n }\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <DateTimePicker\n open={open}\n onOpen={() => setOpen(true)}\n onClose={() => setOpen(false)}\n key={key}\n label={label}\n value={value}\n onAccept={onChange}\n onChange={onChange}\n format={format}\n ampm={!!appliedUiSchemaOptions.ampm}\n views={views}\n closeOnSelect={closeOnSelect}\n disabled={!enabled}\n slotProps={{\n actionBar: ({ pickerVariant }) => ({\n actions:\n pickerVariant === 'desktop' ? [] : ['clear', 'cancel', 'accept'],\n }),\n textField: {\n id: id + '-input',\n required: required && !appliedUiSchemaOptions.hideRequiredAsterisk,\n error: !isValid,\n fullWidth: !appliedUiSchemaOptions.trim,\n variant: inputVariant,\n inputProps: {\n autoFocus: appliedUiSchemaOptions.focus,\n type: 'text',\n onFocus: onFocus,\n onBlur: onBlurHandler,\n },\n InputLabelProps: data ? { shrink: true } : undefined,\n },\n }}\n />\n <FormHelperText error={!isValid && !showDescription}>\n {firstFormHelperText}\n </FormHelperText>\n <FormHelperText error={!isValid}>{secondFormHelperText}</FormHelperText>\n </LocalizationProvider>\n );\n};\n\nexport const materialDateTimeControlTester: RankedTester = rankWith(\n 2,\n isDateTimeControl\n);\n\nexport default withJsonFormsControlProps(MaterialDateTimeControl);\n","/*\n The MIT License\n\n Copyright (c) 2018-2020 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n ControlProps,\n isEnumControl,\n OwnPropsOfEnum,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport {\n TranslateProps,\n withJsonFormsEnumProps,\n withTranslateProps,\n} from '@jsonforms/react';\nimport { MuiSelect } from '../mui-controls/MuiSelect';\nimport merge from 'lodash/merge';\nimport { MaterialInputControl } from './MaterialInputControl';\nimport {\n MuiAutocomplete,\n WithOptionLabel,\n} from '../mui-controls/MuiAutocomplete';\n\nexport const MaterialEnumControl = (\n props: ControlProps & OwnPropsOfEnum & WithOptionLabel & TranslateProps\n) => {\n const { config, uischema, errors } = props;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const isValid = errors.length === 0;\n return appliedUiSchemaOptions.autocomplete === false ? (\n <MaterialInputControl {...props} input={MuiSelect} />\n ) : (\n <MuiAutocomplete {...props} isValid={isValid} />\n );\n};\n\nexport const materialEnumControlTester: RankedTester = rankWith(\n 2,\n isEnumControl\n);\n\n// HOC order can be reversed with https://github.com/eclipsesource/jsonforms/issues/1987\nexport default withJsonFormsEnumProps(\n withTranslateProps(React.memo(MaterialEnumControl)),\n false\n);\n","/*\n The MIT License\n\n Copyright (c) 2018-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n ControlProps,\n isIntegerControl,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport { MuiInputInteger } from '../mui-controls/MuiInputInteger';\nimport { MaterialInputControl } from './MaterialInputControl';\nimport { withJsonFormsControlProps } from '@jsonforms/react';\n\nexport const MaterialIntegerControl = (props: ControlProps) => (\n <MaterialInputControl {...props} input={MuiInputInteger} />\n);\nexport const materialIntegerControlTester: RankedTester = rankWith(\n 2,\n isIntegerControl\n);\nexport default withJsonFormsControlProps(MaterialIntegerControl);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n ControlProps,\n showAsRequired,\n isDateControl,\n isDescriptionHidden,\n isTimeControl,\n or,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport { TextField } from '@mui/material';\nimport { withJsonFormsControlProps } from '@jsonforms/react';\nimport merge from 'lodash/merge';\nimport { useDebouncedChange, useFocus } from '../util';\n\nexport const MaterialNativeControl = (props: ControlProps) => {\n const [focused, onFocus, onBlur] = useFocus();\n const {\n id,\n errors,\n label,\n schema,\n description,\n enabled,\n visible,\n required,\n path,\n handleChange,\n data,\n config,\n } = props;\n const isValid = errors.length === 0;\n const appliedUiSchemaOptions = merge({}, config, props.uischema.options);\n const [inputValue, onChange] = useDebouncedChange(\n handleChange,\n '',\n data,\n path,\n undefined,\n undefined,\n true,\n focused\n );\n const fieldType = appliedUiSchemaOptions.format ?? schema.format;\n const showDescription = !isDescriptionHidden(\n visible,\n description,\n focused,\n appliedUiSchemaOptions.showUnfocusedDescription\n );\n\n if (!visible) {\n return null;\n }\n\n return (\n <TextField\n required={showAsRequired(\n required,\n appliedUiSchemaOptions.hideRequiredAsterisk\n )}\n id={id + '-input'}\n label={label}\n type={fieldType}\n error={!isValid}\n disabled={!enabled}\n fullWidth={!appliedUiSchemaOptions.trim}\n onFocus={onFocus}\n onBlur={onBlur}\n helperText={!isValid ? errors : showDescription ? description : null}\n InputLabelProps={{ shrink: true }}\n value={inputValue}\n onChange={onChange}\n />\n );\n};\n\nexport const materialNativeControlTester: RankedTester = rankWith(\n 2,\n or(isDateControl, isTimeControl)\n);\n\nexport default withJsonFormsControlProps(MaterialNativeControl);\n","/*\n The MIT License\n\n Copyright (c) 2018-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n ControlProps,\n isNumberControl,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport { MuiInputNumber } from '../mui-controls/MuiInputNumber';\nimport { MaterialInputControl } from './MaterialInputControl';\nimport { withJsonFormsControlProps } from '@jsonforms/react';\n\nexport const MaterialNumberControl = (props: ControlProps) => (\n <MaterialInputControl {...props} input={MuiInputNumber} />\n);\n\nexport const materialNumberControlTester: RankedTester = rankWith(\n 2,\n isNumberControl\n);\n\nexport default withJsonFormsControlProps(MaterialNumberControl);\n","/*\n The MIT License\n\n Copyright (c) 2018-2020 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n ControlProps,\n isOneOfEnumControl,\n OwnPropsOfEnum,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport {\n TranslateProps,\n withJsonFormsOneOfEnumProps,\n withTranslateProps,\n} from '@jsonforms/react';\nimport {\n MuiAutocomplete,\n WithOptionLabel,\n} from '../mui-controls/MuiAutocomplete';\nimport { MuiSelect } from '../mui-controls/MuiSelect';\nimport { MaterialInputControl } from '../controls/MaterialInputControl';\nimport merge from 'lodash/merge';\n\nexport const MaterialOneOfEnumControl = (\n props: ControlProps & OwnPropsOfEnum & WithOptionLabel & TranslateProps\n) => {\n const { config, uischema, errors } = props;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const isValid = errors.length === 0;\n\n return appliedUiSchemaOptions.autocomplete === false ? (\n <MaterialInputControl {...props} input={MuiSelect} />\n ) : (\n <MuiAutocomplete {...props} isValid={isValid} />\n );\n};\n\nexport const materialOneOfEnumControlTester: RankedTester = rankWith(\n 5,\n isOneOfEnumControl\n);\n\n// HOC order can be reversed with https://github.com/eclipsesource/jsonforms/issues/1987\nexport default withJsonFormsOneOfEnumProps(\n withTranslateProps(React.memo(MaterialOneOfEnumControl)),\n false\n);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport merge from 'lodash/merge';\nimport React from 'react';\nimport {\n ControlProps,\n showAsRequired,\n isDescriptionHidden,\n OwnPropsOfEnum,\n} from '@jsonforms/core';\nimport {\n FormControl,\n FormControlLabel,\n FormHelperText,\n FormLabel,\n Radio,\n RadioGroup,\n} from '@mui/material';\nimport { useFocus } from '../util';\n\nexport const MaterialRadioGroup = (props: ControlProps & OwnPropsOfEnum) => {\n const [focused, onFocus, onBlur] = useFocus();\n const {\n config,\n label,\n required,\n description,\n errors,\n data,\n visible,\n options,\n handleChange,\n path,\n enabled,\n } = props;\n const isValid = errors.length === 0;\n const appliedUiSchemaOptions = merge({}, config, props.uischema.options);\n const showDescription = !isDescriptionHidden(\n visible,\n description,\n focused,\n appliedUiSchemaOptions.showUnfocusedDescription\n );\n\n if (!visible) {\n return null;\n }\n\n return (\n <FormControl\n component='fieldset'\n fullWidth={!appliedUiSchemaOptions.trim}\n onFocus={onFocus}\n onBlur={onBlur}\n >\n <FormLabel\n error={!isValid}\n component='legend'\n required={showAsRequired(\n required,\n appliedUiSchemaOptions.hideRequiredAsterisk\n )}\n >\n {label}\n </FormLabel>\n\n <RadioGroup value={props.data ?? ''} row={true}>\n {options.map((option) => (\n <FormControlLabel\n value={option.value}\n key={option.label}\n control={\n <Radio\n checked={data === option.value}\n onChange={() => handleChange(path, option.value)}\n />\n }\n label={option.label}\n disabled={!enabled}\n />\n ))}\n </RadioGroup>\n <FormHelperText error={!isValid}>\n {!isValid ? errors : showDescription ? description : null}\n </FormHelperText>\n </FormControl>\n );\n};\n","/*\n The MIT License\n\n Copyright (c) 2018-2020 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n and,\n ControlProps,\n isOneOfEnumControl,\n optionIs,\n OwnPropsOfEnum,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport { withJsonFormsOneOfEnumProps } from '@jsonforms/react';\nimport { MaterialRadioGroup } from './MaterialRadioGroup';\n\nexport const MaterialOneOfRadioGroupControl = (\n props: ControlProps & OwnPropsOfEnum\n) => {\n return <MaterialRadioGroup {...props} />;\n};\n\nexport const materialOneOfRadioGroupControlTester: RankedTester = rankWith(\n 20,\n and(isOneOfEnumControl, optionIs('format', 'radio'))\n);\n\nexport default withJsonFormsOneOfEnumProps(MaterialOneOfRadioGroupControl);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n and,\n ControlProps,\n isEnumControl,\n optionIs,\n OwnPropsOfEnum,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport { withJsonFormsEnumProps } from '@jsonforms/react';\nimport { MaterialRadioGroup } from './MaterialRadioGroup';\nexport const MaterialRadioGroupControl = (\n props: ControlProps & OwnPropsOfEnum\n) => {\n return <MaterialRadioGroup {...props} />;\n};\n\nexport const materialRadioGroupControlTester: RankedTester = rankWith(\n 20,\n and(isEnumControl, optionIs('format', 'radio'))\n);\nexport default withJsonFormsEnumProps(MaterialRadioGroupControl);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { useCallback } from 'react';\nimport {\n ControlProps,\n showAsRequired,\n isDescriptionHidden,\n isRangeControl,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport { withJsonFormsControlProps } from '@jsonforms/react';\n\nimport {\n FormControl,\n FormHelperText,\n FormLabel,\n Slider,\n Typography,\n} from '@mui/material';\nimport merge from 'lodash/merge';\nimport { useFocus } from '../util';\n\nexport const MaterialSliderControl = (props: ControlProps) => {\n const [focused, onFocus, onBlur] = useFocus();\n const {\n id,\n data,\n description,\n enabled,\n errors,\n label,\n schema,\n handleChange,\n visible,\n path,\n required,\n config,\n } = props;\n const isValid = errors.length === 0;\n const appliedUiSchemaOptions = merge({}, config, props.uischema.options);\n const labelStyle: { [x: string]: any } = {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n width: '100%',\n };\n const rangeContainerStyle: { [x: string]: any } = {\n display: 'flex',\n };\n const rangeItemStyle: { [x: string]: any } = {\n flexGrow: '1',\n };\n const sliderStyle: { [x: string]: any } = {\n marginTop: '7px',\n };\n\n const showDescription = !isDescriptionHidden(\n visible,\n description,\n focused,\n appliedUiSchemaOptions.showUnfocusedDescription\n );\n\n const onChange = useCallback(\n (_ev: any, value: any) => handleChange(path, Number(value)),\n [path, handleChange]\n );\n\n if (!visible) {\n return null;\n }\n\n return (\n <FormControl\n fullWidth={!appliedUiSchemaOptions.trim}\n onFocus={onFocus}\n onBlur={onBlur}\n id={id}\n >\n <FormLabel\n htmlFor={id}\n error={!isValid}\n component='legend'\n required={showAsRequired(\n required,\n appliedUiSchemaOptions.hideRequiredAsterisk\n )}\n >\n <Typography id={id + '-typo'} style={labelStyle} variant='caption'>\n {label}\n </Typography>\n </FormLabel>\n <div style={rangeContainerStyle}>\n <Typography style={rangeItemStyle} variant='caption' align='left'>\n {schema.minimum}\n </Typography>\n <Typography style={rangeItemStyle} variant='caption' align='right'>\n {schema.maximum}\n </Typography>\n </div>\n <Slider\n style={sliderStyle}\n min={schema.minimum}\n max={schema.maximum}\n value={Number(data || schema.default)}\n onChange={onChange}\n id={id + '-input'}\n disabled={!enabled}\n step={schema.multipleOf || 1}\n />\n <FormHelperText error={!isValid}>\n {!isValid ? errors : showDescription ? description : null}\n </FormHelperText>\n </FormControl>\n );\n};\nexport const materialSliderControlTester: RankedTester = rankWith(\n 4,\n isRangeControl\n);\n\nexport default withJsonFormsControlProps(MaterialSliderControl);\n","/*\n The MIT License\n\n Copyright (c) 2018-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n ControlProps,\n isStringControl,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport { withJsonFormsControlProps } from '@jsonforms/react';\nimport { MuiInputText } from '../mui-controls/MuiInputText';\nimport { MaterialInputControl } from './MaterialInputControl';\n\nexport const MaterialTextControl = (props: ControlProps) => (\n <MaterialInputControl {...props} input={MuiInputText} />\n);\n\nexport const materialTextControlTester: RankedTester = rankWith(\n 1,\n isStringControl\n);\nexport default withJsonFormsControlProps(MaterialTextControl);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { useCallback, useMemo, useState } from 'react';\nimport merge from 'lodash/merge';\nimport {\n ControlProps,\n isTimeControl,\n isDescriptionHidden,\n RankedTester,\n rankWith,\n defaultTimeFormat,\n} from '@jsonforms/core';\nimport { withJsonFormsControlProps } from '@jsonforms/react';\nimport { FormHelperText } from '@mui/material';\nimport { TimePicker, LocalizationProvider } from '@mui/x-date-pickers';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport {\n createOnBlurHandler,\n createOnChangeHandler,\n getData,\n useFocus,\n useInputVariant,\n} from '../util';\n\nexport const MaterialTimeControl = (props: ControlProps) => {\n const [focused, onFocus, onBlur] = useFocus();\n const inputVariant = useInputVariant();\n const {\n id,\n description,\n errors,\n label,\n uischema,\n visible,\n enabled,\n required,\n path,\n handleChange,\n data,\n config,\n } = props;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const isValid = errors.length === 0;\n\n const [key, setKey] = useState<number>(0);\n const [open, setOpen] = useState<boolean>(false);\n\n const showDescription = !isDescriptionHidden(\n visible,\n description,\n focused,\n appliedUiSchemaOptions.showUnfocusedDescription\n );\n\n const format = appliedUiSchemaOptions.timeFormat ?? 'HH:mm';\n const saveFormat = appliedUiSchemaOptions.timeSaveFormat ?? defaultTimeFormat;\n\n const views = appliedUiSchemaOptions.views ?? ['hours', 'minutes'];\n const closeOnSelect = appliedUiSchemaOptions.closeOnSelect ?? true;\n\n const firstFormHelperText = showDescription\n ? description\n : !isValid\n ? errors\n : null;\n const secondFormHelperText = showDescription && !isValid ? errors : null;\n\n const updateChild = useCallback(() => setKey((key) => key + 1), []);\n\n const onChange = useMemo(\n () => createOnChangeHandler(path, handleChange, saveFormat),\n [path, handleChange, saveFormat]\n );\n\n const onBlurHandler = useMemo(\n () =>\n createOnBlurHandler(\n path,\n handleChange,\n format,\n saveFormat,\n updateChild,\n onBlur\n ),\n [path, handleChange, format, saveFormat, updateChild]\n );\n const value = getData(data, saveFormat);\n\n if (!visible) {\n return null;\n }\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <TimePicker\n open={open}\n onOpen={() => setOpen(true)}\n onClose={() => setOpen(false)}\n key={key}\n label={label}\n value={value}\n onAccept={onChange}\n onChange={onChange}\n format={format}\n ampm={!!appliedUiSchemaOptions.ampm}\n views={views}\n closeOnSelect={closeOnSelect}\n disabled={!enabled}\n slotProps={{\n actionBar: ({ pickerVariant }) => ({\n actions:\n pickerVariant === 'desktop' ? [] : ['clear', 'cancel', 'accept'],\n }),\n textField: {\n id: id + '-input',\n required: required && !appliedUiSchemaOptions.hideRequiredAsterisk,\n error: !isValid,\n fullWidth: !appliedUiSchemaOptions.trim,\n variant: inputVariant,\n inputProps: {\n autoFocus: appliedUiSchemaOptions.focus,\n type: 'text',\n onBlur: onBlurHandler,\n onFocus: onFocus,\n },\n InputLabelProps: data ? { shrink: true } : undefined,\n },\n }}\n />\n <FormHelperText error={!isValid && !showDescription}>\n {firstFormHelperText}\n </FormHelperText>\n <FormHelperText error={!isValid}>{secondFormHelperText}</FormHelperText>\n </LocalizationProvider>\n );\n};\n\nexport const materialTimeControlTester: RankedTester = rankWith(\n 4,\n isTimeControl\n);\n\nexport default withJsonFormsControlProps(MaterialTimeControl);\n","import merge from 'lodash/merge';\nimport React, {\n ComponentType,\n Dispatch,\n Fragment,\n ReducerAction,\n useMemo,\n useState,\n useEffect,\n useCallback,\n} from 'react';\nimport {\n JsonFormsDispatch,\n JsonFormsStateContext,\n withJsonFormsContext,\n} from '@jsonforms/react';\nimport {\n composePaths,\n ControlElement,\n findUISchema,\n JsonFormsRendererRegistryEntry,\n JsonSchema,\n moveDown,\n moveUp,\n update,\n JsonFormsCellRendererRegistryEntry,\n JsonFormsUISchemaRegistryEntry,\n createId,\n removeId,\n ArrayTranslations,\n computeChildLabel,\n UpdateArrayContext,\n} from '@jsonforms/core';\nimport {\n Accordion,\n AccordionSummary,\n AccordionDetails,\n Avatar,\n Grid,\n IconButton,\n Tooltip,\n} from '@mui/material';\nimport {\n ArrowUpward,\n ArrowDownward,\n Delete,\n ExpandMore,\n} from '@mui/icons-material';\n\nconst iconStyle: any = { float: 'right' };\n\ninterface OwnPropsOfExpandPanel {\n enabled: boolean;\n index: number;\n path: string;\n uischema: ControlElement;\n schema: JsonSchema;\n expanded: boolean;\n renderers?: JsonFormsRendererRegistryEntry[];\n cells?: JsonFormsCellRendererRegistryEntry[];\n uischemas?: JsonFormsUISchemaRegistryEntry[];\n rootSchema: JsonSchema;\n enableMoveUp: boolean;\n enableMoveDown: boolean;\n config: any;\n childLabelProp?: string;\n handleExpansion(panel: string): (event: any, expanded: boolean) => void;\n translations: ArrayTranslations;\n disableRemove?: boolean;\n}\n\ninterface StatePropsOfExpandPanel extends OwnPropsOfExpandPanel {\n childLabel: string;\n childPath: string;\n enableMoveUp: boolean;\n enableMoveDown: boolean;\n}\n\n/**\n * Dispatch props of a table control\n */\nexport interface DispatchPropsOfExpandPanel {\n removeItems(path: string, toDelete: number[]): (event: any) => void;\n moveUp(path: string, toMove: number): (event: any) => void;\n moveDown(path: string, toMove: number): (event: any) => void;\n}\n\nexport interface ExpandPanelProps\n extends StatePropsOfExpandPanel,\n DispatchPropsOfExpandPanel {}\n\nconst ExpandPanelRendererComponent = (props: ExpandPanelProps) => {\n const [labelHtmlId] = useState<string>(createId('expand-panel'));\n\n useEffect(() => {\n return () => {\n removeId(labelHtmlId);\n };\n }, [labelHtmlId]);\n\n const {\n enabled,\n childLabel,\n childPath,\n index,\n expanded,\n moveDown,\n moveUp,\n enableMoveDown,\n enableMoveUp,\n handleExpansion,\n removeItems,\n path,\n rootSchema,\n schema,\n uischema,\n uischemas,\n renderers,\n cells,\n config,\n translations,\n disableRemove,\n } = props;\n\n const foundUISchema = useMemo(\n () =>\n findUISchema(\n uischemas,\n schema,\n uischema.scope,\n path,\n undefined,\n uischema,\n rootSchema\n ),\n [uischemas, schema, uischema.scope, path, uischema, rootSchema]\n );\n\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const showSortButtons =\n appliedUiSchemaOptions.showSortButtons ||\n appliedUiSchemaOptions.showArrayLayoutSortButtons;\n\n return (\n <Accordion\n aria-labelledby={labelHtmlId}\n expanded={expanded}\n onChange={handleExpansion(childPath)}\n >\n <AccordionSummary expandIcon={<ExpandMore />}>\n <Grid container sx={{ width: '100%' }} alignItems={'center'}>\n <Grid size={{ xs: 7, md: 9 }}>\n <Grid container alignItems={'center'}>\n <Grid size={{ xs: 2, md: 1 }}>\n <Avatar aria-label='Index'>{index + 1}</Avatar>\n </Grid>\n <Grid size={{ xs: 10, md: 11 }}>\n <span id={labelHtmlId}>{childLabel}</span>\n </Grid>\n </Grid>\n </Grid>\n <Grid size={{ xs: 5, md: 3 }}>\n <Grid container justifyContent='flex-end'>\n <Grid>\n <Grid\n container\n direction='row'\n justifyContent='center'\n alignItems='center'\n >\n {showSortButtons && enabled ? (\n <Fragment>\n <Grid>\n <Tooltip\n id='tooltip-up'\n title={translations.up}\n placement='bottom'\n open={enableMoveUp ? undefined : false}\n >\n <IconButton\n onClick={moveUp(path, index)}\n style={iconStyle}\n disabled={!enableMoveUp}\n aria-label={translations.upAriaLabel}\n size='large'\n >\n <ArrowUpward />\n </IconButton>\n </Tooltip>\n </Grid>\n <Grid>\n <Tooltip\n id='tooltip-down'\n title={translations.down}\n placement='bottom'\n open={enableMoveDown ? undefined : false}\n >\n <IconButton\n onClick={moveDown(path, index)}\n style={iconStyle}\n disabled={!enableMoveDown}\n aria-label={translations.downAriaLabel}\n size='large'\n >\n <ArrowDownward />\n </IconButton>\n </Tooltip>\n </Grid>\n </Fragment>\n ) : (\n ''\n )}\n {enabled && !disableRemove && (\n <Grid>\n <Tooltip\n id='tooltip-remove'\n title={translations.removeTooltip}\n placement='bottom'\n >\n <IconButton\n onClick={removeItems(path, [index])}\n style={iconStyle}\n aria-label={translations.removeAriaLabel}\n size='large'\n >\n <Delete />\n </IconButton>\n </Tooltip>\n </Grid>\n )}\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n </AccordionSummary>\n <AccordionDetails>\n <JsonFormsDispatch\n enabled={enabled}\n schema={schema}\n uischema={foundUISchema}\n path={childPath}\n key={childPath}\n renderers={renderers}\n cells={cells}\n />\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport const ExpandPanelRenderer = React.memo(ExpandPanelRendererComponent);\n\n/**\n * Maps state to dispatch properties of an expand pandel control.\n *\n * @param dispatch the store's dispatch method\n * @returns {DispatchPropsOfArrayControl} dispatch props of an expand panel control\n */\nexport const ctxDispatchToExpandPanelProps: (\n dispatch: Dispatch<ReducerAction<any>>\n) => DispatchPropsOfExpandPanel = (dispatch) => ({\n removeItems: useCallback(\n (path: string, toDelete: number[]) =>\n (event: any): void => {\n event.stopPropagation();\n dispatch(\n update(\n path,\n (array) => {\n toDelete\n .sort()\n .reverse()\n .forEach((s) => array.splice(s, 1));\n return array;\n },\n { type: 'REMOVE', indices: toDelete } as UpdateArrayContext\n )\n );\n },\n [dispatch]\n ),\n moveUp: useCallback(\n (path: string, toMove: number) =>\n (event: any): void => {\n event.stopPropagation();\n dispatch(\n update(\n path,\n (array) => {\n moveUp(array, toMove);\n return array;\n },\n {\n type: 'MOVE',\n moves: [{ from: toMove, to: toMove - 1 }],\n } as UpdateArrayContext\n )\n );\n },\n [dispatch]\n ),\n moveDown: useCallback(\n (path: string, toMove: number) =>\n (event: any): void => {\n event.stopPropagation();\n dispatch(\n update(\n path,\n (array) => {\n moveDown(array, toMove);\n return array;\n },\n {\n type: 'MOVE',\n moves: [{ from: toMove, to: toMove + 1 }],\n } as UpdateArrayContext\n )\n );\n },\n [dispatch]\n ),\n});\n\n/**\n * Map state to control props.\n * @param state the JSON Forms state\n * @param ownProps any own props\n * @returns {StatePropsOfControl} state props for a control\n */\nexport const withContextToExpandPanelProps = (\n Component: ComponentType<ExpandPanelProps>\n): ComponentType<{\n ctx: JsonFormsStateContext;\n props: OwnPropsOfExpandPanel;\n}> => {\n return function WithContextToExpandPanelProps({\n ctx,\n props,\n }: {\n ctx: JsonFormsStateContext;\n props: ExpandPanelProps;\n }) {\n const dispatchProps = ctxDispatchToExpandPanelProps(ctx.dispatch);\n const {\n // eslint is unable to detect that these props are \"checked\" via Typescript already\n // eslint-disable-next-line react/prop-types\n childLabelProp,\n // eslint-disable-next-line react/prop-types\n schema,\n // eslint-disable-next-line react/prop-types\n uischema,\n // eslint-disable-next-line react/prop-types\n rootSchema,\n // eslint-disable-next-line react/prop-types\n path,\n // eslint-disable-next-line react/prop-types\n index,\n // eslint-disable-next-line react/prop-types\n uischemas,\n } = props;\n const childPath = composePaths(path, `${index}`);\n\n const childLabel = useMemo(() => {\n return computeChildLabel(\n ctx.core.data,\n childPath,\n childLabelProp,\n schema,\n rootSchema,\n ctx.i18n.translate,\n uischema\n );\n }, [\n ctx.core.data,\n childPath,\n childLabelProp,\n schema,\n rootSchema,\n ctx.i18n.translate,\n uischema,\n ]);\n\n return (\n <Component\n {...props}\n {...dispatchProps}\n childLabel={childLabel}\n childPath={childPath}\n uischemas={uischemas}\n />\n );\n };\n};\n\nexport const withJsonFormsExpandPanelProps = (\n Component: ComponentType<ExpandPanelProps>\n): ComponentType<OwnPropsOfExpandPanel> =>\n withJsonFormsContext(withContextToExpandPanelProps(Component));\n\nexport default withJsonFormsExpandPanelProps(ExpandPanelRenderer);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport isEmpty from 'lodash/isEmpty';\nimport React from 'react';\nimport { Card, CardContent, CardHeader } from '@mui/material';\nimport {\n GroupLayout,\n LayoutProps,\n RankedTester,\n rankWith,\n uiTypeIs,\n withIncreasedRank,\n} from '@jsonforms/core';\nimport {\n MaterialLabelableLayoutRendererProps,\n MaterialLayoutRenderer,\n} from '../util/layout';\nimport { withJsonFormsLayoutProps } from '@jsonforms/react';\n\nexport const groupTester: RankedTester = rankWith(1, uiTypeIs('Group'));\nconst style: { [x: string]: any } = { marginBottom: '10px' };\n\nconst GroupComponent = React.memo(function GroupComponent({\n visible,\n enabled,\n uischema,\n label,\n ...props\n}: MaterialLabelableLayoutRendererProps) {\n const groupLayout = uischema as GroupLayout;\n\n if (!visible) {\n return null;\n }\n\n return (\n <Card style={style}>\n {!isEmpty(label) && <CardHeader title={label} />}\n <CardContent>\n <MaterialLayoutRenderer\n {...props}\n visible={visible}\n enabled={enabled}\n elements={groupLayout.elements}\n />\n </CardContent>\n </Card>\n );\n});\n\nexport const MaterializedGroupLayoutRenderer = ({\n uischema,\n schema,\n path,\n visible,\n enabled,\n renderers,\n cells,\n direction,\n label,\n}: LayoutProps) => {\n const groupLayout = uischema as GroupLayout;\n\n return (\n <GroupComponent\n elements={groupLayout.elements}\n schema={schema}\n path={path}\n direction={direction}\n visible={visible}\n enabled={enabled}\n uischema={uischema}\n renderers={renderers}\n cells={cells}\n label={label}\n />\n );\n};\n\nexport default withJsonFormsLayoutProps(MaterializedGroupLayoutRenderer);\n\nexport const materialGroupTester: RankedTester = withIncreasedRank(\n 1,\n groupTester\n);\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n HorizontalLayout,\n LayoutProps,\n RankedTester,\n rankWith,\n uiTypeIs,\n} from '@jsonforms/core';\nimport { withJsonFormsLayoutProps } from '@jsonforms/react';\nimport {\n MaterialLayoutRenderer,\n MaterialLayoutRendererProps,\n} from '../util/layout';\n\n/**\n * Default tester for a horizontal layout.\n * @type {RankedTester}\n */\nexport const materialHorizontalLayoutTester: RankedTester = rankWith(\n 2,\n uiTypeIs('HorizontalLayout')\n);\n\nexport const MaterialHorizontalLayoutRenderer = ({\n uischema,\n renderers,\n cells,\n schema,\n path,\n enabled,\n visible,\n}: LayoutProps) => {\n const layout = uischema as HorizontalLayout;\n const childProps: MaterialLayoutRendererProps = {\n elements: layout.elements,\n schema,\n path,\n enabled,\n direction: 'row',\n visible,\n };\n\n return (\n <MaterialLayoutRenderer\n {...childProps}\n renderers={renderers}\n cells={cells}\n />\n );\n};\n\nexport default withJsonFormsLayoutProps(MaterialHorizontalLayoutRenderer);\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n LayoutProps,\n RankedTester,\n rankWith,\n uiTypeIs,\n VerticalLayout,\n} from '@jsonforms/core';\nimport {\n MaterialLayoutRenderer,\n MaterialLayoutRendererProps,\n} from '../util/layout';\nimport { withJsonFormsLayoutProps } from '@jsonforms/react';\n\n/**\n * Default tester for a vertical layout.\n * @type {RankedTester}\n */\nexport const materialVerticalLayoutTester: RankedTester = rankWith(\n 1,\n uiTypeIs('VerticalLayout')\n);\n\nexport const MaterialVerticalLayoutRenderer = ({\n uischema,\n schema,\n path,\n enabled,\n visible,\n renderers,\n cells,\n}: LayoutProps) => {\n const verticalLayout = uischema as VerticalLayout;\n const childProps: MaterialLayoutRendererProps = {\n elements: verticalLayout.elements,\n schema,\n path,\n enabled,\n direction: 'column',\n visible,\n };\n\n return (\n <MaterialLayoutRenderer\n {...childProps}\n renderers={renderers}\n cells={cells}\n />\n );\n};\n\nexport default withJsonFormsLayoutProps(MaterialVerticalLayoutRenderer);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { useState, useMemo } from 'react';\nimport { AppBar, Tab, Tabs } from '@mui/material';\nimport {\n and,\n Categorization,\n Category,\n deriveLabelForUISchemaElement,\n isVisible,\n RankedTester,\n rankWith,\n StatePropsOfLayout,\n Tester,\n UISchemaElement,\n uiTypeIs,\n} from '@jsonforms/core';\nimport {\n TranslateProps,\n withJsonFormsLayoutProps,\n withTranslateProps,\n} from '@jsonforms/react';\nimport {\n AjvProps,\n MaterialLayoutRenderer,\n MaterialLayoutRendererProps,\n withAjvProps,\n} from '../util/layout';\n\nexport const isSingleLevelCategorization: Tester = and(\n uiTypeIs('Categorization'),\n (uischema: UISchemaElement): boolean => {\n const categorization = uischema as Categorization;\n\n return (\n categorization.elements &&\n categorization.elements.reduce(\n (acc, e) => acc && e.type === 'Category',\n true\n )\n );\n }\n);\n\nexport const materialCategorizationTester: RankedTester = rankWith(\n 1,\n isSingleLevelCategorization\n);\nexport interface CategorizationState {\n activeCategory: number;\n}\n\nexport interface MaterialCategorizationLayoutRendererProps\n extends StatePropsOfLayout,\n AjvProps,\n TranslateProps {\n selected?: number;\n ownState?: boolean;\n data?: any;\n onChange?(selected: number, prevSelected: number): void;\n}\n\nexport const MaterialCategorizationLayoutRenderer = (\n props: MaterialCategorizationLayoutRendererProps\n) => {\n const {\n data,\n path,\n renderers,\n cells,\n schema,\n uischema,\n visible,\n enabled,\n selected,\n onChange,\n config,\n ajv,\n t,\n } = props;\n const categorization = uischema as Categorization;\n const [previousCategorization, setPreviousCategorization] =\n useState<Categorization>(uischema as Categorization);\n const [activeCategory, setActiveCategory] = useState<number>(selected ?? 0);\n const categories = useMemo(\n () =>\n categorization.elements.filter((category: Category) =>\n isVisible(category, data, undefined, ajv, config)\n ),\n [categorization, data, ajv, config]\n );\n\n if (categorization !== previousCategorization) {\n setActiveCategory(0);\n setPreviousCategorization(categorization);\n }\n\n const safeCategory =\n activeCategory >= categorization.elements.length ? 0 : activeCategory;\n\n const childProps: MaterialLayoutRendererProps = {\n elements: categories[safeCategory] ? categories[safeCategory].elements : [],\n schema,\n path,\n direction: 'column',\n enabled,\n visible,\n renderers,\n cells,\n };\n const onTabChange = (_event: any, value: any) => {\n if (onChange) {\n onChange(value, safeCategory);\n }\n setActiveCategory(value);\n };\n\n const tabLabels = useMemo(() => {\n return categories.map((e: Category) => deriveLabelForUISchemaElement(e, t));\n }, [categories, t]);\n\n if (!visible) {\n return null;\n }\n\n return (\n <>\n <AppBar position='static'>\n <Tabs\n value={safeCategory}\n onChange={onTabChange}\n textColor='inherit'\n indicatorColor='secondary'\n variant='scrollable'\n >\n {categories.map((_, idx: number) => (\n <Tab key={idx} label={tabLabels[idx]} />\n ))}\n </Tabs>\n </AppBar>\n <div style={{ marginTop: '0.5em' }}>\n <MaterialLayoutRenderer {...childProps} key={safeCategory} />\n </div>\n </>\n );\n};\n\nexport default withAjvProps(\n withTranslateProps(\n withJsonFormsLayoutProps(MaterialCategorizationLayoutRenderer)\n )\n);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport range from 'lodash/range';\nimport React, { useState, useCallback } from 'react';\nimport {\n ArrayLayoutProps,\n ArrayTranslations,\n composePaths,\n computeLabel,\n createDefaultValue,\n} from '@jsonforms/core';\nimport map from 'lodash/map';\nimport { ArrayLayoutToolbar } from './ArrayToolbar';\nimport ExpandPanelRenderer from './ExpandPanelRenderer';\nimport merge from 'lodash/merge';\n\nconst MaterialArrayLayoutComponent = (\n props: ArrayLayoutProps & { translations: ArrayTranslations }\n) => {\n const [expanded, setExpanded] = useState<string | boolean>(false);\n const innerCreateDefaultValue = useCallback(\n () => createDefaultValue(props.schema, props.rootSchema),\n [props.schema]\n );\n const handleChange = useCallback(\n (panel: string) => (_event: any, expandedPanel: boolean) => {\n setExpanded(expandedPanel ? panel : false);\n },\n []\n );\n const isExpanded = (index: number) =>\n expanded === composePaths(props.path, `${index}`);\n\n const {\n enabled,\n data,\n path,\n schema,\n uischema,\n errors,\n addItem,\n renderers,\n cells,\n label,\n required,\n rootSchema,\n config,\n uischemas,\n description,\n disableAdd,\n disableRemove,\n translations,\n } = props;\n const appliedUiSchemaOptions = merge({}, config, props.uischema.options);\n const doDisableAdd = disableAdd || appliedUiSchemaOptions.disableAdd;\n const doDisableRemove = disableRemove || appliedUiSchemaOptions.disableRemove;\n\n return (\n <div>\n <ArrayLayoutToolbar\n translations={translations}\n label={computeLabel(\n label,\n required,\n appliedUiSchemaOptions.hideRequiredAsterisk\n )}\n description={description}\n errors={errors}\n path={path}\n enabled={enabled}\n addItem={addItem}\n createDefault={innerCreateDefaultValue}\n disableAdd={doDisableAdd}\n />\n <div>\n {data > 0 ? (\n map(range(data), (index) => {\n return (\n <ExpandPanelRenderer\n enabled={enabled}\n index={index}\n expanded={isExpanded(index)}\n schema={schema}\n path={path}\n handleExpansion={handleChange}\n uischema={uischema}\n renderers={renderers}\n cells={cells}\n key={index}\n rootSchema={rootSchema}\n enableMoveUp={index != 0}\n enableMoveDown={index < data - 1}\n config={config}\n childLabelProp={appliedUiSchemaOptions.elementLabelProp}\n uischemas={uischemas}\n translations={translations}\n disableRemove={doDisableRemove}\n />\n );\n })\n ) : (\n <p>{translations.noDataMessage}</p>\n )}\n </div>\n </div>\n );\n};\n\nexport const MaterialArrayLayout = React.memo(MaterialArrayLayoutComponent);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { useCallback } from 'react';\n\nimport {\n ArrayLayoutProps,\n ArrayTranslations,\n isObjectArrayWithNesting,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport { MaterialArrayLayout } from './MaterialArrayLayout';\nimport {\n withArrayTranslationProps,\n withJsonFormsArrayLayoutProps,\n withTranslateProps,\n} from '@jsonforms/react';\n\nexport const MaterialArrayLayoutRenderer = ({\n visible,\n addItem,\n translations,\n ...props\n}: ArrayLayoutProps & { translations: ArrayTranslations }) => {\n const addItemCb = useCallback(\n (p: string, value: any) => addItem(p, value),\n [addItem]\n );\n if (!visible) {\n return null;\n }\n\n return (\n <MaterialArrayLayout\n translations={translations}\n visible={visible}\n addItem={addItemCb}\n {...props}\n />\n );\n};\n\nexport const materialArrayLayoutTester: RankedTester = rankWith(\n 4,\n isObjectArrayWithNesting\n);\nexport default withJsonFormsArrayLayoutProps(\n withTranslateProps(withArrayTranslationProps(MaterialArrayLayoutRenderer))\n);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n CellProps,\n isBooleanControl,\n RankedTester,\n rankWith,\n WithClassname,\n} from '@jsonforms/core';\nimport { withJsonFormsCellProps } from '@jsonforms/react';\nimport { MuiCheckbox } from '../mui-controls/MuiCheckbox';\n\nexport const MaterialBooleanCell = (props: CellProps & WithClassname) => {\n return <MuiCheckbox {...props} />;\n};\n\nexport const materialBooleanCellTester: RankedTester = rankWith(\n 2,\n isBooleanControl\n);\n\nexport default withJsonFormsCellProps(MaterialBooleanCell);\n","/*\n The MIT License\n\n Copyright (c) 2017-2021 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n and,\n CellProps,\n isBooleanControl,\n optionIs,\n RankedTester,\n rankWith,\n WithClassname,\n} from '@jsonforms/core';\nimport { withJsonFormsCellProps } from '@jsonforms/react';\nimport { MuiToggle } from '../mui-controls/MuiToggle';\n\nexport const MaterialBooleanToggleCell = (props: CellProps & WithClassname) => {\n return <MuiToggle {...props} />;\n};\n\nexport const materialBooleanToggleCellTester: RankedTester = rankWith(\n 3,\n and(isBooleanControl, optionIs('toggle', true))\n);\n\nexport default withJsonFormsCellProps(MaterialBooleanToggleCell);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n CellProps,\n isDateControl,\n RankedTester,\n rankWith,\n WithClassname,\n} from '@jsonforms/core';\nimport { withJsonFormsCellProps } from '@jsonforms/react';\nimport merge from 'lodash/merge';\nimport { useInputComponent, WithInputProps } from '../util';\n\nexport const MaterialDateCell = (\n props: CellProps & WithClassname & WithInputProps\n) => {\n const {\n data,\n className,\n id,\n enabled,\n uischema,\n path,\n handleChange,\n config,\n label,\n } = props;\n\n const InputComponent = useInputComponent();\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n\n return (\n <InputComponent\n type='date'\n value={data || ''}\n onChange={(ev: React.ChangeEvent<HTMLInputElement>) =>\n handleChange(path, ev.target.value)\n }\n className={className}\n id={id}\n label={label}\n disabled={!enabled}\n autoFocus={appliedUiSchemaOptions.focus}\n fullWidth={true}\n />\n );\n};\nexport const materialDateCellTester: RankedTester = rankWith(2, isDateControl);\n\nexport default withJsonFormsCellProps(MaterialDateCell);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n EnumCellProps,\n isEnumControl,\n RankedTester,\n rankWith,\n WithClassname,\n} from '@jsonforms/core';\nimport {\n TranslateProps,\n withJsonFormsEnumCellProps,\n withTranslateProps,\n} from '@jsonforms/react';\nimport { MuiSelect } from '../mui-controls/MuiSelect';\n\nexport const MaterialEnumCell = (\n props: EnumCellProps & WithClassname & TranslateProps\n) => <MuiSelect {...props} />;\n\n/**\n * Default tester for enum controls.\n * @type {RankedTester}\n */\nexport const materialEnumCellTester: RankedTester = rankWith(2, isEnumControl);\n\n// HOC order can be reversed with https://github.com/eclipsesource/jsonforms/issues/1987\nexport default withJsonFormsEnumCellProps(\n withTranslateProps(React.memo(MaterialEnumCell)),\n false\n);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n CellProps,\n isIntegerControl,\n RankedTester,\n rankWith,\n WithClassname,\n} from '@jsonforms/core';\nimport { withJsonFormsCellProps } from '@jsonforms/react';\nimport { MuiInputInteger } from '../mui-controls/MuiInputInteger';\n\nexport const MaterialIntegerCell = (props: CellProps & WithClassname) => (\n <MuiInputInteger {...props} />\n);\nexport const materialIntegerCellTester: RankedTester = rankWith(\n 2,\n isIntegerControl\n);\n\nexport default withJsonFormsCellProps(MaterialIntegerCell);\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n CellProps,\n isNumberControl,\n RankedTester,\n rankWith,\n WithClassname,\n} from '@jsonforms/core';\nimport { withJsonFormsCellProps } from '@jsonforms/react';\nimport { MuiInputNumber } from '../mui-controls/MuiInputNumber';\n\nexport const MaterialNumberCell = (props: CellProps & WithClassname) => (\n <MuiInputNumber {...props} />\n);\n/**\n * Default tester for number controls.\n * @type {RankedTester}\n */\nexport const materialNumberCellTester: RankedTester = rankWith(\n 2,\n isNumberControl\n);\nexport default withJsonFormsCellProps(MaterialNumberCell);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n CellProps,\n Formatted,\n isNumberFormatControl,\n RankedTester,\n rankWith,\n WithClassname,\n} from '@jsonforms/core';\nimport { withJsonFormsCellProps } from '@jsonforms/react';\nimport { MuiInputNumberFormat } from '../mui-controls/MuiInputNumberFormat';\n\nexport const MaterialNumberFormatCell = (\n props: CellProps & WithClassname & Formatted<number>\n) => <MuiInputNumberFormat {...props} />;\n/**\n * Default tester for text-based/string controls.\n * @type {RankedTester}\n */\nexport const materialNumberFormatCellTester: RankedTester = rankWith(\n 4,\n isNumberFormatControl\n);\n\nexport default withJsonFormsCellProps(MaterialNumberFormatCell);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n EnumCellProps,\n isOneOfEnumControl,\n RankedTester,\n rankWith,\n WithClassname,\n} from '@jsonforms/core';\nimport {\n TranslateProps,\n withJsonFormsOneOfEnumCellProps,\n withTranslateProps,\n} from '@jsonforms/react';\nimport { MuiSelect } from '../mui-controls/MuiSelect';\n\nexport const MaterialOneOfEnumCell = (\n props: EnumCellProps & WithClassname & TranslateProps\n) => <MuiSelect {...props} />;\n\n/**\n * Default tester for oneOf enum controls.\n * @type {RankedTester}\n */\nexport const materialOneOfEnumCellTester: RankedTester = rankWith(\n 2,\n isOneOfEnumControl\n);\n\nexport default withJsonFormsOneOfEnumCellProps(\n withTranslateProps(React.memo(MaterialOneOfEnumCell)),\n false\n);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n CellProps,\n isStringControl,\n RankedTester,\n rankWith,\n WithClassname,\n} from '@jsonforms/core';\nimport { withJsonFormsCellProps } from '@jsonforms/react';\nimport { MuiInputText } from '../mui-controls/MuiInputText';\n\nexport const MaterialTextCell = (props: CellProps & WithClassname) => (\n <MuiInputText {...props} />\n);\n\n/**\n * Default tester for text-based/string controls.\n * @type {RankedTester}\n */\nexport const materialTextCellTester: RankedTester = rankWith(\n 1,\n isStringControl\n);\n\nexport default withJsonFormsCellProps(MaterialTextCell);\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n CellProps,\n isTimeControl,\n RankedTester,\n rankWith,\n WithClassname,\n} from '@jsonforms/core';\nimport { withJsonFormsCellProps } from '@jsonforms/react';\nimport { MuiInputTime } from '../mui-controls/MuiInputTime';\n\nexport const MaterialTimeCell = (props: CellProps & WithClassname) => (\n <MuiInputTime {...props} />\n);\nexport const materialTimeCellTester: RankedTester = rankWith(2, isTimeControl);\n\nexport default withJsonFormsCellProps(MaterialTimeCell);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { useState, useMemo } from 'react';\nimport merge from 'lodash/merge';\nimport { Button, Step, StepButton, Stepper } from '@mui/material';\nimport {\n and,\n Categorization,\n categorizationHasCategory,\n Category,\n deriveLabelForUISchemaElement,\n isVisible,\n optionIs,\n RankedTester,\n rankWith,\n StatePropsOfLayout,\n uiTypeIs,\n} from '@jsonforms/core';\nimport {\n TranslateProps,\n withJsonFormsLayoutProps,\n withTranslateProps,\n} from '@jsonforms/react';\nimport {\n AjvProps,\n MaterialLayoutRenderer,\n MaterialLayoutRendererProps,\n withAjvProps,\n} from '../util/layout';\n\nexport const materialCategorizationStepperTester: RankedTester = rankWith(\n 2,\n and(\n uiTypeIs('Categorization'),\n categorizationHasCategory,\n optionIs('variant', 'stepper')\n )\n);\n\nexport interface CategorizationStepperState {\n activeCategory: number;\n}\n\nexport interface MaterialCategorizationStepperLayoutRendererProps\n extends StatePropsOfLayout,\n AjvProps,\n TranslateProps {\n data: any;\n}\n\nexport const MaterialCategorizationStepperLayoutRenderer = (\n props: MaterialCategorizationStepperLayoutRendererProps\n) => {\n const [activeCategory, setActiveCategory] = useState<number>(0);\n\n const handleStep = (step: number) => {\n setActiveCategory(step);\n };\n\n const {\n data,\n path,\n renderers,\n schema,\n uischema,\n visible,\n cells,\n config,\n ajv,\n t,\n } = props;\n const categorization = uischema as Categorization;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const buttonWrapperStyle = {\n textAlign: 'right' as const,\n width: '100%',\n margin: '1em auto',\n };\n const buttonNextStyle = {\n float: 'right' as const,\n };\n const buttonStyle = {\n marginRight: '1em',\n };\n const categories = useMemo(\n () =>\n categorization.elements.filter((category: Category) =>\n isVisible(category, data, undefined, ajv, config)\n ),\n [categorization, data, ajv, config]\n );\n const childProps: MaterialLayoutRendererProps = {\n elements: categories[activeCategory].elements,\n schema,\n path,\n direction: 'column',\n visible,\n renderers,\n cells,\n };\n const tabLabels = useMemo(() => {\n return categories.map((e: Category) => deriveLabelForUISchemaElement(e, t));\n }, [categories, t]);\n\n if (!visible) {\n return null;\n }\n\n return (\n <>\n <Stepper activeStep={activeCategory} nonLinear>\n {categories.map((_: Category, idx: number) => (\n <Step key={tabLabels[idx]}>\n <StepButton onClick={() => handleStep(idx)}>\n {tabLabels[idx]}\n </StepButton>\n </Step>\n ))}\n </Stepper>\n <div>\n <MaterialLayoutRenderer {...childProps} />\n </div>\n {appliedUiSchemaOptions.showNavButtons ? (\n <div style={buttonWrapperStyle}>\n <Button\n style={buttonNextStyle}\n variant='contained'\n color='primary'\n disabled={activeCategory >= categories.length - 1}\n onClick={() => handleStep(activeCategory + 1)}\n >\n Next\n </Button>\n <Button\n style={buttonStyle}\n color='secondary'\n variant='contained'\n disabled={activeCategory <= 0}\n onClick={() => handleStep(activeCategory - 1)}\n >\n Previous\n </Button>\n </div>\n ) : (\n <></>\n )}\n </>\n );\n};\n\nexport default withAjvProps(\n withTranslateProps(\n withJsonFormsLayoutProps(MaterialCategorizationStepperLayoutRenderer)\n )\n);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport { MaterialLabelRenderer } from './MaterialLabelRenderer';\n\nimport { MaterialListWithDetailRenderer } from './MaterialListWithDetailRenderer';\n\nexport const UnwrappedAdditional = {\n MaterialLabelRenderer,\n MaterialListWithDetailRenderer,\n};\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport { MaterialAllOfRenderer } from './MaterialAllOfRenderer';\nimport { MaterialAnyOfRenderer } from './MaterialAnyOfRenderer';\nimport { MaterialArrayControlRenderer } from './MaterialArrayControlRenderer';\nimport { MaterialEnumArrayRenderer } from './MaterialEnumArrayRenderer';\nimport { MaterialObjectRenderer } from './MaterialObjectRenderer';\nimport { MaterialOneOfRenderer } from './MaterialOneOfRenderer';\n\nexport const UnwrappedComplex = {\n MaterialAllOfRenderer,\n MaterialAnyOfRenderer,\n MaterialArrayControlRenderer,\n MaterialEnumArrayRenderer,\n MaterialObjectRenderer,\n MaterialOneOfRenderer,\n};\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport { MaterialAnyOfStringOrEnumControl } from './MaterialAnyOfStringOrEnumControl';\nimport { MaterialBooleanControl } from './MaterialBooleanControl';\nimport { MaterialBooleanToggleControl } from './MaterialBooleanToggleControl';\nimport { MaterialDateControl } from './MaterialDateControl';\nimport { MaterialDateTimeControl } from './MaterialDateTimeControl';\nimport { MaterialEnumControl } from './MaterialEnumControl';\nimport { MaterialIntegerControl } from './MaterialIntegerControl';\nimport { MaterialNativeControl } from './MaterialNativeControl';\nimport { MaterialNumberControl } from './MaterialNumberControl';\nimport { MaterialOneOfEnumControl } from './MaterialOneOfEnumControl';\nimport { MaterialOneOfRadioGroupControl } from './MaterialOneOfRadioGroupControl';\nimport { MaterialRadioGroupControl } from './MaterialRadioGroupControl';\nimport { MaterialSliderControl } from './MaterialSliderControl';\nimport { MaterialTextControl } from './MaterialTextControl';\nimport { MaterialTimeControl } from './MaterialTimeControl';\n\nexport const UnwrappedControls = {\n MaterialAnyOfStringOrEnumControl,\n MaterialBooleanControl,\n MaterialBooleanToggleControl,\n MaterialDateControl,\n MaterialDateTimeControl,\n MaterialEnumControl,\n MaterialIntegerControl,\n MaterialNativeControl,\n MaterialNumberControl,\n MaterialOneOfEnumControl,\n MaterialOneOfRadioGroupControl,\n MaterialSliderControl,\n MaterialRadioGroupControl,\n MaterialTextControl,\n MaterialTimeControl,\n};\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport { ExpandPanelRenderer as ExpandPanelRendererUnwrapped } from './ExpandPanelRenderer';\nimport { MaterializedGroupLayoutRenderer } from './MaterialGroupLayout';\nimport { MaterialHorizontalLayoutRenderer } from './MaterialHorizontalLayout';\nimport { MaterialVerticalLayoutRenderer } from './MaterialVerticalLayout';\nimport { MaterialCategorizationLayoutRenderer } from './MaterialCategorizationLayout';\nimport { MaterialArrayLayoutRenderer } from './MaterialArrayLayoutRenderer';\n\nexport const UnwrappedLayouts = {\n ExpandPanelRenderer: ExpandPanelRendererUnwrapped,\n MaterialArrayLayout: MaterialArrayLayoutRenderer,\n MaterialCategorizationLayout: MaterialCategorizationLayoutRenderer,\n MaterialGroupLayout: MaterializedGroupLayoutRenderer,\n MaterialHorizontalLayout: MaterialHorizontalLayoutRenderer,\n MaterialVerticalLayout: MaterialVerticalLayoutRenderer,\n};\n\nexport * from './ArrayToolbar';\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport {\n JsonFormsCellRendererRegistryEntry,\n JsonFormsRendererRegistryEntry,\n} from '@jsonforms/core';\nimport {\n materialAllOfControlTester,\n MaterialAllOfRenderer,\n materialAnyOfControlTester,\n MaterialAnyOfRenderer,\n MaterialArrayControlRenderer,\n materialArrayControlTester,\n materialObjectControlTester,\n MaterialObjectRenderer,\n materialOneOfControlTester,\n MaterialOneOfRenderer,\n MaterialEnumArrayRenderer,\n materialEnumArrayRendererTester,\n} from './complex';\nimport {\n MaterialLabelRenderer,\n materialLabelRendererTester,\n MaterialListWithDetailRenderer,\n materialListWithDetailTester,\n} from './additional';\nimport {\n MaterialAnyOfStringOrEnumControl,\n materialAnyOfStringOrEnumControlTester,\n MaterialBooleanControl,\n materialBooleanControlTester,\n MaterialBooleanToggleControl,\n materialBooleanToggleControlTester,\n MaterialDateControl,\n materialDateControlTester,\n MaterialDateTimeControl,\n materialDateTimeControlTester,\n MaterialTimeControl,\n materialTimeControlTester,\n MaterialEnumControl,\n materialEnumControlTester,\n MaterialIntegerControl,\n materialIntegerControlTester,\n MaterialNativeControl,\n materialNativeControlTester,\n MaterialNumberControl,\n materialNumberControlTester,\n MaterialOneOfEnumControl,\n materialOneOfEnumControlTester,\n MaterialRadioGroupControl,\n materialRadioGroupControlTester,\n MaterialSliderControl,\n materialSliderControlTester,\n MaterialTextControl,\n materialTextControlTester,\n MaterialOneOfRadioGroupControl,\n materialOneOfRadioGroupControlTester,\n} from './controls';\nimport {\n MaterialArrayLayout,\n materialArrayLayoutTester,\n MaterialCategorizationLayout,\n materialCategorizationTester,\n MaterialGroupLayout,\n materialGroupTester,\n MaterialHorizontalLayout,\n materialHorizontalLayoutTester,\n MaterialVerticalLayout,\n materialVerticalLayoutTester,\n} from './layouts';\nimport {\n MaterialBooleanCell,\n materialBooleanCellTester,\n MaterialBooleanToggleCell,\n materialBooleanToggleCellTester,\n MaterialDateCell,\n materialDateCellTester,\n MaterialEnumCell,\n materialEnumCellTester,\n MaterialIntegerCell,\n materialIntegerCellTester,\n MaterialNumberCell,\n materialNumberCellTester,\n MaterialNumberFormatCell,\n materialNumberFormatCellTester,\n MaterialOneOfEnumCell,\n materialOneOfEnumCellTester,\n MaterialTextCell,\n materialTextCellTester,\n MaterialTimeCell,\n materialTimeCellTester,\n} from './cells';\nimport MaterialCategorizationStepperLayout, {\n materialCategorizationStepperTester,\n} from './layouts/MaterialCategorizationStepperLayout';\n\nexport * from './additional';\nexport * from './cells';\nexport * from './complex';\nexport * from './controls';\nexport * from './layouts';\nexport * from './mui-controls';\nexport * from './util';\n\nexport const materialRenderers: JsonFormsRendererRegistryEntry[] = [\n // controls\n {\n tester: materialArrayControlTester,\n renderer: MaterialArrayControlRenderer,\n },\n { tester: materialBooleanControlTester, renderer: MaterialBooleanControl },\n {\n tester: materialBooleanToggleControlTester,\n renderer: MaterialBooleanToggleControl,\n },\n { tester: materialNativeControlTester, renderer: MaterialNativeControl },\n { tester: materialEnumControlTester, renderer: MaterialEnumControl },\n { tester: materialIntegerControlTester, renderer: MaterialIntegerControl },\n { tester: materialNumberControlTester, renderer: MaterialNumberControl },\n { tester: materialTextControlTester, renderer: MaterialTextControl },\n { tester: materialDateTimeControlTester, renderer: MaterialDateTimeControl },\n { tester: materialDateControlTester, renderer: MaterialDateControl },\n { tester: materialTimeControlTester, renderer: MaterialTimeControl },\n { tester: materialSliderControlTester, renderer: MaterialSliderControl },\n { tester: materialObjectControlTester, renderer: MaterialObjectRenderer },\n { tester: materialAllOfControlTester, renderer: MaterialAllOfRenderer },\n { tester: materialAnyOfControlTester, renderer: MaterialAnyOfRenderer },\n { tester: materialOneOfControlTester, renderer: MaterialOneOfRenderer },\n {\n tester: materialRadioGroupControlTester,\n renderer: MaterialRadioGroupControl,\n },\n {\n tester: materialOneOfRadioGroupControlTester,\n renderer: MaterialOneOfRadioGroupControl,\n },\n {\n tester: materialOneOfEnumControlTester,\n renderer: MaterialOneOfEnumControl,\n },\n // layouts\n { tester: materialGroupTester, renderer: MaterialGroupLayout },\n {\n tester: materialHorizontalLayoutTester,\n renderer: MaterialHorizontalLayout,\n },\n { tester: materialVerticalLayoutTester, renderer: MaterialVerticalLayout },\n {\n tester: materialCategorizationTester,\n renderer: MaterialCategorizationLayout,\n },\n {\n tester: materialCategorizationStepperTester,\n renderer: MaterialCategorizationStepperLayout,\n },\n { tester: materialArrayLayoutTester, renderer: MaterialArrayLayout },\n // additional\n { tester: materialLabelRendererTester, renderer: MaterialLabelRenderer },\n {\n tester: materialListWithDetailTester,\n renderer: MaterialListWithDetailRenderer,\n },\n {\n tester: materialAnyOfStringOrEnumControlTester,\n renderer: MaterialAnyOfStringOrEnumControl,\n },\n {\n tester: materialEnumArrayRendererTester,\n renderer: MaterialEnumArrayRenderer,\n },\n];\n\nexport const materialCells: JsonFormsCellRendererRegistryEntry[] = [\n { tester: materialBooleanCellTester, cell: MaterialBooleanCell },\n { tester: materialBooleanToggleCellTester, cell: MaterialBooleanToggleCell },\n { tester: materialDateCellTester, cell: MaterialDateCell },\n { tester: materialEnumCellTester, cell: MaterialEnumCell },\n { tester: materialIntegerCellTester, cell: MaterialIntegerCell },\n { tester: materialNumberCellTester, cell: MaterialNumberCell },\n { tester: materialNumberFormatCellTester, cell: MaterialNumberFormatCell },\n { tester: materialOneOfEnumCellTester, cell: MaterialOneOfEnumCell },\n { tester: materialTextCellTester, cell: MaterialTextCell },\n { tester: materialTimeCellTester, cell: MaterialTimeCell },\n];\n\nimport { UnwrappedAdditional } from './additional/unwrapped';\nimport { UnwrappedComplex } from './complex/unwrapped';\nimport { UnwrappedControls } from './controls/unwrapped';\nimport { UnwrappedLayouts } from './layouts/unwrapped';\n\nexport const Unwrapped = {\n ...UnwrappedAdditional,\n ...UnwrappedComplex,\n ...UnwrappedControls,\n ...UnwrappedLayouts,\n};\n"],"names":["eventToValue","toNumber","ListWithDetailMasterItem","ExpandPanelRenderer","MaterialArrayLayout","ExpandPanelRendererUnwrapped","MaterialArrayControlRenderer","MaterialBooleanControl","MaterialBooleanToggleControl","MaterialNativeControl","MaterialEnumControl","MaterialIntegerControl","MaterialNumberControl","MaterialTextControl","MaterialDateTimeControl","MaterialDateControl","MaterialTimeControl","MaterialSliderControl","MaterialObjectRenderer","MaterialAllOfRenderer","MaterialAnyOfRenderer","MaterialOneOfRenderer","MaterialRadioGroupControl","MaterialOneOfRadioGroupControl","MaterialOneOfEnumControl","MaterialLabelRenderer","MaterialListWithDetailRenderer","MaterialAnyOfStringOrEnumControl","MaterialEnumArrayRenderer","MaterialBooleanCell","MaterialBooleanToggleCell","MaterialDateCell","MaterialEnumCell","MaterialIntegerCell","MaterialNumberCell","MaterialNumberFormatCell","MaterialOneOfEnumCell","MaterialTextCell","MaterialTimeCell"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"jsonforms-react-material.esm.js","sources":["../src/complex/MaterialAllOfRenderer.tsx","../src/complex/CombinatorProperties.tsx","../src/complex/TabSwitchConfirmDialog.tsx","../src/complex/MaterialAnyOfRenderer.tsx","../src/complex/NoBorderTableCell.tsx","../src/complex/ValidationIcon.tsx","../src/complex/TableToolbar.tsx","../src/complex/MaterialTableControl.tsx","../src/complex/DeleteDialog.tsx","../src/complex/MaterialArrayControlRenderer.tsx","../src/util/focus.ts","../src/mui-controls/MuiAutocomplete.tsx","../src/mui-controls/MuiCheckbox.tsx","../src/util/datejs.tsx","../src/util/layout.tsx","../src/util/theme.ts","../src/util/debounce.ts","../src/util/i18nDefaults.ts","../src/mui-controls/MuiInputInteger.tsx","../src/mui-controls/MuiInputNumber.tsx","../src/mui-controls/MuiInputNumberFormat.tsx","../src/mui-controls/MuiInputText.tsx","../src/mui-controls/MuiInputTime.tsx","../src/mui-controls/MuiSelect.tsx","../src/mui-controls/MuiToggle.tsx","../src/complex/MaterialEnumArrayRenderer.tsx","../src/complex/MaterialObjectRenderer.tsx","../src/complex/MaterialOneOfRenderer.tsx","../src/additional/MaterialLabelRenderer.tsx","../src/layouts/ArrayToolbar.tsx","../src/additional/ListWithDetailMasterItem.tsx","../src/additional/MaterialListWithDetailRenderer.tsx","../src/controls/MaterialInputControl.tsx","../src/controls/MaterialAnyOfStringOrEnumControl.tsx","../src/controls/MaterialBooleanControl.tsx","../src/controls/MaterialBooleanToggleControl.tsx","../src/controls/MaterialDateControl.tsx","../src/controls/MaterialDateTimeControl.tsx","../src/controls/MaterialEnumControl.tsx","../src/controls/MaterialIntegerControl.tsx","../src/controls/MaterialNativeControl.tsx","../src/controls/MaterialNumberControl.tsx","../src/controls/MaterialOneOfEnumControl.tsx","../src/controls/MaterialRadioGroup.tsx","../src/controls/MaterialOneOfRadioGroupControl.tsx","../src/controls/MaterialRadioGroupControl.tsx","../src/controls/MaterialSliderControl.tsx","../src/controls/MaterialTextControl.tsx","../src/controls/MaterialTimeControl.tsx","../src/layouts/ExpandPanelRenderer.tsx","../src/layouts/MaterialGroupLayout.tsx","../src/layouts/MaterialHorizontalLayout.tsx","../src/layouts/MaterialVerticalLayout.tsx","../src/layouts/MaterialCategorizationLayout.tsx","../src/layouts/MaterialArrayLayout.tsx","../src/layouts/MaterialArrayLayoutRenderer.tsx","../src/cells/MaterialBooleanCell.tsx","../src/cells/MaterialBooleanToggleCell.tsx","../src/cells/MaterialDateCell.tsx","../src/cells/MaterialEnumCell.tsx","../src/cells/MaterialIntegerCell.tsx","../src/cells/MaterialNumberCell.tsx","../src/cells/MaterialNumberFormatCell.tsx","../src/cells/MaterialOneOfEnumCell.tsx","../src/cells/MaterialTextCell.tsx","../src/cells/MaterialTimeCell.tsx","../src/layouts/MaterialCategorizationStepperLayout.tsx","../src/additional/unwrapped.ts","../src/complex/unwrapped.ts","../src/controls/unwrapped.ts","../src/layouts/unwrapped.ts","../src/index.ts"],"sourcesContent":["/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\n\nimport {\n createCombinatorRenderInfos,\n findMatchingUISchema,\n isAllOfControl,\n JsonSchema,\n RankedTester,\n rankWith,\n StatePropsOfCombinator,\n} from '@jsonforms/core';\nimport { JsonFormsDispatch, withJsonFormsAllOfProps } from '@jsonforms/react';\n\nexport const MaterialAllOfRenderer = ({\n schema,\n rootSchema,\n visible,\n renderers,\n cells,\n path,\n uischemas,\n uischema,\n}: StatePropsOfCombinator) => {\n const delegateUISchema = findMatchingUISchema(uischemas)(\n schema,\n uischema.scope,\n path\n );\n\n if (!visible) {\n return null;\n }\n\n if (delegateUISchema) {\n return (\n <JsonFormsDispatch\n schema={schema}\n uischema={delegateUISchema}\n path={path}\n renderers={renderers}\n cells={cells}\n />\n );\n }\n const allOfRenderInfos = createCombinatorRenderInfos(\n (schema as JsonSchema).allOf,\n rootSchema,\n 'allOf',\n uischema,\n path,\n uischemas\n );\n\n return (\n <>\n {allOfRenderInfos.map((allOfRenderInfo, allOfIndex) => (\n <JsonFormsDispatch\n key={allOfIndex}\n schema={allOfRenderInfo.schema}\n uischema={allOfRenderInfo.uischema}\n path={path}\n renderers={renderers}\n cells={cells}\n />\n ))}\n </>\n );\n};\n\nexport const materialAllOfControlTester: RankedTester = rankWith(\n 3,\n isAllOfControl\n);\n\nexport default withJsonFormsAllOfProps(MaterialAllOfRenderer);\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n Generate,\n JsonSchema,\n UISchemaElement,\n isLayout,\n} from '@jsonforms/core';\nimport { JsonFormsDispatch } from '@jsonforms/react';\nimport omit from 'lodash/omit';\n\ninterface CombinatorPropertiesProps {\n schema: JsonSchema;\n combinatorKeyword: 'oneOf' | 'anyOf';\n path: string;\n rootSchema: JsonSchema;\n}\n\nexport class CombinatorProperties extends React.Component<\n CombinatorPropertiesProps,\n // TODO fix @typescript-eslint/ban-types\n // eslint-disable-next-line @typescript-eslint/ban-types\n {}\n> {\n render() {\n const { schema, combinatorKeyword, path, rootSchema } = this.props;\n\n const otherProps: JsonSchema = omit(\n schema,\n combinatorKeyword\n ) as JsonSchema;\n const foundUISchema: UISchemaElement = Generate.uiSchema(\n otherProps,\n 'VerticalLayout',\n undefined,\n rootSchema\n );\n let isLayoutWithElements = false;\n if (foundUISchema !== null && isLayout(foundUISchema)) {\n isLayoutWithElements = foundUISchema.elements.length > 0;\n }\n\n if (isLayoutWithElements) {\n return (\n <JsonFormsDispatch\n schema={otherProps}\n path={path}\n uischema={foundUISchema}\n />\n );\n }\n\n return null;\n }\n}\n\nexport default CombinatorProperties;\n","import React from 'react';\n\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n} from '@mui/material';\n\nexport interface TabSwitchConfirmDialogProps {\n open: boolean;\n handleClose: () => void;\n confirm: () => void;\n cancel: () => void;\n id: string;\n}\n\nexport const TabSwitchConfirmDialog = ({\n open,\n handleClose,\n confirm,\n cancel,\n id,\n}: TabSwitchConfirmDialogProps) => {\n return (\n <Dialog\n open={open}\n onClose={handleClose}\n aria-labelledby='alert-dialog-title'\n aria-describedby='alert-dialog-description'\n >\n <DialogTitle id='alert-dialog-title'>{'Clear form?'}</DialogTitle>\n <DialogContent>\n <DialogContentText id='alert-dialog-description'>\n Your data will be cleared if you navigate away from this tab. Do you\n want to proceed?\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button onClick={cancel} color='primary'>\n No\n </Button>\n <Button\n onClick={confirm}\n color='primary'\n autoFocus\n id={`${id}-confirm-yes`}\n >\n Yes\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { useCallback, useState } from 'react';\n\nimport {\n CombinatorRendererProps,\n createCombinatorRenderInfos,\n createDefaultValue,\n isAnyOfControl,\n JsonSchema,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport { JsonFormsDispatch, withJsonFormsAnyOfProps } from '@jsonforms/react';\nimport { Tab, Tabs } from '@mui/material';\nimport CombinatorProperties from './CombinatorProperties';\nimport isEmpty from 'lodash/isEmpty';\nimport { TabSwitchConfirmDialog } from './TabSwitchConfirmDialog';\n\nexport const MaterialAnyOfRenderer = ({\n handleChange,\n schema,\n rootSchema,\n indexOfFittingSchema,\n visible,\n path,\n renderers,\n cells,\n uischema,\n uischemas,\n id,\n data,\n}: CombinatorRendererProps) => {\n const [selectedAnyOf, setSelectedAnyOf] = useState(indexOfFittingSchema || 0);\n const [confirmDialogOpen, setConfirmDialogOpen] = useState(false);\n const [newSelectedIndex, setNewSelectedIndex] = useState(0);\n\n const handleClose = useCallback(\n () => setConfirmDialogOpen(false),\n [setConfirmDialogOpen]\n );\n\n const handleTabChange = useCallback(\n (_event: any, newIndex: number) => {\n if (\n isEmpty(data) ||\n typeof data ===\n typeof createDefaultValue(\n anyOfRenderInfos[newIndex].schema,\n rootSchema\n )\n ) {\n setSelectedAnyOf(newIndex);\n } else {\n setNewSelectedIndex(newIndex);\n setConfirmDialogOpen(true);\n }\n },\n [setConfirmDialogOpen, setSelectedAnyOf, data]\n );\n\n const openNewTab = (newIndex: number) => {\n handleChange(\n path,\n createDefaultValue(anyOfRenderInfos[newIndex].schema, rootSchema)\n );\n setSelectedAnyOf(newIndex);\n };\n\n const confirm = useCallback(() => {\n openNewTab(newSelectedIndex);\n setConfirmDialogOpen(false);\n }, [handleChange, createDefaultValue, newSelectedIndex]);\n\n const anyOf = 'anyOf';\n const anyOfRenderInfos = createCombinatorRenderInfos(\n (schema as JsonSchema).anyOf,\n rootSchema,\n anyOf,\n uischema,\n path,\n uischemas\n );\n\n if (!visible) {\n return null;\n }\n\n return (\n <>\n <CombinatorProperties\n schema={schema}\n combinatorKeyword={anyOf}\n path={path}\n rootSchema={rootSchema}\n />\n <Tabs value={selectedAnyOf} onChange={handleTabChange}>\n {anyOfRenderInfos.map((anyOfRenderInfo) => (\n <Tab key={anyOfRenderInfo.label} label={anyOfRenderInfo.label} />\n ))}\n </Tabs>\n {anyOfRenderInfos.map(\n (anyOfRenderInfo, anyOfIndex) =>\n selectedAnyOf === anyOfIndex && (\n <JsonFormsDispatch\n key={anyOfIndex}\n schema={anyOfRenderInfo.schema}\n uischema={anyOfRenderInfo.uischema}\n path={path}\n renderers={renderers}\n cells={cells}\n />\n )\n )}\n <TabSwitchConfirmDialog\n cancel={handleClose}\n confirm={confirm}\n id={'anyOf-' + id}\n open={confirmDialogOpen}\n handleClose={handleClose}\n />\n </>\n );\n};\n\nexport const materialAnyOfControlTester: RankedTester = rankWith(\n 3,\n isAnyOfControl\n);\n\nexport default withJsonFormsAnyOfProps(MaterialAnyOfRenderer);\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport { styled, TableCell } from '@mui/material';\nimport React from 'react';\n\nconst StyledTableCell = styled(TableCell)({\n borderBottom: 'none',\n});\n\nconst NoBorderTableCell = ({ children, ...otherProps }: any) => (\n <StyledTableCell {...otherProps}>{children}</StyledTableCell>\n);\n\nexport default NoBorderTableCell;\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\n\nimport { ErrorOutline } from '@mui/icons-material';\nimport { Badge, Tooltip, styled } from '@mui/material';\n\nconst StyledBadge = styled(Badge)(({ theme }: any) => ({\n color: theme.palette.error.main,\n}));\n\nexport interface ValidationProps {\n errorMessages: string;\n id: string;\n}\n\nconst ValidationIcon: React.FC<ValidationProps> = ({ errorMessages, id }) => {\n return (\n <Tooltip id={id} title={errorMessages}>\n <StyledBadge badgeContent={errorMessages.split('\\n').length}>\n <ErrorOutline color='inherit' />\n </StyledBadge>\n </Tooltip>\n );\n};\n\nexport default ValidationIcon;\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n ControlElement,\n createDefaultValue,\n JsonSchema,\n ArrayTranslations,\n} from '@jsonforms/core';\nimport {\n IconButton,\n TableRow,\n Tooltip,\n Grid,\n Typography,\n FormHelperText,\n Stack,\n} from '@mui/material';\nimport { Add } from '@mui/icons-material';\nimport ValidationIcon from './ValidationIcon';\nimport NoBorderTableCell from './NoBorderTableCell';\n\nexport interface MaterialTableToolbarProps {\n numColumns: number;\n errors: string;\n label: string;\n description: string;\n path: string;\n uischema: ControlElement;\n schema: JsonSchema;\n rootSchema: JsonSchema;\n enabled: boolean;\n translations: ArrayTranslations;\n addItem(path: string, value: any): () => void;\n disableAdd?: boolean;\n}\n\nconst fixedCellSmall = {\n paddingLeft: 0,\n paddingRight: 0,\n};\n\nconst TableToolbar = React.memo(function TableToolbar({\n numColumns,\n errors,\n label,\n description,\n path,\n addItem,\n schema,\n enabled,\n translations,\n rootSchema,\n disableAdd,\n}: MaterialTableToolbarProps) {\n return (\n <TableRow>\n <NoBorderTableCell colSpan={numColumns}>\n <Stack>\n <Grid\n container\n justifyContent={'flex-start'}\n alignItems={'center'}\n spacing={2}\n >\n <Grid>\n <Typography variant={'h6'}>{label}</Typography>\n </Grid>\n <Grid>\n {errors.length !== 0 && (\n <Grid>\n <ValidationIcon\n id='tooltip-validation'\n errorMessages={errors}\n />\n </Grid>\n )}\n </Grid>\n </Grid>\n {description && <FormHelperText>{description}</FormHelperText>}\n </Stack>\n </NoBorderTableCell>\n {enabled && !disableAdd ? (\n <NoBorderTableCell align='right' style={fixedCellSmall}>\n <Tooltip\n id='tooltip-add'\n title={translations.addTooltip}\n placement='bottom'\n >\n <IconButton\n aria-label={translations.addAriaLabel}\n onClick={addItem(path, createDefaultValue(schema, rootSchema))}\n size='large'\n >\n <Add />\n </IconButton>\n </Tooltip>\n </NoBorderTableCell>\n ) : null}\n </TableRow>\n );\n});\n\nexport default TableToolbar;\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport isEmpty from 'lodash/isEmpty';\nimport union from 'lodash/union';\nimport {\n DispatchCell,\n JsonFormsStateContext,\n useJsonForms,\n} from '@jsonforms/react';\nimport startCase from 'lodash/startCase';\nimport range from 'lodash/range';\nimport React, { Fragment, useMemo } from 'react';\nimport {\n FormHelperText,\n Grid,\n IconButton,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Tooltip,\n Typography,\n} from '@mui/material';\nimport {\n ArrayLayoutProps,\n ControlElement,\n errorAt,\n formatErrorMessage,\n JsonSchema,\n Paths,\n Resolve,\n JsonFormsRendererRegistryEntry,\n JsonFormsCellRendererRegistryEntry,\n encode,\n ArrayTranslations,\n} from '@jsonforms/core';\nimport { Delete, ArrowDownward, ArrowUpward } from '@mui/icons-material';\n\nimport { WithDeleteDialogSupport } from './DeleteDialog';\nimport NoBorderTableCell from './NoBorderTableCell';\nimport TableToolbar from './TableToolbar';\nimport { ErrorObject } from 'ajv';\nimport merge from 'lodash/merge';\n\n// we want a cell that doesn't automatically span\nconst styles = {\n fixedCell: {\n width: '150px',\n height: '50px',\n paddingLeft: 0,\n paddingRight: 0,\n textAlign: 'center',\n },\n fixedCellSmall: {\n width: '50px',\n height: '50px',\n paddingLeft: 0,\n paddingRight: 0,\n textAlign: 'center',\n },\n};\n\nconst generateCells = (\n Cell: React.ComponentType<OwnPropsOfNonEmptyCell | TableHeaderCellProps>,\n schema: JsonSchema,\n rowPath: string,\n enabled: boolean,\n cells?: JsonFormsCellRendererRegistryEntry[]\n) => {\n if (schema.type === 'object') {\n return getValidColumnProps(schema).map((prop) => {\n const cellPath = Paths.compose(rowPath, prop);\n const props = {\n propName: prop,\n schema,\n title: schema.properties?.[prop]?.title ?? startCase(prop),\n rowPath,\n cellPath,\n enabled,\n cells,\n };\n return <Cell key={cellPath} {...props} />;\n });\n } else {\n // primitives\n const props = {\n schema,\n rowPath,\n cellPath: rowPath,\n enabled,\n };\n return <Cell key={rowPath} {...props} />;\n }\n};\n\nconst getValidColumnProps = (scopedSchema: JsonSchema) => {\n if (\n scopedSchema.type === 'object' &&\n typeof scopedSchema.properties === 'object'\n ) {\n return Object.keys(scopedSchema.properties).filter(\n (prop) => scopedSchema.properties[prop].type !== 'array'\n );\n }\n // primitives\n return [''];\n};\n\nexport interface EmptyTableProps {\n numColumns: number;\n translations: ArrayTranslations;\n}\n\nconst EmptyTable = ({ numColumns, translations }: EmptyTableProps) => (\n <TableRow>\n <NoBorderTableCell colSpan={numColumns}>\n <Typography align='center'>{translations.noDataMessage}</Typography>\n </NoBorderTableCell>\n </TableRow>\n);\n\ninterface TableHeaderCellProps {\n title: string;\n}\n\nconst TableHeaderCell = React.memo(function TableHeaderCell({\n title,\n}: TableHeaderCellProps) {\n return <TableCell>{title}</TableCell>;\n});\n\ninterface NonEmptyCellProps extends OwnPropsOfNonEmptyCell {\n rootSchema: JsonSchema;\n errors: string;\n path: string;\n enabled: boolean;\n}\ninterface OwnPropsOfNonEmptyCell {\n rowPath: string;\n propName?: string;\n schema: JsonSchema;\n enabled: boolean;\n renderers?: JsonFormsRendererRegistryEntry[];\n cells?: JsonFormsCellRendererRegistryEntry[];\n}\nconst ctxToNonEmptyCellProps = (\n ctx: JsonFormsStateContext,\n ownProps: OwnPropsOfNonEmptyCell\n): NonEmptyCellProps => {\n const path =\n ownProps.rowPath +\n (ownProps.schema.type === 'object' ? '.' + ownProps.propName : '');\n const errors = formatErrorMessage(\n union(\n errorAt(\n path,\n ownProps.schema\n )(ctx.core).map((error: ErrorObject) => error.message)\n )\n );\n return {\n rowPath: ownProps.rowPath,\n propName: ownProps.propName,\n schema: ownProps.schema,\n rootSchema: ctx.core.schema,\n errors,\n path,\n enabled: ownProps.enabled,\n cells: ownProps.cells || ctx.cells,\n renderers: ownProps.renderers || ctx.renderers,\n };\n};\n\nconst controlWithoutLabel = (scope: string): ControlElement => ({\n type: 'Control',\n scope: scope,\n label: false,\n});\n\ninterface NonEmptyCellComponentProps {\n path: string;\n propName?: string;\n schema: JsonSchema;\n rootSchema: JsonSchema;\n errors: string;\n enabled: boolean;\n renderers?: JsonFormsRendererRegistryEntry[];\n cells?: JsonFormsCellRendererRegistryEntry[];\n isValid: boolean;\n}\nconst NonEmptyCellComponent = React.memo(function NonEmptyCellComponent({\n path,\n propName,\n schema,\n rootSchema,\n errors,\n enabled,\n renderers,\n cells,\n isValid,\n}: NonEmptyCellComponentProps) {\n return (\n <NoBorderTableCell>\n {schema.properties ? (\n <DispatchCell\n schema={Resolve.schema(\n schema,\n `#/properties/${encode(propName)}`,\n rootSchema\n )}\n uischema={controlWithoutLabel(`#/properties/${encode(propName)}`)}\n path={path}\n enabled={enabled}\n renderers={renderers}\n cells={cells}\n />\n ) : (\n <DispatchCell\n schema={schema}\n uischema={controlWithoutLabel('#')}\n path={path}\n enabled={enabled}\n renderers={renderers}\n cells={cells}\n />\n )}\n <FormHelperText error={!isValid}>{!isValid && errors}</FormHelperText>\n </NoBorderTableCell>\n );\n});\n\nconst NonEmptyCell = (ownProps: OwnPropsOfNonEmptyCell) => {\n const ctx = useJsonForms();\n const emptyCellProps = ctxToNonEmptyCellProps(ctx, ownProps);\n\n const isValid = isEmpty(emptyCellProps.errors);\n return <NonEmptyCellComponent {...emptyCellProps} isValid={isValid} />;\n};\n\ninterface NonEmptyRowProps {\n childPath: string;\n schema: JsonSchema;\n rowIndex: number;\n moveUpCreator: (path: string, position: number) => () => void;\n moveDownCreator: (path: string, position: number) => () => void;\n enableUp: boolean;\n enableDown: boolean;\n showSortButtons: boolean;\n enabled: boolean;\n cells?: JsonFormsCellRendererRegistryEntry[];\n path: string;\n translations: ArrayTranslations;\n disableRemove?: boolean;\n}\n\nconst NonEmptyRowComponent = ({\n childPath,\n schema,\n rowIndex,\n openDeleteDialog,\n moveUpCreator,\n moveDownCreator,\n enableUp,\n enableDown,\n showSortButtons,\n enabled,\n cells,\n path,\n translations,\n disableRemove,\n}: NonEmptyRowProps & WithDeleteDialogSupport) => {\n const moveUp = useMemo(\n () => moveUpCreator(path, rowIndex),\n [moveUpCreator, path, rowIndex]\n );\n const moveDown = useMemo(\n () => moveDownCreator(path, rowIndex),\n [moveDownCreator, path, rowIndex]\n );\n return (\n <TableRow key={childPath} hover>\n {generateCells(NonEmptyCell, schema, childPath, enabled, cells)}\n {enabled ? (\n <NoBorderTableCell\n style={showSortButtons ? styles.fixedCell : styles.fixedCellSmall}\n >\n <Grid\n container\n direction='row'\n justifyContent='flex-end'\n alignItems='center'\n >\n {showSortButtons ? (\n <Fragment>\n <Grid>\n <Tooltip\n id='tooltip-up'\n title={translations.up}\n placement='bottom'\n open={enableUp ? undefined : false}\n >\n <IconButton\n aria-label={translations.upAriaLabel}\n onClick={moveUp}\n disabled={!enableUp}\n size='large'\n >\n <ArrowUpward />\n </IconButton>\n </Tooltip>\n </Grid>\n <Grid>\n <Tooltip\n id='tooltip-down'\n title={translations.down}\n placement='bottom'\n open={enableDown ? undefined : false}\n >\n <IconButton\n aria-label={translations.downAriaLabel}\n onClick={moveDown}\n disabled={!enableDown}\n size='large'\n >\n <ArrowDownward />\n </IconButton>\n </Tooltip>\n </Grid>\n </Fragment>\n ) : null}\n {!disableRemove ? (\n <Grid>\n <Tooltip\n id='tooltip-remove'\n title={translations.removeTooltip}\n placement='bottom'\n >\n <IconButton\n aria-label={translations.removeAriaLabel}\n onClick={() => openDeleteDialog(childPath, rowIndex)}\n size='large'\n >\n <Delete />\n </IconButton>\n </Tooltip>\n </Grid>\n ) : null}\n </Grid>\n </NoBorderTableCell>\n ) : null}\n </TableRow>\n );\n};\nexport const NonEmptyRow = React.memo(NonEmptyRowComponent);\ninterface TableRowsProp {\n data: number;\n path: string;\n schema: JsonSchema;\n uischema: ControlElement;\n config?: any;\n enabled: boolean;\n cells?: JsonFormsCellRendererRegistryEntry[];\n moveUp?(path: string, toMove: number): () => void;\n moveDown?(path: string, toMove: number): () => void;\n translations: ArrayTranslations;\n disableRemove?: boolean;\n}\nconst TableRows = ({\n data,\n path,\n schema,\n openDeleteDialog,\n moveUp,\n moveDown,\n uischema,\n config,\n enabled,\n cells,\n translations,\n disableRemove,\n}: TableRowsProp & WithDeleteDialogSupport) => {\n const isEmptyTable = data === 0;\n\n if (isEmptyTable) {\n return (\n <EmptyTable\n numColumns={getValidColumnProps(schema).length + 1}\n translations={translations}\n />\n );\n }\n\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n\n return (\n <React.Fragment>\n {range(data).map((index: number) => {\n const childPath = Paths.compose(path, `${index}`);\n\n return (\n <NonEmptyRow\n key={childPath}\n childPath={childPath}\n rowIndex={index}\n schema={schema}\n openDeleteDialog={openDeleteDialog}\n moveUpCreator={moveUp}\n moveDownCreator={moveDown}\n enableUp={index !== 0}\n enableDown={index !== data - 1}\n showSortButtons={\n appliedUiSchemaOptions.showSortButtons ||\n appliedUiSchemaOptions.showArrayTableSortButtons\n }\n enabled={enabled}\n cells={cells}\n path={path}\n translations={translations}\n disableRemove={disableRemove}\n />\n );\n })}\n </React.Fragment>\n );\n};\n\nexport class MaterialTableControl extends React.Component<\n ArrayLayoutProps &\n WithDeleteDialogSupport & { translations: ArrayTranslations },\n any\n> {\n addItem = (path: string, value: any) => this.props.addItem(path, value);\n render() {\n const {\n label,\n description,\n path,\n schema,\n rootSchema,\n uischema,\n errors,\n openDeleteDialog,\n visible,\n enabled,\n cells,\n translations,\n disableAdd,\n disableRemove,\n config,\n } = this.props;\n\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const doDisableAdd = disableAdd || appliedUiSchemaOptions.disableAdd;\n const doDisableRemove =\n disableRemove || appliedUiSchemaOptions.disableRemove;\n\n const controlElement = uischema as ControlElement;\n const isObjectSchema = schema.type === 'object';\n const headerCells: any = isObjectSchema\n ? generateCells(TableHeaderCell, schema, path, enabled, cells)\n : undefined;\n\n if (!visible) {\n return null;\n }\n\n return (\n <Table>\n <TableHead>\n <TableToolbar\n errors={errors}\n label={label}\n description={description}\n addItem={this.addItem}\n numColumns={isObjectSchema ? headerCells.length : 1}\n path={path}\n uischema={controlElement}\n schema={schema}\n rootSchema={rootSchema}\n enabled={enabled}\n translations={translations}\n disableAdd={doDisableAdd}\n />\n {isObjectSchema && (\n <TableRow>\n {headerCells}\n {enabled ? <TableCell /> : null}\n </TableRow>\n )}\n </TableHead>\n <TableBody>\n <TableRows\n openDeleteDialog={openDeleteDialog}\n translations={translations}\n {...this.props}\n disableRemove={doDisableRemove}\n />\n </TableBody>\n </Table>\n );\n }\n}\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n} from '@mui/material';\n\nexport interface DeleteDialogProps {\n open: boolean;\n onClose(): void;\n onConfirm(): void;\n onCancel(): void;\n title: string;\n message: string;\n acceptText: string;\n declineText: string;\n}\n\nexport interface WithDeleteDialogSupport {\n openDeleteDialog(path: string, data: number): void;\n}\n\nexport const DeleteDialog = React.memo(function DeleteDialog({\n open,\n onClose,\n onConfirm,\n onCancel,\n title,\n message,\n acceptText,\n declineText,\n}: DeleteDialogProps) {\n return (\n <Dialog\n open={open}\n keepMounted\n onClose={onClose}\n aria-labelledby='alert-dialog-confirmdelete-title'\n aria-describedby='alert-dialog-confirmdelete-description'\n >\n <DialogTitle id='alert-dialog-confirmdelete-title'>{title}</DialogTitle>\n <DialogContent>\n <DialogContentText id='alert-dialog-confirmdelete-description'>\n {message}\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button onClick={onCancel} color='primary'>\n {declineText}\n </Button>\n <Button onClick={onConfirm} color='primary'>\n {acceptText}\n </Button>\n </DialogActions>\n </Dialog>\n );\n});\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { useCallback, useState } from 'react';\nimport {\n ArrayLayoutProps,\n ArrayTranslations,\n RankedTester,\n isObjectArrayControl,\n isPrimitiveArrayControl,\n or,\n rankWith,\n} from '@jsonforms/core';\nimport {\n withArrayTranslationProps,\n withJsonFormsArrayLayoutProps,\n withTranslateProps,\n} from '@jsonforms/react';\nimport { MaterialTableControl } from './MaterialTableControl';\nimport { DeleteDialog } from './DeleteDialog';\n\nexport const MaterialArrayControlRenderer = (\n props: ArrayLayoutProps & { translations: ArrayTranslations }\n) => {\n const [open, setOpen] = useState(false);\n const [path, setPath] = useState(undefined);\n const [rowData, setRowData] = useState(undefined);\n const { removeItems, visible, translations } = props;\n\n const openDeleteDialog = useCallback(\n (p: string, rowIndex: number) => {\n setOpen(true);\n setPath(p);\n setRowData(rowIndex);\n },\n [setOpen, setPath, setRowData]\n );\n const deleteCancel = useCallback(() => setOpen(false), [setOpen]);\n const deleteConfirm = useCallback(() => {\n const p = path.substring(0, path.lastIndexOf('.'));\n removeItems(p, [rowData])();\n setOpen(false);\n }, [setOpen, path, rowData]);\n const deleteClose = useCallback(() => setOpen(false), [setOpen]);\n\n if (!visible) {\n return null;\n }\n\n return (\n <>\n <MaterialTableControl\n {...props}\n openDeleteDialog={openDeleteDialog}\n translations={translations}\n />\n <DeleteDialog\n open={open}\n onCancel={deleteCancel}\n onConfirm={deleteConfirm}\n onClose={deleteClose}\n acceptText={translations.deleteDialogAccept}\n declineText={translations.deleteDialogDecline}\n title={translations.deleteDialogTitle}\n message={translations.deleteDialogMessage}\n />\n </>\n );\n};\n\nexport const materialArrayControlTester: RankedTester = rankWith(\n 3,\n or(isObjectArrayControl, isPrimitiveArrayControl)\n);\n\nexport default withJsonFormsArrayLayoutProps(\n withTranslateProps(withArrayTranslationProps(MaterialArrayControlRenderer))\n);\n","/*\n The MIT License\n \n Copyright (c) 2021 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport { useState, useCallback } from 'react';\n\nexport const useFocus = (): [boolean, () => void, () => void] => {\n const [focused, setFocused] = useState(false);\n const onFocus = useCallback(() => setFocused(true), []);\n const onBlur = useCallback(() => setFocused(false), []);\n return [focused, onFocus, onBlur];\n};\n","/*\n The MIT License\n\n Copyright (c) 2017-2020 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { ReactNode } from 'react';\nimport {\n ControlProps,\n EnumCellProps,\n EnumOption,\n isDescriptionHidden,\n WithClassname,\n} from '@jsonforms/core';\n\nimport {\n Autocomplete,\n AutocompleteRenderOptionState,\n FilterOptionsState,\n FormHelperText,\n TextField,\n} from '@mui/material';\nimport merge from 'lodash/merge';\nimport { useFocus } from '../util/focus';\n\nexport interface WithOptionLabel {\n getOptionLabel?(option: EnumOption): string;\n renderOption?(\n props: React.HTMLAttributes<HTMLLIElement>,\n option: EnumOption,\n state: AutocompleteRenderOptionState\n ): ReactNode;\n filterOptions?(\n options: EnumOption[],\n state: FilterOptionsState<EnumOption>\n ): EnumOption[];\n}\n\nexport const MuiAutocomplete = (\n props: ControlProps & EnumCellProps & WithClassname & WithOptionLabel\n) => {\n const {\n description,\n errors,\n visible,\n required,\n label,\n data,\n className,\n id,\n enabled,\n uischema,\n path,\n handleChange,\n options,\n config,\n getOptionLabel,\n renderOption,\n filterOptions,\n isValid,\n } = props;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const [inputValue, setInputValue] = React.useState(data ?? '');\n const [focused, onFocus, onBlur] = useFocus();\n\n const findOption = options.find((o) => o.value === data) ?? null;\n\n const showDescription = !isDescriptionHidden(\n visible,\n description,\n focused,\n appliedUiSchemaOptions.showUnfocusedDescription\n );\n\n const firstFormHelperText = showDescription\n ? description\n : !isValid\n ? errors\n : null;\n const secondFormHelperText = showDescription && !isValid ? errors : null;\n\n if (!visible) {\n return null;\n }\n\n return (\n <>\n <Autocomplete\n className={className}\n id={id}\n disabled={!enabled}\n value={findOption}\n onChange={(_event: any, newValue: EnumOption | null) => {\n handleChange(path, newValue?.value);\n }}\n inputValue={inputValue}\n onInputChange={(_event, newInputValue) => {\n setInputValue(newInputValue);\n }}\n autoHighlight\n autoComplete\n fullWidth\n options={options}\n getOptionLabel={getOptionLabel || ((option) => option?.label)}\n freeSolo={false}\n renderInput={(params) => {\n return (\n <TextField\n label={label}\n type='text'\n inputProps={params.inputProps}\n inputRef={params.InputProps.ref}\n autoFocus={appliedUiSchemaOptions.focus}\n disabled={!enabled}\n {...params}\n id={id}\n required={\n required && !appliedUiSchemaOptions.hideRequiredAsterisk\n }\n error={!isValid}\n fullWidth={!appliedUiSchemaOptions.trim}\n InputLabelProps={data ? { shrink: true } : undefined}\n onFocus={onFocus}\n onBlur={onBlur}\n focused={focused}\n />\n );\n }}\n renderOption={renderOption}\n filterOptions={filterOptions}\n />\n <FormHelperText error={!isValid && !showDescription}>\n {firstFormHelperText}\n </FormHelperText>\n <FormHelperText error={!isValid}>{secondFormHelperText}</FormHelperText>\n </>\n );\n};\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport { CellProps, WithClassname } from '@jsonforms/core';\nimport { Checkbox, InputProps } from '@mui/material';\nimport merge from 'lodash/merge';\n\ninterface MuiCheckboxInputProps {\n inputProps?: InputProps['inputProps'];\n}\n\nexport const MuiCheckbox = React.memo(function MuiCheckbox(\n props: CellProps & WithClassname & MuiCheckboxInputProps\n) {\n const {\n data,\n className,\n id,\n enabled,\n uischema,\n path,\n handleChange,\n config,\n inputProps,\n } = props;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const inputPropsMerged = merge({}, inputProps, {\n autoFocus: !!appliedUiSchemaOptions.focus,\n });\n // !! causes undefined value to be converted to false, otherwise has no effect\n const checked = !!data;\n\n return (\n <Checkbox\n checked={checked}\n onChange={(_ev, isChecked) => handleChange(path, isChecked)}\n className={className}\n id={id}\n disabled={!enabled}\n slotProps={{ input: inputPropsMerged }}\n />\n );\n});\n","import dayjs from 'dayjs';\nimport customParsing from 'dayjs/plugin/customParseFormat';\n\n// required for the custom save formats in the date, time and date-time pickers\ndayjs.extend(customParsing);\n\nexport const createOnChangeHandler =\n (\n path: string,\n handleChange: (path: string, value: any) => void,\n saveFormat: string\n ) =>\n (value: dayjs.Dayjs) => {\n if (!value) {\n handleChange(path, undefined);\n } else if (value.toString() !== 'Invalid Date') {\n const formatedDate = formatDate(value, saveFormat);\n handleChange(path, formatedDate);\n }\n };\n\nexport const createOnBlurHandler =\n (\n path: string,\n handleChange: (path: string, value: any) => void,\n format: string,\n saveFormat: string,\n rerenderChild: () => void,\n onBlur: () => void\n ) =>\n (e: React.FocusEvent<HTMLTextAreaElement | HTMLInputElement, Element>) => {\n const date = dayjs(e.target.value, format);\n const formatedDate = formatDate(date, saveFormat);\n if (formatedDate.toString() === 'Invalid Date') {\n handleChange(path, undefined);\n rerenderChild();\n } else {\n handleChange(path, formatedDate);\n }\n onBlur();\n };\n\nexport const formatDate = (date: dayjs.Dayjs, saveFormat: string) => {\n let formatedDate = date.format(saveFormat);\n // Workaround to address a bug in Dayjs, neglecting leading 0 (https://github.com/iamkun/dayjs/issues/1849)\n const indexOfYear = saveFormat.indexOf('YYYY');\n if (date.year() < 1000 && indexOfYear !== -1) {\n const stringUpToYear = formatedDate.slice(0, indexOfYear);\n const stringFromYear = formatedDate.slice(indexOfYear);\n if (date.year() >= 100) {\n formatedDate = [stringUpToYear, 0, stringFromYear].join('');\n } else if (date.year() >= 10) {\n formatedDate = [stringUpToYear, 0, 0, stringFromYear].join('');\n } else if (date.year() >= 1) {\n formatedDate = [stringUpToYear, 0, 0, 0, stringFromYear].join('');\n }\n }\n return formatedDate;\n};\n\nexport const getData = (\n data: any,\n saveFormat: string | undefined\n): dayjs.Dayjs | null => {\n if (!data) {\n return null;\n }\n const dayjsData = dayjs(data, saveFormat);\n if (dayjsData.toString() === 'Invalid Date') {\n return null;\n }\n return dayjsData;\n};\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport isEmpty from 'lodash/isEmpty';\nimport React, { ComponentType } from 'react';\nimport type Ajv from 'ajv';\nimport type { UISchemaElement } from '@jsonforms/core';\nimport {\n getAjv,\n JsonFormsCellRendererRegistryEntry,\n JsonFormsRendererRegistryEntry,\n JsonSchema,\n OwnPropsOfRenderer,\n} from '@jsonforms/core';\nimport { JsonFormsDispatch, useJsonForms } from '@jsonforms/react';\nimport { Grid } from '@mui/material';\n\nexport const renderLayoutElements = (\n elements: UISchemaElement[],\n schema: JsonSchema,\n path: string,\n enabled: boolean,\n renderers?: JsonFormsRendererRegistryEntry[],\n cells?: JsonFormsCellRendererRegistryEntry[]\n) => {\n return elements.map((child, index) => (\n <Grid key={`${path}-${index}`} size='grow'>\n <JsonFormsDispatch\n uischema={child}\n schema={schema}\n path={path}\n enabled={enabled}\n renderers={renderers}\n cells={cells}\n />\n </Grid>\n ));\n};\n\nexport interface MaterialLayoutRendererProps extends OwnPropsOfRenderer {\n elements: UISchemaElement[];\n direction: 'row' | 'column';\n}\nconst MaterialLayoutRendererComponent = ({\n visible,\n elements,\n schema,\n path,\n enabled,\n direction,\n renderers,\n cells,\n}: MaterialLayoutRendererProps) => {\n if (isEmpty(elements) || !visible) {\n return null;\n } else {\n return (\n <Grid\n container\n direction={direction}\n spacing={direction === 'row' ? 2 : 0}\n >\n {renderLayoutElements(\n elements,\n schema,\n path,\n enabled,\n renderers,\n cells\n )}\n </Grid>\n );\n }\n};\nexport const MaterialLayoutRenderer = React.memo(\n MaterialLayoutRendererComponent\n);\n\nexport interface AjvProps {\n ajv: Ajv;\n}\n\n// TODO fix @typescript-eslint/ban-types\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const withAjvProps = <P extends {}>(\n Component: ComponentType<AjvProps & P>\n) =>\n function WithAjvProps(props: P) {\n const ctx = useJsonForms();\n const ajv = getAjv({ jsonforms: { ...ctx } });\n\n return <Component {...props} ajv={ajv} />;\n };\n\nexport interface MaterialLabelableLayoutRendererProps\n extends MaterialLayoutRendererProps {\n label?: string;\n}\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport {\n Theme,\n FilledInput,\n Input,\n OutlinedInput,\n TextFieldProps,\n useThemeProps,\n InputBaseProps,\n} from '@mui/material';\n\nexport interface JsonFormsTheme extends Theme {\n jsonforms?: {\n input?: {\n delete?: {\n background?: string;\n };\n };\n };\n}\n\nexport interface WithInputProps {\n label?: string;\n}\n\nexport interface WithSelectProps {\n multiple?: boolean;\n}\n\nconst variantToInput = {\n standard: Input,\n filled: FilledInput,\n outlined: OutlinedInput,\n};\n\nexport const defaultInputVariant: TextFieldProps['variant'] = 'outlined';\n\nexport function useInputVariant(): TextFieldProps['variant'] {\n const { variant = defaultInputVariant } = useThemeProps({\n props: {} as TextFieldProps,\n name: 'MuiTextField',\n });\n return variant;\n}\n\nexport function useInputComponent(): React.JSXElementConstructor<\n InputBaseProps & WithInputProps\n> {\n const variant = useInputVariant();\n return variantToInput[variant] ?? variantToInput[defaultInputVariant];\n}\n","/*\n The MIT License\n\n Copyright (c) 2021 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport debounce from 'lodash/debounce';\nimport { useState, useCallback, useEffect } from 'react';\n\nconst eventToValue = (ev: any) => ev.target.value;\nexport const useDebouncedChange = (\n handleChange: (path: string, value: any) => void,\n defaultValue: any,\n data: any,\n path: string,\n eventToValueFunction: (ev: any) => any = eventToValue,\n timeout = 300,\n flushOnBlur = false,\n focused = false\n): [any, React.ChangeEventHandler, () => void] => {\n const [input, setInput] = useState(data ?? defaultValue);\n useEffect(() => {\n setInput(data ?? defaultValue);\n }, [data]);\n const debouncedUpdate = useCallback(\n debounce((newValue: string) => handleChange(path, newValue), timeout),\n [handleChange, path, timeout]\n );\n useEffect(() => {\n if (!focused && flushOnBlur) {\n debouncedUpdate.flush();\n }\n }, [focused, flushOnBlur, debouncedUpdate]);\n const onChange = useCallback(\n (ev: any) => {\n const newValue = eventToValueFunction(ev);\n setInput(newValue ?? defaultValue);\n debouncedUpdate(newValue);\n },\n [debouncedUpdate, eventToValueFunction]\n );\n const onClear = useCallback(() => {\n setInput(defaultValue);\n handleChange(path, undefined);\n }, [defaultValue, handleChange, path]);\n return [input, onChange, onClear];\n};\n","export const i18nDefaults = {\n 'enum.none': 'None',\n};\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport { CellProps, WithClassname } from '@jsonforms/core';\nimport merge from 'lodash/merge';\nimport {\n useDebouncedChange,\n useInputComponent,\n WithInputProps,\n useFocus,\n} from '../util';\n\nconst toNumber = (value: string) =>\n value === '' ? undefined : parseInt(value, 10);\nconst eventToValue = (ev: any) => toNumber(ev.target.value);\n\nexport const MuiInputInteger = React.memo(function MuiInputInteger(\n props: CellProps & WithClassname & WithInputProps\n) {\n const [focused, onFocus, onBlur] = useFocus();\n const {\n data,\n className,\n id,\n enabled,\n uischema,\n isValid,\n path,\n handleChange,\n config,\n label,\n } = props;\n const InputComponent = useInputComponent();\n const inputProps = { step: '1' };\n\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n\n const [inputValue, onChange] = useDebouncedChange(\n handleChange,\n '',\n data,\n path,\n eventToValue,\n undefined,\n true,\n focused\n );\n\n return (\n <InputComponent\n label={label}\n type='number'\n value={inputValue}\n onFocus={onFocus}\n onBlur={onBlur}\n onChange={onChange}\n className={className}\n id={id}\n disabled={!enabled}\n autoFocus={appliedUiSchemaOptions.focus}\n inputProps={inputProps}\n fullWidth={true}\n error={!isValid}\n />\n );\n});\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport { CellProps, WithClassname } from '@jsonforms/core';\nimport merge from 'lodash/merge';\nimport {\n useDebouncedChange,\n useInputComponent,\n WithInputProps,\n useFocus,\n} from '../util';\n\nconst toNumber = (value: string) =>\n value === '' ? undefined : parseFloat(value);\nconst eventToValue = (ev: any) => toNumber(ev.target.value);\nexport const MuiInputNumber = React.memo(function MuiInputNumber(\n props: CellProps & WithClassname & WithInputProps\n) {\n const [focused, onFocus, onBlur] = useFocus();\n const {\n data,\n className,\n id,\n enabled,\n uischema,\n isValid,\n path,\n handleChange,\n config,\n label,\n } = props;\n const InputComponent = useInputComponent();\n const inputProps = { step: '0.1' };\n\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const [inputValue, onChange] = useDebouncedChange(\n handleChange,\n '',\n data,\n path,\n eventToValue,\n undefined,\n true,\n focused\n );\n\n return (\n <InputComponent\n type='number'\n label={label}\n value={inputValue}\n onChange={onChange}\n onFocus={onFocus}\n onBlur={onBlur}\n className={className}\n id={id}\n disabled={!enabled}\n autoFocus={appliedUiSchemaOptions.focus}\n inputProps={inputProps}\n fullWidth={true}\n error={!isValid}\n />\n );\n});\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { useCallback } from 'react';\nimport { CellProps, Formatted, WithClassname } from '@jsonforms/core';\nimport merge from 'lodash/merge';\nimport {\n useDebouncedChange,\n useInputComponent,\n WithInputProps,\n useFocus,\n} from '../util';\n\nexport const MuiInputNumberFormat = React.memo(function MuiInputNumberFormat(\n props: CellProps & WithClassname & Formatted<number> & WithInputProps\n) {\n const [focused, onFocus, onBlur] = useFocus();\n const {\n className,\n id,\n enabled,\n uischema,\n isValid,\n path,\n handleChange,\n schema,\n config,\n label,\n } = props;\n const InputComponent = useInputComponent();\n const maxLength = schema.maxLength;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n let inputProps;\n if (appliedUiSchemaOptions.restrict) {\n inputProps = { maxLength: maxLength };\n } else {\n inputProps = {};\n }\n const formattedNumber = props.toFormatted(props.data);\n\n const validStringNumber = useCallback(\n (ev: any) => props.fromFormatted(ev.currentTarget.value),\n [props.fromFormatted]\n );\n const [inputValue, onChange] = useDebouncedChange(\n handleChange,\n '',\n formattedNumber,\n path,\n validStringNumber,\n undefined,\n true,\n focused\n );\n\n return (\n <InputComponent\n type='text'\n value={inputValue}\n onChange={onChange}\n onFocus={onFocus}\n onBlur={onBlur}\n className={className}\n id={id}\n label={label}\n disabled={!enabled}\n autoFocus={appliedUiSchemaOptions.focus}\n multiline={appliedUiSchemaOptions.multi}\n fullWidth={!appliedUiSchemaOptions.trim || maxLength === undefined}\n inputProps={inputProps}\n error={!isValid}\n />\n );\n});\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { useState } from 'react';\nimport { CellProps, WithClassname } from '@jsonforms/core';\nimport {\n IconButton,\n InputAdornment,\n InputBaseComponentProps,\n InputProps,\n useTheme,\n} from '@mui/material';\nimport merge from 'lodash/merge';\nimport { Close } from '@mui/icons-material';\nimport {\n JsonFormsTheme,\n WithInputProps,\n useDebouncedChange,\n useInputComponent,\n useFocus,\n} from '../util';\n\ninterface MuiTextInputProps {\n muiInputProps?: InputProps['inputProps'];\n inputComponent?: InputProps['inputComponent'];\n}\n\nconst eventToValue = (ev: any) =>\n ev.target.value === '' ? undefined : ev.target.value;\n\nexport const MuiInputText = React.memo(function MuiInputText(\n props: CellProps & WithClassname & MuiTextInputProps & WithInputProps\n) {\n const [focused, onFocus, onBlur] = useFocus();\n const [showAdornment, setShowAdornment] = useState(false);\n const {\n data,\n config,\n className,\n id,\n enabled,\n uischema,\n isValid,\n path,\n handleChange,\n schema,\n muiInputProps,\n label,\n inputComponent,\n } = props;\n const InputComponent = useInputComponent();\n const maxLength = schema.maxLength;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n let inputProps: InputBaseComponentProps;\n if (appliedUiSchemaOptions.restrict) {\n inputProps = { maxLength: maxLength };\n } else {\n inputProps = {};\n }\n\n inputProps = merge(inputProps, muiInputProps);\n\n if (appliedUiSchemaOptions.trim && maxLength !== undefined) {\n inputProps.size = maxLength;\n }\n\n const [inputText, onChange, onClear] = useDebouncedChange(\n handleChange,\n '',\n data,\n path,\n eventToValue,\n undefined,\n true,\n focused\n );\n const onPointerEnter = () => setShowAdornment(true);\n const onPointerLeave = () => setShowAdornment(false);\n\n const theme: JsonFormsTheme = useTheme();\n\n const closeStyle = {\n background:\n theme.jsonforms?.input?.delete?.background ||\n theme.palette.background.default,\n borderRadius: '50%',\n };\n\n return (\n <InputComponent\n label={label}\n type={appliedUiSchemaOptions.format === 'password' ? 'password' : 'text'}\n value={inputText}\n onChange={onChange}\n className={className}\n onBlur={onBlur}\n onFocus={onFocus}\n id={id}\n disabled={!enabled}\n autoFocus={appliedUiSchemaOptions.focus}\n multiline={appliedUiSchemaOptions.multi}\n fullWidth={!appliedUiSchemaOptions.trim || maxLength === undefined}\n inputProps={inputProps}\n error={!isValid}\n onPointerEnter={onPointerEnter}\n onPointerLeave={onPointerLeave}\n endAdornment={\n <InputAdornment\n position='end'\n style={{\n display:\n !showAdornment || !enabled || data === undefined\n ? 'none'\n : 'flex',\n position: 'absolute',\n right: 0,\n }}\n >\n <IconButton\n aria-label='Clear input field'\n onClick={onClear}\n size='large'\n >\n <Close style={closeStyle} />\n </IconButton>\n </InputAdornment>\n }\n inputComponent={inputComponent}\n />\n );\n});\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport { CellProps, WithClassname } from '@jsonforms/core';\nimport merge from 'lodash/merge';\nimport { WithInputProps, useDebouncedChange, useInputComponent } from '../util';\n\nexport const MuiInputTime = React.memo(function MuiInputTime(\n props: CellProps & WithClassname & WithInputProps\n) {\n const {\n data,\n className,\n id,\n enabled,\n uischema,\n isValid,\n path,\n handleChange,\n config,\n label,\n } = props;\n const InputComponent = useInputComponent();\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const [inputValue, onChange] = useDebouncedChange(\n handleChange,\n '',\n data,\n path\n );\n\n return (\n <InputComponent\n type='time'\n value={inputValue}\n onChange={onChange}\n className={className}\n id={id}\n label={label}\n disabled={!enabled}\n autoFocus={appliedUiSchemaOptions.focus}\n fullWidth={true}\n error={!isValid}\n />\n );\n});\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { useMemo } from 'react';\nimport { EnumCellProps, WithClassname } from '@jsonforms/core';\n\nimport { MenuItem, Select } from '@mui/material';\nimport merge from 'lodash/merge';\nimport { TranslateProps } from '@jsonforms/react';\nimport { i18nDefaults, WithInputProps, WithSelectProps } from '../util';\n\nexport const MuiSelect = React.memo(function MuiSelect(\n props: EnumCellProps &\n WithClassname &\n TranslateProps &\n WithInputProps &\n WithSelectProps\n) {\n const {\n data,\n className,\n id,\n enabled,\n schema,\n uischema,\n isValid,\n path,\n handleChange,\n options,\n config,\n label,\n t,\n multiple,\n } = props;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const noneOptionLabel = useMemo(\n () => t('enum.none', i18nDefaults['enum.none'], { schema, uischema, path }),\n [t, schema, uischema, path]\n );\n\n return (\n <Select\n className={className}\n id={id}\n label={label}\n disabled={!enabled}\n autoFocus={appliedUiSchemaOptions.focus}\n value={data !== undefined ? data : ''}\n onChange={(ev) => handleChange(path, ev.target.value || undefined)}\n fullWidth={true}\n multiple={multiple || false}\n error={!isValid}\n >\n {[\n <MenuItem value={''} key='jsonforms.enum.none'>\n <em>{noneOptionLabel}</em>\n </MenuItem>,\n ].concat(\n options.map((optionValue) => (\n <MenuItem value={optionValue.value} key={optionValue.value}>\n {optionValue.label}\n </MenuItem>\n ))\n )}\n </Select>\n );\n});\n","/*\n The MIT License\n\n Copyright (c) 2017-2021 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport { CellProps, WithClassname } from '@jsonforms/core';\nimport { Switch, InputProps } from '@mui/material';\nimport merge from 'lodash/merge';\n\ninterface MuiToggleInputProps {\n inputProps?: InputProps['inputProps'];\n}\n\nexport const MuiToggle = React.memo(function MuiToggle(\n props: CellProps & WithClassname & MuiToggleInputProps\n) {\n const {\n data,\n className,\n id,\n enabled,\n uischema,\n path,\n handleChange,\n config,\n inputProps,\n } = props;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const inputPropsMerged = merge({}, inputProps, {\n autoFocus: !!appliedUiSchemaOptions.focus,\n });\n const checked = !!data;\n\n return (\n <Switch\n checked={checked}\n onChange={(_ev, isChecked) => handleChange(path, isChecked)}\n className={className}\n id={id}\n disabled={!enabled}\n slotProps={{ input: inputPropsMerged }}\n />\n );\n});\n","import {\n and,\n ControlProps,\n DispatchPropsOfMultiEnumControl,\n hasType,\n isDescriptionHidden,\n JsonSchema,\n OwnPropsOfEnum,\n Paths,\n RankedTester,\n rankWith,\n resolveSchema,\n schemaMatches,\n schemaSubPathMatches,\n showAsRequired,\n uiTypeIs,\n} from '@jsonforms/core';\n\nimport { withJsonFormsMultiEnumProps } from '@jsonforms/react';\nimport { MuiCheckbox } from '../mui-controls';\nimport {\n FormControl,\n FormControlLabel,\n FormGroup,\n FormHelperText,\n FormLabel,\n} from '@mui/material';\nimport isEmpty from 'lodash/isEmpty';\nimport React from 'react';\nimport merge from 'lodash/merge';\nimport { useFocus } from '../util';\n\nexport const MaterialEnumArrayRenderer = ({\n config,\n id,\n schema,\n visible,\n errors,\n description,\n label,\n required,\n path,\n options,\n data,\n addItem,\n removeItem,\n handleChange: _handleChange,\n ...otherProps\n}: ControlProps & OwnPropsOfEnum & DispatchPropsOfMultiEnumControl) => {\n const [focused, onFocus, onBlur] = useFocus();\n const isValid = errors.length === 0;\n const appliedUiSchemaOptions = merge({}, config, otherProps.uischema.options);\n const showDescription = !isDescriptionHidden(\n visible,\n description,\n focused,\n appliedUiSchemaOptions.showUnfocusedDescription\n );\n\n if (!visible) {\n return null;\n }\n\n return (\n <FormControl\n component='fieldset'\n fullWidth={!appliedUiSchemaOptions.trim}\n onFocus={onFocus}\n onBlur={onBlur}\n >\n <FormLabel\n error={!isValid}\n component='legend'\n required={showAsRequired(\n required,\n appliedUiSchemaOptions.hideRequiredAsterisk\n )}\n >\n {label}\n </FormLabel>\n <FormGroup row>\n {options.map((option: any, index: number) => {\n const optionPath = Paths.compose(path, `${index}`);\n const checkboxValue = data?.includes(option.value)\n ? option.value\n : undefined;\n return (\n <FormControlLabel\n id={id + '-label-' + option.value}\n key={option.value}\n control={\n <MuiCheckbox\n id={id + '-' + option.value}\n key={'checkbox-' + option.value}\n isValid={isEmpty(errors)}\n path={optionPath}\n handleChange={(_childPath, newValue) =>\n newValue\n ? addItem(path, option.value)\n : removeItem(path, option.value)\n }\n data={checkboxValue}\n errors={errors}\n schema={schema}\n visible={visible}\n {...otherProps}\n />\n }\n label={option.label}\n />\n );\n })}\n </FormGroup>\n <FormHelperText error={!isValid}>\n {!isValid ? errors : showDescription ? description : null}\n </FormHelperText>\n </FormControl>\n );\n};\n\nconst hasOneOfItems = (schema: JsonSchema): boolean =>\n schema.oneOf !== undefined &&\n schema.oneOf.length > 0 &&\n (schema.oneOf as JsonSchema[]).every((entry: JsonSchema) => {\n return entry.const !== undefined;\n });\n\nconst hasEnumItems = (schema: JsonSchema): boolean =>\n schema.type === 'string' && schema.enum !== undefined;\n\nexport const materialEnumArrayRendererTester: RankedTester = rankWith(\n 5,\n and(\n uiTypeIs('Control'),\n and(\n schemaMatches(\n (schema) =>\n hasType(schema, 'array') &&\n !Array.isArray(schema.items) &&\n schema.uniqueItems === true\n ),\n schemaSubPathMatches('items', (schema, rootSchema) => {\n const resolvedSchema = schema.$ref\n ? resolveSchema(rootSchema, schema.$ref, rootSchema)\n : schema;\n return hasOneOfItems(resolvedSchema) || hasEnumItems(resolvedSchema);\n })\n )\n )\n);\n\nexport default withJsonFormsMultiEnumProps(MaterialEnumArrayRenderer);\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport isEmpty from 'lodash/isEmpty';\nimport {\n findUISchema,\n Generate,\n isObjectControl,\n RankedTester,\n rankWith,\n StatePropsOfControlWithDetail,\n} from '@jsonforms/core';\nimport { JsonFormsDispatch, withJsonFormsDetailProps } from '@jsonforms/react';\nimport React, { useMemo } from 'react';\n\nexport const MaterialObjectRenderer = ({\n renderers,\n cells,\n uischemas,\n schema,\n label,\n path,\n visible,\n enabled,\n uischema,\n rootSchema,\n}: StatePropsOfControlWithDetail) => {\n const detailUiSchema = useMemo(\n () =>\n findUISchema(\n uischemas,\n schema,\n uischema.scope,\n path,\n () =>\n isEmpty(path)\n ? Generate.uiSchema(schema, 'VerticalLayout', undefined, rootSchema)\n : {\n ...Generate.uiSchema(schema, 'Group', undefined, rootSchema),\n label,\n },\n uischema,\n rootSchema\n ),\n [uischemas, schema, uischema.scope, path, label, uischema, rootSchema]\n );\n\n if (!visible) {\n return null;\n }\n\n return (\n <JsonFormsDispatch\n visible={visible}\n enabled={enabled}\n schema={schema}\n uischema={detailUiSchema}\n path={path}\n renderers={renderers}\n cells={cells}\n />\n );\n};\n\nexport const materialObjectControlTester: RankedTester = rankWith(\n 2,\n isObjectControl\n);\n\nexport default withJsonFormsDetailProps(MaterialObjectRenderer);\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { useCallback, useMemo, useState } from 'react';\n\nimport { TabSwitchConfirmDialog } from './TabSwitchConfirmDialog';\n\nimport {\n CombinatorRendererProps,\n createCombinatorRenderInfos,\n createDefaultValue,\n isOneOfControl,\n JsonSchema,\n OwnPropsOfControl,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport { Tab, Tabs } from '@mui/material';\nimport { JsonFormsDispatch, withJsonFormsOneOfProps } from '@jsonforms/react';\nimport CombinatorProperties from './CombinatorProperties';\n\nexport interface OwnOneOfProps extends OwnPropsOfControl {\n indexOfFittingSchema?: number;\n}\n\nexport const MaterialOneOfRenderer = ({\n handleChange,\n schema,\n path,\n renderers,\n cells,\n rootSchema,\n id,\n visible,\n indexOfFittingSchema,\n uischema,\n uischemas,\n data,\n}: CombinatorRendererProps) => {\n const [confirmDialogOpen, setConfirmDialogOpen] = useState(false);\n const [selectedIndex, setSelectedIndex] = useState(indexOfFittingSchema || 0);\n const [newSelectedIndex, setNewSelectedIndex] = useState(0);\n const handleClose = useCallback(\n () => setConfirmDialogOpen(false),\n [setConfirmDialogOpen]\n );\n const cancel = useCallback(() => {\n setConfirmDialogOpen(false);\n }, [setConfirmDialogOpen]);\n const oneOfRenderInfos = useMemo(\n () =>\n createCombinatorRenderInfos(\n (schema as JsonSchema).oneOf,\n rootSchema,\n 'oneOf',\n uischema,\n path,\n uischemas\n ),\n [schema, rootSchema, uischema, path, uischemas]\n );\n\n const openNewTab = (newIndex: number) => {\n handleChange(\n path,\n createDefaultValue(oneOfRenderInfos[newIndex].schema, rootSchema)\n );\n setSelectedIndex(newIndex);\n };\n\n const confirm = useCallback(() => {\n openNewTab(newSelectedIndex);\n setConfirmDialogOpen(false);\n }, [handleChange, createDefaultValue, newSelectedIndex]);\n\n const handleTabChange = useCallback(\n (_event: any, newOneOfIndex: number) => {\n setNewSelectedIndex(newOneOfIndex);\n if (data === undefined) {\n openNewTab(newOneOfIndex);\n } else {\n setConfirmDialogOpen(true);\n }\n },\n [setConfirmDialogOpen, setSelectedIndex, data]\n );\n\n if (!visible) {\n return null;\n }\n\n return (\n <>\n <CombinatorProperties\n schema={schema}\n combinatorKeyword={'oneOf'}\n path={path}\n rootSchema={rootSchema}\n />\n <Tabs value={selectedIndex} onChange={handleTabChange}>\n {oneOfRenderInfos.map((oneOfRenderInfo) => (\n <Tab key={oneOfRenderInfo.label} label={oneOfRenderInfo.label} />\n ))}\n </Tabs>\n {oneOfRenderInfos.map(\n (oneOfRenderInfo, oneOfIndex) =>\n selectedIndex === oneOfIndex && (\n <JsonFormsDispatch\n key={oneOfIndex}\n schema={oneOfRenderInfo.schema}\n uischema={oneOfRenderInfo.uischema}\n path={path}\n renderers={renderers}\n cells={cells}\n />\n )\n )}\n <TabSwitchConfirmDialog\n cancel={cancel}\n confirm={confirm}\n id={'oneOf-' + id}\n open={confirmDialogOpen}\n handleClose={handleClose}\n />\n </>\n );\n};\n\nexport const materialOneOfControlTester: RankedTester = rankWith(\n 3,\n isOneOfControl\n);\n\nexport default withJsonFormsOneOfProps(MaterialOneOfRenderer);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport { LabelProps, RankedTester, rankWith, uiTypeIs } from '@jsonforms/core';\nimport { withJsonFormsLabelProps } from '@jsonforms/react';\nimport { Typography } from '@mui/material';\n\n/**\n * Default tester for a label.\n * @type {RankedTester}\n */\nexport const materialLabelRendererTester: RankedTester = rankWith(\n 1,\n uiTypeIs('Label')\n);\n\n/**\n * Default renderer for a label.\n */\nexport const MaterialLabelRenderer = ({ text, visible }: LabelProps) => {\n if (!visible) {\n return null;\n }\n return <Typography variant='h6'>{text}</Typography>;\n};\n\nexport default withJsonFormsLabelProps(MaterialLabelRenderer);\n","import {\n FormHelperText,\n Grid,\n IconButton,\n Stack,\n Toolbar,\n Tooltip,\n Typography,\n} from '@mui/material';\nimport { Add } from '@mui/icons-material';\nimport React from 'react';\nimport ValidationIcon from '../complex/ValidationIcon';\nimport { ArrayTranslations } from '@jsonforms/core';\nexport interface ArrayLayoutToolbarProps {\n label: string;\n description: string;\n errors: string;\n path: string;\n enabled: boolean;\n addItem(path: string, data: any): () => void;\n createDefault(): any;\n translations: ArrayTranslations;\n disableAdd?: boolean;\n}\nexport const ArrayLayoutToolbar = React.memo(function ArrayLayoutToolbar({\n label,\n description,\n errors,\n addItem,\n path,\n enabled,\n createDefault,\n translations,\n disableAdd,\n}: ArrayLayoutToolbarProps) {\n return (\n <Toolbar disableGutters={true}>\n <Stack width='100%'>\n <Grid container alignItems='center' justifyContent='space-between'>\n <Grid>\n <Grid\n container\n justifyContent={'flex-start'}\n alignItems={'center'}\n spacing={2}\n >\n <Grid>\n <Typography variant={'h6'}>{label}</Typography>\n </Grid>\n <Grid>\n {errors.length !== 0 && (\n <Grid>\n <ValidationIcon\n id='tooltip-validation'\n errorMessages={errors}\n />\n </Grid>\n )}\n </Grid>\n </Grid>\n </Grid>\n {enabled && !disableAdd && (\n <Grid>\n <Grid container>\n <Grid>\n <Tooltip\n id='tooltip-add'\n title={translations.addTooltip}\n placement='bottom'\n >\n <IconButton\n aria-label={translations.addTooltip}\n onClick={addItem(path, createDefault())}\n size='large'\n >\n <Add />\n </IconButton>\n </Tooltip>\n </Grid>\n </Grid>\n </Grid>\n )}\n </Grid>\n {description && <FormHelperText>{description}</FormHelperText>}\n </Stack>\n </Toolbar>\n );\n});\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport type { StatePropsOfMasterItem } from '@jsonforms/core';\nimport { withJsonFormsMasterListItemProps } from '@jsonforms/react';\nimport {\n Avatar,\n IconButton,\n ListItemButton,\n ListItemAvatar,\n ListItemSecondaryAction,\n ListItemText,\n Tooltip,\n} from '@mui/material';\nimport { Delete } from '@mui/icons-material';\nimport React from 'react';\n\nexport const ListWithDetailMasterItem = ({\n index,\n childLabel,\n selected,\n enabled,\n handleSelect,\n removeItem,\n path,\n translations,\n disableRemove,\n}: StatePropsOfMasterItem) => {\n return (\n <ListItemButton selected={selected} onClick={handleSelect(index)}>\n <ListItemAvatar>\n <Avatar aria-label='Index'>{index + 1}</Avatar>\n </ListItemAvatar>\n <ListItemText primary={childLabel} />\n {enabled && !disableRemove && (\n <ListItemSecondaryAction>\n <Tooltip\n id='tooltip-remove'\n title={translations.removeTooltip}\n placement='bottom'\n >\n <IconButton\n aria-label={translations.removeAriaLabel}\n onClick={removeItem(path, index)}\n size='large'\n >\n <Delete />\n </IconButton>\n </Tooltip>\n </ListItemSecondaryAction>\n )}\n </ListItemButton>\n );\n};\n\nexport default withJsonFormsMasterListItemProps(ListWithDetailMasterItem);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport {\n and,\n ArrayLayoutProps,\n ArrayTranslations,\n composePaths,\n computeLabel,\n createDefaultValue,\n findUISchema,\n isObjectArray,\n RankedTester,\n rankWith,\n uiTypeIs,\n} from '@jsonforms/core';\nimport {\n JsonFormsDispatch,\n withArrayTranslationProps,\n withJsonFormsArrayLayoutProps,\n withTranslateProps,\n} from '@jsonforms/react';\nimport { Grid, List, Typography } from '@mui/material';\nimport map from 'lodash/map';\nimport range from 'lodash/range';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { ArrayLayoutToolbar } from '../layouts/ArrayToolbar';\nimport ListWithDetailMasterItem from './ListWithDetailMasterItem';\nimport merge from 'lodash/merge';\n\nexport const MaterialListWithDetailRenderer = ({\n uischemas,\n schema,\n uischema,\n path,\n enabled,\n errors,\n visible,\n label,\n required,\n removeItems,\n addItem,\n data,\n renderers,\n cells,\n config,\n rootSchema,\n description,\n disableAdd,\n disableRemove,\n translations,\n}: ArrayLayoutProps & { translations: ArrayTranslations }) => {\n const [selectedIndex, setSelectedIndex] = useState(undefined);\n const handleRemoveItem = useCallback(\n (p: string, value: any) => () => {\n removeItems(p, [value])();\n if (selectedIndex === value) {\n setSelectedIndex(undefined);\n } else if (selectedIndex > value) {\n setSelectedIndex(selectedIndex - 1);\n }\n },\n [removeItems, setSelectedIndex]\n );\n const handleListItemClick = useCallback(\n (index: number) => () => setSelectedIndex(index),\n [setSelectedIndex]\n );\n const handleCreateDefaultValue = useCallback(\n () => createDefaultValue(schema, rootSchema),\n [createDefaultValue]\n );\n const foundUISchema = useMemo(\n () =>\n findUISchema(\n uischemas,\n schema,\n uischema.scope,\n path,\n undefined,\n uischema,\n rootSchema\n ),\n [uischemas, schema, uischema.scope, path, uischema, rootSchema]\n );\n\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const doDisableAdd = disableAdd || appliedUiSchemaOptions.disableAdd;\n const doDisableRemove = disableRemove || appliedUiSchemaOptions.disableRemove;\n\n React.useEffect(() => {\n setSelectedIndex(undefined);\n }, [schema]);\n\n if (!visible) {\n return null;\n }\n\n return (\n <>\n <ArrayLayoutToolbar\n translations={translations}\n label={computeLabel(\n label,\n required,\n appliedUiSchemaOptions.hideRequiredAsterisk\n )}\n description={description}\n errors={errors}\n path={path}\n enabled={enabled}\n addItem={addItem}\n createDefault={handleCreateDefaultValue}\n disableAdd={doDisableAdd}\n />\n <Grid container direction='row' spacing={2}>\n <Grid size={3}>\n <List>\n {data > 0 ? (\n map(range(data), (index) => (\n <ListWithDetailMasterItem\n index={index}\n path={path}\n schema={schema}\n enabled={enabled}\n handleSelect={handleListItemClick}\n removeItem={handleRemoveItem}\n selected={selectedIndex === index}\n key={index}\n uischema={foundUISchema}\n childLabelProp={appliedUiSchemaOptions.elementLabelProp}\n translations={translations}\n disableRemove={doDisableRemove}\n />\n ))\n ) : (\n <p>{translations.noDataMessage}</p>\n )}\n </List>\n </Grid>\n <Grid size='grow'>\n {selectedIndex !== undefined ? (\n <JsonFormsDispatch\n renderers={renderers}\n cells={cells}\n visible={visible}\n schema={schema}\n uischema={foundUISchema}\n path={composePaths(path, `${selectedIndex}`)}\n />\n ) : (\n <Typography variant='h6'>{translations.noSelection}</Typography>\n )}\n </Grid>\n </Grid>\n </>\n );\n};\n\nexport const materialListWithDetailTester: RankedTester = rankWith(\n 4,\n and(uiTypeIs('ListWithDetail'), isObjectArray)\n);\n\nexport default withJsonFormsArrayLayoutProps(\n withTranslateProps(withArrayTranslationProps(MaterialListWithDetailRenderer))\n);\n","/*\n The MIT License\n\n Copyright (c) 2017-2021 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n showAsRequired,\n ControlProps,\n isDescriptionHidden,\n} from '@jsonforms/core';\n\nimport { InputLabel, FormControl, FormHelperText } from '@mui/material';\nimport merge from 'lodash/merge';\nimport { useFocus, useInputVariant } from '../util';\n\nexport interface WithInput {\n input: any;\n}\n\nexport const MaterialInputControl = (props: ControlProps & WithInput) => {\n const [focused, onFocus, onBlur] = useFocus();\n const {\n id,\n description,\n errors,\n label,\n uischema,\n visible,\n required,\n config,\n input,\n } = props;\n const variant = useInputVariant();\n const isValid = errors.length === 0;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n\n const showDescription = !isDescriptionHidden(\n visible,\n description,\n focused,\n appliedUiSchemaOptions.showUnfocusedDescription\n );\n\n const firstFormHelperText = showDescription\n ? description\n : !isValid\n ? errors\n : null;\n const secondFormHelperText = showDescription && !isValid ? errors : null;\n const InnerComponent = input;\n\n if (!visible) {\n return null;\n }\n\n return (\n <FormControl\n fullWidth={!appliedUiSchemaOptions.trim}\n onFocus={onFocus}\n onBlur={onBlur}\n variant={variant}\n id={id}\n >\n <InputLabel\n htmlFor={id + '-input'}\n error={!isValid}\n required={showAsRequired(\n required,\n appliedUiSchemaOptions.hideRequiredAsterisk\n )}\n >\n {label}\n </InputLabel>\n <InnerComponent\n {...props}\n id={id + '-input'}\n isValid={isValid}\n visible={visible}\n />\n <FormHelperText error={!isValid && !showDescription}>\n {firstFormHelperText}\n </FormHelperText>\n <FormHelperText error={!isValid}>{secondFormHelperText}</FormHelperText>\n </FormControl>\n );\n};\n","/*\n The MIT License\n\n Copyright (c) 2018-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport {\n and,\n ControlProps,\n ControlState,\n EnumCellProps,\n JsonSchema,\n RankedTester,\n rankWith,\n schemaMatches,\n uiTypeIs,\n WithClassname,\n} from '@jsonforms/core';\nimport { Control, withJsonFormsControlProps } from '@jsonforms/react';\nimport { InputBaseComponentProps } from '@mui/material';\nimport merge from 'lodash/merge';\nimport React, { useMemo } from 'react';\nimport {\n useDebouncedChange,\n useInputComponent,\n WithInputProps,\n useFocus,\n} from '../util';\nimport { MaterialInputControl } from './MaterialInputControl';\n\nconst findEnumSchema = (schemas: JsonSchema[]) =>\n schemas.find(\n (s) => s.enum !== undefined && (s.type === 'string' || s.type === undefined)\n );\nconst findTextSchema = (schemas: JsonSchema[]) =>\n schemas.find((s) => s.type === 'string' && s.enum === undefined);\n\nconst MuiAutocompleteInputText = (\n props: EnumCellProps & WithClassname & WithInputProps\n) => {\n const [focused, onFocus, onBlur] = useFocus();\n const {\n data,\n config,\n className,\n id,\n enabled,\n uischema,\n isValid,\n path,\n handleChange,\n schema,\n label,\n } = props;\n const InputComponent = useInputComponent();\n const enumSchema = findEnumSchema(schema.anyOf);\n const stringSchema = findTextSchema(schema.anyOf);\n const maxLength = stringSchema.maxLength;\n const appliedUiSchemaOptions = useMemo(\n () => merge({}, config, uischema.options),\n [config, uischema.options]\n );\n const inputProps: InputBaseComponentProps = useMemo(() => {\n let propMemo: InputBaseComponentProps = {};\n if (appliedUiSchemaOptions.restrict) {\n propMemo = { maxLength: maxLength };\n }\n if (appliedUiSchemaOptions.trim && maxLength !== undefined) {\n propMemo.size = maxLength;\n }\n propMemo.list = props.id + 'datalist';\n return propMemo;\n }, [appliedUiSchemaOptions, props.id]);\n const [inputText, onChange] = useDebouncedChange(\n handleChange,\n '',\n data,\n path,\n undefined,\n undefined,\n true,\n focused\n );\n\n const dataList = (\n <datalist id={props.id + 'datalist'}>\n {enumSchema.enum.map((optionValue) => (\n <option value={optionValue} key={optionValue} />\n ))}\n </datalist>\n );\n return (\n <InputComponent\n type='text'\n value={inputText}\n onChange={onChange}\n onFocus={onFocus}\n onBlur={onBlur}\n className={className}\n id={id}\n label={label}\n disabled={!enabled}\n autoFocus={appliedUiSchemaOptions.focus}\n fullWidth={!appliedUiSchemaOptions.trim || maxLength === undefined}\n inputProps={inputProps}\n error={!isValid}\n endAdornment={dataList}\n />\n );\n};\n\nexport class MaterialAnyOfStringOrEnumControl extends Control<\n ControlProps,\n ControlState\n> {\n render() {\n return (\n <MaterialInputControl {...this.props} input={MuiAutocompleteInputText} />\n );\n }\n}\nconst hasEnumAndText = (schemas: JsonSchema[]) => {\n // idea: map to type,enum and check that all types are string and at least one item is of type enum,\n const enumSchema = findEnumSchema(schemas);\n const stringSchema = findTextSchema(schemas);\n const remainingSchemas = schemas.filter(\n (s) => s !== enumSchema || s !== stringSchema\n );\n const wrongType = remainingSchemas.find((s) => s.type && s.type !== 'string');\n return enumSchema && stringSchema && !wrongType;\n};\nconst simpleAnyOf = and(\n uiTypeIs('Control'),\n schemaMatches(\n (schema) =>\n Object.prototype.hasOwnProperty.call(schema, 'anyOf') &&\n hasEnumAndText(schema.anyOf)\n )\n);\nexport const materialAnyOfStringOrEnumControlTester: RankedTester = rankWith(\n 5,\n simpleAnyOf\n);\nexport default withJsonFormsControlProps(MaterialAnyOfStringOrEnumControl);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport isEmpty from 'lodash/isEmpty';\nimport merge from 'lodash/merge';\nimport React from 'react';\nimport {\n isBooleanControl,\n RankedTester,\n rankWith,\n ControlProps,\n isDescriptionHidden,\n} from '@jsonforms/core';\nimport { withJsonFormsControlProps } from '@jsonforms/react';\nimport { FormControlLabel, FormHelperText, Tooltip } from '@mui/material';\nimport { MuiCheckbox } from '../mui-controls/MuiCheckbox';\n\nexport const MaterialBooleanControl = ({\n data,\n visible,\n label,\n id,\n enabled,\n uischema,\n schema,\n rootSchema,\n handleChange,\n errors,\n path,\n config,\n description,\n}: ControlProps) => {\n const isValid = errors.length === 0;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n\n const showDescription = !isDescriptionHidden(\n visible,\n description,\n // Checkboxes do not receive focus until they are used, so\n // we cannot rely on focus as criteria for showing descriptions.\n // So we pass \"false\" to treat it as unfocused.\n false,\n appliedUiSchemaOptions.showUnfocusedDescription\n );\n\n const showTooltip =\n !showDescription &&\n !isDescriptionHidden(\n visible,\n description,\n // Tooltips have their own focus handlers, so we do not need to rely\n // on focus state here. So we pass 'true' to treat it as focused.\n true,\n // We also pass true here for showUnfocusedDescription since it should\n // render regardless of that setting.\n true\n );\n\n const firstFormHelperText = showDescription\n ? description\n : !isValid\n ? errors\n : null;\n const secondFormHelperText = showDescription && !isValid ? errors : null;\n\n const descriptionIds = [];\n const tooltipId = `${id}-tip`;\n const helpId1 = `${id}-help1`;\n const helpId2 = `${id}-help2`;\n if (showTooltip) {\n descriptionIds.push(tooltipId);\n }\n if (firstFormHelperText) {\n descriptionIds.push(helpId1);\n }\n if (secondFormHelperText) {\n descriptionIds.push(helpId2);\n }\n const ariaDescribedBy = descriptionIds.join(' ');\n\n if (!visible) {\n return null;\n }\n\n return (\n <>\n <Tooltip id={tooltipId} title={showTooltip ? description : ''}>\n <FormControlLabel\n label={label}\n id={id}\n control={\n <MuiCheckbox\n id={`${id}-input`}\n isValid={isEmpty(errors)}\n data={data}\n enabled={enabled}\n visible={visible}\n path={path}\n uischema={uischema}\n schema={schema}\n rootSchema={rootSchema}\n handleChange={handleChange}\n errors={errors}\n config={config}\n inputProps={{\n 'aria-describedby': ariaDescribedBy,\n }}\n />\n }\n />\n </Tooltip>\n <FormHelperText id={helpId1} error={!isValid && !showDescription}>\n {firstFormHelperText}\n </FormHelperText>\n <FormHelperText id={helpId2} error={!isValid}>\n {secondFormHelperText}\n </FormHelperText>\n </>\n );\n};\n\nexport const materialBooleanControlTester: RankedTester = rankWith(\n 2,\n isBooleanControl\n);\nexport default withJsonFormsControlProps(MaterialBooleanControl);\n","/*\n The MIT License\n\n Copyright (c) 2017-2021 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport isEmpty from 'lodash/isEmpty';\nimport merge from 'lodash/merge';\nimport React from 'react';\nimport {\n isBooleanControl,\n RankedTester,\n rankWith,\n ControlProps,\n optionIs,\n and,\n isDescriptionHidden,\n} from '@jsonforms/core';\nimport { withJsonFormsControlProps } from '@jsonforms/react';\nimport { FormControlLabel, FormHelperText, Tooltip } from '@mui/material';\nimport { MuiToggle } from '../mui-controls/MuiToggle';\n\nexport const MaterialBooleanToggleControl = ({\n data,\n visible,\n label,\n id,\n enabled,\n uischema,\n schema,\n rootSchema,\n handleChange,\n errors,\n path,\n config,\n description,\n}: ControlProps) => {\n const isValid = errors.length === 0;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n\n const showDescription = !isDescriptionHidden(\n visible,\n description,\n // Checkboxes do not receive focus until they are used, so\n // we cannot rely on focus as criteria for showing descriptions.\n // So we pass \"false\" to treat it as unfocused.\n false,\n appliedUiSchemaOptions.showUnfocusedDescription\n );\n\n const showTooltip =\n !showDescription &&\n !isDescriptionHidden(\n visible,\n description,\n // Tooltips have their own focus handlers, so we do not need to rely\n // on focus state here. So we pass 'true' to treat it as focused.\n true,\n // We also pass true here for showUnfocusedDescription since it should\n // render regardless of that setting.\n true\n );\n\n const firstFormHelperText = showDescription\n ? description\n : !isValid\n ? errors\n : null;\n const secondFormHelperText = showDescription && !isValid ? errors : null;\n\n const descriptionIds = [];\n const tooltipId = `${id}-tip`;\n const helpId1 = `${id}-help1`;\n const helpId2 = `${id}-help2`;\n if (showTooltip) {\n descriptionIds.push(tooltipId);\n }\n if (firstFormHelperText) {\n descriptionIds.push(helpId1);\n }\n if (secondFormHelperText) {\n descriptionIds.push(helpId2);\n }\n const ariaDescribedBy = descriptionIds.join(' ');\n\n if (!visible) {\n return null;\n }\n\n return (\n <>\n <Tooltip id={tooltipId} title={showTooltip ? description : ''}>\n <FormControlLabel\n label={label}\n id={id}\n control={\n <MuiToggle\n id={`${id}-input`}\n isValid={isEmpty(errors)}\n data={data}\n enabled={enabled}\n visible={visible}\n path={path}\n uischema={uischema}\n schema={schema}\n rootSchema={rootSchema}\n handleChange={handleChange}\n errors={errors}\n config={config}\n inputProps={{\n 'aria-describedby': ariaDescribedBy,\n }}\n />\n }\n />\n </Tooltip>\n <FormHelperText id={helpId1} error={!isValid && !showDescription}>\n {firstFormHelperText}\n </FormHelperText>\n <FormHelperText id={helpId2} error={!isValid}>\n {secondFormHelperText}\n </FormHelperText>\n </>\n );\n};\n\nexport const materialBooleanToggleControlTester: RankedTester = rankWith(\n 3,\n and(isBooleanControl, optionIs('toggle', true))\n);\n\nexport default withJsonFormsControlProps(MaterialBooleanToggleControl);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport merge from 'lodash/merge';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport {\n ControlProps,\n defaultDateFormat,\n isDateControl,\n isDescriptionHidden,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport { withJsonFormsControlProps } from '@jsonforms/react';\nimport { FormHelperText } from '@mui/material';\nimport { DatePicker, LocalizationProvider } from '@mui/x-date-pickers';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport {\n createOnBlurHandler,\n createOnChangeHandler,\n getData,\n useFocus,\n useInputVariant,\n} from '../util';\n\nexport const MaterialDateControl = (props: ControlProps) => {\n const [focused, onFocus, onBlur] = useFocus();\n const inputVariant = useInputVariant();\n const {\n description,\n id,\n errors,\n label,\n uischema,\n visible,\n enabled,\n required,\n path,\n handleChange,\n data,\n config,\n } = props;\n const isValid = errors.length === 0;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const showDescription = !isDescriptionHidden(\n visible,\n description,\n focused,\n appliedUiSchemaOptions.showUnfocusedDescription\n );\n\n const [key, setKey] = useState<number>(0);\n const [open, setOpen] = useState<boolean>(false);\n\n const format = appliedUiSchemaOptions.dateFormat ?? 'YYYY-MM-DD';\n const saveFormat = appliedUiSchemaOptions.dateSaveFormat ?? defaultDateFormat;\n\n const views = appliedUiSchemaOptions.views ?? ['year', 'day'];\n const closeOnSelect = appliedUiSchemaOptions.closeOnSelect ?? true;\n\n const firstFormHelperText = showDescription\n ? description\n : !isValid\n ? errors\n : null;\n const secondFormHelperText = showDescription && !isValid ? errors : null;\n\n const updateChild = useCallback(() => setKey((key) => key + 1), []);\n\n const onChange = useMemo(\n () => createOnChangeHandler(path, handleChange, saveFormat),\n [path, handleChange, saveFormat]\n );\n\n const onBlurHandler = useMemo(\n () =>\n createOnBlurHandler(\n path,\n handleChange,\n format,\n saveFormat,\n updateChild,\n onBlur\n ),\n [path, handleChange, format, saveFormat, updateChild, onBlur]\n );\n const value = getData(data, saveFormat);\n\n if (!visible) {\n return null;\n }\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <DatePicker\n open={open}\n onOpen={() => setOpen(true)}\n onClose={() => setOpen(false)}\n key={key}\n label={label}\n value={value}\n onAccept={onChange}\n format={format}\n views={views}\n disabled={!enabled}\n closeOnSelect={closeOnSelect}\n slotProps={{\n actionBar: ({ pickerVariant }) => ({\n actions:\n pickerVariant === 'desktop' ? [] : ['clear', 'cancel', 'accept'],\n }),\n textField: {\n id: id + '-input',\n required: required && !appliedUiSchemaOptions.hideRequiredAsterisk,\n error: !isValid,\n fullWidth: !appliedUiSchemaOptions.trim,\n variant: inputVariant,\n inputProps: {\n autoFocus: appliedUiSchemaOptions.focus,\n type: 'text',\n onFocus: onFocus,\n onBlur: onBlurHandler,\n },\n InputLabelProps: data ? { shrink: true } : undefined,\n },\n }}\n />\n <FormHelperText error={!isValid && !showDescription}>\n {firstFormHelperText}\n </FormHelperText>\n <FormHelperText error={!isValid}>{secondFormHelperText}</FormHelperText>\n </LocalizationProvider>\n );\n};\n\nexport const materialDateControlTester: RankedTester = rankWith(\n 4,\n isDateControl\n);\n\nexport default withJsonFormsControlProps(MaterialDateControl);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { useCallback, useMemo, useState } from 'react';\nimport merge from 'lodash/merge';\nimport {\n ControlProps,\n defaultDateTimeFormat,\n isDateTimeControl,\n isDescriptionHidden,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport { withJsonFormsControlProps } from '@jsonforms/react';\nimport { FormHelperText } from '@mui/material';\nimport { DateTimePicker, LocalizationProvider } from '@mui/x-date-pickers';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport {\n createOnBlurHandler,\n createOnChangeHandler,\n getData,\n useFocus,\n useInputVariant,\n} from '../util';\n\nexport const MaterialDateTimeControl = (props: ControlProps) => {\n const [focused, onFocus, onBlur] = useFocus();\n const inputVariant = useInputVariant();\n const {\n id,\n description,\n errors,\n label,\n uischema,\n visible,\n enabled,\n required,\n path,\n handleChange,\n data,\n config,\n } = props;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const isValid = errors.length === 0;\n\n const showDescription = !isDescriptionHidden(\n visible,\n description,\n focused,\n appliedUiSchemaOptions.showUnfocusedDescription\n );\n\n const format = appliedUiSchemaOptions.dateTimeFormat ?? 'YYYY-MM-DD HH:mm';\n const saveFormat =\n appliedUiSchemaOptions.dateTimeSaveFormat ?? defaultDateTimeFormat;\n\n const [key, setKey] = useState<number>(0);\n const [open, setOpen] = useState<boolean>(false);\n\n const views = appliedUiSchemaOptions.views ?? [\n 'year',\n 'day',\n 'hours',\n 'minutes',\n ];\n const closeOnSelect = appliedUiSchemaOptions.closeOnSelect ?? true;\n\n const firstFormHelperText = showDescription\n ? description\n : !isValid\n ? errors\n : null;\n const secondFormHelperText = showDescription && !isValid ? errors : null;\n\n const updateChild = useCallback(() => setKey((key) => key + 1), []);\n\n const onChange = useMemo(\n () => createOnChangeHandler(path, handleChange, saveFormat),\n [path, handleChange, saveFormat]\n );\n\n const onBlurHandler = useMemo(\n () =>\n createOnBlurHandler(\n path,\n handleChange,\n format,\n saveFormat,\n updateChild,\n onBlur\n ),\n [path, handleChange, format, saveFormat, updateChild]\n );\n const value = getData(data, saveFormat);\n\n if (!visible) {\n return null;\n }\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <DateTimePicker\n open={open}\n onOpen={() => setOpen(true)}\n onClose={() => setOpen(false)}\n key={key}\n label={label}\n value={value}\n onAccept={onChange}\n onChange={onChange}\n format={format}\n ampm={!!appliedUiSchemaOptions.ampm}\n views={views}\n closeOnSelect={closeOnSelect}\n disabled={!enabled}\n slotProps={{\n actionBar: ({ pickerVariant }) => ({\n actions:\n pickerVariant === 'desktop' ? [] : ['clear', 'cancel', 'accept'],\n }),\n textField: {\n id: id + '-input',\n required: required && !appliedUiSchemaOptions.hideRequiredAsterisk,\n error: !isValid,\n fullWidth: !appliedUiSchemaOptions.trim,\n variant: inputVariant,\n inputProps: {\n autoFocus: appliedUiSchemaOptions.focus,\n type: 'text',\n onFocus: onFocus,\n onBlur: onBlurHandler,\n },\n InputLabelProps: data ? { shrink: true } : undefined,\n },\n }}\n />\n <FormHelperText error={!isValid && !showDescription}>\n {firstFormHelperText}\n </FormHelperText>\n <FormHelperText error={!isValid}>{secondFormHelperText}</FormHelperText>\n </LocalizationProvider>\n );\n};\n\nexport const materialDateTimeControlTester: RankedTester = rankWith(\n 2,\n isDateTimeControl\n);\n\nexport default withJsonFormsControlProps(MaterialDateTimeControl);\n","/*\n The MIT License\n\n Copyright (c) 2018-2020 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n ControlProps,\n isEnumControl,\n OwnPropsOfEnum,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport {\n TranslateProps,\n withJsonFormsEnumProps,\n withTranslateProps,\n} from '@jsonforms/react';\nimport { MuiSelect } from '../mui-controls/MuiSelect';\nimport merge from 'lodash/merge';\nimport { MaterialInputControl } from './MaterialInputControl';\nimport {\n MuiAutocomplete,\n WithOptionLabel,\n} from '../mui-controls/MuiAutocomplete';\n\nexport const MaterialEnumControl = (\n props: ControlProps & OwnPropsOfEnum & WithOptionLabel & TranslateProps\n) => {\n const { config, uischema, errors } = props;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const isValid = errors.length === 0;\n return appliedUiSchemaOptions.autocomplete === false ? (\n <MaterialInputControl {...props} input={MuiSelect} />\n ) : (\n <MuiAutocomplete {...props} isValid={isValid} />\n );\n};\n\nexport const materialEnumControlTester: RankedTester = rankWith(\n 2,\n isEnumControl\n);\n\n// HOC order can be reversed with https://github.com/eclipsesource/jsonforms/issues/1987\nexport default withJsonFormsEnumProps(\n withTranslateProps(React.memo(MaterialEnumControl)),\n false\n);\n","/*\n The MIT License\n\n Copyright (c) 2018-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n ControlProps,\n isIntegerControl,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport { MuiInputInteger } from '../mui-controls/MuiInputInteger';\nimport { MaterialInputControl } from './MaterialInputControl';\nimport { withJsonFormsControlProps } from '@jsonforms/react';\n\nexport const MaterialIntegerControl = (props: ControlProps) => (\n <MaterialInputControl {...props} input={MuiInputInteger} />\n);\nexport const materialIntegerControlTester: RankedTester = rankWith(\n 2,\n isIntegerControl\n);\nexport default withJsonFormsControlProps(MaterialIntegerControl);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n ControlProps,\n showAsRequired,\n isDateControl,\n isDescriptionHidden,\n isTimeControl,\n or,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport { TextField } from '@mui/material';\nimport { withJsonFormsControlProps } from '@jsonforms/react';\nimport merge from 'lodash/merge';\nimport { useDebouncedChange, useFocus } from '../util';\n\nexport const MaterialNativeControl = (props: ControlProps) => {\n const [focused, onFocus, onBlur] = useFocus();\n const {\n id,\n errors,\n label,\n schema,\n description,\n enabled,\n visible,\n required,\n path,\n handleChange,\n data,\n config,\n } = props;\n const isValid = errors.length === 0;\n const appliedUiSchemaOptions = merge({}, config, props.uischema.options);\n const [inputValue, onChange] = useDebouncedChange(\n handleChange,\n '',\n data,\n path,\n undefined,\n undefined,\n true,\n focused\n );\n const fieldType = appliedUiSchemaOptions.format ?? schema.format;\n const showDescription = !isDescriptionHidden(\n visible,\n description,\n focused,\n appliedUiSchemaOptions.showUnfocusedDescription\n );\n\n if (!visible) {\n return null;\n }\n\n return (\n <TextField\n required={showAsRequired(\n required,\n appliedUiSchemaOptions.hideRequiredAsterisk\n )}\n id={id + '-input'}\n label={label}\n type={fieldType}\n error={!isValid}\n disabled={!enabled}\n fullWidth={!appliedUiSchemaOptions.trim}\n onFocus={onFocus}\n onBlur={onBlur}\n helperText={!isValid ? errors : showDescription ? description : null}\n InputLabelProps={{ shrink: true }}\n value={inputValue}\n onChange={onChange}\n />\n );\n};\n\nexport const materialNativeControlTester: RankedTester = rankWith(\n 2,\n or(isDateControl, isTimeControl)\n);\n\nexport default withJsonFormsControlProps(MaterialNativeControl);\n","/*\n The MIT License\n\n Copyright (c) 2018-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n ControlProps,\n isNumberControl,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport { MuiInputNumber } from '../mui-controls/MuiInputNumber';\nimport { MaterialInputControl } from './MaterialInputControl';\nimport { withJsonFormsControlProps } from '@jsonforms/react';\n\nexport const MaterialNumberControl = (props: ControlProps) => (\n <MaterialInputControl {...props} input={MuiInputNumber} />\n);\n\nexport const materialNumberControlTester: RankedTester = rankWith(\n 2,\n isNumberControl\n);\n\nexport default withJsonFormsControlProps(MaterialNumberControl);\n","/*\n The MIT License\n\n Copyright (c) 2018-2020 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n ControlProps,\n isOneOfEnumControl,\n OwnPropsOfEnum,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport {\n TranslateProps,\n withJsonFormsOneOfEnumProps,\n withTranslateProps,\n} from '@jsonforms/react';\nimport {\n MuiAutocomplete,\n WithOptionLabel,\n} from '../mui-controls/MuiAutocomplete';\nimport { MuiSelect } from '../mui-controls/MuiSelect';\nimport { MaterialInputControl } from '../controls/MaterialInputControl';\nimport merge from 'lodash/merge';\n\nexport const MaterialOneOfEnumControl = (\n props: ControlProps & OwnPropsOfEnum & WithOptionLabel & TranslateProps\n) => {\n const { config, uischema, errors } = props;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const isValid = errors.length === 0;\n\n return appliedUiSchemaOptions.autocomplete === false ? (\n <MaterialInputControl {...props} input={MuiSelect} />\n ) : (\n <MuiAutocomplete {...props} isValid={isValid} />\n );\n};\n\nexport const materialOneOfEnumControlTester: RankedTester = rankWith(\n 5,\n isOneOfEnumControl\n);\n\n// HOC order can be reversed with https://github.com/eclipsesource/jsonforms/issues/1987\nexport default withJsonFormsOneOfEnumProps(\n withTranslateProps(React.memo(MaterialOneOfEnumControl)),\n false\n);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport merge from 'lodash/merge';\nimport React from 'react';\nimport {\n ControlProps,\n showAsRequired,\n isDescriptionHidden,\n OwnPropsOfEnum,\n} from '@jsonforms/core';\nimport {\n FormControl,\n FormControlLabel,\n FormHelperText,\n FormLabel,\n Radio,\n RadioGroup,\n} from '@mui/material';\nimport { useFocus } from '../util';\n\nexport const MaterialRadioGroup = (props: ControlProps & OwnPropsOfEnum) => {\n const [focused, onFocus, onBlur] = useFocus();\n const {\n config,\n label,\n required,\n description,\n errors,\n data,\n visible,\n options,\n handleChange,\n path,\n enabled,\n } = props;\n const isValid = errors.length === 0;\n const appliedUiSchemaOptions = merge({}, config, props.uischema.options);\n const showDescription = !isDescriptionHidden(\n visible,\n description,\n focused,\n appliedUiSchemaOptions.showUnfocusedDescription\n );\n\n if (!visible) {\n return null;\n }\n\n return (\n <FormControl\n component='fieldset'\n fullWidth={!appliedUiSchemaOptions.trim}\n onFocus={onFocus}\n onBlur={onBlur}\n >\n <FormLabel\n error={!isValid}\n component='legend'\n required={showAsRequired(\n required,\n appliedUiSchemaOptions.hideRequiredAsterisk\n )}\n >\n {label}\n </FormLabel>\n\n <RadioGroup value={props.data ?? ''} row={true}>\n {options.map((option) => (\n <FormControlLabel\n value={option.value}\n key={option.label}\n control={\n <Radio\n checked={data === option.value}\n onChange={() => handleChange(path, option.value)}\n />\n }\n label={option.label}\n disabled={!enabled}\n />\n ))}\n </RadioGroup>\n <FormHelperText error={!isValid}>\n {!isValid ? errors : showDescription ? description : null}\n </FormHelperText>\n </FormControl>\n );\n};\n","/*\n The MIT License\n\n Copyright (c) 2018-2020 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n and,\n ControlProps,\n isOneOfEnumControl,\n optionIs,\n OwnPropsOfEnum,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport { withJsonFormsOneOfEnumProps } from '@jsonforms/react';\nimport { MaterialRadioGroup } from './MaterialRadioGroup';\n\nexport const MaterialOneOfRadioGroupControl = (\n props: ControlProps & OwnPropsOfEnum\n) => {\n return <MaterialRadioGroup {...props} />;\n};\n\nexport const materialOneOfRadioGroupControlTester: RankedTester = rankWith(\n 20,\n and(isOneOfEnumControl, optionIs('format', 'radio'))\n);\n\nexport default withJsonFormsOneOfEnumProps(MaterialOneOfRadioGroupControl);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n and,\n ControlProps,\n isEnumControl,\n optionIs,\n OwnPropsOfEnum,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport { withJsonFormsEnumProps } from '@jsonforms/react';\nimport { MaterialRadioGroup } from './MaterialRadioGroup';\nexport const MaterialRadioGroupControl = (\n props: ControlProps & OwnPropsOfEnum\n) => {\n return <MaterialRadioGroup {...props} />;\n};\n\nexport const materialRadioGroupControlTester: RankedTester = rankWith(\n 20,\n and(isEnumControl, optionIs('format', 'radio'))\n);\nexport default withJsonFormsEnumProps(MaterialRadioGroupControl);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { useCallback } from 'react';\nimport {\n ControlProps,\n showAsRequired,\n isDescriptionHidden,\n isRangeControl,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport { withJsonFormsControlProps } from '@jsonforms/react';\n\nimport {\n FormControl,\n FormHelperText,\n FormLabel,\n Slider,\n Typography,\n} from '@mui/material';\nimport merge from 'lodash/merge';\nimport { useFocus } from '../util';\n\nexport const MaterialSliderControl = (props: ControlProps) => {\n const [focused, onFocus, onBlur] = useFocus();\n const {\n id,\n data,\n description,\n enabled,\n errors,\n label,\n schema,\n handleChange,\n visible,\n path,\n required,\n config,\n } = props;\n const isValid = errors.length === 0;\n const appliedUiSchemaOptions = merge({}, config, props.uischema.options);\n const labelStyle: { [x: string]: any } = {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n width: '100%',\n };\n const rangeContainerStyle: { [x: string]: any } = {\n display: 'flex',\n };\n const rangeItemStyle: { [x: string]: any } = {\n flexGrow: '1',\n };\n const sliderStyle: { [x: string]: any } = {\n marginTop: '7px',\n };\n\n const showDescription = !isDescriptionHidden(\n visible,\n description,\n focused,\n appliedUiSchemaOptions.showUnfocusedDescription\n );\n\n const onChange = useCallback(\n (_ev: any, value: any) => handleChange(path, Number(value)),\n [path, handleChange]\n );\n\n if (!visible) {\n return null;\n }\n\n return (\n <FormControl\n fullWidth={!appliedUiSchemaOptions.trim}\n onFocus={onFocus}\n onBlur={onBlur}\n id={id}\n >\n <FormLabel\n htmlFor={id}\n error={!isValid}\n component='legend'\n required={showAsRequired(\n required,\n appliedUiSchemaOptions.hideRequiredAsterisk\n )}\n >\n <Typography id={id + '-typo'} style={labelStyle} variant='caption'>\n {label}\n </Typography>\n </FormLabel>\n <div style={rangeContainerStyle}>\n <Typography style={rangeItemStyle} variant='caption' align='left'>\n {schema.minimum}\n </Typography>\n <Typography style={rangeItemStyle} variant='caption' align='right'>\n {schema.maximum}\n </Typography>\n </div>\n <Slider\n style={sliderStyle}\n min={schema.minimum}\n max={schema.maximum}\n value={Number(data || schema.default)}\n onChange={onChange}\n id={id + '-input'}\n disabled={!enabled}\n step={schema.multipleOf || 1}\n />\n <FormHelperText error={!isValid}>\n {!isValid ? errors : showDescription ? description : null}\n </FormHelperText>\n </FormControl>\n );\n};\nexport const materialSliderControlTester: RankedTester = rankWith(\n 4,\n isRangeControl\n);\n\nexport default withJsonFormsControlProps(MaterialSliderControl);\n","/*\n The MIT License\n\n Copyright (c) 2018-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n ControlProps,\n isStringControl,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport { withJsonFormsControlProps } from '@jsonforms/react';\nimport { MuiInputText } from '../mui-controls/MuiInputText';\nimport { MaterialInputControl } from './MaterialInputControl';\n\nexport const MaterialTextControl = (props: ControlProps) => (\n <MaterialInputControl {...props} input={MuiInputText} />\n);\n\nexport const materialTextControlTester: RankedTester = rankWith(\n 1,\n isStringControl\n);\nexport default withJsonFormsControlProps(MaterialTextControl);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { useCallback, useMemo, useState } from 'react';\nimport merge from 'lodash/merge';\nimport {\n ControlProps,\n isTimeControl,\n isDescriptionHidden,\n RankedTester,\n rankWith,\n defaultTimeFormat,\n} from '@jsonforms/core';\nimport { withJsonFormsControlProps } from '@jsonforms/react';\nimport { FormHelperText } from '@mui/material';\nimport { TimePicker, LocalizationProvider } from '@mui/x-date-pickers';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport {\n createOnBlurHandler,\n createOnChangeHandler,\n getData,\n useFocus,\n useInputVariant,\n} from '../util';\n\nexport const MaterialTimeControl = (props: ControlProps) => {\n const [focused, onFocus, onBlur] = useFocus();\n const inputVariant = useInputVariant();\n const {\n id,\n description,\n errors,\n label,\n uischema,\n visible,\n enabled,\n required,\n path,\n handleChange,\n data,\n config,\n } = props;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const isValid = errors.length === 0;\n\n const [key, setKey] = useState<number>(0);\n const [open, setOpen] = useState<boolean>(false);\n\n const showDescription = !isDescriptionHidden(\n visible,\n description,\n focused,\n appliedUiSchemaOptions.showUnfocusedDescription\n );\n\n const format = appliedUiSchemaOptions.timeFormat ?? 'HH:mm';\n const saveFormat = appliedUiSchemaOptions.timeSaveFormat ?? defaultTimeFormat;\n\n const views = appliedUiSchemaOptions.views ?? ['hours', 'minutes'];\n const closeOnSelect = appliedUiSchemaOptions.closeOnSelect ?? true;\n\n const firstFormHelperText = showDescription\n ? description\n : !isValid\n ? errors\n : null;\n const secondFormHelperText = showDescription && !isValid ? errors : null;\n\n const updateChild = useCallback(() => setKey((key) => key + 1), []);\n\n const onChange = useMemo(\n () => createOnChangeHandler(path, handleChange, saveFormat),\n [path, handleChange, saveFormat]\n );\n\n const onBlurHandler = useMemo(\n () =>\n createOnBlurHandler(\n path,\n handleChange,\n format,\n saveFormat,\n updateChild,\n onBlur\n ),\n [path, handleChange, format, saveFormat, updateChild]\n );\n const value = getData(data, saveFormat);\n\n if (!visible) {\n return null;\n }\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <TimePicker\n open={open}\n onOpen={() => setOpen(true)}\n onClose={() => setOpen(false)}\n key={key}\n label={label}\n value={value}\n onAccept={onChange}\n onChange={onChange}\n format={format}\n ampm={!!appliedUiSchemaOptions.ampm}\n views={views}\n closeOnSelect={closeOnSelect}\n disabled={!enabled}\n slotProps={{\n actionBar: ({ pickerVariant }) => ({\n actions:\n pickerVariant === 'desktop' ? [] : ['clear', 'cancel', 'accept'],\n }),\n textField: {\n id: id + '-input',\n required: required && !appliedUiSchemaOptions.hideRequiredAsterisk,\n error: !isValid,\n fullWidth: !appliedUiSchemaOptions.trim,\n variant: inputVariant,\n inputProps: {\n autoFocus: appliedUiSchemaOptions.focus,\n type: 'text',\n onBlur: onBlurHandler,\n onFocus: onFocus,\n },\n InputLabelProps: data ? { shrink: true } : undefined,\n },\n }}\n />\n <FormHelperText error={!isValid && !showDescription}>\n {firstFormHelperText}\n </FormHelperText>\n <FormHelperText error={!isValid}>{secondFormHelperText}</FormHelperText>\n </LocalizationProvider>\n );\n};\n\nexport const materialTimeControlTester: RankedTester = rankWith(\n 4,\n isTimeControl\n);\n\nexport default withJsonFormsControlProps(MaterialTimeControl);\n","import merge from 'lodash/merge';\nimport React, {\n ComponentType,\n Dispatch,\n Fragment,\n ReducerAction,\n useMemo,\n useState,\n useEffect,\n useCallback,\n} from 'react';\nimport {\n JsonFormsDispatch,\n JsonFormsStateContext,\n withJsonFormsContext,\n} from '@jsonforms/react';\nimport {\n composePaths,\n ControlElement,\n findUISchema,\n JsonFormsRendererRegistryEntry,\n JsonSchema,\n moveDown,\n moveUp,\n update,\n JsonFormsCellRendererRegistryEntry,\n JsonFormsUISchemaRegistryEntry,\n createId,\n removeId,\n ArrayTranslations,\n computeChildLabel,\n UpdateArrayContext,\n} from '@jsonforms/core';\nimport {\n Accordion,\n AccordionSummary,\n AccordionDetails,\n Avatar,\n Grid,\n IconButton,\n Tooltip,\n} from '@mui/material';\nimport {\n ArrowUpward,\n ArrowDownward,\n Delete,\n ExpandMore,\n} from '@mui/icons-material';\n\nconst iconStyle: any = { float: 'right' };\n\ninterface OwnPropsOfExpandPanel {\n enabled: boolean;\n index: number;\n path: string;\n uischema: ControlElement;\n schema: JsonSchema;\n expanded: boolean;\n renderers?: JsonFormsRendererRegistryEntry[];\n cells?: JsonFormsCellRendererRegistryEntry[];\n uischemas?: JsonFormsUISchemaRegistryEntry[];\n rootSchema: JsonSchema;\n enableMoveUp: boolean;\n enableMoveDown: boolean;\n config: any;\n childLabelProp?: string;\n handleExpansion(panel: string): (event: any, expanded: boolean) => void;\n translations: ArrayTranslations;\n disableRemove?: boolean;\n}\n\ninterface StatePropsOfExpandPanel extends OwnPropsOfExpandPanel {\n childLabel: string;\n childPath: string;\n enableMoveUp: boolean;\n enableMoveDown: boolean;\n}\n\n/**\n * Dispatch props of a table control\n */\nexport interface DispatchPropsOfExpandPanel {\n removeItems(path: string, toDelete: number[]): (event: any) => void;\n moveUp(path: string, toMove: number): (event: any) => void;\n moveDown(path: string, toMove: number): (event: any) => void;\n}\n\nexport interface ExpandPanelProps\n extends StatePropsOfExpandPanel,\n DispatchPropsOfExpandPanel {}\n\nconst ExpandPanelRendererComponent = (props: ExpandPanelProps) => {\n const [labelHtmlId] = useState<string>(createId('expand-panel'));\n\n useEffect(() => {\n return () => {\n removeId(labelHtmlId);\n };\n }, [labelHtmlId]);\n\n const {\n enabled,\n childLabel,\n childPath,\n index,\n expanded,\n moveDown,\n moveUp,\n enableMoveDown,\n enableMoveUp,\n handleExpansion,\n removeItems,\n path,\n rootSchema,\n schema,\n uischema,\n uischemas,\n renderers,\n cells,\n config,\n translations,\n disableRemove,\n } = props;\n\n const foundUISchema = useMemo(\n () =>\n findUISchema(\n uischemas,\n schema,\n uischema.scope,\n path,\n undefined,\n uischema,\n rootSchema\n ),\n [uischemas, schema, uischema.scope, path, uischema, rootSchema]\n );\n\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const showSortButtons =\n appliedUiSchemaOptions.showSortButtons ||\n appliedUiSchemaOptions.showArrayLayoutSortButtons;\n\n return (\n <Accordion\n aria-labelledby={labelHtmlId}\n expanded={expanded}\n onChange={handleExpansion(childPath)}\n >\n <AccordionSummary expandIcon={<ExpandMore />}>\n <Grid container sx={{ width: '100%' }} alignItems={'center'}>\n <Grid size={{ xs: 7, md: 9 }}>\n <Grid container alignItems={'center'}>\n <Grid size={{ xs: 2, md: 1 }}>\n <Avatar aria-label='Index'>{index + 1}</Avatar>\n </Grid>\n <Grid size={{ xs: 10, md: 11 }}>\n <span id={labelHtmlId}>{childLabel}</span>\n </Grid>\n </Grid>\n </Grid>\n <Grid size={{ xs: 5, md: 3 }}>\n <Grid container justifyContent='flex-end'>\n <Grid>\n <Grid\n container\n direction='row'\n justifyContent='center'\n alignItems='center'\n >\n {showSortButtons && enabled ? (\n <Fragment>\n <Grid>\n <Tooltip\n id='tooltip-up'\n title={translations.up}\n placement='bottom'\n open={enableMoveUp ? undefined : false}\n >\n <IconButton\n onClick={moveUp(path, index)}\n style={iconStyle}\n disabled={!enableMoveUp}\n aria-label={translations.upAriaLabel}\n size='large'\n >\n <ArrowUpward />\n </IconButton>\n </Tooltip>\n </Grid>\n <Grid>\n <Tooltip\n id='tooltip-down'\n title={translations.down}\n placement='bottom'\n open={enableMoveDown ? undefined : false}\n >\n <IconButton\n onClick={moveDown(path, index)}\n style={iconStyle}\n disabled={!enableMoveDown}\n aria-label={translations.downAriaLabel}\n size='large'\n >\n <ArrowDownward />\n </IconButton>\n </Tooltip>\n </Grid>\n </Fragment>\n ) : (\n ''\n )}\n {enabled && !disableRemove && (\n <Grid>\n <Tooltip\n id='tooltip-remove'\n title={translations.removeTooltip}\n placement='bottom'\n >\n <IconButton\n onClick={removeItems(path, [index])}\n style={iconStyle}\n aria-label={translations.removeAriaLabel}\n size='large'\n >\n <Delete />\n </IconButton>\n </Tooltip>\n </Grid>\n )}\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n </AccordionSummary>\n <AccordionDetails>\n <JsonFormsDispatch\n enabled={enabled}\n schema={schema}\n uischema={foundUISchema}\n path={childPath}\n key={childPath}\n renderers={renderers}\n cells={cells}\n />\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport const ExpandPanelRenderer = React.memo(ExpandPanelRendererComponent);\n\n/**\n * Maps state to dispatch properties of an expand pandel control.\n *\n * @param dispatch the store's dispatch method\n * @returns {DispatchPropsOfArrayControl} dispatch props of an expand panel control\n */\nexport const ctxDispatchToExpandPanelProps: (\n dispatch: Dispatch<ReducerAction<any>>\n) => DispatchPropsOfExpandPanel = (dispatch) => ({\n removeItems: useCallback(\n (path: string, toDelete: number[]) =>\n (event: any): void => {\n event.stopPropagation();\n dispatch(\n update(\n path,\n (array) => {\n toDelete\n .sort()\n .reverse()\n .forEach((s) => array.splice(s, 1));\n return array;\n },\n { type: 'REMOVE', indices: toDelete } as UpdateArrayContext\n )\n );\n },\n [dispatch]\n ),\n moveUp: useCallback(\n (path: string, toMove: number) =>\n (event: any): void => {\n event.stopPropagation();\n dispatch(\n update(\n path,\n (array) => {\n moveUp(array, toMove);\n return array;\n },\n {\n type: 'MOVE',\n moves: [{ from: toMove, to: toMove - 1 }],\n } as UpdateArrayContext\n )\n );\n },\n [dispatch]\n ),\n moveDown: useCallback(\n (path: string, toMove: number) =>\n (event: any): void => {\n event.stopPropagation();\n dispatch(\n update(\n path,\n (array) => {\n moveDown(array, toMove);\n return array;\n },\n {\n type: 'MOVE',\n moves: [{ from: toMove, to: toMove + 1 }],\n } as UpdateArrayContext\n )\n );\n },\n [dispatch]\n ),\n});\n\n/**\n * Map state to control props.\n * @param state the JSON Forms state\n * @param ownProps any own props\n * @returns {StatePropsOfControl} state props for a control\n */\nexport const withContextToExpandPanelProps = (\n Component: ComponentType<ExpandPanelProps>\n): ComponentType<{\n ctx: JsonFormsStateContext;\n props: OwnPropsOfExpandPanel;\n}> => {\n return function WithContextToExpandPanelProps({\n ctx,\n props,\n }: {\n ctx: JsonFormsStateContext;\n props: ExpandPanelProps;\n }) {\n const dispatchProps = ctxDispatchToExpandPanelProps(ctx.dispatch);\n const {\n // eslint is unable to detect that these props are \"checked\" via Typescript already\n // eslint-disable-next-line react/prop-types\n childLabelProp,\n // eslint-disable-next-line react/prop-types\n schema,\n // eslint-disable-next-line react/prop-types\n uischema,\n // eslint-disable-next-line react/prop-types\n rootSchema,\n // eslint-disable-next-line react/prop-types\n path,\n // eslint-disable-next-line react/prop-types\n index,\n // eslint-disable-next-line react/prop-types\n uischemas,\n } = props;\n const childPath = composePaths(path, `${index}`);\n\n const childLabel = useMemo(() => {\n return computeChildLabel(\n ctx.core.data,\n childPath,\n childLabelProp,\n schema,\n rootSchema,\n ctx.i18n.translate,\n uischema\n );\n }, [\n ctx.core.data,\n childPath,\n childLabelProp,\n schema,\n rootSchema,\n ctx.i18n.translate,\n uischema,\n ]);\n\n return (\n <Component\n {...props}\n {...dispatchProps}\n childLabel={childLabel}\n childPath={childPath}\n uischemas={uischemas}\n />\n );\n };\n};\n\nexport const withJsonFormsExpandPanelProps = (\n Component: ComponentType<ExpandPanelProps>\n): ComponentType<OwnPropsOfExpandPanel> =>\n withJsonFormsContext(withContextToExpandPanelProps(Component));\n\nexport default withJsonFormsExpandPanelProps(ExpandPanelRenderer);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport isEmpty from 'lodash/isEmpty';\nimport React from 'react';\nimport { Card, CardContent, CardHeader } from '@mui/material';\nimport {\n GroupLayout,\n LayoutProps,\n RankedTester,\n rankWith,\n uiTypeIs,\n withIncreasedRank,\n} from '@jsonforms/core';\nimport {\n MaterialLabelableLayoutRendererProps,\n MaterialLayoutRenderer,\n} from '../util/layout';\nimport { withJsonFormsLayoutProps } from '@jsonforms/react';\n\nexport const groupTester: RankedTester = rankWith(1, uiTypeIs('Group'));\nconst style: { [x: string]: any } = { marginBottom: '10px' };\n\nconst GroupComponent = React.memo(function GroupComponent({\n visible,\n enabled,\n uischema,\n label,\n ...props\n}: MaterialLabelableLayoutRendererProps) {\n const groupLayout = uischema as GroupLayout;\n\n if (!visible) {\n return null;\n }\n\n return (\n <Card style={style}>\n {!isEmpty(label) && <CardHeader title={label} />}\n <CardContent>\n <MaterialLayoutRenderer\n {...props}\n visible={visible}\n enabled={enabled}\n elements={groupLayout.elements}\n />\n </CardContent>\n </Card>\n );\n});\n\nexport const MaterializedGroupLayoutRenderer = ({\n uischema,\n schema,\n path,\n visible,\n enabled,\n renderers,\n cells,\n direction,\n label,\n}: LayoutProps) => {\n const groupLayout = uischema as GroupLayout;\n\n return (\n <GroupComponent\n elements={groupLayout.elements}\n schema={schema}\n path={path}\n direction={direction}\n visible={visible}\n enabled={enabled}\n uischema={uischema}\n renderers={renderers}\n cells={cells}\n label={label}\n />\n );\n};\n\nexport default withJsonFormsLayoutProps(MaterializedGroupLayoutRenderer);\n\nexport const materialGroupTester: RankedTester = withIncreasedRank(\n 1,\n groupTester\n);\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n HorizontalLayout,\n LayoutProps,\n RankedTester,\n rankWith,\n uiTypeIs,\n} from '@jsonforms/core';\nimport { withJsonFormsLayoutProps } from '@jsonforms/react';\nimport {\n MaterialLayoutRenderer,\n MaterialLayoutRendererProps,\n} from '../util/layout';\n\n/**\n * Default tester for a horizontal layout.\n * @type {RankedTester}\n */\nexport const materialHorizontalLayoutTester: RankedTester = rankWith(\n 2,\n uiTypeIs('HorizontalLayout')\n);\n\nexport const MaterialHorizontalLayoutRenderer = ({\n uischema,\n renderers,\n cells,\n schema,\n path,\n enabled,\n visible,\n}: LayoutProps) => {\n const layout = uischema as HorizontalLayout;\n const childProps: MaterialLayoutRendererProps = {\n elements: layout.elements,\n schema,\n path,\n enabled,\n direction: 'row',\n visible,\n };\n\n return (\n <MaterialLayoutRenderer\n {...childProps}\n renderers={renderers}\n cells={cells}\n />\n );\n};\n\nexport default withJsonFormsLayoutProps(MaterialHorizontalLayoutRenderer);\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n LayoutProps,\n RankedTester,\n rankWith,\n uiTypeIs,\n VerticalLayout,\n} from '@jsonforms/core';\nimport {\n MaterialLayoutRenderer,\n MaterialLayoutRendererProps,\n} from '../util/layout';\nimport { withJsonFormsLayoutProps } from '@jsonforms/react';\n\n/**\n * Default tester for a vertical layout.\n * @type {RankedTester}\n */\nexport const materialVerticalLayoutTester: RankedTester = rankWith(\n 1,\n uiTypeIs('VerticalLayout')\n);\n\nexport const MaterialVerticalLayoutRenderer = ({\n uischema,\n schema,\n path,\n enabled,\n visible,\n renderers,\n cells,\n}: LayoutProps) => {\n const verticalLayout = uischema as VerticalLayout;\n const childProps: MaterialLayoutRendererProps = {\n elements: verticalLayout.elements,\n schema,\n path,\n enabled,\n direction: 'column',\n visible,\n };\n\n return (\n <MaterialLayoutRenderer\n {...childProps}\n renderers={renderers}\n cells={cells}\n />\n );\n};\n\nexport default withJsonFormsLayoutProps(MaterialVerticalLayoutRenderer);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { useState, useMemo } from 'react';\nimport { AppBar, Tab, Tabs } from '@mui/material';\nimport {\n and,\n Categorization,\n Category,\n deriveLabelForUISchemaElement,\n isVisible,\n RankedTester,\n rankWith,\n StatePropsOfLayout,\n Tester,\n UISchemaElement,\n uiTypeIs,\n} from '@jsonforms/core';\nimport {\n TranslateProps,\n withJsonFormsLayoutProps,\n withTranslateProps,\n} from '@jsonforms/react';\nimport {\n AjvProps,\n MaterialLayoutRenderer,\n MaterialLayoutRendererProps,\n withAjvProps,\n} from '../util/layout';\n\nexport const isSingleLevelCategorization: Tester = and(\n uiTypeIs('Categorization'),\n (uischema: UISchemaElement): boolean => {\n const categorization = uischema as Categorization;\n\n return (\n categorization.elements &&\n categorization.elements.reduce(\n (acc, e) => acc && e.type === 'Category',\n true\n )\n );\n }\n);\n\nexport const materialCategorizationTester: RankedTester = rankWith(\n 1,\n isSingleLevelCategorization\n);\nexport interface CategorizationState {\n activeCategory: number;\n}\n\nexport interface MaterialCategorizationLayoutRendererProps\n extends StatePropsOfLayout,\n AjvProps,\n TranslateProps {\n selected?: number;\n ownState?: boolean;\n data?: any;\n onChange?(selected: number, prevSelected: number): void;\n}\n\nexport const MaterialCategorizationLayoutRenderer = (\n props: MaterialCategorizationLayoutRendererProps\n) => {\n const {\n data,\n path,\n renderers,\n cells,\n schema,\n uischema,\n visible,\n enabled,\n selected,\n onChange,\n config,\n ajv,\n t,\n } = props;\n const categorization = uischema as Categorization;\n const [previousCategorization, setPreviousCategorization] =\n useState<Categorization>(uischema as Categorization);\n const [activeCategory, setActiveCategory] = useState<number>(selected ?? 0);\n const categories = useMemo(\n () =>\n categorization.elements.filter((category: Category) =>\n isVisible(category, data, undefined, ajv, config)\n ),\n [categorization, data, ajv, config]\n );\n\n if (categorization !== previousCategorization) {\n setActiveCategory(0);\n setPreviousCategorization(categorization);\n }\n\n const safeCategory =\n activeCategory >= categorization.elements.length ? 0 : activeCategory;\n\n const childProps: MaterialLayoutRendererProps = {\n elements: categories[safeCategory] ? categories[safeCategory].elements : [],\n schema,\n path,\n direction: 'column',\n enabled,\n visible,\n renderers,\n cells,\n };\n const onTabChange = (_event: any, value: any) => {\n if (onChange) {\n onChange(value, safeCategory);\n }\n setActiveCategory(value);\n };\n\n const tabLabels = useMemo(() => {\n return categories.map((e: Category) => deriveLabelForUISchemaElement(e, t));\n }, [categories, t]);\n\n if (!visible) {\n return null;\n }\n\n return (\n <>\n <AppBar position='static'>\n <Tabs\n value={safeCategory}\n onChange={onTabChange}\n textColor='inherit'\n indicatorColor='secondary'\n variant='scrollable'\n >\n {categories.map((_, idx: number) => (\n <Tab key={idx} label={tabLabels[idx]} />\n ))}\n </Tabs>\n </AppBar>\n <div style={{ marginTop: '0.5em' }}>\n <MaterialLayoutRenderer {...childProps} key={safeCategory} />\n </div>\n </>\n );\n};\n\nexport default withAjvProps(\n withTranslateProps(\n withJsonFormsLayoutProps(MaterialCategorizationLayoutRenderer)\n )\n);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport range from 'lodash/range';\nimport React, { useState, useCallback } from 'react';\nimport {\n ArrayLayoutProps,\n ArrayTranslations,\n composePaths,\n computeLabel,\n createDefaultValue,\n} from '@jsonforms/core';\nimport map from 'lodash/map';\nimport { ArrayLayoutToolbar } from './ArrayToolbar';\nimport ExpandPanelRenderer from './ExpandPanelRenderer';\nimport merge from 'lodash/merge';\n\nconst MaterialArrayLayoutComponent = (\n props: ArrayLayoutProps & { translations: ArrayTranslations }\n) => {\n const [expanded, setExpanded] = useState<string | boolean>(false);\n const innerCreateDefaultValue = useCallback(\n () => createDefaultValue(props.schema, props.rootSchema),\n [props.schema]\n );\n const handleChange = useCallback(\n (panel: string) => (_event: any, expandedPanel: boolean) => {\n setExpanded(expandedPanel ? panel : false);\n },\n []\n );\n const isExpanded = (index: number) =>\n expanded === composePaths(props.path, `${index}`);\n\n const {\n enabled,\n data,\n path,\n schema,\n uischema,\n errors,\n addItem,\n renderers,\n cells,\n label,\n required,\n rootSchema,\n config,\n uischemas,\n description,\n disableAdd,\n disableRemove,\n translations,\n } = props;\n const appliedUiSchemaOptions = merge({}, config, props.uischema.options);\n const doDisableAdd = disableAdd || appliedUiSchemaOptions.disableAdd;\n const doDisableRemove = disableRemove || appliedUiSchemaOptions.disableRemove;\n\n return (\n <div>\n <ArrayLayoutToolbar\n translations={translations}\n label={computeLabel(\n label,\n required,\n appliedUiSchemaOptions.hideRequiredAsterisk\n )}\n description={description}\n errors={errors}\n path={path}\n enabled={enabled}\n addItem={addItem}\n createDefault={innerCreateDefaultValue}\n disableAdd={doDisableAdd}\n />\n <div>\n {data > 0 ? (\n map(range(data), (index) => {\n return (\n <ExpandPanelRenderer\n enabled={enabled}\n index={index}\n expanded={isExpanded(index)}\n schema={schema}\n path={path}\n handleExpansion={handleChange}\n uischema={uischema}\n renderers={renderers}\n cells={cells}\n key={index}\n rootSchema={rootSchema}\n enableMoveUp={index != 0}\n enableMoveDown={index < data - 1}\n config={config}\n childLabelProp={appliedUiSchemaOptions.elementLabelProp}\n uischemas={uischemas}\n translations={translations}\n disableRemove={doDisableRemove}\n />\n );\n })\n ) : (\n <p>{translations.noDataMessage}</p>\n )}\n </div>\n </div>\n );\n};\n\nexport const MaterialArrayLayout = React.memo(MaterialArrayLayoutComponent);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { useCallback } from 'react';\n\nimport {\n ArrayLayoutProps,\n ArrayTranslations,\n isObjectArrayWithNesting,\n RankedTester,\n rankWith,\n} from '@jsonforms/core';\nimport { MaterialArrayLayout } from './MaterialArrayLayout';\nimport {\n withArrayTranslationProps,\n withJsonFormsArrayLayoutProps,\n withTranslateProps,\n} from '@jsonforms/react';\n\nexport const MaterialArrayLayoutRenderer = ({\n visible,\n addItem,\n translations,\n ...props\n}: ArrayLayoutProps & { translations: ArrayTranslations }) => {\n const addItemCb = useCallback(\n (p: string, value: any) => addItem(p, value),\n [addItem]\n );\n if (!visible) {\n return null;\n }\n\n return (\n <MaterialArrayLayout\n translations={translations}\n visible={visible}\n addItem={addItemCb}\n {...props}\n />\n );\n};\n\nexport const materialArrayLayoutTester: RankedTester = rankWith(\n 4,\n isObjectArrayWithNesting\n);\nexport default withJsonFormsArrayLayoutProps(\n withTranslateProps(withArrayTranslationProps(MaterialArrayLayoutRenderer))\n);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n CellProps,\n isBooleanControl,\n RankedTester,\n rankWith,\n WithClassname,\n} from '@jsonforms/core';\nimport { withJsonFormsCellProps } from '@jsonforms/react';\nimport { MuiCheckbox } from '../mui-controls/MuiCheckbox';\n\nexport const MaterialBooleanCell = (props: CellProps & WithClassname) => {\n return <MuiCheckbox {...props} />;\n};\n\nexport const materialBooleanCellTester: RankedTester = rankWith(\n 2,\n isBooleanControl\n);\n\nexport default withJsonFormsCellProps(MaterialBooleanCell);\n","/*\n The MIT License\n\n Copyright (c) 2017-2021 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n and,\n CellProps,\n isBooleanControl,\n optionIs,\n RankedTester,\n rankWith,\n WithClassname,\n} from '@jsonforms/core';\nimport { withJsonFormsCellProps } from '@jsonforms/react';\nimport { MuiToggle } from '../mui-controls/MuiToggle';\n\nexport const MaterialBooleanToggleCell = (props: CellProps & WithClassname) => {\n return <MuiToggle {...props} />;\n};\n\nexport const materialBooleanToggleCellTester: RankedTester = rankWith(\n 3,\n and(isBooleanControl, optionIs('toggle', true))\n);\n\nexport default withJsonFormsCellProps(MaterialBooleanToggleCell);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n CellProps,\n isDateControl,\n RankedTester,\n rankWith,\n WithClassname,\n} from '@jsonforms/core';\nimport { withJsonFormsCellProps } from '@jsonforms/react';\nimport merge from 'lodash/merge';\nimport { useInputComponent, WithInputProps } from '../util';\n\nexport const MaterialDateCell = (\n props: CellProps & WithClassname & WithInputProps\n) => {\n const {\n data,\n className,\n id,\n enabled,\n uischema,\n path,\n handleChange,\n config,\n label,\n } = props;\n\n const InputComponent = useInputComponent();\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n\n return (\n <InputComponent\n type='date'\n value={data || ''}\n onChange={(ev: React.ChangeEvent<HTMLInputElement>) =>\n handleChange(path, ev.target.value)\n }\n className={className}\n id={id}\n label={label}\n disabled={!enabled}\n autoFocus={appliedUiSchemaOptions.focus}\n fullWidth={true}\n />\n );\n};\nexport const materialDateCellTester: RankedTester = rankWith(2, isDateControl);\n\nexport default withJsonFormsCellProps(MaterialDateCell);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n EnumCellProps,\n isEnumControl,\n RankedTester,\n rankWith,\n WithClassname,\n} from '@jsonforms/core';\nimport {\n TranslateProps,\n withJsonFormsEnumCellProps,\n withTranslateProps,\n} from '@jsonforms/react';\nimport { MuiSelect } from '../mui-controls/MuiSelect';\n\nexport const MaterialEnumCell = (\n props: EnumCellProps & WithClassname & TranslateProps\n) => <MuiSelect {...props} />;\n\n/**\n * Default tester for enum controls.\n * @type {RankedTester}\n */\nexport const materialEnumCellTester: RankedTester = rankWith(2, isEnumControl);\n\n// HOC order can be reversed with https://github.com/eclipsesource/jsonforms/issues/1987\nexport default withJsonFormsEnumCellProps(\n withTranslateProps(React.memo(MaterialEnumCell)),\n false\n);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n CellProps,\n isIntegerControl,\n RankedTester,\n rankWith,\n WithClassname,\n} from '@jsonforms/core';\nimport { withJsonFormsCellProps } from '@jsonforms/react';\nimport { MuiInputInteger } from '../mui-controls/MuiInputInteger';\n\nexport const MaterialIntegerCell = (props: CellProps & WithClassname) => (\n <MuiInputInteger {...props} />\n);\nexport const materialIntegerCellTester: RankedTester = rankWith(\n 2,\n isIntegerControl\n);\n\nexport default withJsonFormsCellProps(MaterialIntegerCell);\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n CellProps,\n isNumberControl,\n RankedTester,\n rankWith,\n WithClassname,\n} from '@jsonforms/core';\nimport { withJsonFormsCellProps } from '@jsonforms/react';\nimport { MuiInputNumber } from '../mui-controls/MuiInputNumber';\n\nexport const MaterialNumberCell = (props: CellProps & WithClassname) => (\n <MuiInputNumber {...props} />\n);\n/**\n * Default tester for number controls.\n * @type {RankedTester}\n */\nexport const materialNumberCellTester: RankedTester = rankWith(\n 2,\n isNumberControl\n);\nexport default withJsonFormsCellProps(MaterialNumberCell);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n CellProps,\n Formatted,\n isNumberFormatControl,\n RankedTester,\n rankWith,\n WithClassname,\n} from '@jsonforms/core';\nimport { withJsonFormsCellProps } from '@jsonforms/react';\nimport { MuiInputNumberFormat } from '../mui-controls/MuiInputNumberFormat';\n\nexport const MaterialNumberFormatCell = (\n props: CellProps & WithClassname & Formatted<number>\n) => <MuiInputNumberFormat {...props} />;\n/**\n * Default tester for text-based/string controls.\n * @type {RankedTester}\n */\nexport const materialNumberFormatCellTester: RankedTester = rankWith(\n 4,\n isNumberFormatControl\n);\n\nexport default withJsonFormsCellProps(MaterialNumberFormatCell);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n EnumCellProps,\n isOneOfEnumControl,\n RankedTester,\n rankWith,\n WithClassname,\n} from '@jsonforms/core';\nimport {\n TranslateProps,\n withJsonFormsOneOfEnumCellProps,\n withTranslateProps,\n} from '@jsonforms/react';\nimport { MuiSelect } from '../mui-controls/MuiSelect';\n\nexport const MaterialOneOfEnumCell = (\n props: EnumCellProps & WithClassname & TranslateProps\n) => <MuiSelect {...props} />;\n\n/**\n * Default tester for oneOf enum controls.\n * @type {RankedTester}\n */\nexport const materialOneOfEnumCellTester: RankedTester = rankWith(\n 2,\n isOneOfEnumControl\n);\n\nexport default withJsonFormsOneOfEnumCellProps(\n withTranslateProps(React.memo(MaterialOneOfEnumCell)),\n false\n);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n CellProps,\n isStringControl,\n RankedTester,\n rankWith,\n WithClassname,\n} from '@jsonforms/core';\nimport { withJsonFormsCellProps } from '@jsonforms/react';\nimport { MuiInputText } from '../mui-controls/MuiInputText';\n\nexport const MaterialTextCell = (props: CellProps & WithClassname) => (\n <MuiInputText {...props} />\n);\n\n/**\n * Default tester for text-based/string controls.\n * @type {RankedTester}\n */\nexport const materialTextCellTester: RankedTester = rankWith(\n 1,\n isStringControl\n);\n\nexport default withJsonFormsCellProps(MaterialTextCell);\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React from 'react';\nimport {\n CellProps,\n isTimeControl,\n RankedTester,\n rankWith,\n WithClassname,\n} from '@jsonforms/core';\nimport { withJsonFormsCellProps } from '@jsonforms/react';\nimport { MuiInputTime } from '../mui-controls/MuiInputTime';\n\nexport const MaterialTimeCell = (props: CellProps & WithClassname) => (\n <MuiInputTime {...props} />\n);\nexport const materialTimeCellTester: RankedTester = rankWith(2, isTimeControl);\n\nexport default withJsonFormsCellProps(MaterialTimeCell);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport React, { useState, useMemo } from 'react';\nimport merge from 'lodash/merge';\nimport { Button, Step, StepButton, Stepper } from '@mui/material';\nimport {\n and,\n Categorization,\n categorizationHasCategory,\n Category,\n deriveLabelForUISchemaElement,\n isVisible,\n optionIs,\n RankedTester,\n rankWith,\n StatePropsOfLayout,\n uiTypeIs,\n} from '@jsonforms/core';\nimport {\n TranslateProps,\n withJsonFormsLayoutProps,\n withTranslateProps,\n} from '@jsonforms/react';\nimport {\n AjvProps,\n MaterialLayoutRenderer,\n MaterialLayoutRendererProps,\n withAjvProps,\n} from '../util/layout';\n\nexport const materialCategorizationStepperTester: RankedTester = rankWith(\n 2,\n and(\n uiTypeIs('Categorization'),\n categorizationHasCategory,\n optionIs('variant', 'stepper')\n )\n);\n\nexport interface CategorizationStepperState {\n activeCategory: number;\n}\n\nexport interface MaterialCategorizationStepperLayoutRendererProps\n extends StatePropsOfLayout,\n AjvProps,\n TranslateProps {\n data: any;\n}\n\nexport const MaterialCategorizationStepperLayoutRenderer = (\n props: MaterialCategorizationStepperLayoutRendererProps\n) => {\n const [activeCategory, setActiveCategory] = useState<number>(0);\n\n const handleStep = (step: number) => {\n setActiveCategory(step);\n };\n\n const {\n data,\n path,\n renderers,\n schema,\n uischema,\n visible,\n cells,\n config,\n ajv,\n t,\n } = props;\n const categorization = uischema as Categorization;\n const appliedUiSchemaOptions = merge({}, config, uischema.options);\n const buttonWrapperStyle = {\n textAlign: 'right' as const,\n width: '100%',\n margin: '1em auto',\n };\n const buttonNextStyle = {\n float: 'right' as const,\n };\n const buttonStyle = {\n marginRight: '1em',\n };\n const categories = useMemo(\n () =>\n categorization.elements.filter((category: Category) =>\n isVisible(category, data, undefined, ajv, config)\n ),\n [categorization, data, ajv, config]\n );\n const childProps: MaterialLayoutRendererProps = {\n elements: categories[activeCategory].elements,\n schema,\n path,\n direction: 'column',\n visible,\n renderers,\n cells,\n };\n const tabLabels = useMemo(() => {\n return categories.map((e: Category) => deriveLabelForUISchemaElement(e, t));\n }, [categories, t]);\n\n if (!visible) {\n return null;\n }\n\n return (\n <>\n <Stepper activeStep={activeCategory} nonLinear>\n {categories.map((_: Category, idx: number) => (\n <Step key={tabLabels[idx]}>\n <StepButton onClick={() => handleStep(idx)}>\n {tabLabels[idx]}\n </StepButton>\n </Step>\n ))}\n </Stepper>\n <div>\n <MaterialLayoutRenderer {...childProps} />\n </div>\n {appliedUiSchemaOptions.showNavButtons ? (\n <div style={buttonWrapperStyle}>\n <Button\n style={buttonNextStyle}\n variant='contained'\n color='primary'\n disabled={activeCategory >= categories.length - 1}\n onClick={() => handleStep(activeCategory + 1)}\n >\n Next\n </Button>\n <Button\n style={buttonStyle}\n color='secondary'\n variant='contained'\n disabled={activeCategory <= 0}\n onClick={() => handleStep(activeCategory - 1)}\n >\n Previous\n </Button>\n </div>\n ) : (\n <></>\n )}\n </>\n );\n};\n\nexport default withAjvProps(\n withTranslateProps(\n withJsonFormsLayoutProps(MaterialCategorizationStepperLayoutRenderer)\n )\n);\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport { MaterialLabelRenderer } from './MaterialLabelRenderer';\n\nimport { MaterialListWithDetailRenderer } from './MaterialListWithDetailRenderer';\n\nexport const UnwrappedAdditional = {\n MaterialLabelRenderer,\n MaterialListWithDetailRenderer,\n};\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport { MaterialAllOfRenderer } from './MaterialAllOfRenderer';\nimport { MaterialAnyOfRenderer } from './MaterialAnyOfRenderer';\nimport { MaterialArrayControlRenderer } from './MaterialArrayControlRenderer';\nimport { MaterialEnumArrayRenderer } from './MaterialEnumArrayRenderer';\nimport { MaterialObjectRenderer } from './MaterialObjectRenderer';\nimport { MaterialOneOfRenderer } from './MaterialOneOfRenderer';\n\nexport const UnwrappedComplex = {\n MaterialAllOfRenderer,\n MaterialAnyOfRenderer,\n MaterialArrayControlRenderer,\n MaterialEnumArrayRenderer,\n MaterialObjectRenderer,\n MaterialOneOfRenderer,\n};\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport { MaterialAnyOfStringOrEnumControl } from './MaterialAnyOfStringOrEnumControl';\nimport { MaterialBooleanControl } from './MaterialBooleanControl';\nimport { MaterialBooleanToggleControl } from './MaterialBooleanToggleControl';\nimport { MaterialDateControl } from './MaterialDateControl';\nimport { MaterialDateTimeControl } from './MaterialDateTimeControl';\nimport { MaterialEnumControl } from './MaterialEnumControl';\nimport { MaterialIntegerControl } from './MaterialIntegerControl';\nimport { MaterialNativeControl } from './MaterialNativeControl';\nimport { MaterialNumberControl } from './MaterialNumberControl';\nimport { MaterialOneOfEnumControl } from './MaterialOneOfEnumControl';\nimport { MaterialOneOfRadioGroupControl } from './MaterialOneOfRadioGroupControl';\nimport { MaterialRadioGroupControl } from './MaterialRadioGroupControl';\nimport { MaterialSliderControl } from './MaterialSliderControl';\nimport { MaterialTextControl } from './MaterialTextControl';\nimport { MaterialTimeControl } from './MaterialTimeControl';\n\nexport const UnwrappedControls = {\n MaterialAnyOfStringOrEnumControl,\n MaterialBooleanControl,\n MaterialBooleanToggleControl,\n MaterialDateControl,\n MaterialDateTimeControl,\n MaterialEnumControl,\n MaterialIntegerControl,\n MaterialNativeControl,\n MaterialNumberControl,\n MaterialOneOfEnumControl,\n MaterialOneOfRadioGroupControl,\n MaterialSliderControl,\n MaterialRadioGroupControl,\n MaterialTextControl,\n MaterialTimeControl,\n};\n","/*\n The MIT License\n \n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport { ExpandPanelRenderer as ExpandPanelRendererUnwrapped } from './ExpandPanelRenderer';\nimport { MaterializedGroupLayoutRenderer } from './MaterialGroupLayout';\nimport { MaterialHorizontalLayoutRenderer } from './MaterialHorizontalLayout';\nimport { MaterialVerticalLayoutRenderer } from './MaterialVerticalLayout';\nimport { MaterialCategorizationLayoutRenderer } from './MaterialCategorizationLayout';\nimport { MaterialArrayLayoutRenderer } from './MaterialArrayLayoutRenderer';\n\nexport const UnwrappedLayouts = {\n ExpandPanelRenderer: ExpandPanelRendererUnwrapped,\n MaterialArrayLayout: MaterialArrayLayoutRenderer,\n MaterialCategorizationLayout: MaterialCategorizationLayoutRenderer,\n MaterialGroupLayout: MaterializedGroupLayoutRenderer,\n MaterialHorizontalLayout: MaterialHorizontalLayoutRenderer,\n MaterialVerticalLayout: MaterialVerticalLayoutRenderer,\n};\n\nexport * from './ArrayToolbar';\n","/*\n The MIT License\n\n Copyright (c) 2017-2019 EclipseSource Munich\n https://github.com/eclipsesource/jsonforms\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\nimport {\n JsonFormsCellRendererRegistryEntry,\n JsonFormsRendererRegistryEntry,\n} from '@jsonforms/core';\nimport {\n materialAllOfControlTester,\n MaterialAllOfRenderer,\n materialAnyOfControlTester,\n MaterialAnyOfRenderer,\n MaterialArrayControlRenderer,\n materialArrayControlTester,\n materialObjectControlTester,\n MaterialObjectRenderer,\n materialOneOfControlTester,\n MaterialOneOfRenderer,\n MaterialEnumArrayRenderer,\n materialEnumArrayRendererTester,\n} from './complex';\nimport {\n MaterialLabelRenderer,\n materialLabelRendererTester,\n MaterialListWithDetailRenderer,\n materialListWithDetailTester,\n} from './additional';\nimport {\n MaterialAnyOfStringOrEnumControl,\n materialAnyOfStringOrEnumControlTester,\n MaterialBooleanControl,\n materialBooleanControlTester,\n MaterialBooleanToggleControl,\n materialBooleanToggleControlTester,\n MaterialDateControl,\n materialDateControlTester,\n MaterialDateTimeControl,\n materialDateTimeControlTester,\n MaterialTimeControl,\n materialTimeControlTester,\n MaterialEnumControl,\n materialEnumControlTester,\n MaterialIntegerControl,\n materialIntegerControlTester,\n MaterialNativeControl,\n materialNativeControlTester,\n MaterialNumberControl,\n materialNumberControlTester,\n MaterialOneOfEnumControl,\n materialOneOfEnumControlTester,\n MaterialRadioGroupControl,\n materialRadioGroupControlTester,\n MaterialSliderControl,\n materialSliderControlTester,\n MaterialTextControl,\n materialTextControlTester,\n MaterialOneOfRadioGroupControl,\n materialOneOfRadioGroupControlTester,\n} from './controls';\nimport {\n MaterialArrayLayout,\n materialArrayLayoutTester,\n MaterialCategorizationLayout,\n materialCategorizationTester,\n MaterialGroupLayout,\n materialGroupTester,\n MaterialHorizontalLayout,\n materialHorizontalLayoutTester,\n MaterialVerticalLayout,\n materialVerticalLayoutTester,\n} from './layouts';\nimport {\n MaterialBooleanCell,\n materialBooleanCellTester,\n MaterialBooleanToggleCell,\n materialBooleanToggleCellTester,\n MaterialDateCell,\n materialDateCellTester,\n MaterialEnumCell,\n materialEnumCellTester,\n MaterialIntegerCell,\n materialIntegerCellTester,\n MaterialNumberCell,\n materialNumberCellTester,\n MaterialNumberFormatCell,\n materialNumberFormatCellTester,\n MaterialOneOfEnumCell,\n materialOneOfEnumCellTester,\n MaterialTextCell,\n materialTextCellTester,\n MaterialTimeCell,\n materialTimeCellTester,\n} from './cells';\nimport MaterialCategorizationStepperLayout, {\n materialCategorizationStepperTester,\n} from './layouts/MaterialCategorizationStepperLayout';\n\nexport * from './additional';\nexport * from './cells';\nexport * from './complex';\nexport * from './controls';\nexport * from './layouts';\nexport * from './mui-controls';\nexport * from './util';\n\nexport const materialRenderers: JsonFormsRendererRegistryEntry[] = [\n // controls\n {\n tester: materialArrayControlTester,\n renderer: MaterialArrayControlRenderer,\n },\n { tester: materialBooleanControlTester, renderer: MaterialBooleanControl },\n {\n tester: materialBooleanToggleControlTester,\n renderer: MaterialBooleanToggleControl,\n },\n { tester: materialNativeControlTester, renderer: MaterialNativeControl },\n { tester: materialEnumControlTester, renderer: MaterialEnumControl },\n { tester: materialIntegerControlTester, renderer: MaterialIntegerControl },\n { tester: materialNumberControlTester, renderer: MaterialNumberControl },\n { tester: materialTextControlTester, renderer: MaterialTextControl },\n { tester: materialDateTimeControlTester, renderer: MaterialDateTimeControl },\n { tester: materialDateControlTester, renderer: MaterialDateControl },\n { tester: materialTimeControlTester, renderer: MaterialTimeControl },\n { tester: materialSliderControlTester, renderer: MaterialSliderControl },\n { tester: materialObjectControlTester, renderer: MaterialObjectRenderer },\n { tester: materialAllOfControlTester, renderer: MaterialAllOfRenderer },\n { tester: materialAnyOfControlTester, renderer: MaterialAnyOfRenderer },\n { tester: materialOneOfControlTester, renderer: MaterialOneOfRenderer },\n {\n tester: materialRadioGroupControlTester,\n renderer: MaterialRadioGroupControl,\n },\n {\n tester: materialOneOfRadioGroupControlTester,\n renderer: MaterialOneOfRadioGroupControl,\n },\n {\n tester: materialOneOfEnumControlTester,\n renderer: MaterialOneOfEnumControl,\n },\n // layouts\n { tester: materialGroupTester, renderer: MaterialGroupLayout },\n {\n tester: materialHorizontalLayoutTester,\n renderer: MaterialHorizontalLayout,\n },\n { tester: materialVerticalLayoutTester, renderer: MaterialVerticalLayout },\n {\n tester: materialCategorizationTester,\n renderer: MaterialCategorizationLayout,\n },\n {\n tester: materialCategorizationStepperTester,\n renderer: MaterialCategorizationStepperLayout,\n },\n { tester: materialArrayLayoutTester, renderer: MaterialArrayLayout },\n // additional\n { tester: materialLabelRendererTester, renderer: MaterialLabelRenderer },\n {\n tester: materialListWithDetailTester,\n renderer: MaterialListWithDetailRenderer,\n },\n {\n tester: materialAnyOfStringOrEnumControlTester,\n renderer: MaterialAnyOfStringOrEnumControl,\n },\n {\n tester: materialEnumArrayRendererTester,\n renderer: MaterialEnumArrayRenderer,\n },\n];\n\nexport const materialCells: JsonFormsCellRendererRegistryEntry[] = [\n { tester: materialBooleanCellTester, cell: MaterialBooleanCell },\n { tester: materialBooleanToggleCellTester, cell: MaterialBooleanToggleCell },\n { tester: materialDateCellTester, cell: MaterialDateCell },\n { tester: materialEnumCellTester, cell: MaterialEnumCell },\n { tester: materialIntegerCellTester, cell: MaterialIntegerCell },\n { tester: materialNumberCellTester, cell: MaterialNumberCell },\n { tester: materialNumberFormatCellTester, cell: MaterialNumberFormatCell },\n { tester: materialOneOfEnumCellTester, cell: MaterialOneOfEnumCell },\n { tester: materialTextCellTester, cell: MaterialTextCell },\n { tester: materialTimeCellTester, cell: MaterialTimeCell },\n];\n\nimport { UnwrappedAdditional } from './additional/unwrapped';\nimport { UnwrappedComplex } from './complex/unwrapped';\nimport { UnwrappedControls } from './controls/unwrapped';\nimport { UnwrappedLayouts } from './layouts/unwrapped';\n\nexport const Unwrapped = {\n ...UnwrappedAdditional,\n ...UnwrappedComplex,\n ...UnwrappedControls,\n ...UnwrappedLayouts,\n};\n"],"names":["eventToValue","toNumber","ListWithDetailMasterItem","ExpandPanelRenderer","MaterialArrayLayout","ExpandPanelRendererUnwrapped","MaterialArrayControlRenderer","MaterialBooleanControl","MaterialBooleanToggleControl","MaterialNativeControl","MaterialEnumControl","MaterialIntegerControl","MaterialNumberControl","MaterialTextControl","MaterialDateTimeControl","MaterialDateControl","MaterialTimeControl","MaterialSliderControl","MaterialObjectRenderer","MaterialAllOfRenderer","MaterialAnyOfRenderer","MaterialOneOfRenderer","MaterialRadioGroupControl","MaterialOneOfRadioGroupControl","MaterialOneOfEnumControl","MaterialLabelRenderer","MaterialListWithDetailRenderer","MaterialAnyOfStringOrEnumControl","MaterialEnumArrayRenderer","MaterialBooleanCell","MaterialBooleanToggleCell","MaterialDateCell","MaterialEnumCell","MaterialIntegerCell","MaterialNumberCell","MaterialNumberFormatCell","MaterialOneOfEnumCell","MaterialTextCell","MaterialTimeCell"],"mappings":"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"}
|