UNPKG

@prismicio/client

Version:

The official JavaScript + TypeScript client library for Prismic

29 lines (27 loc) 1.16 kB
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