UNPKG

@contentstack/utils

Version:
79 lines 3 kB
var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; import './extensions'; import { findEmbeddedItems, findRenderString } from './helper/find-embeded-object'; import { findRenderContent } from './helper/find-render-content'; /** * * @param {EntryEmbedable| EntryEmbedable[]} entry - Objects that contains RTE with embedded objects * @param {string[]} paths - Key paths for RTE contents in Entry object * @param {RenderOption?} renderOption - Optional render options to render content */ export function render(option) { function findContent(path, entry) { findRenderContent(path, entry, function (content) { return renderContent(content, { entry: entry, renderOption: option.renderOption }); }); } function findAndRender(entry) { if (!option.paths || option.paths.length === 0) { Object.keys(__assign({}, entry._embedded_items)).forEach(function (path) { findContent(path, entry); }); } else { option.paths.forEach(function (path) { findContent(path, entry); }); } } if (option.entry instanceof Array) { option.entry.forEach(function (entry) { findAndRender(entry); }); } else { findAndRender(option.entry); } } /** * * @param {string | string[]} content - RTE content to render * @param {EntryEmbedable} options.entry - Entry object containing embedded objects * @param {RenderOption?} options.renderOption - Optional render options to render content */ export function renderContent(content, option) { // return blank if content not present if (!content || content === undefined) { return ''; } // render content of type string if (typeof content === 'string') { var contentToReplace_1 = content; content.forEachEmbeddedItem(function (embededObjectTag, object) { contentToReplace_1 = findAndReplaceEmbeddedItem(contentToReplace_1, embededObjectTag, object, option); }); return contentToReplace_1; } // render content of type array of string var resultContent = []; content.forEach(function (element) { resultContent.push(renderContent(element, option)); }); return resultContent; } function findAndReplaceEmbeddedItem(content, embededObjectTag, metadata, option) { var embeddedObjects = findEmbeddedItems(metadata, option.entry); var renderString = findRenderString(embeddedObjects[0], metadata, option.renderOption); return content.replace(embededObjectTag, renderString); } //# sourceMappingURL=render-embedded-objects.js.map