@prismicio/types-internal
Version:
Prismic types for Custom Types and Prismic Data
237 lines (236 loc) • 8.83 kB
TypeScript
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;