UNPKG

@prismicio/types-internal

Version:
177 lines (176 loc) 6.05 kB
import * as t from "io-ts"; import type { Link, NestableWidget } from "../../../customtypes"; import type { LegacyContentCtx, WithTypes } from "../../LegacyContentCtx"; import { ContentPath, TraverseWidgetContentFn } from "../../utils"; export declare const RepeatableContent: t.ExactC<t.TypeC<{ __TYPE__: t.LiteralC<"RepeatableContent">; type: t.LiteralC<"Link">; value: t.ArrayC<t.IntersectionC<[t.ExactC<t.TypeC<{ key: t.Type<string, string, unknown>; }>>, t.ExactC<t.TypeC<{ __TYPE__: t.LiteralC<"LinkContent">; value: t.UnionC<[t.IntersectionC<[t.ExactC<t.TypeC<{ __TYPE__: t.LiteralC<"ImageLink">; }>>, t.IntersectionC<[t.UnionC<[t.IntersectionC<[t.ExactC<t.TypeC<{ kind: t.Type<"image", "image", unknown>; id: t.StringC; url: t.StringC; height: t.StringC; width: t.StringC; size: t.StringC; name: t.StringC; }>>, t.ExactC<t.PartialC<{ date: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>; }>>]>, t.ExactC<t.TypeC<{ kind: t.LiteralC<"image">; }>>]>, t.ExactC<t.PartialC<{ text: t.StringC; variant: t.StringC; }>>]>]>, t.IntersectionC<[t.ExactC<t.TypeC<{ __TYPE__: t.LiteralC<"FileLink">; }>>, t.IntersectionC<[t.UnionC<[t.ExactC<t.IntersectionC<[t.TypeC<{ kind: t.Type<"file", "file", unknown>; id: t.StringC; url: t.StringC; name: t.StringC; size: t.StringC; }>, t.PartialC<{ date: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>; }>]>>, t.ExactC<t.TypeC<{ kind: t.LiteralC<"file">; }>>]>, t.ExactC<t.PartialC<{ text: t.StringC; variant: t.StringC; }>>]>]>, t.IntersectionC<[t.ExactC<t.TypeC<{ __TYPE__: t.LiteralC<"DocumentLink">; }>>, t.IntersectionC<[t.UnionC<[t.ExactC<t.TypeC<{ id: t.Type<string, string, unknown>; }>>, t.ExactC<t.TypeC<{ kind: t.LiteralC<"document">; }>>]>, t.ExactC<t.PartialC<{ text: t.StringC; variant: t.StringC; }>>]>]>, t.IntersectionC<[t.ExactC<t.TypeC<{ __TYPE__: t.LiteralC<"ExternalLink">; }>>, t.IntersectionC<[t.UnionC<[t.ExactC<t.IntersectionC<[t.TypeC<{ url: t.StringC; }>, t.PartialC<{ kind: t.LiteralC<"web">; target: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>; preview: t.UnionC<[t.Type<{ title?: string; }, { title?: string; }, unknown>, t.NullC, t.UndefinedC]>; }>]>>, t.ExactC<t.TypeC<{ kind: t.LiteralC<"web">; }>>]>, t.ExactC<t.PartialC<{ text: t.StringC; variant: t.StringC; }>>]>]>, t.IntersectionC<[t.ExactC<t.TypeC<{ __TYPE__: t.LiteralC<"MediaLink">; }>>, t.IntersectionC<[t.ExactC<t.TypeC<{ kind: t.LiteralC<"media">; }>>, t.ExactC<t.PartialC<{ text: t.StringC; variant: t.StringC; }>>]>]>, t.IntersectionC<[t.ExactC<t.TypeC<{ __TYPE__: t.LiteralC<"AnyLink">; }>>, t.ExactC<t.IntersectionC<[t.TypeC<{ kind: t.LiteralC<"any">; }>, t.PartialC<{ text: t.StringC; variant: t.StringC; }>]>>]>]>; }>>]>>; }>>; export declare type RepeatableContent = t.TypeOf<typeof RepeatableContent>; export declare const isRepeatableContent: (u: unknown) => u is { __TYPE__: "RepeatableContent"; type: "Link"; value: ({ key: string; } & { __TYPE__: "LinkContent"; value: ({ __TYPE__: "ImageLink"; } & ((({ kind: "image"; id: string; url: string; height: string; width: string; size: string; name: string; } & { date?: string | null | undefined; }) | { kind: "image"; }) & { text?: string; variant?: string; })) | ({ __TYPE__: "FileLink"; } & ((({ kind: "file"; id: string; url: string; name: string; size: string; } & { date?: string | null | undefined; }) | { kind: "file"; }) & { text?: string; variant?: string; })) | ({ __TYPE__: "DocumentLink"; } & (({ id: string; } | { kind: "document"; }) & { text?: string; variant?: string; })) | ({ __TYPE__: "ExternalLink"; } & ((({ url: string; } & { kind?: "web"; target?: string | null | undefined; preview?: { title?: string; } | null | undefined; }) | { kind: "web"; }) & { text?: string; variant?: string; })) | ({ __TYPE__: "MediaLink"; } & { kind: "media"; } & { text?: string; variant?: string; }) | ({ __TYPE__: "AnyLink"; } & { kind: "any"; } & { text?: string; variant?: string; }); })[]; }; export declare const RepeatableLegacy: (ctx: LegacyContentCtx, fieldType: "Link") => t.Type<RepeatableContent, WithTypes<Array<unknown>>, unknown>; export declare type RepeatableCustomType = Link; export declare function traverseRepeatableContent({ path, key, apiId, model, content, }: { path: ContentPath; key: string; apiId: string; content: RepeatableContent; model?: NestableWidget | undefined; }): (transform: TraverseWidgetContentFn) => RepeatableContent | undefined;