import type { CrystallizeRichText, CrystallizeRichTextNode } from '../types/crystallize-rich-text-types';

export function parseInitialState({ richText }: { richText: CrystallizeRichText }): CrystallizeRichTextNode[] {
  let richTextArray = Array.isArray(richText) ? richText : [richText];

  const ensureRootBlockElements = (richTextArray: CrystallizeRichText): CrystallizeRichText =>
    richTextArray.flatMap(rootNode => {
      if (Array.isArray(rootNode)) {
        return ensureRootBlockElements(rootNode);
      }

      if (!rootNode?.kind || rootNode.kind === 'inline') {
        return {
          type: 'paragraph',
          kind: 'block',
          children: [rootNode],
        };
      }

      return rootNode;
    });

  // Ensure all root items are block elements
  richTextArray = ensureRootBlockElements(richTextArray);

  return richTextArray;
}
