{"version":3,"file":"index.cjs","names":["z","PRECISIONS","SOURCE_TYPES","VISIBILITIES","explainDateProblem"],"sources":["../../src/schema/zod.ts"],"sourcesContent":["import { z } from 'zod';\nimport { PRECISIONS, SOURCE_TYPES, VISIBILITIES } from './literals';\nimport { explainDateProblem } from './validate';\n\n/**\n * Canonical Zod schema — the platform-side contract (`import from 'timarro/schema'`).\n *\n * Date semantics (grammar, precision match, end-not-before-start) delegate to\n * {@link explainDateProblem}, the same function the dependency-free runtime\n * validator uses — one grammar implementation, two validation surfaces.\n *\n * Enumerated values come from {@link ./literals} so they cannot drift from the\n * hand-rolled validator.\n *\n * MUST NOT be imported from the core element entry (src/index.ts / src/element.ts):\n * the embed bundle ships zod-free.\n */\n\nexport const precisionSchema = z.enum(PRECISIONS);\n\nexport const sourceTypeSchema = z.enum(SOURCE_TYPES);\n\nexport const visibilitySchema = z.enum(VISIBILITIES);\n\nexport const timarroDateSchema = z\n  .object({\n    start: z.string(),\n    end: z.string().optional(),\n    precision: precisionSchema,\n    circa: z.boolean().optional(),\n  })\n  .superRefine((date, ctx) => {\n    const problem = explainDateProblem(date);\n    if (problem) {\n      ctx.addIssue({ code: 'custom', path: [problem.field], message: problem.message });\n    }\n  });\n\nexport const timarroEventSchema = z.object({\n  id: z.string().min(1),\n  title: z.string().min(1),\n  date: timarroDateSchema,\n  description: z.string().optional(),\n  entities: z.array(z.string()).optional(),\n  mediaUrls: z.array(z.string()).optional(),\n  sourceRef: z.string().optional(),\n  color: z.string().optional(),\n  order: z.number().optional(),\n  timelineId: z.string().optional(),\n  revision: z.number().optional(),\n});\n\nexport const timelineMetaSchema = z.object({\n  id: z.string().min(1),\n  title: z.string().min(1),\n  description: z.string().optional(),\n  coverImageUrl: z.string().optional(),\n  createdBy: z.string().optional(),\n  visibility: visibilitySchema.optional(),\n  sourceTypes: z.array(sourceTypeSchema).optional(),\n});\n\nexport const timarroTimelineDataSchema = z.object({\n  timeline: timelineMetaSchema,\n  events: z.array(timarroEventSchema),\n});\n"],"mappings":";;;;;;;;;;;;;;;;;AAkBA,MAAa,kBAAkBA,IAAAA,EAAE,KAAKC,iBAAAA,UAAU;AAEhD,MAAa,mBAAmBD,IAAAA,EAAE,KAAKE,iBAAAA,YAAY;AAEnD,MAAa,mBAAmBF,IAAAA,EAAE,KAAKG,iBAAAA,YAAY;AAEnD,MAAa,oBAAoBH,IAAAA,EAC9B,OAAO;CACN,OAAOA,IAAAA,EAAE,OAAO;CAChB,KAAKA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;CACzB,WAAW;CACX,OAAOA,IAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS;AAC9B,CAAC,CAAC,CACD,aAAa,MAAM,QAAQ;CAC1B,MAAM,UAAUI,iBAAAA,mBAAmB,IAAI;CACvC,IAAI,SACF,IAAI,SAAS;EAAE,MAAM;EAAU,MAAM,CAAC,QAAQ,KAAK;EAAG,SAAS,QAAQ;CAAQ,CAAC;AAEpF,CAAC;AAEH,MAAa,qBAAqBJ,IAAAA,EAAE,OAAO;CACzC,IAAIA,IAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;CACpB,OAAOA,IAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;CACvB,MAAM;CACN,aAAaA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;CACjC,UAAUA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS;CACvC,WAAWA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS;CACxC,WAAWA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;CAC/B,OAAOA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;CAC3B,OAAOA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;CAC3B,YAAYA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;CAChC,UAAUA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;AAChC,CAAC;AAED,MAAa,qBAAqBA,IAAAA,EAAE,OAAO;CACzC,IAAIA,IAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;CACpB,OAAOA,IAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;CACvB,aAAaA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;CACjC,eAAeA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;CACnC,WAAWA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;CAC/B,YAAY,iBAAiB,SAAS;CACtC,aAAaA,IAAAA,EAAE,MAAM,gBAAgB,CAAC,CAAC,SAAS;AAClD,CAAC;AAED,MAAa,4BAA4BA,IAAAA,EAAE,OAAO;CAChD,UAAU;CACV,QAAQA,IAAAA,EAAE,MAAM,kBAAkB;AACpC,CAAC"}