import { FieldSchema, StructureSchema, ValueType } from '@ephox/boulder'; import type { Optional, Result } from '@ephox/katamari'; import * as ComponentSchema from '../../../core/ComponentSchema'; export interface CardImageSpec { type: 'cardimage'; src: string; alt?: string; classes?: string[]; } export interface CardImage { type: 'cardimage'; src: string; alt: Optional; classes: string[]; } const cardImageFields = [ ComponentSchema.type, FieldSchema.requiredString('src'), FieldSchema.optionString('alt'), FieldSchema.defaultedArrayOf('classes', [], ValueType.string) ]; export const cardImageSchema = StructureSchema.objOf(cardImageFields); export const createCardImage = (spec: CardImageSpec): Result> => StructureSchema.asRaw('cardimage', cardImageSchema, spec);