${text}`;
return text;
}
const childrenHtml = node.children?.map(serializeNodeToHtml).join('') || '';
switch (node.type) {
case 'heading':
return `${childrenHtml || ''}
`; case 'quote': return `${childrenHtml}`; case 'list': const listTag = node.format === 'ordered' ? 'ol' : 'ul'; return `<${listTag}>${childrenHtml}${listTag}>`; case 'list-item': return `
${escapeHtmlForCodeDisplay(codeContent)}`;
default:
// For any other block types that just wrap children
return childrenHtml;
}
};
return nodes.map(serializeNodeToHtml).join('');
};
const transformRichTextToListArray = (richTextField: any[] | undefined): string[] => {
if (!richTextField || !Array.isArray(richTextField)) {
return [];
}
const result: string[] = [];
richTextField.forEach(block => {
if (block.type === 'paragraph' && Array.isArray(block.children)) {
const paragraphText = block.children
.filter((child: any) => child.type === 'text' && typeof child.text === 'string')
.map((child: any) => child.text)
.join('');
if (paragraphText) {
paragraphText.split('\n').forEach(line => {
const trimmedLine = line.trim();
if (trimmedLine) result.push(trimmedLine);
});
}
} else if (block.type === 'list' && Array.isArray(block.children)) {
block.children.forEach((listItem: any) => {
if (listItem.type === 'list-item' && Array.isArray(listItem.children)) {
const listItemText = listItem.children
.filter((child: any) => child.type === 'text' && typeof child.text === 'string')
.map((child: any) => child.text)
.join('')
.trim();
if (listItemText) result.push(listItemText);
}
});
}
});
return result;
};
const transformGalleryItems = (galleryData: StrapiMultipleMediaPopulated | undefined): GalleryItem[] => {
if (!galleryData || !Array.isArray(galleryData.data)) {
return [];
}
return galleryData.data.map((mediaItem: StrapiDataItem