import type z from 'zod'; import type { TypeRenderComponentJsx } from 'zova-jsx'; import type { IResourceFormFieldRecord, IResourceTableCellRecord, IResourceTableActionRowRecord, IResourceDetailsActionRowRecord, IResourceFormActionRowRecord, IResourceTableActionBulkRecord, IResourceDetailsActionBulkRecord, IResourceBlockRecord, TypeFormSchemaScene, IResourceRenderTableActionRowOptionsAction, IResourceRenderDetailsActionRowOptionsAction, IResourceRenderFormActionRowOptionsAction, IResourceRenderTableActionBulkOptionsAction, IResourceRenderDetailsActionBulkOptionsAction, IResourceRenderBlockOptionsBlock, IResourceTableActionRowOptionsBase, IResourceDetailsActionRowOptionsBase, IResourceFormActionRowOptionsBase, IResourceTableActionBulkOptionsBase, IResourceDetailsActionBulkOptionsBase, } from 'zova-module-a-openapi'; import { _generalSchemaRest, _toLowerCaseFirstChar } from './inner.ts'; export function schemaRenderField( render: K, options?: IResourceFormFieldRecord[K], scene?: TypeFormSchemaScene, ) { return function (schema: T): T { const options2 = options !== undefined ? { render, options } : { render }; return _generalSchemaRest(schema, options2, scene ?? 'form'); // diff from table }; } export function schemaRenderFieldJsx( renderComponentJsx: TypeRenderComponentJsx, scene?: TypeFormSchemaScene, ) { return function (schema: T): T { const options = { render: renderComponentJsx }; return _generalSchemaRest(schema, options, scene ?? 'form'); //diff from table }; } export function schemaRenderCell< K extends keyof (IResourceTableCellRecord & IResourceTableActionRowRecord & IResourceDetailsActionRowRecord), T extends z.ZodType, >(render: K, options?: (IResourceTableCellRecord & IResourceTableActionRowRecord & IResourceDetailsActionRowRecord)[K]) { return function (schema: T): T { const options2 = options !== undefined ? { render, columnProps: options } : { render }; return _generalSchemaRest(schema, options2, 'table'); }; } export function schemaRenderCellJsx( renderComponentJsx: TypeRenderComponentJsx, options?: Pick, ) { return function (schema: T): T { const options2 = options !== undefined ? { render: renderComponentJsx, columnProps: options } : { render: renderComponentJsx }; return _generalSchemaRest(schema, options2, 'table'); }; } export function schemaRenderTableActionRow( render: K, options?: IResourceTableActionRowRecord[K], ): IResourceRenderTableActionRowOptionsAction { const pos = render.toString().indexOf(':action'); const name = pos > -1 ? _toLowerCaseFirstChar(render.toString().substring(pos + ':action'.length)) : undefined; return { $$typeof: 'zova-jsx:actionRow', name, render, options }; } export function schemaRenderTableActionRowJsx( renderComponentJsx: TypeRenderComponentJsx, options?: Pick, ) { return { render: renderComponentJsx, options }; } export function schemaRenderDetailsActionRow( render: K, options?: IResourceDetailsActionRowRecord[K], ): IResourceRenderDetailsActionRowOptionsAction { const pos = render.toString().indexOf(':action'); const name = pos > -1 ? _toLowerCaseFirstChar(render.toString().substring(pos + ':action'.length)) : undefined; return { $$typeof: 'zova-jsx:actionRow', name, render, options }; } export function schemaRenderDetailsActionRowJsx( renderComponentJsx: TypeRenderComponentJsx, options?: Pick, ) { return { render: renderComponentJsx, options }; } export function schemaRenderFormActionRow( render: K, options?: IResourceFormActionRowRecord[K], ): IResourceRenderFormActionRowOptionsAction { const pos = render.toString().indexOf(':action'); const name = pos > -1 ? _toLowerCaseFirstChar(render.toString().substring(pos + ':action'.length)) : undefined; return { $$typeof: 'zova-jsx:actionRow', name, render, options }; } export function schemaRenderFormActionRowJsx( renderComponentJsx: TypeRenderComponentJsx, options?: Pick, ) { return { render: renderComponentJsx, options }; } export function schemaRenderTableActionBulk( render: K, options?: IResourceTableActionBulkRecord[K], ): IResourceRenderTableActionBulkOptionsAction { const pos = render.toString().indexOf(':action'); const name = pos > -1 ? _toLowerCaseFirstChar(render.toString().substring(pos + ':action'.length)) : undefined; return { $$typeof: 'zova-jsx:actionBulk', name, render, options }; } export function schemaRenderTableActionBulkJsx( renderComponentJsx: TypeRenderComponentJsx, options?: Pick, ) { return { render: renderComponentJsx, options }; } export function schemaRenderDetailsActionBulk( render: K, options?: IResourceDetailsActionBulkRecord[K], ): IResourceRenderDetailsActionBulkOptionsAction { const pos = render.toString().indexOf(':action'); const name = pos > -1 ? _toLowerCaseFirstChar(render.toString().substring(pos + ':action'.length)) : undefined; return { $$typeof: 'zova-jsx:actionBulk', name, render, options }; } export function schemaRenderDetailsActionBulkJsx( renderComponentJsx: TypeRenderComponentJsx, options?: Pick, ) { return { render: renderComponentJsx, options }; } export function schemaRenderBlock( render: K, options?: IResourceBlockRecord[K], ): IResourceRenderBlockOptionsBlock { return { $$typeof: 'zova-jsx:block', render, options }; } export function schemaRenderBlockJsx(renderComponentJsx: TypeRenderComponentJsx) { return { render: renderComponentJsx }; }