@contentstack/utils
Version:
Contentstack utilities for Javascript
79 lines • 3 kB
JavaScript
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