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