import { Meta, StoryObj } from '@storybook/nextjs-vite'
import { SerializedEditorState } from 'lexical'
import { RichText } from './RichText'

const meta: Meta<typeof RichText> = {
  component: RichText,
}

type Story = StoryObj<typeof RichText>
export default meta

const buildState = (
  children: SerializedEditorState['root']['children'],
): SerializedEditorState =>
  ({
    root: {
      type: 'root',
      format: '',
      indent: 0,
      version: 1,
      direction: 'ltr',
      children,
    },
  }) as SerializedEditorState

const paragraph = (
  textNodes: {
    text: string
    format?: number
  }[],
) => ({
  type: 'paragraph',
  format: '',
  indent: 0,
  version: 1,
  direction: 'ltr',
  textFormat: 0,
  textStyle: '',
  children: textNodes.map((n) => ({
    type: 'text',
    format: n.format ?? 0,
    mode: 'normal',
    style: '',
    text: n.text,
    detail: 0,
    version: 1,
  })),
})

export const SimpleParagraph: Story = {
  args: {
    data: buildState([
      paragraph([
        { text: 'Willkommen bei der Pfarrei Heilige Drei Könige in Berlin.' },
      ]),
    ]),
  },
}

export const Formatted: Story = {
  args: {
    data: buildState([
      paragraph([
        { text: 'Dies ist ein ' },
        { text: 'fettgedruckter', format: 1 },
        { text: ' und ein ' },
        { text: 'kursiver', format: 2 },
        { text: ' Text.' },
      ]),
    ]),
  },
}

export const MultipleParagraphs: Story = {
  args: {
    data: buildState([
      paragraph([
        {
          text: 'Unsere Gottesdienste finden jeden Sonntag um 10:00 Uhr statt.',
        },
      ]),
      paragraph([
        {
          text: 'Herzlich willkommen sind alle, die mitfeiern und mitbeten möchten.',
        },
      ]),
    ]),
  },
}