import { Collection, FieldTypes as SealiousFieldTypes } from "sealious"; import { sealiousToFormField } from "./get-field-for-sealious.js"; import { Hybrid } from "./hybrid.js"; import { FormField } from "./field.js"; import { ExtractedFieldInfo } from "../../utils/extract-fields-from-collection.js"; import { toPascalCase } from "js-convert-case"; export class ItemDraft extends Hybrid<{ [name in keyof C["fields"]]: FormField; }> { constructor(public sealious_field: SealiousFieldTypes.ItemDraft) { super( Object.fromEntries( Object.entries(sealious_field.target_collection.fields).map( ([field_name, sealious_field]) => [ field_name, sealiousToFormField(sealious_field), ] ) ) as unknown as { [name in keyof C["fields"]]: FormField; } ); } generateFieldDeclaration( field_info: ExtractedFieldInfo, vars: { form_field_types: string; sealious_field: string } ): string { return `new ${vars.form_field_types}.${this.constructor.name}(${vars.sealious_field})`; } generateImportsForFieldList( field_info: ExtractedFieldInfo ): { what: string; from: string; as?: string; type?: boolean }[] { return [ { what: toPascalCase(field_info.target!), from: "src/back/collections/collections.js", type: true, }, ]; } }