import isEmpty from 'lodash/isEmpty' ; import { isLayout , UISchemaElement } from '../models' ; export type IterateCallback = ( uischema : UISchemaElement ) => void ; const setReadonlyPropertyValue = ( value ) : IterateCallback => ( child ) : void => { if ( ! child . options ) { child . options = { } ; } child . options . readonly = value ; } ; export const setReadonly = ( uischema ) : void => { iterateSchema ( uischema , setReadonlyPropertyValue ( true ) ) ; } ; export const unsetReadonly = ( uischema ) : void => { iterateSchema ( uischema , setReadonlyPropertyValue ( false ) ) ; } ; export const iterateSchema = ( uischema , toApply ) : void => { if ( isEmpty ( uischema ) ) { return ; } if ( isLayout ( uischema ) ) { uischema . elements . forEach ( child => iterateSchema ( child , toApply ) ) ; return ; } toApply ( uischema ) ; } ;