UNPKG

gatsby-source-contentful

Version:

Gatsby source plugin for building websites using the Contentful CMS as a data source

58 lines (54 loc) 1.64 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.renderRichText = renderRichText; var _richTextReactRenderer = require("@contentful/rich-text-react-renderer"); var _contentfulResolveResponse = _interopRequireDefault(require("contentful-resolve-response")); // @ts-check function renderRichText({ raw, references }, options = {}) { const richText = JSON.parse(raw || null); // If no references are given, there is no need to resolve them if (!references || !references.length) { return (0, _richTextReactRenderer.documentToReactComponents)(richText, options); } // Create dummy response so we can use official libraries for resolving the entries const dummyResponse = { items: [{ sys: { type: `Entry` }, richText }], includes: { Entry: references.filter(({ __typename }) => __typename !== `ContentfulAsset`).map(reference => { return { ...reference, sys: { type: `Entry`, id: reference.contentful_id } }; }), Asset: references.filter(({ __typename }) => __typename === `ContentfulAsset`).map(reference => { return { ...reference, sys: { type: `Asset`, id: reference.contentful_id } }; }) } }; const resolved = (0, _contentfulResolveResponse.default)(dummyResponse, { removeUnresolved: true }); return (0, _richTextReactRenderer.documentToReactComponents)(resolved[0].richText, options); }