@prismicio/types-internal
Version:
Prismic types for Custom Types and Prismic Data
168 lines (167 loc) • 8.18 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.NestableLegacy = exports.isNestableContent = exports.NestableContentDefaultValue = exports.NestableContent = void 0;
const tslib_1 = require("tslib");
const Either_1 = require("fp-ts/lib/Either");
const t = (0, tslib_1.__importStar)(require("io-ts"));
const EmptyContent_1 = require("../EmptyContent");
const BooleanContent_1 = require("./BooleanContent");
const EmbedContent_1 = require("./EmbedContent");
const FieldContent_1 = require("./FieldContent");
const common_1 = require("./FieldContent/common");
const GeoPointContent_1 = require("./GeoPointContent");
const ImageContent_1 = require("./ImageContent");
const IntegrationFieldContent_1 = require("./IntegrationFieldContent");
const LinkContent_1 = require("./LinkContent");
const RepeatableContent_1 = require("./RepeatableContent");
const RichTextContent_1 = require("./RichTextContent");
const SeparatorContent_1 = require("./SeparatorContent");
const TableContent_1 = require("./TableContent");
exports.NestableContent = t.union([
EmptyContent_1.EmptyContent,
BooleanContent_1.BooleanContent,
EmbedContent_1.EmbedContent,
FieldContent_1.TextContent,
FieldContent_1.TimestampContent,
FieldContent_1.SelectContent,
FieldContent_1.RangeContent,
FieldContent_1.NumberContent,
FieldContent_1.DateContent,
FieldContent_1.ColorContent,
GeoPointContent_1.GeoPointContent,
ImageContent_1.ImageContent,
IntegrationFieldContent_1.IntegrationFieldContent,
LinkContent_1.LinkContent,
RichTextContent_1.RichTextContent,
SeparatorContent_1.SeparatorContent,
TableContent_1.TableContent,
RepeatableContent_1.RepeatableContent,
]);
const NestableContentDefaultValue = (widgetDef) => {
switch (widgetDef.type) {
case "Boolean":
return (0, BooleanContent_1.BooleanContentDefaultValue)(widgetDef);
case "Select":
return (0, FieldContent_1.SelectContentDefaultValue)(widgetDef);
default:
return undefined;
}
};
exports.NestableContentDefaultValue = NestableContentDefaultValue;
const isNestableContent = (u) => (0, FieldContent_1.isTextContent)(u) ||
(0, FieldContent_1.isColorContent)(u) ||
(0, FieldContent_1.isDateContent)(u) ||
(0, FieldContent_1.isTimestampContent)(u) ||
(0, FieldContent_1.isNumberContent)(u) ||
(0, FieldContent_1.isRangeContent)(u) ||
(0, FieldContent_1.isSelectContent)(u) ||
(0, GeoPointContent_1.isGeoPointContent)(u) ||
(0, RichTextContent_1.isRichTextContent)(u) ||
(0, BooleanContent_1.isBooleanContent)(u) ||
(0, EmbedContent_1.isEmbedContent)(u) ||
(0, ImageContent_1.isImageContent)(u) ||
(0, IntegrationFieldContent_1.isIntegrationFieldContent)(u) ||
(0, LinkContent_1.isLinkContent)(u) ||
(0, SeparatorContent_1.isSeparatorContent)(u) ||
(0, TableContent_1.isTableContent)(u) ||
(0, EmptyContent_1.isEmptyContent)(u) ||
(0, RepeatableContent_1.isRepeatableContent)(u);
exports.isNestableContent = isNestableContent;
const NestableLegacy = (ctx) => {
return {
decode(value) {
if (!ctx.fieldType)
return;
const nullValue = (0, EmptyContent_1.EmptyLegacy)(ctx.fieldType).decode(value);
if ((0, Either_1.isRight)(nullValue))
return nullValue;
const codec = (() => {
switch (ctx.fieldType) {
case "Text":
return (0, FieldContent_1.TextLegacy)(ctx);
case "Color":
return (0, FieldContent_1.ColorLegacy)(ctx);
case "Date":
return (0, FieldContent_1.DateLegacy)(ctx);
case "Timestamp":
return (0, FieldContent_1.TimestampLegacy)(ctx);
case "Number":
return (0, FieldContent_1.NumberLegacy)(ctx);
case "Range":
return (0, FieldContent_1.RangeLegacy)(ctx);
case "Select":
return (0, FieldContent_1.SelectLegacy)(ctx);
case "GeoPoint":
return (0, GeoPointContent_1.GeoPointLegacy)(ctx);
case "StructuredText":
return (0, RichTextContent_1.RichTextLegacy)(ctx);
case "Boolean":
return (0, BooleanContent_1.BooleanLegacy)(ctx);
case "Embed":
return (0, EmbedContent_1.EmbedLegacy)(ctx);
case "Image":
return (0, ImageContent_1.ImageLegacy)(ctx);
case "IntegrationFields":
return (0, IntegrationFieldContent_1.IntegrationFieldLegacy)(ctx);
case "Link":
return (0, LinkContent_1.LinkContentLegacy)(ctx);
case "Separator":
return (0, SeparatorContent_1.SeparatorLegacy)(ctx);
case "Table":
return (0, TableContent_1.TableLegacy)(ctx);
case "Repeatable.Link":
return (0, RepeatableContent_1.RepeatableLegacy)(ctx, "Link");
default:
return;
}
})();
if (!codec)
return;
return codec.decode(value);
},
encode(value) {
switch (value.__TYPE__) {
case common_1.FieldContentType: {
if (value.type === "Text")
return (0, FieldContent_1.TextLegacy)(ctx).encode(value);
if (value.type === "Color")
return (0, FieldContent_1.ColorLegacy)(ctx).encode(value);
if (value.type === "Range")
return (0, FieldContent_1.RangeLegacy)(ctx).encode(value);
if (value.type === "Date")
return (0, FieldContent_1.DateLegacy)(ctx).encode(value);
if (value.type === "Number")
return (0, FieldContent_1.NumberLegacy)(ctx).encode(value);
if (value.type === "Timestamp")
return (0, FieldContent_1.TimestampLegacy)(ctx).encode(value);
if (value.type === "Select")
return (0, FieldContent_1.SelectLegacy)(ctx).encode(value);
return;
}
case GeoPointContent_1.GeoPointContentType:
return (0, GeoPointContent_1.GeoPointLegacy)(ctx).encode(value);
case RichTextContent_1.RichTextContentType:
return (0, RichTextContent_1.RichTextLegacy)(ctx).encode(value);
case EmbedContent_1.EmbedContentType:
return (0, EmbedContent_1.EmbedLegacy)(ctx).encode(value);
case BooleanContent_1.BooleanContentType:
return (0, BooleanContent_1.BooleanLegacy)(ctx).encode(value);
case ImageContent_1.ImageContentType:
return (0, ImageContent_1.ImageLegacy)(ctx).encode(value);
case IntegrationFieldContent_1.IntegrationFieldContentType:
return (0, IntegrationFieldContent_1.IntegrationFieldLegacy)(ctx).encode(value);
case LinkContent_1.LinkContentType:
return (0, LinkContent_1.LinkContentLegacy)(ctx).encode(value);
case SeparatorContent_1.SeparatorContentType:
return (0, SeparatorContent_1.SeparatorLegacy)(ctx).encode(value);
case TableContent_1.TableContentType:
return (0, TableContent_1.TableLegacy)(ctx).encode(value);
case "RepeatableContent":
return (0, RepeatableContent_1.RepeatableLegacy)(ctx, value.type).encode(value);
default:
return;
}
},
};
};
exports.NestableLegacy = NestableLegacy;