@prismicio/client
Version:
The official JavaScript + TypeScript client library for Prismic
29 lines (27 loc) • 1.26 kB
JavaScript
const require_link = require('../types/value/link.cjs');
const require_documentToLinkField = require('./documentToLinkField.cjs');
//#region src/helpers/asLink.ts
const asLink = (linkFieldOrDocument, ...configObjectOrTuple) => {
if (!linkFieldOrDocument) return null;
const linkField = "link_type" in linkFieldOrDocument ? linkFieldOrDocument : require_documentToLinkField.documentToLinkField(linkFieldOrDocument);
const [configObjectOrLinkResolver] = configObjectOrTuple;
let config;
if (typeof configObjectOrLinkResolver === "function" || configObjectOrLinkResolver == null) config = { linkResolver: configObjectOrLinkResolver };
else config = { ...configObjectOrLinkResolver };
switch (linkField.link_type) {
case require_link.LinkType.Media:
case require_link.LinkType.Web: return "url" in linkField ? linkField.url : null;
case require_link.LinkType.Document:
if ("id" in linkField && config.linkResolver) {
const resolvedURL = config.linkResolver(linkField);
if (resolvedURL != null) return resolvedURL;
}
if ("url" in linkField && linkField.url) return linkField.url;
return null;
case require_link.LinkType.Any:
default: return null;
}
};
//#endregion
exports.asLink = asLink;
//# sourceMappingURL=asLink.cjs.map