import type { BioTemplateControlSchema, } from './controlSchemaTypes' export function cloneSchemaMap( schemas: Record ): Record { const result = {} as Record for (const name of Object.keys(schemas) as TName[]) { result[name] = cloneControlSchema(schemas[name]) } return result } export function cloneControlSchema(schema: BioTemplateControlSchema): BioTemplateControlSchema { return Object.fromEntries( Object.entries(schema).map(([name, definition]) => [name, cloneControlDefinition(definition)]) ) } export function cloneControlDefinition( definition: BioTemplateControlSchema[string] ): BioTemplateControlSchema[string] { return { ...definition, options: definition.options ? [...definition.options] : undefined, props: definition.props ? { ...definition.props } : undefined, sidebar: typeof definition.sidebar === 'object' && definition.sidebar !== null ? { ...definition.sidebar } : definition.sidebar, } }