import { z } from "zod" import { barcodeTypeSchema, cssMediaTypeSchema, horizontalAlignmentSchema, lengthSchema, verticalAlignmentSchema, } from "./typeSchema"; import {BarcodeStampOptions, TextStampOptions} from "../../public/stamp"; import {HorizontalAlignment, VerticalAlignment} from "../../public/types"; export const baseStampOptionsSchema = z.object({ horizontalAlignment: horizontalAlignmentSchema.optional().default(HorizontalAlignment.Center), verticalAlignment: verticalAlignmentSchema.optional().default(VerticalAlignment.Middle), horizontalOffset: lengthSchema.optional(), verticalOffset: lengthSchema.optional(), opacity: z .number() .optional(), rotation: z .number() .optional(), hyperlink: z .string() .optional(), scale: z .number() .optional(), behindExistingContent: z .boolean() .optional(), timeout: z .number() .optional(), renderDelay: z .number() .optional(), maxWidth: lengthSchema.optional(), maxHeight: lengthSchema.optional(), minWidth: lengthSchema.optional(), minHeight: lengthSchema.optional() }) export const htmlStampOptionsSchema = baseStampOptionsSchema.extend({ cssMediaType: cssMediaTypeSchema.optional() }) export const imageStampOptionsSchema = baseStampOptionsSchema export const barcodeStampOptionsSchema: z.ZodType = baseStampOptionsSchema.extend({ widthPx: z .number() .optional(), heightPx: z .number() .optional(), barcodeType: barcodeTypeSchema.optional() }) export const textStampOptionsSchema: z.ZodType = baseStampOptionsSchema.extend({ isBold: z .boolean() .optional(), isItalic: z .boolean() .optional(), isUnderline: z .boolean() .optional(), isStrikethrough: z .boolean() .optional(), fontFamily: z .string() .optional(), fontSize: z .number() .optional(), useGoogleFont: z .boolean() .optional(), textColor: z .string() .optional(), backgroundColor: z .string() .optional() })