{"version":3,"file":"AiMessageText.mjs","names":["React","styles","INLINE_TOKEN","renderInline","text","ReactNode","split","map","part","i","startsWith","endsWith","length","slice","code","AiMessageText","t0","$","_c","t1","t2","lines","root","_temp","t3","line","heading","match","trimStart","bullet","bulletText","trim","blank"],"sources":["../../src/aiAssistant/AiMessageText.tsx"],"sourcesContent":["import React from 'react';\nimport styles from './AiMessageText.module.css';\n\n// Minimal markdown-subset renderer for assistant chat bubbles: headings,\n// bullet lists, **bold**, and `inline code`. Everything is built as React\n// nodes (no HTML injection); unrecognized syntax falls through as plain text.\n\nconst INLINE_TOKEN = /(\\*\\*[^*]+\\*\\*|`[^`]+`)/g;\n\nconst renderInline = (text: string): React.ReactNode[] =>\n  text.split(INLINE_TOKEN).map((part, i) => {\n    if (part.startsWith('**') && part.endsWith('**') && part.length > 4) {\n      return <strong key={i}>{part.slice(2, -2)}</strong>;\n    }\n    if (part.startsWith('`') && part.endsWith('`') && part.length > 2) {\n      return (\n        <code key={i} className={styles.code}>\n          {part.slice(1, -1)}\n        </code>\n      );\n    }\n    return part;\n  });\n\nexport const AiMessageText = ({ text }: { text: string }) => {\n  const lines = text.split('\\n');\n  return (\n    <div className={styles.root}>\n      {lines.map((line, i) => {\n        const heading = line.match(/^#{1,4}\\s(.*)$/);\n        if (heading) {\n          return (\n            <div key={i} className={styles.heading}>\n              {renderInline(heading[1].trimStart())}\n            </div>\n          );\n        }\n        const bullet = line.match(/^\\s*[-*]\\s(.*)$/);\n        if (bullet) {\n          return (\n            <div key={i} className={styles.bullet}>\n              <span aria-hidden=\"true\">•</span>\n              <span className={styles.bulletText}>{renderInline(bullet[1].trimStart())}</span>\n            </div>\n          );\n        }\n        if (line.trim() === '') {\n          return <div key={i} className={styles.blank} />;\n        }\n        return <div key={i}>{renderInline(line)}</div>;\n      })}\n    </div>\n  );\n};\n"],"mappings":";;;;AAOA,MAAME,eAAe;AAErB,MAAMC,gBAAgBC,SACpBA,KAAKE,MAAMJ,aAAa,CAACK,KAAKC,MAAMC,MAAM;AACxC,KAAID,KAAKE,WAAW,KAAK,IAAIF,KAAKG,SAAS,KAAK,IAAIH,KAAKI,SAAS,EAChE,QAAO,sBAAA,cAAC,UAAD,EAAQ,KAAKH,GAA+B,EAA3BD,KAAKK,MAAM,GAAG,GAAG,CAAU;AAErD,KAAIL,KAAKE,WAAW,IAAI,IAAIF,KAAKG,SAAS,IAAI,IAAIH,KAAKI,SAAS,EAC9D,QACE,sBAAA,cAAC,QAAD;EAAM,KAAKH;EAAG,WAAWR,OAAOa;EAEzB,EADJN,KAAKK,MAAM,GAAG,GAAG,CACb;AAGX,QAAOL;EACP;AAEJ,MAAaO,iBAAgBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAd,SAAAY;CAA0B,IAAAG;CAAA,IAAAC;AAAA,KAAAH,EAAA,OAAAb,MAAA;EACtD,MAAAiB,QAAcjB,KAAIE,MAAO,KAAK;AAEZa,OAAAlB,OAAMqB;AACnBF,OAAAC,MAAKd,IAAKgB,MAsBT;AAAAN,IAAA,KAAAb;AAAAa,IAAA,KAAAE;AAAAF,IAAA,KAAAG;QAAA;AAAAD,OAAAF,EAAA;AAAAG,OAAAH,EAAA;;CAAA,IAAAO;AAAA,KAAAP,EAAA,OAAAE,MAAAF,EAAA,OAAAG,IAAA;AAvBJI,OAAA,sBAAA,cAAA,OAAA,EAAgB,WAAAL,IAwBV,EAvBHC,GAuBG;AAAAH,IAAA,KAAAE;AAAAF,IAAA,KAAAG;AAAAH,IAAA,KAAAO;OAAAA,MAAAP,EAAA;AAAA,QAxBNO;;AAHyB,SAAAD,MAAAE,MAAAhB,GAAA;CAKrB,MAAAiB,UAAgBD,KAAIE,MAAO,iBAAiB;AAC5C,KAAID,QAAO,QAEP,sBAAA,cAAA,OAAA;EAAUjB,KAAAA;EAAc,WAAAR,OAAMyB;EAExB,EADHvB,aAAauB,QAAO,GAAGE,WAAY,CAAA,CAChC;CAGV,MAAAC,SAAeJ,KAAIE,MAAO,kBAAkB;AAC5C,KAAIE,OAAM,QAEN,sBAAA,cAAA,OAAA;EAAUpB,KAAAA;EAAc,WAAAR,OAAM4B;EAGxB,EAFJ,sBAAA,cAAA,QAAA,EAAkB,eAAA,QAClB,EADyB,IACzB,EAAA,sBAAA,cAAA,QAAA,EAAiB,WAAA5B,OAAM6B,YACzB,EADuC3B,aAAa0B,OAAM,GAAGD,WAAY,CAAA,CACzE,CAAM;AAGV,KAAIH,KAAIM,MAAO,KAAK,GAAE,QACb,sBAAA,cAAA,OAAA;EAAUtB,KAAAA;EAAc,WAAAR,OAAM+B;EAAU,CAAA;AAChD,QACM,sBAAA,cAAA,OAAA,EAAUvB,KAAAA,GAA6B,EAAzBN,aAAasB,KAAI,CAAQ"}