UNPKG

@prismicio/types-internal

Version:
237 lines (236 loc) 8.83 kB
import * as t from "io-ts"; import type { ContentPath, TraverseWidgetContentFn } from "../../_internal/utils"; import { type Link, NestableFieldTypes, NestableWidget } from "../../customtypes"; import type { LegacyContentCtx, WithTypes } from "../LegacyContentCtx"; export declare const RepeatableContentType: "RepeatableContent"; export declare const RepeatableFieldType: "Repeatable"; export declare const RepeatableItemContent: t.ExactC<t.TypeC<{ __TYPE__: t.LiteralC<"LinkContent">; value: t.UnionC<[t.IntersectionC<[t.ExactC<t.TypeC<{ __TYPE__: t.LiteralC<"ImageLink">; }>>, t.UnionC<[t.IntersectionC<[t.IntersectionC<[t.ExactC<t.TypeC<{ kind: t.StringC; 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.PartialC<{ text: t.StringC; }>>]>, t.ExactC<t.TypeC<{ kind: t.LiteralC<"image">; text: t.StringC; }>>]>]>, t.IntersectionC<[t.ExactC<t.TypeC<{ __TYPE__: t.LiteralC<"FileLink">; }>>, t.UnionC<[t.IntersectionC<[t.ExactC<t.IntersectionC<[t.TypeC<{ kind: t.StringC; 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.PartialC<{ text: t.StringC; }>>]>, t.ExactC<t.TypeC<{ kind: t.LiteralC<"file">; text: t.StringC; }>>]>]>, t.IntersectionC<[t.ExactC<t.TypeC<{ __TYPE__: t.LiteralC<"DocumentLink">; }>>, t.UnionC<[t.IntersectionC<[t.ExactC<t.TypeC<{ id: t.Type<string, string, unknown>; }>>, t.ExactC<t.PartialC<{ text: t.StringC; }>>]>, t.ExactC<t.TypeC<{ kind: t.LiteralC<"document">; text: t.StringC; }>>]>]>, t.IntersectionC<[t.ExactC<t.TypeC<{ __TYPE__: t.LiteralC<"ExternalLink">; }>>, t.UnionC<[t.IntersectionC<[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.PartialC<{ text: t.StringC; }>>]>, t.ExactC<t.TypeC<{ kind: t.LiteralC<"web">; text: t.StringC; }>>]>]>, t.IntersectionC<[t.ExactC<t.TypeC<{ __TYPE__: t.LiteralC<"MediaLink">; }>>, t.ExactC<t.TypeC<{ kind: t.LiteralC<"media">; text: t.StringC; }>>]>, t.IntersectionC<[t.ExactC<t.TypeC<{ __TYPE__: t.LiteralC<"AnyLink">; }>>, t.ExactC<t.TypeC<{ text: t.StringC; }>>]>]>; }>>; export declare type RepeatableItemContent = t.TypeOf<typeof RepeatableItemContent>; export declare const RepeatableContent: t.ExactC<t.TypeC<{ __TYPE__: t.LiteralC<"RepeatableContent">; type: t.UnionC<[t.LiteralC<"Color">, t.LiteralC<"Boolean">, t.LiteralC<"Embed">, t.LiteralC<"GeoPoint">, t.LiteralC<"Date">, t.LiteralC<"Number">, t.LiteralC<"Range">, t.LiteralC<"StructuredText">, t.LiteralC<"Select">, t.LiteralC<"Separator">, t.LiteralC<"Text">, t.LiteralC<"Timestamp">, t.LiteralC<"Link">, t.LiteralC<"Image">, t.LiteralC<"IntegrationFields">]>; value: t.ArrayC<t.ExactC<t.TypeC<{ __TYPE__: t.LiteralC<"LinkContent">; value: t.UnionC<[t.IntersectionC<[t.ExactC<t.TypeC<{ __TYPE__: t.LiteralC<"ImageLink">; }>>, t.UnionC<[t.IntersectionC<[t.IntersectionC<[t.ExactC<t.TypeC<{ kind: t.StringC; 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.PartialC<{ text: t.StringC; }>>]>, t.ExactC<t.TypeC<{ kind: t.LiteralC<"image">; text: t.StringC; }>>]>]>, t.IntersectionC<[t.ExactC<t.TypeC<{ __TYPE__: t.LiteralC<"FileLink">; }>>, t.UnionC<[t.IntersectionC<[t.ExactC<t.IntersectionC<[t.TypeC<{ kind: t.StringC; 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.PartialC<{ text: t.StringC; }>>]>, t.ExactC<t.TypeC<{ kind: t.LiteralC<"file">; text: t.StringC; }>>]>]>, t.IntersectionC<[t.ExactC<t.TypeC<{ __TYPE__: t.LiteralC<"DocumentLink">; }>>, t.UnionC<[t.IntersectionC<[t.ExactC<t.TypeC<{ id: t.Type<string, string, unknown>; }>>, t.ExactC<t.PartialC<{ text: t.StringC; }>>]>, t.ExactC<t.TypeC<{ kind: t.LiteralC<"document">; text: t.StringC; }>>]>]>, t.IntersectionC<[t.ExactC<t.TypeC<{ __TYPE__: t.LiteralC<"ExternalLink">; }>>, t.UnionC<[t.IntersectionC<[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.PartialC<{ text: t.StringC; }>>]>, t.ExactC<t.TypeC<{ kind: t.LiteralC<"web">; text: t.StringC; }>>]>]>, t.IntersectionC<[t.ExactC<t.TypeC<{ __TYPE__: t.LiteralC<"MediaLink">; }>>, t.ExactC<t.TypeC<{ kind: t.LiteralC<"media">; text: t.StringC; }>>]>, t.IntersectionC<[t.ExactC<t.TypeC<{ __TYPE__: t.LiteralC<"AnyLink">; }>>, t.ExactC<t.TypeC<{ text: t.StringC; }>>]>]>; }>>>; }>>; export declare type RepeatableContent = t.TypeOf<typeof RepeatableContent>; export declare const isRepeatableContent: t.Is<{ __TYPE__: "RepeatableContent"; type: "Boolean" | "Color" | "Date" | "Embed" | "GeoPoint" | "Image" | "IntegrationFields" | "Link" | "Number" | "Range" | "StructuredText" | "Select" | "Separator" | "Text" | "Timestamp"; value: { __TYPE__: "LinkContent"; value: ({ __TYPE__: "ImageLink"; } & (({ kind: string; id: string; url: string; height: string; width: string; size: string; name: string; } & { date?: string | null | undefined; } & { text?: string; }) | { kind: "image"; text: string; })) | ({ __TYPE__: "FileLink"; } & (({ kind: string; id: string; url: string; name: string; size: string; } & { date?: string | null | undefined; } & { text?: string; }) | { kind: "file"; text: string; })) | ({ __TYPE__: "MediaLink"; } & { kind: "media"; text: string; }) | ({ __TYPE__: "DocumentLink"; } & (({ id: string; } & { text?: string; }) | { kind: "document"; text: string; })) | ({ __TYPE__: "ExternalLink"; } & (({ url: string; } & { kind?: "web"; target?: string | null | undefined; preview?: { title?: string; } | null | undefined; } & { text?: string; }) | { kind: "web"; text: string; })) | ({ __TYPE__: "AnyLink"; } & { text: string; }); }[]; }>; export declare const RepeatableLegacy: (ctx: LegacyContentCtx, fieldType: NestableFieldTypes) => 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;