@carbon/ai-chat-components 0.5.0 → 0.6.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (483) hide show
  1. package/custom-elements.json +9201 -295
  2. package/dist/16-dhcD1XnN.js +91 -0
  3. package/dist/apl-DqFn9Cbk.js +91 -0
  4. package/dist/asciiarmor-CQVR_D9L.js +91 -0
  5. package/dist/asn1-Bdl290ll.js +91 -0
  6. package/dist/asterisk-CHhwduFx.js +91 -0
  7. package/dist/button-C7jiyqgq.js +157 -0
  8. package/dist/button-skeleton-CmP7IJd9.js +116 -0
  9. package/dist/carbon-element-Bx5dT_rO.js +91 -0
  10. package/dist/carbon-element-GZbOyRvd.js +91 -0
  11. package/dist/chain-of-thought.min.js +276 -0
  12. package/dist/chat-button.min.js +71 -81
  13. package/dist/checkbox-skeleton-DwliWSxe.js +166 -0
  14. package/dist/class-map-C991A_SZ.js +106 -0
  15. package/dist/clike-D_BRCCKx.js +91 -0
  16. package/dist/clojure-DJgQfSNr.js +91 -0
  17. package/dist/cmake-B-ZvYGPj.js +91 -0
  18. package/dist/cobol-DQkSt8H4.js +91 -0
  19. package/dist/code-snippet.min.js +91 -0
  20. package/dist/codemirror-runtime-BNdgITbn.js +173 -0
  21. package/dist/coffeescript-BLbmGaLw.js +91 -0
  22. package/dist/collection-helpers-CFQuvZZA.js +91 -0
  23. package/dist/commonlisp-C9udfub_.js +91 -0
  24. package/dist/crystal-Cx264mZy.js +91 -0
  25. package/dist/css-C3wBe_UD.js +91 -0
  26. package/dist/custom-element-Cn0sJQhF.js +96 -0
  27. package/dist/cypher-B6v9gzB5.js +91 -0
  28. package/dist/d-TP3OUaM_.js +91 -0
  29. package/dist/diff-Y92SrBOy.js +91 -0
  30. package/dist/dockerfile-b9e_zbYe.js +91 -0
  31. package/dist/dtd-CyzcM_UR.js +91 -0
  32. package/dist/dylan-CLgWKLaP.js +91 -0
  33. package/dist/ebnf-Cj21Kqae.js +91 -0
  34. package/dist/ecl-BcwtDAaq.js +91 -0
  35. package/dist/eiffel-Dgs2eMt8.js +91 -0
  36. package/dist/elm-Lz8luKdH.js +91 -0
  37. package/dist/erlang-M1-xYwsL.js +91 -0
  38. package/dist/factor-DMuLpKP7.js +91 -0
  39. package/dist/fcl-6D51jO4g.js +91 -0
  40. package/dist/feedback.min.js +300 -0
  41. package/dist/forth-C50AZvgy.js +91 -0
  42. package/dist/fortran-Dpu0QrPi.js +91 -0
  43. package/dist/gas-B9QnMcpy.js +91 -0
  44. package/dist/gherkin-DTyHG7By.js +91 -0
  45. package/dist/groovy-C5hIRvZS.js +91 -0
  46. package/dist/haskell-riE-Rg6U.js +91 -0
  47. package/dist/haxe-BKi5Bt6T.js +91 -0
  48. package/dist/http-CCf5f1Lw.js +91 -0
  49. package/dist/icon-button-slcp5_YI.js +143 -0
  50. package/dist/icon-loader-B470ctm0.js +101 -0
  51. package/dist/idl-ChujC8hT.js +91 -0
  52. package/dist/if-defined-KYZWA80L.js +96 -0
  53. package/dist/index-BE2hQiYV.js +91 -0
  54. package/dist/index-BJSu7ZrY.js +91 -0
  55. package/dist/index-BNCWBho3.js +91 -0
  56. package/dist/index-Bo9Cedlp.js +91 -0
  57. package/dist/index-BtGjzzQh.js +91 -0
  58. package/dist/index-BvcTcg8N.js +91 -0
  59. package/dist/index-CL7jwlI7.js +91 -0
  60. package/dist/index-CPho0oBg.js +91 -0
  61. package/dist/index-CSzVoPB_.js +91 -0
  62. package/dist/index-CbsQNetX.js +91 -0
  63. package/dist/index-CdZ_a1WB.js +91 -0
  64. package/dist/index-Ce_RTZPK.js +91 -0
  65. package/dist/index-Cic4krlv.js +91 -0
  66. package/dist/index-CqP0C8Q_.js +91 -0
  67. package/dist/index-CsEIBvob.js +91 -0
  68. package/dist/index-D5o8uLCI.js +168 -0
  69. package/dist/index-D8SIiSq6.js +367 -0
  70. package/dist/index-DP_9bMys.js +91 -0
  71. package/dist/index-DofS9KDk.js +91 -0
  72. package/dist/index-Duo7vkZg.js +91 -0
  73. package/dist/index-DxcNpyu9.js +91 -0
  74. package/dist/index-ET89Rloy.js +91 -0
  75. package/dist/index-LQA85hjt.js +91 -0
  76. package/dist/index-T4fwu_xG.js +91 -0
  77. package/dist/javascript-BXzknqbJ.js +91 -0
  78. package/dist/julia-Ks6uUXS_.js +91 -0
  79. package/dist/{settings-XW6XylsZ.js → lit-element-Cj6JUqRW.js} +70 -12
  80. package/dist/livescript-C-N_oa0B.js +91 -0
  81. package/dist/lua-DyvKK1uJ.js +91 -0
  82. package/dist/markdown.min.js +296 -0
  83. package/dist/mathematica-DEg7Ra1Y.js +91 -0
  84. package/dist/mbox-DreqCmNH.js +91 -0
  85. package/dist/mirc-Cf2JTO1B.js +91 -0
  86. package/dist/mllike-BrIsM2v2.js +91 -0
  87. package/dist/modelica-B8SYrhCg.js +91 -0
  88. package/dist/mscgen-Ci9STQqX.js +91 -0
  89. package/dist/mumps-DdZIEnoV.js +91 -0
  90. package/dist/nginx-csHLvOI4.js +91 -0
  91. package/dist/nsis-BJ14NiV_.js +91 -0
  92. package/dist/ntriples-r4TsB1vg.js +91 -0
  93. package/dist/octave-DAywLo7W.js +91 -0
  94. package/dist/oz-DF39EOLJ.js +91 -0
  95. package/dist/pascal-Cdx2JBFI.js +91 -0
  96. package/dist/perl-CUDzEjb5.js +91 -0
  97. package/dist/pig-BgGDN3Fs.js +91 -0
  98. package/dist/powershell-yf7ZzrwA.js +91 -0
  99. package/dist/processing.min.js +71 -4
  100. package/dist/properties-Cna57Jh2.js +91 -0
  101. package/dist/protobuf-CWUMO8BP.js +91 -0
  102. package/dist/pug-D44aRpDl.js +91 -0
  103. package/dist/puppet-9oZPpLZK.js +91 -0
  104. package/dist/python-BzmgDs2d.js +91 -0
  105. package/dist/q-DDRrIilQ.js +91 -0
  106. package/dist/query-CIc5rDzI.js +101 -0
  107. package/dist/r-DT4JIpvb.js +91 -0
  108. package/dist/radio-group-manager-Dy7yXQky.js +91 -0
  109. package/dist/reasoning-steps.min.js +171 -0
  110. package/dist/repeat-DA7noZfi.js +96 -0
  111. package/dist/rpm-Q94njsnC.js +91 -0
  112. package/dist/ruby-p6VwoSsc.js +91 -0
  113. package/dist/sas-C8r72_Ai.js +91 -0
  114. package/dist/scheme-Bw1qfPdY.js +91 -0
  115. package/dist/settings-Bx1fCry0.js +99 -0
  116. package/dist/shell-B0162WXP.js +91 -0
  117. package/dist/sieve-DcAl9TNY.js +91 -0
  118. package/dist/simple-mode-dBIHJK_w.js +91 -0
  119. package/dist/smalltalk-BRpoyy0q.js +91 -0
  120. package/dist/solr-CntivwdY.js +91 -0
  121. package/dist/sparql-CPxRv-GB.js +91 -0
  122. package/dist/spreadsheet-DiWzltX0.js +91 -0
  123. package/dist/sql-BZFWK8-D.js +91 -0
  124. package/dist/state-ldHJ0lGt.js +96 -0
  125. package/dist/stex-DVnajZzj.js +91 -0
  126. package/dist/stylus-BCkTgCvi.js +91 -0
  127. package/dist/swift-DumH6rGA.js +91 -0
  128. package/dist/sync-BrWXU4C6.js +91 -0
  129. package/dist/table-runtime-C-85Ozvo.js +510 -0
  130. package/dist/table.min.js +91 -0
  131. package/dist/tcl-Ds60z3Ro.js +91 -0
  132. package/dist/text-input-BNmEJ8ys.js +158 -0
  133. package/dist/textile-CgTb_UUX.js +91 -0
  134. package/dist/throttle-CT5ZAUBU.js +91 -0
  135. package/dist/tiddlywiki-D0BukLzX.js +91 -0
  136. package/dist/tiki-DlrtqA5_.js +91 -0
  137. package/dist/tile-container.min.js +70 -14
  138. package/dist/toml-CG0tgYZ1.js +91 -0
  139. package/dist/toolbar.min.js +180 -0
  140. package/dist/troff-DZdS2uzR.js +91 -0
  141. package/dist/ttcn-D2NdeEoM.js +91 -0
  142. package/dist/ttcn-cfg-dCpHFW8J.js +91 -0
  143. package/dist/turtle-DBImhCBD.js +91 -0
  144. package/dist/vb-BdASAZha.js +91 -0
  145. package/dist/vbscript-DlJph2V7.js +91 -0
  146. package/dist/velocity-ds6Akj1B.js +91 -0
  147. package/dist/verilog-KFajwNWD.js +91 -0
  148. package/dist/vhdl-DWozufY6.js +91 -0
  149. package/dist/webidl-BSUbcB__.js +91 -0
  150. package/dist/workspace-shell.min.js +162 -0
  151. package/dist/xquery-CvISDSSw.js +91 -0
  152. package/dist/yacas-BNn6e9ff.js +91 -0
  153. package/dist/z80-BwinLJKG.js +91 -0
  154. package/es/components/chain-of-thought/index.d.ts +4 -0
  155. package/es/components/chain-of-thought/index.js +11 -0
  156. package/es/components/chain-of-thought/index.js.map +1 -0
  157. package/es/components/chain-of-thought/src/cds-aichat-chain-of-thought.d.ts +15 -0
  158. package/es/components/chain-of-thought/src/cds-aichat-chain-of-thought.js +36 -0
  159. package/es/components/chain-of-thought/src/cds-aichat-chain-of-thought.js.map +1 -0
  160. package/es/components/chain-of-thought/src/chain-of-thought.d.ts +87 -0
  161. package/es/components/chain-of-thought/src/chain-of-thought.js +189 -0
  162. package/es/components/chain-of-thought/src/chain-of-thought.js.map +1 -0
  163. package/es/components/chain-of-thought/src/chain-of-thought.scss.js +13 -0
  164. package/es/components/chain-of-thought/src/chain-of-thought.scss.js.map +1 -0
  165. package/es/components/chain-of-thought/src/chain-of-thought.template.d.ts +5 -0
  166. package/es/components/chain-of-thought/src/chain-of-thought.template.js +206 -0
  167. package/es/components/chain-of-thought/src/chain-of-thought.template.js.map +1 -0
  168. package/es/components/chain-of-thought/src/parse-unknown-data-to-markdown.d.ts +10 -0
  169. package/es/components/chain-of-thought/src/parse-unknown-data-to-markdown.js +50 -0
  170. package/es/components/chain-of-thought/src/parse-unknown-data-to-markdown.js.map +1 -0
  171. package/es/components/chain-of-thought/src/types.d.ts +73 -0
  172. package/es/components/chain-of-thought/src/types.js +29 -0
  173. package/es/components/chain-of-thought/src/types.js.map +1 -0
  174. package/es/components/chat-button/defs.d.ts +25 -0
  175. package/es/components/chat-button/defs.js +36 -0
  176. package/es/components/chat-button/defs.js.map +1 -0
  177. package/es/components/chat-button/index.d.ts +1 -1
  178. package/es/components/chat-button/index.js +1 -1
  179. package/es/components/chat-button/src/chat-button.d.ts +32 -0
  180. package/es/components/chat-button/{chat-button.js → src/chat-button.js} +16 -10
  181. package/es/components/chat-button/src/chat-button.js.map +1 -0
  182. package/es/components/chat-button/src/chat-button.scss.js +1 -1
  183. package/es/components/code-snippet/index.d.ts +3 -0
  184. package/es/components/code-snippet/index.js +10 -0
  185. package/es/components/code-snippet/index.js.map +1 -0
  186. package/es/components/code-snippet/src/code-snippet-tile-container.d.ts +32 -0
  187. package/es/components/code-snippet/src/code-snippet-tile-container.js +143 -0
  188. package/es/components/code-snippet/src/code-snippet-tile-container.js.map +1 -0
  189. package/es/components/code-snippet/src/code-snippet.d.ts +482 -0
  190. package/es/components/code-snippet/src/code-snippet.js +592 -0
  191. package/es/components/code-snippet/src/code-snippet.js.map +1 -0
  192. package/es/components/code-snippet/src/code-snippet.scss.js +13 -0
  193. package/es/components/code-snippet/src/code-snippet.scss.js.map +1 -0
  194. package/es/components/code-snippet/src/codemirror/base-setup.d.ts +12 -0
  195. package/es/components/code-snippet/src/codemirror/base-setup.js +65 -0
  196. package/es/components/code-snippet/src/codemirror/base-setup.js.map +1 -0
  197. package/es/components/code-snippet/src/codemirror/codemirror-loader.d.ts +12 -0
  198. package/es/components/code-snippet/src/codemirror/codemirror-loader.js +36 -0
  199. package/es/components/code-snippet/src/codemirror/codemirror-loader.js.map +1 -0
  200. package/es/components/code-snippet/src/codemirror/codemirror-runtime.d.ts +7 -0
  201. package/es/components/code-snippet/src/codemirror/codemirror-runtime.js +13 -0
  202. package/es/components/code-snippet/src/codemirror/codemirror-runtime.js.map +1 -0
  203. package/es/components/code-snippet/src/codemirror/content-sync.d.ts +12 -0
  204. package/es/components/code-snippet/src/codemirror/content-sync.js +72 -0
  205. package/es/components/code-snippet/src/codemirror/content-sync.js.map +1 -0
  206. package/es/components/code-snippet/src/codemirror/editor-manager.d.ts +28 -0
  207. package/es/components/code-snippet/src/codemirror/editor-manager.js +75 -0
  208. package/es/components/code-snippet/src/codemirror/editor-manager.js.map +1 -0
  209. package/es/components/code-snippet/src/codemirror/language-controller.d.ts +38 -0
  210. package/es/components/code-snippet/src/codemirror/language-controller.js +220 -0
  211. package/es/components/code-snippet/src/codemirror/language-controller.js.map +1 -0
  212. package/es/components/code-snippet/src/codemirror/language-data.d.ts +6 -0
  213. package/es/components/code-snippet/src/codemirror/language-data.js +1043 -0
  214. package/es/components/code-snippet/src/codemirror/language-data.js.map +1 -0
  215. package/es/components/code-snippet/src/codemirror/language-utils.d.ts +79 -0
  216. package/es/components/code-snippet/src/codemirror/language-utils.js +219 -0
  217. package/es/components/code-snippet/src/codemirror/language-utils.js.map +1 -0
  218. package/es/components/code-snippet/src/codemirror/marker-utils.d.ts +123 -0
  219. package/es/components/code-snippet/src/codemirror/marker-utils.js +183 -0
  220. package/es/components/code-snippet/src/codemirror/marker-utils.js.map +1 -0
  221. package/es/components/code-snippet/src/codemirror/theme.d.ts +54 -0
  222. package/es/components/code-snippet/src/codemirror/theme.js +320 -0
  223. package/es/components/code-snippet/src/codemirror/theme.js.map +1 -0
  224. package/es/components/code-snippet/src/dom-utils.d.ts +24 -0
  225. package/es/components/code-snippet/src/dom-utils.js +63 -0
  226. package/es/components/code-snippet/src/dom-utils.js.map +1 -0
  227. package/es/components/code-snippet/src/formatters.d.ts +4 -0
  228. package/es/components/code-snippet/src/formatters.js +19 -0
  229. package/es/components/code-snippet/src/formatters.js.map +1 -0
  230. package/es/components/code-snippet/src/layout-utils.d.ts +22 -0
  231. package/es/components/code-snippet/src/layout-utils.js +63 -0
  232. package/es/components/code-snippet/src/layout-utils.js.map +1 -0
  233. package/es/components/code-snippet/src/streaming-manager.d.ts +24 -0
  234. package/es/components/code-snippet/src/streaming-manager.js +120 -0
  235. package/es/components/code-snippet/src/streaming-manager.js.map +1 -0
  236. package/es/components/feedback/index.d.ts +7 -0
  237. package/es/components/feedback/index.js +12 -0
  238. package/es/components/feedback/index.js.map +1 -0
  239. package/es/components/feedback/src/cds-aichat-feedback-buttons.d.ts +15 -0
  240. package/es/components/feedback/src/cds-aichat-feedback-buttons.js +36 -0
  241. package/es/components/feedback/src/cds-aichat-feedback-buttons.js.map +1 -0
  242. package/es/components/feedback/src/cds-aichat-feedback.d.ts +15 -0
  243. package/es/components/feedback/src/cds-aichat-feedback.js +36 -0
  244. package/es/components/feedback/src/cds-aichat-feedback.js.map +1 -0
  245. package/es/components/feedback/src/feedback-buttons.d.ts +56 -0
  246. package/es/components/feedback/src/feedback-buttons.js +104 -0
  247. package/es/components/feedback/src/feedback-buttons.js.map +1 -0
  248. package/es/components/feedback/src/feedback-buttons.scss.js +13 -0
  249. package/es/components/feedback/src/feedback-buttons.scss.js.map +1 -0
  250. package/es/components/feedback/src/feedback-buttons.template.d.ts +4 -0
  251. package/es/components/feedback/src/feedback-buttons.template.js +79 -0
  252. package/es/components/feedback/src/feedback-buttons.template.js.map +1 -0
  253. package/es/components/feedback/src/feedback.d.ts +114 -0
  254. package/es/components/feedback/src/feedback.js +182 -0
  255. package/es/components/feedback/src/feedback.js.map +1 -0
  256. package/es/components/feedback/src/feedback.scss.js +13 -0
  257. package/es/components/feedback/src/feedback.scss.js.map +1 -0
  258. package/es/components/feedback/src/feedback.template.d.ts +12 -0
  259. package/es/components/feedback/src/feedback.template.js +115 -0
  260. package/es/components/feedback/src/feedback.template.js.map +1 -0
  261. package/es/components/markdown/index.d.ts +2 -0
  262. package/es/components/markdown/index.js +9 -0
  263. package/es/components/markdown/index.js.map +1 -0
  264. package/es/components/markdown/src/cds-aichat-markdown.d.ts +13 -0
  265. package/es/components/markdown/src/cds-aichat-markdown.js +35 -0
  266. package/es/components/markdown/src/cds-aichat-markdown.js.map +1 -0
  267. package/es/components/markdown/src/markdown-renderer.d.ts +62 -0
  268. package/es/components/markdown/src/markdown-renderer.js +353 -0
  269. package/es/components/markdown/src/markdown-renderer.js.map +1 -0
  270. package/es/components/markdown/src/markdown-token-tree.d.ts +32 -0
  271. package/es/components/markdown/src/markdown-token-tree.js +178 -0
  272. package/es/components/markdown/src/markdown-token-tree.js.map +1 -0
  273. package/es/components/markdown/src/markdown.d.ts +44 -0
  274. package/es/components/markdown/src/markdown.js +238 -0
  275. package/es/components/markdown/src/markdown.js.map +1 -0
  276. package/es/components/markdown/src/markdown.scss.js +13 -0
  277. package/es/components/markdown/src/markdown.scss.js.map +1 -0
  278. package/es/components/markdown/src/markdown.template.d.ts +3 -0
  279. package/es/components/markdown/src/markdown.template.js +24 -0
  280. package/es/components/markdown/src/markdown.template.js.map +1 -0
  281. package/es/components/markdown/src/plugins/markdown-it-attrs.d.ts +7 -0
  282. package/es/components/markdown/src/plugins/markdown-it-attrs.js +84 -0
  283. package/es/components/markdown/src/plugins/markdown-it-attrs.js.map +1 -0
  284. package/es/components/markdown/src/plugins/markdown-it-highlight.d.ts +7 -0
  285. package/es/components/markdown/src/plugins/markdown-it-highlight.js +59 -0
  286. package/es/components/markdown/src/plugins/markdown-it-highlight.js.map +1 -0
  287. package/es/components/markdown/src/plugins/markdown-it-task-lists.d.ts +12 -0
  288. package/es/components/markdown/src/plugins/markdown-it-task-lists.js +73 -0
  289. package/es/components/markdown/src/plugins/markdown-it-task-lists.js.map +1 -0
  290. package/es/components/markdown/src/plugins/markdownItAttrs/core.d.ts +26 -0
  291. package/es/components/markdown/src/plugins/markdownItAttrs/core.js +330 -0
  292. package/es/components/markdown/src/plugins/markdownItAttrs/core.js.map +1 -0
  293. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/blocks.d.ts +6 -0
  294. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/blocks.js +63 -0
  295. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/blocks.js.map +1 -0
  296. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/code.d.ts +6 -0
  297. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/code.js +43 -0
  298. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/code.js.map +1 -0
  299. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/index.d.ts +5 -0
  300. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/index.js +55 -0
  301. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/index.js.map +1 -0
  302. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/inline.d.ts +19 -0
  303. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/inline.js +210 -0
  304. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/inline.js.map +1 -0
  305. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/lists.d.ts +13 -0
  306. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/lists.js +156 -0
  307. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/lists.js.map +1 -0
  308. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/tables.d.ts +13 -0
  309. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/tables.js +216 -0
  310. package/es/components/markdown/src/plugins/markdownItAttrs/patterns/tables.js.map +1 -0
  311. package/es/components/markdown/src/plugins/markdownItAttrs/types.d.ts +34 -0
  312. package/es/components/markdown/src/plugins/markdownItAttrs/types.js +8 -0
  313. package/es/components/markdown/src/plugins/markdownItAttrs/types.js.map +1 -0
  314. package/es/components/markdown/src/plugins/markdownItAttrs/utils.d.ts +25 -0
  315. package/es/components/markdown/src/plugins/markdownItAttrs/utils.js +62 -0
  316. package/es/components/markdown/src/plugins/markdownItAttrs/utils.js.map +1 -0
  317. package/es/components/markdown/src/utils/html-helpers.d.ts +2 -0
  318. package/es/components/markdown/src/utils/html-helpers.js +204 -0
  319. package/es/components/markdown/src/utils/html-helpers.js.map +1 -0
  320. package/es/components/markdown/src/utils/table-helpers.d.ts +31 -0
  321. package/es/components/markdown/src/utils/table-helpers.js +106 -0
  322. package/es/components/markdown/src/utils/table-helpers.js.map +1 -0
  323. package/es/components/markdown/src/utils.d.ts +8 -0
  324. package/es/components/markdown/src/utils.js +31 -0
  325. package/es/components/markdown/src/utils.js.map +1 -0
  326. package/es/components/reasoning-steps/index.d.ts +2 -0
  327. package/es/components/reasoning-steps/index.js +10 -0
  328. package/es/components/reasoning-steps/index.js.map +1 -0
  329. package/es/components/reasoning-steps/src/cds-aichat-reasoning-step.d.ts +29 -0
  330. package/es/components/reasoning-steps/src/cds-aichat-reasoning-step.js +231 -0
  331. package/es/components/reasoning-steps/src/cds-aichat-reasoning-step.js.map +1 -0
  332. package/es/components/reasoning-steps/src/cds-aichat-reasoning-step.scss.js +13 -0
  333. package/es/components/reasoning-steps/src/cds-aichat-reasoning-step.scss.js.map +1 -0
  334. package/es/components/reasoning-steps/src/cds-aichat-reasoning-steps.d.ts +13 -0
  335. package/es/components/reasoning-steps/src/cds-aichat-reasoning-steps.js +96 -0
  336. package/es/components/reasoning-steps/src/cds-aichat-reasoning-steps.js.map +1 -0
  337. package/es/components/reasoning-steps/src/cds-aichat-reasoning-steps.scss.js +13 -0
  338. package/es/components/reasoning-steps/src/cds-aichat-reasoning-steps.scss.js.map +1 -0
  339. package/es/components/table/index.d.ts +3 -0
  340. package/es/components/table/index.js +9 -0
  341. package/es/components/table/index.js.map +1 -0
  342. package/es/components/table/src/cds-aichat-table.d.ts +262 -0
  343. package/es/components/table/src/cds-aichat-table.js +511 -0
  344. package/es/components/table/src/cds-aichat-table.js.map +1 -0
  345. package/es/components/table/src/table-loader.d.ts +4 -0
  346. package/es/components/table/src/table-loader.js +28 -0
  347. package/es/components/table/src/table-loader.js.map +1 -0
  348. package/es/components/table/src/table-pagination.template.d.ts +27 -0
  349. package/es/components/table/src/table-pagination.template.js +55 -0
  350. package/es/components/table/src/table-pagination.template.js.map +1 -0
  351. package/es/components/table/src/table-runtime.d.ts +2 -0
  352. package/es/components/table/src/table-runtime.js +10 -0
  353. package/es/components/table/src/table-runtime.js.map +1 -0
  354. package/es/components/table/src/table-skeleton.template.d.ts +6 -0
  355. package/es/components/table/src/table-skeleton.template.js +34 -0
  356. package/es/components/table/src/table-skeleton.template.js.map +1 -0
  357. package/es/components/table/src/table.scss.js +13 -0
  358. package/es/components/table/src/table.scss.js.map +1 -0
  359. package/es/components/table/src/table.template.d.ts +10 -0
  360. package/es/components/table/src/table.template.js +89 -0
  361. package/es/components/table/src/table.template.js.map +1 -0
  362. package/es/components/table/src/types.d.ts +13 -0
  363. package/es/components/table/src/types.js +8 -0
  364. package/es/components/table/src/types.js.map +1 -0
  365. package/es/components/tile-container/src/styles.scss.js +1 -1
  366. package/es/components/toolbar/index.d.ts +1 -0
  367. package/es/components/toolbar/index.js +9 -0
  368. package/es/components/toolbar/index.js.map +1 -0
  369. package/es/components/toolbar/src/toolbar.d.ts +39 -0
  370. package/es/components/toolbar/src/toolbar.js +179 -0
  371. package/es/components/toolbar/src/toolbar.js.map +1 -0
  372. package/es/components/toolbar/src/toolbar.scss.js +13 -0
  373. package/es/components/toolbar/src/toolbar.scss.js.map +1 -0
  374. package/es/components/workspace-shell/index.d.ts +5 -0
  375. package/es/components/workspace-shell/index.js +13 -0
  376. package/es/components/workspace-shell/index.js.map +1 -0
  377. package/es/components/workspace-shell/src/styles.scss.js +13 -0
  378. package/es/components/workspace-shell/src/styles.scss.js.map +1 -0
  379. package/es/components/workspace-shell/src/workspace-shell-body.d.ts +16 -0
  380. package/es/components/workspace-shell/src/workspace-shell-body.js +50 -0
  381. package/es/components/workspace-shell/src/workspace-shell-body.js.map +1 -0
  382. package/es/components/workspace-shell/src/workspace-shell-footer.d.ts +19 -0
  383. package/es/components/workspace-shell/src/workspace-shell-footer.js +53 -0
  384. package/es/components/workspace-shell/src/workspace-shell-footer.js.map +1 -0
  385. package/es/components/workspace-shell/src/workspace-shell-header.d.ts +27 -0
  386. package/es/components/workspace-shell/src/workspace-shell-header.js +77 -0
  387. package/es/components/workspace-shell/src/workspace-shell-header.js.map +1 -0
  388. package/es/components/workspace-shell/src/workspace-shell-toolbar.d.ts +22 -0
  389. package/es/components/workspace-shell/src/workspace-shell-toolbar.js +61 -0
  390. package/es/components/workspace-shell/src/workspace-shell-toolbar.js.map +1 -0
  391. package/es/components/workspace-shell/src/workspace-shell.d.ts +20 -0
  392. package/es/components/workspace-shell/src/workspace-shell.js +83 -0
  393. package/es/components/workspace-shell/src/workspace-shell.js.map +1 -0
  394. package/es/components/workspace-shell/src/workspace-shell.scss.js +13 -0
  395. package/es/components/workspace-shell/src/workspace-shell.scss.js.map +1 -0
  396. package/es/globals/utils/uuid.d.ts +5 -0
  397. package/es/globals/utils/uuid.js +32 -0
  398. package/es/globals/utils/uuid.js.map +1 -0
  399. package/es/node_modules/@carbon/utilities/es/documentLang/documentLang.js +9 -0
  400. package/es/node_modules/@carbon/utilities/es/documentLang/documentLang.js.map +1 -0
  401. package/es/node_modules/@carbon/utilities/es/overflowHandler/overflowHandler.js +11 -0
  402. package/es/node_modules/@carbon/utilities/es/overflowHandler/overflowHandler.js.map +1 -0
  403. package/es/node_modules/@codemirror/autocomplete/dist/index.js +258 -0
  404. package/es/node_modules/@codemirror/autocomplete/dist/index.js.map +1 -0
  405. package/es/node_modules/@codemirror/commands/dist/index.js +1140 -0
  406. package/es/node_modules/@codemirror/commands/dist/index.js.map +1 -0
  407. package/es/node_modules/@codemirror/lint/dist/index.js +636 -0
  408. package/es/node_modules/@codemirror/lint/dist/index.js.map +1 -0
  409. package/es/node_modules/@lezer/common/dist/index.js +253 -0
  410. package/es/node_modules/@lezer/common/dist/index.js.map +1 -0
  411. package/es/node_modules/crelt/index.js +37 -0
  412. package/es/node_modules/crelt/index.js.map +1 -0
  413. package/es/react/ai-label.d.ts +2 -1
  414. package/es/react/ai-label.js +3 -2
  415. package/es/react/ai-label.js.map +1 -1
  416. package/es/react/button.d.ts +2 -1
  417. package/es/react/button.js +3 -2
  418. package/es/react/button.js.map +1 -1
  419. package/es/react/chain-of-thought.d.ts +7 -0
  420. package/es/react/chain-of-thought.js +29 -0
  421. package/es/react/chain-of-thought.js.map +1 -0
  422. package/es/react/chat-button.d.ts +4 -4
  423. package/es/react/chat-button.js +6 -4
  424. package/es/react/chat-button.js.map +1 -1
  425. package/es/react/code-snippet-tile-container.d.ts +5 -0
  426. package/es/react/code-snippet-tile-container.js +30 -0
  427. package/es/react/code-snippet-tile-container.js.map +1 -0
  428. package/es/react/code-snippet.d.ts +4 -0
  429. package/es/react/code-snippet.js +31 -0
  430. package/es/react/code-snippet.js.map +1 -0
  431. package/es/react/content-switcher.d.ts +7 -0
  432. package/es/react/content-switcher.js +37 -0
  433. package/es/react/content-switcher.js.map +1 -0
  434. package/es/react/feedback-buttons.d.ts +4 -0
  435. package/es/react/feedback-buttons.js +28 -0
  436. package/es/react/feedback-buttons.js.map +1 -0
  437. package/es/react/feedback.d.ts +6 -0
  438. package/es/react/feedback.js +32 -0
  439. package/es/react/feedback.js.map +1 -0
  440. package/es/react/icon-button.d.ts +2 -1
  441. package/es/react/icon-button.js +3 -2
  442. package/es/react/icon-button.js.map +1 -1
  443. package/es/react/icon.d.ts +4 -0
  444. package/es/react/icon.js +28 -0
  445. package/es/react/icon.js.map +1 -0
  446. package/es/react/markdown.d.ts +4 -0
  447. package/es/react/markdown.js +28 -0
  448. package/es/react/markdown.js.map +1 -0
  449. package/es/react/overflow-menu.d.ts +9 -0
  450. package/es/react/overflow-menu.js +40 -0
  451. package/es/react/overflow-menu.js.map +1 -0
  452. package/es/react/processing.d.ts +2 -1
  453. package/es/react/processing.js +3 -2
  454. package/es/react/processing.js.map +1 -1
  455. package/es/react/reasoning-step.d.ts +6 -0
  456. package/es/react/reasoning-step.js +31 -0
  457. package/es/react/reasoning-step.js.map +1 -0
  458. package/es/react/reasoning-steps.d.ts +3 -0
  459. package/es/react/reasoning-steps.js +27 -0
  460. package/es/react/reasoning-steps.js.map +1 -0
  461. package/es/react/tile-container.d.ts +2 -1
  462. package/es/react/tile-container.js +3 -2
  463. package/es/react/tile-container.js.map +1 -1
  464. package/es/react/tile.d.ts +3 -2
  465. package/es/react/tile.js +5 -4
  466. package/es/react/tile.js.map +1 -1
  467. package/es/react/toolbar.d.ts +4 -0
  468. package/es/react/toolbar.js +28 -0
  469. package/es/react/toolbar.js.map +1 -0
  470. package/es/react/utils/withWebComponentBridge.d.ts +15 -0
  471. package/es/react/utils/withWebComponentBridge.js +95 -0
  472. package/es/react/utils/withWebComponentBridge.js.map +1 -0
  473. package/es/testing/load-all-lazy-deps.d.ts +10 -0
  474. package/es/testing/load-all-lazy-deps.js +30 -0
  475. package/es/testing/load-all-lazy-deps.js.map +1 -0
  476. package/package.json +39 -5
  477. package/dist/carbon-element-CMR7BOhG.js +0 -24
  478. package/dist/class-map-h7IEvsL_.js +0 -39
  479. package/es/components/chat-button/chat-button.d.ts +0 -23
  480. package/es/components/chat-button/chat-button.js.map +0 -1
  481. package/es/components/chat-button/src/chat-button.template.d.ts +0 -16
  482. package/es/components/chat-button/src/chat-button.template.js +0 -27
  483. package/es/components/chat-button/src/chat-button.template.js.map +0 -1
