{"version":3,"file":"Footnotes.mjs","names":["Flexbox"],"sources":["../../../src/Markdown/components/Footnotes.tsx"],"sourcesContent":["'use client';\n\nimport { memo, type ReactNode, useMemo } from 'react';\n\nimport A from '@/A';\nimport Block from '@/Block';\nimport { Flexbox } from '@/Flex';\nimport Text from '@/Text';\n\nimport SearchResultCards from './SearchResultCards';\n\ninterface FootnotesProps {\n  'children': ReactNode;\n  'data-footnote-links'?: string;\n  'data-footnotes'?: boolean;\n}\n\nconst DefaultFootnotes = memo<{ dataSource: any[] }>(({ dataSource }) => {\n  const items = useMemo(\n    () =>\n      dataSource\n        .find((child) => child?.type === 'ol')\n        ?.props?.children?.map((item: any) => {\n          if (typeof item === 'string' || item?.type !== 'li') return false;\n          const data = item?.props?.children?.find((note: any) => note?.props?.children)?.props\n            ?.children;\n          if (!data || !Array.isArray(data)) return false;\n          return {\n            children: data[0],\n            props: data[1]?.props || {},\n          };\n        })\n        .filter(Boolean),\n    [dataSource],\n  );\n\n  if (!Array.isArray(items)) return null;\n\n  return (\n    <Flexbox\n      horizontal\n      align={'flex-start'}\n      as={'section'}\n      className={'footnotes'}\n      data-footnotes=\"true\"\n      gap={'0.5em'}\n      justify={'flex-start'}\n      wrap={'wrap'}\n    >\n      {items.map(({ children, props }, index) => {\n        const { node, href, ...rest } = props;\n        const Container = href ? A : 'div';\n        return (\n          <Container {...(href ? { href, ...rest } : rest)} key={index}>\n            <Block\n              horizontal\n              align={'stretch'}\n              style={{ overflow: 'hidden', position: 'relative' }}\n              variant={'outlined'}\n            >\n              <Block paddingInline={'0.66em'} style={{ borderRadius: 0 }} variant={'filled'}>\n                <Text code as=\"span\" type={'secondary'}>\n                  {index + 1}\n                </Text>\n              </Block>\n              <Text as=\"span\" style={{ paddingInline: '0.66em' }} type={'secondary'}>\n                {children}\n              </Text>\n            </Block>\n          </Container>\n        );\n      })}\n    </Flexbox>\n  );\n});\n\nconst Footnotes = memo<FootnotesProps>(({ children, ...rest }) => {\n  const links = useMemo(() => {\n    try {\n      return JSON.parse(rest['data-footnote-links'] || '[]');\n    } catch (error) {\n      console.error('Failed to parse footnote links:', error);\n      return [];\n    }\n  }, [rest['data-footnote-links']]);\n\n  const isError = links.length === 0;\n\n  if (!children) return;\n\n  if (isError) {\n    if (!Array.isArray(children)) return children;\n    return <DefaultFootnotes dataSource={children} />;\n  }\n\n  return (\n    <section className={'footnotes'} data-footnotes=\"true\">\n      <SearchResultCards dataSource={links} />\n    </section>\n  );\n});\n\nFootnotes.displayName = 'Footnotes';\n\nexport default Footnotes;\n"],"mappings":";;;;;;;;;AAiBA,MAAM,mBAAmB,MAA6B,EAAE,iBAAiB;CACvE,MAAM,QAAQ,cAEV,WACG,MAAM,UAAU,OAAO,SAAS,KAAK,EACpC,OAAO,UAAU,KAAK,SAAc;AACpC,MAAI,OAAO,SAAS,YAAY,MAAM,SAAS,KAAM,QAAO;EAC5D,MAAM,OAAO,MAAM,OAAO,UAAU,MAAM,SAAc,MAAM,OAAO,SAAS,EAAE,OAC5E;AACJ,MAAI,CAAC,QAAQ,CAAC,MAAM,QAAQ,KAAK,CAAE,QAAO;AAC1C,SAAO;GACL,UAAU,KAAK;GACf,OAAO,KAAK,IAAI,SAAS,EAAE;GAC5B;GACD,CACD,OAAO,QAAQ,EACpB,CAAC,WAAW,CACb;AAED,KAAI,CAAC,MAAM,QAAQ,MAAM,CAAE,QAAO;AAElC,QACE,oBAACA,mBAAD;EACE,YAAA;EACA,OAAO;EACP,IAAI;EACJ,WAAW;EACX,kBAAe;EACf,KAAK;EACL,SAAS;EACT,MAAM;YAEL,MAAM,KAAK,EAAE,UAAU,SAAS,UAAU;GACzC,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS;AAEhC,UACE,8BAFgB,OAAO,IAAI,OAE3B;IAAW,GAAK,OAAO;KAAE;KAAM,GAAG;KAAM,GAAG;IAAO,KAAK;IAgB3C,EAfV,qBAAC,OAAD;IACE,YAAA;IACA,OAAO;IACP,OAAO;KAAE,UAAU;KAAU,UAAU;KAAY;IACnD,SAAS;cAJX,CAME,oBAAC,OAAD;KAAO,eAAe;KAAU,OAAO,EAAE,cAAc,GAAG;KAAE,SAAS;eACnE,oBAAC,MAAD;MAAM,MAAA;MAAK,IAAG;MAAO,MAAM;gBACxB,QAAQ;MACJ,CAAA;KACD,CAAA,EACR,oBAAC,MAAD;KAAM,IAAG;KAAO,OAAO,EAAE,eAAe,UAAU;KAAE,MAAM;KACvD;KACI,CAAA,CACD;MACE;IAEd;EACM,CAAA;EAEZ;AAEF,MAAM,YAAY,MAAsB,EAAE,UAAU,GAAG,WAAW;CAChE,MAAM,QAAQ,cAAc;AAC1B,MAAI;AACF,UAAO,KAAK,MAAM,KAAK,0BAA0B,KAAK;WAC/C,OAAO;AACd,WAAQ,MAAM,mCAAmC,MAAM;AACvD,UAAO,EAAE;;IAEV,CAAC,KAAK,uBAAuB,CAAC;CAEjC,MAAM,UAAU,MAAM,WAAW;AAEjC,KAAI,CAAC,SAAU;AAEf,KAAI,SAAS;AACX,MAAI,CAAC,MAAM,QAAQ,SAAS,CAAE,QAAO;AACrC,SAAO,oBAAC,kBAAD,EAAkB,YAAY,UAAY,CAAA;;AAGnD,QACE,oBAAC,WAAD;EAAS,WAAW;EAAa,kBAAe;YAC9C,oBAAC,mBAAD,EAAmB,YAAY,OAAS,CAAA;EAChC,CAAA;EAEZ;AAEF,UAAU,cAAc"}