@prismicio/client
Version:
The official JavaScript + TypeScript client library for Prismic
29 lines (27 loc) • 1.16 kB
JavaScript
import { LinkType } from "../types/value/link.js";
import { documentToLinkField } from "./documentToLinkField.js";
//#region src/helpers/asLink.ts
const asLink = (linkFieldOrDocument, ...configObjectOrTuple) => {
if (!linkFieldOrDocument) return null;
const linkField = "link_type" in linkFieldOrDocument ? linkFieldOrDocument : documentToLinkField(linkFieldOrDocument);
const [configObjectOrLinkResolver] = configObjectOrTuple;
let config;
if (typeof configObjectOrLinkResolver === "function" || configObjectOrLinkResolver == null) config = { linkResolver: configObjectOrLinkResolver };
else config = { ...configObjectOrLinkResolver };
switch (linkField.link_type) {
case LinkType.Media:
case LinkType.Web: return "url" in linkField ? linkField.url : null;
case 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 LinkType.Any:
default: return null;
}
};
//#endregion
export { asLink };
//# sourceMappingURL=asLink.js.map