@@ -0,0 +1,62 @@
1
+ import { TemplateResult } from "lit";
2
+ import "@carbon/web-components/es/components/list/index.js";
3
+ import "@carbon/web-components/es/components/checkbox/index.js";
4
+ import "../../code-snippet/index.js";
5
+ import "../../table/index.js";
6
+ import type { TokenTree } from "./markdown-token-tree.js";
7
+ /**
8
+ * Configuration options for rendering TokenTrees into HTML.
9
+ */
10
+ export interface RenderTokenTreeOptions {
11
+ /** Whether to sanitize HTML content using DOMPurify */
12
+ sanitize: boolean;
13
+ /** Whether content is being streamed (affects loading states) */
14
+ streaming?: boolean;
15
+ /** Context information for nested rendering */
16
+ context?: {
17
+ /** Whether we're currently inside a table header */
18
+ isInThead?: boolean;
19
+ /** All children of the parent node */
20
+ parentChildren?: TokenTree[];
21
+ /** Current index in parent's children array */
22
+ currentIndex?: number;
23
+ };
24
+ /** Whether to enable syntax highlighting in code blocks */
25
+ highlight?: boolean;
26
+ /** Placeholder text for table filter input */
27
+ filterPlaceholderText?: string;
28
+ /** Text for previous page button tooltip */
29
+ previousPageText?: string;
30
+ /** Text for next page button tooltip */
31
+ nextPageText?: string;
32
+ /** Text for items per page label */
33
+ itemsPerPageText?: string;
34
+ /** Locale for table sorting and formatting */
35
+ locale?: string;
36
+ /** Function to get supplemental pagination text */
37
+ getPaginationSupplementalText?: ({ count }: {
38
+ count: number;
39
+ }) => string;
40
+ /** Function to get pagination status text */
41
+ getPaginationStatusText?: ({ start, end, count, }: {
42
+ start: number;
43
+ end: number;
44
+ count: number;
45
+ }) => string;
46
+ /** Feedback text shown after copying */
47
+ feedback?: string;
48
+ /** Text for show less button */
49
+ showLessText?: string;
50
+ /** Text for show more button */
51
+ showMoreText?: string;
52
+ /** Tooltip text for copy button */
53
+ tooltipContent?: string;
54
+ /** Function to get formatted line count text */
55
+ getLineCountText?: ({ count }: {
56
+ count: number;
57
+ }) => string;
58
+ }
59
+ /**
60
+ * Converts TokenTree to Lit TemplateResult.
61
+ */
62
+ export declare function renderTokenTree(node: TokenTree, options: RenderTokenTreeOptions): TemplateResult;
@@ -0,0 +1,353 @@
1
+ /**
2
+ * Copyright IBM Corp. 2025
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import DOMPurify from 'dompurify';
9
+ import { nothing, html } from 'lit';
10
+ import { repeat } from 'lit/directives/repeat.js';
11
+ import { unsafeHTML } from 'lit/directives/unsafe-html.js';
12
+ import { directive, Directive } from 'lit/directive.js';
13
+ import '@carbon/web-components/es/components/list/index.js';
14
+ import '@carbon/web-components/es/components/checkbox/index.js';
15
+ import '../../code-snippet/src/code-snippet-tile-container.js';
16
+ import '@carbon/web-components/es/components/code-snippet/defs.js';
17
+ import '../../table/src/cds-aichat-table.js';
18
+ import { extractTableData, DEFAULT_PAGINATION_SUPPLEMENTAL_TEXT, DEFAULT_PAGINATION_STATUS_TEXT } from './utils/table-helpers.js';
19
+ import { combineConsecutiveHtmlInline } from './utils/html-helpers.js';
20
+
21
+ /*
22
+ * Copyright IBM Corp. 2025
23
+ *
24
+ * This source code is licensed under the Apache-2.0 license found in the
25
+ * LICENSE file in the root directory of this source tree.
26
+ *
27
+ * @license
28
+ */
29
+ // Generic attribute spread for Lit templates
30
+ class SpreadAttrs extends Directive {
31
+ render(_attrs) {
32
+ return nothing;
33
+ }
34
+ update(part, [attrs]) {
35
+ const el = part.element;
36
+ for (const [k, v] of Object.entries(attrs ?? {})) {
37
+ if (v === false || v === null || v === undefined) {
38
+ el.removeAttribute(k);
39
+ }
40
+ else if (v === true) {
41
+ el.setAttribute(k, "");
42
+ }
43
+ else {
44
+ el.setAttribute(k, String(v));
45
+ }
46
+ }
47
+ return nothing;
48
+ }
49
+ }
50
+ const spread = directive(SpreadAttrs);
51
+ const EMPTY_ATTRS = {};
52
+ const EMPTY_TABLE_HEADERS = [];
53
+ const EMPTY_TABLE_ROWS = [];
54
+ /**
55
+ * Converts TokenTree to Lit TemplateResult.
56
+ */
57
+ function renderTokenTree(node, options) {
58
+ const { token, children } = node;
59
+ const { context, sanitize } = options;
60
+ // Handle raw HTML blocks and inline HTML
61
+ if (token.type === "html_block" || token.type === "html_inline") {
62
+ let content = token.content || "";
63
+ // Apply HTML sanitization if requested
64
+ if (sanitize && content) {
65
+ content = DOMPurify.sanitize(content, {
66
+ CUSTOM_ELEMENT_HANDLING: {
67
+ tagNameCheck: () => true, // Allow custom elements
68
+ attributeNameCheck: () => true,
69
+ allowCustomizedBuiltInElements: true,
70
+ },
71
+ });
72
+ }
73
+ return html `${unsafeHTML(content)}`;
74
+ }
75
+ // Handle plain text content
76
+ if (token.type === "text") {
77
+ return html `${token.content}`;
78
+ }
79
+ // Handle inline code spans
80
+ if (token.type === "code_inline") {
81
+ return html `<code>${token.content}</code>`;
82
+ }
83
+ // Handle fenced code blocks
84
+ if (token.type === "fence") {
85
+ const language = token.info?.trim() ?? "";
86
+ const { highlight = true, feedback, showLessText, showMoreText, tooltipContent, getLineCountText, } = options;
87
+ return html `<cds-aichat-code-snippet-tile-container
88
+ .language=${language}
89
+ .highlight=${highlight}
90
+ .feedback=${feedback}
91
+ .showLessText=${showLessText}
92
+ .showMoreText=${showMoreText}
93
+ .tooltipContent=${tooltipContent}
94
+ .getLineCountText=${getLineCountText}
95
+ >${token.content}</cds-aichat-code-snippet-tile-container
96
+ >`;
97
+ }
98
+ // Handle structural elements (paragraphs, headings, lists, etc.)
99
+ const tag = token.tag;
100
+ // Convert markdown-it attributes (array of [key, value]) into an object.
101
+ const rawAttrs = (token.attrs || []).reduce((acc, [key, value]) => {
102
+ acc[key] = value;
103
+ return acc;
104
+ }, {});
105
+ // Apply attribute sanitization if requested
106
+ let attrs = rawAttrs;
107
+ const isCustomElement = !!token.tag && token.tag.includes("-");
108
+ if (sanitize && !isCustomElement) {
109
+ attrs = Object.fromEntries(Object.entries(rawAttrs).filter(([key, value]) => {
110
+ // Use DOMPurify to check if attribute is safe
111
+ const fragment = DOMPurify.sanitize(`<a ${key}="${value}">`, {
112
+ RETURN_DOM: true,
113
+ });
114
+ const element = fragment.firstChild;
115
+ return element?.getAttribute(key) !== null;
116
+ }));
117
+ }
118
+ // Set up context for child rendering
119
+ let childContext = context;
120
+ if (tag === "thead") {
121
+ childContext = { ...context, isInThead: true };
122
+ }
123
+ // Render child content
124
+ let content;
125
+ if (children.length === 1 && children[0].token.type === "text") {
126
+ // Optimization: single text child doesn't need repeat wrapper
127
+ content = html `${children[0].token.content}`;
128
+ }
129
+ else {
130
+ const normalizedChildren = combineConsecutiveHtmlInline(children);
131
+ // Multiple or complex children: use repeat for stable keying
132
+ content = html `${repeat(normalizedChildren, (c, index) => {
133
+ // Generate stable key that doesn't depend on line positions
134
+ // This prevents unnecessary re-renders during streaming
135
+ const stableKey = `${index}:${c.token.type}:${c.token.tag}`;
136
+ if (c.token.type?.includes("table")) {
137
+ return `table-${stableKey}`;
138
+ }
139
+ return `stable-${stableKey}`;
140
+ }, (c, index) => renderTokenTree(c, {
141
+ ...options,
142
+ context: {
143
+ ...childContext,
144
+ parentChildren: normalizedChildren,
145
+ currentIndex: index,
146
+ },
147
+ }))}`;
148
+ }
149
+ // Handle tokens without HTML tags (just return content)
150
+ if (!tag) {
151
+ return content;
152
+ }
153
+ // Render the final HTML element with appropriate tag
154
+ return renderWithStaticTag(tag, token, content, attrs, options, childContext, node);
155
+ }
156
+ /**
157
+ * Renders HTML elements with static tag names.
158
+ */
159
+ function renderWithStaticTag(tag, token, content, attrs, options, _context, node) {
160
+ // Handle root token specially
161
+ if (token.type === "root") {
162
+ return content;
163
+ }
164
+ const hasTaskListItems = (listNode) => !!listNode?.children?.some((child) => {
165
+ if (child.token.type !== "list_item_open") {
166
+ return false;
167
+ }
168
+ const classAttr = child.token.attrs?.find(([key]) => key === "class");
169
+ return classAttr?.[1]?.split(/\s+/).includes("task-list-item");
170
+ });
171
+ switch (tag) {
172
+ // Basic block elements
173
+ case "p":
174
+ return html `<p ${spread(attrs)}>${content}</p>`;
175
+ case "blockquote":
176
+ return html `<blockquote ${spread(attrs)}>${content}</blockquote>`;
177
+ case "pre":
178
+ return html `<pre ${spread(attrs)}>${content}</pre>`;
179
+ // Headings
180
+ case "h1":
181
+ return html `<h1 ${spread(attrs)}>${content}</h1>`;
182
+ case "h2":
183
+ return html `<h2 ${spread(attrs)}>${content}</h2>`;
184
+ case "h3":
185
+ return html `<h3 ${spread(attrs)}>${content}</h3>`;
186
+ case "h4":
187
+ return html `<h4 ${spread(attrs)}>${content}</h4>`;
188
+ case "h5":
189
+ return html `<h5 ${spread(attrs)}>${content}</h5>`;
190
+ case "h6":
191
+ return html `<h6 ${spread(attrs)}>${content}</h6>`;
192
+ // Lists with Carbon components
193
+ case "ul": {
194
+ const nested = token.level > 1;
195
+ if (hasTaskListItems(node)) {
196
+ return html `<ul ${spread(attrs)}>
197
+ ${content}
198
+ </ul>`;
199
+ }
200
+ return html `<cds-unordered-list ?nested=${nested} ${spread(attrs)}>
201
+ ${content}
202
+ </cds-unordered-list>`;
203
+ }
204
+ case "ol": {
205
+ const nested = token.level > 1;
206
+ if (hasTaskListItems(node)) {
207
+ return html `<ol ${spread(attrs)}>
208
+ ${content}
209
+ </ol>`;
210
+ }
211
+ return html `<cds-ordered-list native ?nested=${nested} ${spread(attrs)}>
212
+ ${content}
213
+ </cds-ordered-list>`;
214
+ }
215
+ case "li": {
216
+ const classList = attrs.class?.split(/\s+/) ?? [];
217
+ if (classList.includes("task-list-item")) {
218
+ return html `<li ${spread(attrs)}>${content}</li>`;
219
+ }
220
+ return html `<cds-list-item ${spread(attrs)}>${content}</cds-list-item>`;
221
+ }
222
+ case "cds-checkbox": {
223
+ const { checked, disabled, ...otherAttrs } = attrs;
224
+ const isChecked = checked === "true";
225
+ const isDisabled = disabled === undefined ? true : disabled === "" || disabled === "true";
226
+ return html `<cds-checkbox
227
+ ?checked=${isChecked}
228
+ ?disabled=${isDisabled}
229
+ ${spread(otherAttrs)}
230
+ >${content}</cds-checkbox
231
+ >`;
232
+ }
233
+ // Inline formatting
234
+ case "strong":
235
+ return html `<strong ${spread(attrs)}>${content}</strong>`;
236
+ case "em":
237
+ return html `<em ${spread(attrs)}>${content}</em>`;
238
+ case "code":
239
+ return html `<code ${spread(attrs)}>${content}</code>`;
240
+ case "del":
241
+ return html `<del ${spread(attrs)}>${content}</del>`;
242
+ case "sub":
243
+ return html `<sub ${spread(attrs)}>${content}</sub>`;
244
+ case "sup":
245
+ return html `<sup ${spread(attrs)}>${content}</sup>`;
246
+ case "span":
247
+ return html `<span ${spread(attrs)}>${content}</span>`;
248
+ case "i":
249
+ return html `<i ${spread(attrs)}>${content}</i>`;
250
+ case "b":
251
+ return html `<b ${spread(attrs)}>${content}</b>`;
252
+ case "small":
253
+ return html `<small ${spread(attrs)}>${content}</small>`;
254
+ case "mark":
255
+ return html `<mark ${spread(attrs)}>${content}</mark>`;
256
+ case "ins":
257
+ return html `<ins ${spread(attrs)}>${content}</ins>`;
258
+ case "s":
259
+ return html `<s ${spread(attrs)}>${content}</s>`;
260
+ case "kbd":
261
+ return html `<kbd ${spread(attrs)}>${content}</kbd>`;
262
+ case "var":
263
+ return html `<var ${spread(attrs)}>${content}</var>`;
264
+ case "samp":
265
+ return html `<samp ${spread(attrs)}>${content}</samp>`;
266
+ case "cite":
267
+ return html `<cite ${spread(attrs)}>${content}</cite>`;
268
+ case "abbr":
269
+ return html `<abbr ${spread(attrs)}>${content}</abbr>`;
270
+ case "dfn":
271
+ return html `<dfn ${spread(attrs)}>${content}</dfn>`;
272
+ case "time":
273
+ return html `<time ${spread(attrs)}>${content}</time>`;
274
+ case "q":
275
+ return html `<q ${spread(attrs)}>${content}</q>`;
276
+ // Links with automatic target="_blank"
277
+ case "a":
278
+ if (!attrs.target) {
279
+ attrs.target = "_blank";
280
+ }
281
+ return html `<a ${spread(attrs)}>${content}</a>`;
282
+ // Tables with Carbon component and streaming support
283
+ case "table": {
284
+ if (!node) {
285
+ return html `<div>Error: Missing table data</div>`;
286
+ }
287
+ const { streaming, context: parentContext, filterPlaceholderText, previousPageText, nextPageText, itemsPerPageText, locale, getPaginationSupplementalText, getPaginationStatusText, } = options;
288
+ // Determine if we should show loading state during streaming
289
+ let isLoading = false;
290
+ if (streaming &&
291
+ parentContext?.parentChildren &&
292
+ parentContext?.currentIndex !== undefined) {
293
+ const { parentChildren, currentIndex } = parentContext;
294
+ const hasNodesAfterTable = currentIndex < parentChildren.length - 1;
295
+ isLoading = !hasNodesAfterTable;
296
+ }
297
+ const renderCellTokens = (tokens, contextOverrides = {}) => html `${repeat(tokens, (child, index) => `cell-${index}:${child.token.type}:${child.token.tag}`, (child, index) => renderTokenTree(child, {
298
+ ...options,
299
+ context: {
300
+ ...options.context,
301
+ ...contextOverrides,
302
+ parentChildren: tokens,
303
+ currentIndex: index,
304
+ },
305
+ }))}`;
306
+ const createCellContent = (cell, contextOverrides) => ({
307
+ text: cell.text,
308
+ template: cell.tokens
309
+ ? renderCellTokens(cell.tokens, contextOverrides)
310
+ : null,
311
+ });
312
+ // Extract table data or use empty placeholders for loading state
313
+ let headers;
314
+ let tableRows;
315
+ if (!isLoading) {
316
+ const extractedData = extractTableData(node);
317
+ headers = extractedData.headers.map((cell) => createCellContent(cell, { isInThead: true }));
318
+ tableRows = extractedData.rows.map((row) => ({
319
+ cells: row.map((cell) => createCellContent(cell)),
320
+ }));
321
+ }
322
+ else {
323
+ // Use static empty arrays to prevent re-renders during streaming
324
+ headers = EMPTY_TABLE_HEADERS;
325
+ tableRows = EMPTY_TABLE_ROWS;
326
+ }
327
+ const tableAttrs = isLoading ? EMPTY_ATTRS : attrs;
328
+ return html `<div class="cds-aichat-table-holder">
329
+ <cds-aichat-table
330
+ .headers=${headers}
331
+ .rows=${tableRows}
332
+ .loading=${isLoading}
333
+ .filterPlaceholderText=${filterPlaceholderText || "Filter table..."}
334
+ .previousPageText=${previousPageText || "Previous page"}
335
+ .nextPageText=${nextPageText || "Next page"}
336
+ .itemsPerPageText=${itemsPerPageText || "Items per page:"}
337
+ .locale=${locale || "en"}
338
+ .getPaginationSupplementalText=${getPaginationSupplementalText ||
339
+ DEFAULT_PAGINATION_SUPPLEMENTAL_TEXT}
340
+ .getPaginationStatusText=${getPaginationStatusText ||
341
+ DEFAULT_PAGINATION_STATUS_TEXT}
342
+ ...=${tableAttrs}
343
+ ></cds-aichat-table>
344
+ </div>`;
345
+ }
346
+ // Fallback for unknown tags
347
+ default:
348
+ return html `<div ${spread(attrs)}>${content}</div>`;
349
+ }
350
+ }
351
+
352
+ export { renderTokenTree };
353
+ //# sourceMappingURL=markdown-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-renderer.js","sources":["../../../../src/components/markdown/src/markdown-renderer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { Token } from "markdown-it";
2
+ /**
3
+ * Represents a node in the token tree structure.
4
+ */
5
+ export interface TokenTree {
6
+ /** Unique identifier for this node, used for efficient diffing */
7
+ key: string;
8
+ /** The original markdown-it token data */
9
+ token: Partial<Token>;
10
+ /** Child nodes for nested content */
11
+ children: TokenTree[];
12
+ }
13
+ /**
14
+ * Parses markdown text into a flat array of markdown-it tokens.
15
+ */
16
+ export declare function markdownToMarkdownItTokens(fullText: string, allowHtml?: boolean): Token[];
17
+ /**
18
+ * Converts a flat list of markdown-it tokens into a tree.
19
+ */
20
+ export declare function buildTokenTree(tokens: Token[]): TokenTree;
21
+ /**
22
+ * Compares two TokenTree structures and creates a new tree that reuses
23
+ * unchanged nodes from the old tree.
24
+ *
25
+ * This optimization is crucial for performance when content is being streamed
26
+ * or updated incrementally.
27
+ */
28
+ export declare function diffTokenTree(oldTree: TokenTree | undefined, newTree: TokenTree): TokenTree;
29
+ /**
30
+ * Converts markdown into a tree with keys on it for Lit.
31
+ */
32
+ export declare function markdownToTokenTree(markdown: string, lastTree?: TokenTree, allowHtml?: boolean): TokenTree;
@@ -0,0 +1,178 @@
1
+ /**
2
+ * Copyright IBM Corp. 2025
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import MarkdownIt from 'markdown-it';
9
+ import { markdownItAttrs } from './plugins/markdown-it-attrs.js';
10
+ import { markdownItHighlight } from './plugins/markdown-it-highlight.js';
11
+ import { markdownItTaskLists } from './plugins/markdown-it-task-lists.js';
12
+
13
+ /*
14
+ * Copyright IBM Corp. 2025
15
+ *
16
+ * This source code is licensed under the Apache-2.0 license found in the
17
+ * LICENSE file in the root directory of this source tree.
18
+ *
19
+ * @license
20
+ */
21
+ /**
22
+ * Pre-configured markdown-it instance that allows HTML content.
23
+ * Uses CommonMark preset for GitHub Flavored Markdown compatibility.
24
+ */
25
+ const htmlMarkdown = new MarkdownIt("commonmark", {
26
+ html: true,
27
+ breaks: true,
28
+ linkify: true,
29
+ })
30
+ .enable("table")
31
+ .enable("strikethrough")
32
+ .use(markdownItAttrs, {
33
+ leftDelimiter: "{{",
34
+ rightDelimiter: "}}",
35
+ allowedAttributes: ["target", "rel", "class", "id"],
36
+ })
37
+ .use(markdownItHighlight)
38
+ .use(markdownItTaskLists);
39
+ /**
40
+ * Pre-configured markdown-it instance that strips HTML content.
41
+ * Same features as htmlMarkdown but with HTML disabled for security.
42
+ */
43
+ const noHtmlMarkdown = new MarkdownIt("commonmark", {
44
+ html: false,
45
+ breaks: true,
46
+ linkify: true,
47
+ })
48
+ .enable("table")
49
+ .enable("strikethrough")
50
+ .use(markdownItAttrs, {
51
+ leftDelimiter: "{{",
52
+ rightDelimiter: "}}",
53
+ allowedAttributes: ["target", "rel", "class", "id"],
54
+ })
55
+ .use(markdownItHighlight)
56
+ .use(markdownItTaskLists);
57
+ /**
58
+ * Parses markdown text into a flat array of markdown-it tokens.
59
+ */
60
+ function markdownToMarkdownItTokens(fullText, allowHtml = true) {
61
+ return allowHtml
62
+ ? htmlMarkdown.parse(fullText, {})
63
+ : noHtmlMarkdown.parse(fullText, {});
64
+ }
65
+ /**
66
+ * Generates a unique string key for a markdown-it token.
67
+ *
68
+ * The key combines the token type, HTML tag, and source position to create
69
+ * a stable identifier that can be used by Lit's repeat() directive for
70
+ * efficient DOM updates.
71
+ */
72
+ function generateKey(token) {
73
+ const map = token.map ? token.map.join("-") : "";
74
+ return `${token.type}:${token.tag}:${map}`;
75
+ }
76
+ /**
77
+ * Converts a flat list of markdown-it tokens into a tree.
78
+ */
79
+ function buildTokenTree(tokens) {
80
+ // Create the root node that will contain all top-level content
81
+ const root = {
82
+ key: "root",
83
+ token: {
84
+ type: "root",
85
+ tag: "",
86
+ nesting: 0,
87
+ level: 0,
88
+ content: "",
89
+ attrs: null,
90
+ children: null,
91
+ markup: "",
92
+ block: true,
93
+ hidden: false,
94
+ map: null,
95
+ info: "",
96
+ meta: null,
97
+ },
98
+ children: [],
99
+ };
100
+ // Stack tracks the current nesting context while building the tree
101
+ const stack = [root];
102
+ tokens.forEach((token) => {
103
+ // Create a new node for this token
104
+ const node = {
105
+ key: generateKey(token),
106
+ token,
107
+ children: [],
108
+ };
109
+ // Handle inline tokens that contain their own child tokens
110
+ // (e.g., a paragraph containing bold, italic, and text tokens)
111
+ if (token.type === "inline" && token.children?.length) {
112
+ node.children = buildTokenTree(token.children).children;
113
+ }
114
+ const current = stack[stack.length - 1];
115
+ if (token.nesting === 1) {
116
+ // Opening tag: add node to current container and descend into it
117
+ current.children.push(node);
118
+ stack.push(node);
119
+ }
120
+ else if (token.nesting === -1) {
121
+ // Closing tag: exit current container
122
+ stack.pop();
123
+ }
124
+ else {
125
+ // Self-contained token: add to current container
126
+ current.children.push(node);
127
+ }
128
+ });
129
+ return root;
130
+ }
131
+ /**
132
+ * Compares two TokenTree structures and creates a new tree that reuses
133
+ * unchanged nodes from the old tree.
134
+ *
135
+ * This optimization is crucial for performance when content is being streamed
136
+ * or updated incrementally.
137
+ */
138
+ function diffTokenTree(oldTree, newTree) {
139
+ // If keys don't match, the entire subtree changed - use new tree
140
+ if (!oldTree || oldTree.key !== newTree.key) {
141
+ return newTree;
142
+ }
143
+ // Keys match so create merged tree reusing unchanged children
144
+ const merged = {
145
+ key: newTree.key,
146
+ token: newTree.token,
147
+ children: [],
148
+ };
149
+ // Create lookup map of old children by key for efficient comparison
150
+ const oldChildrenByKey = new Map(oldTree.children.map((child) => [child.key, child]));
151
+ // Process each new child, reusing old ones where possible
152
+ newTree.children.forEach((newChild) => {
153
+ const oldChild = oldChildrenByKey.get(newChild.key);
154
+ if (oldChild) {
155
+ // Recursively diff matching children
156
+ merged.children.push(diffTokenTree(oldChild, newChild));
157
+ }
158
+ else {
159
+ // Use new child as-is
160
+ merged.children.push(newChild);
161
+ }
162
+ });
163
+ return merged;
164
+ }
165
+ /**
166
+ * Converts markdown into a tree with keys on it for Lit.
167
+ */
168
+ function markdownToTokenTree(markdown, lastTree, allowHtml = true) {
169
+ // Parse markdown into flat token array
170
+ const tokens = markdownToMarkdownItTokens(markdown, allowHtml);
171
+ // Build hierarchical tree structure
172
+ const tree = buildTokenTree(tokens);
173
+ // Optimize by reusing unchanged parts of previous tree
174
+ return diffTokenTree(lastTree, tree);
175
+ }
176
+
177
+ export { buildTokenTree, diffTokenTree, markdownToMarkdownItTokens, markdownToTokenTree };
178
+ //# sourceMappingURL=markdown-token-tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-token-tree.js","sources":["../../../../src/components/markdown/src/markdown-token-tree.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}