@coveo/atomic 3.33.0 → 3.33.1-pre.2a3e15151f

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 (413) hide show
  1. package/dist/atomic/_atomic.esm.js +1 -1
  2. package/dist/atomic/atomic.esm.js.map +1 -1
  3. package/dist/atomic/components/analytics-config.js +1 -1
  4. package/dist/atomic/components/analytics-config.js.map +1 -1
  5. package/dist/atomic/components/atomic-category-facet.js +1 -1
  6. package/dist/atomic/components/atomic-citation.js +1 -547
  7. package/dist/atomic/components/atomic-citation.js.map +1 -1
  8. package/dist/{esm/atomic-citation.entry.js → atomic/components/atomic-citation2.js} +35 -13
  9. package/dist/atomic/components/atomic-citation2.js.map +1 -0
  10. package/dist/atomic/components/atomic-facet-manager.js +1 -1
  11. package/dist/atomic/components/atomic-facet.js +1 -1
  12. package/dist/atomic/components/atomic-format-currency.js +1 -1
  13. package/dist/atomic/components/atomic-format-number.js +1 -1
  14. package/dist/atomic/components/atomic-format-unit.js +1 -1
  15. package/dist/atomic/components/atomic-generated-answer-feedback-modal.js +1 -440
  16. package/dist/atomic/components/atomic-generated-answer-feedback-modal.js.map +1 -1
  17. package/dist/{esm/atomic-generated-answer-feedback-modal.entry.js → atomic/components/atomic-generated-answer-feedback-modal2.js} +55 -25
  18. package/dist/atomic/components/atomic-generated-answer-feedback-modal2.js.map +1 -0
  19. package/dist/atomic/components/atomic-generated-answer.js +91 -28
  20. package/dist/atomic/components/atomic-generated-answer.js.map +1 -1
  21. package/dist/atomic/components/atomic-html2.js +1 -1
  22. package/dist/atomic/components/atomic-insight-folded-result-list.js +1 -1
  23. package/dist/atomic/components/atomic-insight-generated-answer.js +98 -34
  24. package/dist/atomic/components/atomic-insight-generated-answer.js.map +1 -1
  25. package/dist/atomic/components/atomic-insight-history-toggle.js +1 -1
  26. package/dist/atomic/components/atomic-insight-no-results.js +1 -1
  27. package/dist/atomic/components/atomic-insight-numeric-facet.js +1 -1
  28. package/dist/atomic/components/atomic-insight-pager.js +3 -3
  29. package/dist/atomic/components/atomic-insight-query-error.js +1 -1
  30. package/dist/atomic/components/atomic-insight-refine-modal2.js +2 -2
  31. package/dist/atomic/components/atomic-insight-refine-toggle.js +1 -1
  32. package/dist/atomic/components/atomic-insight-result-attach-to-case-indicator.js +1 -1
  33. package/dist/atomic/components/atomic-insight-result-children.js +1 -1
  34. package/dist/atomic/components/atomic-insight-result-list.js +1 -1
  35. package/dist/atomic/components/atomic-insight-result-quickview-action.js +1 -1
  36. package/dist/atomic/components/atomic-insight-result2.js +1 -1
  37. package/dist/atomic/components/atomic-insight-search-box.js +2 -2
  38. package/dist/atomic/components/atomic-insight-smart-snippet-feedback-modal2.js +2 -2
  39. package/dist/atomic/components/atomic-insight-tabs.js +1 -1
  40. package/dist/atomic/components/atomic-insight-user-actions-session2.js +1 -1
  41. package/dist/atomic/components/atomic-insight-user-actions-toggle.js +1 -1
  42. package/dist/atomic/components/atomic-ipx-body2.js +2 -2
  43. package/dist/atomic/components/atomic-ipx-button.js +2 -2
  44. package/dist/atomic/components/atomic-ipx-embedded.js +1 -1
  45. package/dist/atomic/components/atomic-ipx-modal.js +2 -2
  46. package/dist/atomic/components/atomic-ipx-recs-list.js +1 -1
  47. package/dist/atomic/components/atomic-ipx-refine-modal2.js +1 -1
  48. package/dist/atomic/components/atomic-ipx-refine-toggle.js +1 -1
  49. package/dist/atomic/components/atomic-ipx-result-link.js +2 -2
  50. package/dist/atomic/components/atomic-ipx-tabs.js +1 -1
  51. package/dist/atomic/components/atomic-load-more-results.js +1 -1
  52. package/dist/atomic/components/atomic-no-results.js +1 -1
  53. package/dist/atomic/components/atomic-numeric-facet.js +1 -1
  54. package/dist/atomic/components/atomic-pager.js +3 -3
  55. package/dist/atomic/components/atomic-popover.js +1 -1
  56. package/dist/atomic/components/atomic-query-error.js +1 -1
  57. package/dist/atomic/components/atomic-query-summary.js +1 -1
  58. package/dist/atomic/components/atomic-quickview-modal2.js +1 -1
  59. package/dist/atomic/components/atomic-quickview.js +1 -1
  60. package/dist/atomic/components/atomic-recs-error.js +1 -1
  61. package/dist/atomic/components/atomic-recs-list.js +1 -1
  62. package/dist/atomic/components/atomic-refine-modal2.js +1 -1
  63. package/dist/atomic/components/atomic-refine-toggle.js +1 -1
  64. package/dist/atomic/components/atomic-relevance-inspector2.js +2 -2
  65. package/dist/atomic/components/atomic-result-children.js +1 -1
  66. package/dist/atomic/components/atomic-result-fields-list.js +1 -1
  67. package/dist/atomic/components/atomic-result-link.js +2 -2
  68. package/dist/atomic/components/atomic-result-list.js +1 -1
  69. package/dist/atomic/components/atomic-result-table-placeholder2.js +1 -1
  70. package/dist/atomic/components/atomic-search-box-query-suggestions2.js +1 -1
  71. package/dist/atomic/components/atomic-search-box-recent-queries2.js +1 -1
  72. package/dist/atomic/components/atomic-search-box.js +4 -4
  73. package/dist/atomic/components/atomic-smart-snippet-feedback-modal2.js +2 -2
  74. package/dist/atomic/components/atomic-sort-dropdown.js +2 -2
  75. package/dist/atomic/components/atomic-sort-expression.js +1 -1
  76. package/dist/atomic/components/atomic-tab-manager.js +1 -1
  77. package/dist/atomic/components/attributes-slot.js +1 -1
  78. package/dist/atomic/components/createPopper.js +1 -1
  79. package/dist/atomic/components/{generated-answer-common.js → generated-answer-renderer.js} +159 -247
  80. package/dist/atomic/components/generated-answer-renderer.js.map +1 -0
  81. package/dist/atomic/components/global/environment.js +1 -1
  82. package/dist/atomic/components/popper-lite.js +1 -1
  83. package/dist/atomic/components/slot-utils.js +1 -1
  84. package/dist/atomic/components/tab-popover.js +1 -1
  85. package/dist/atomic/p-027b85e5.js +2 -0
  86. package/dist/atomic/{p-bed5a86b.js.map → p-027b85e5.js.map} +1 -1
  87. package/dist/atomic/{p-5db0ffd7.entry.js → p-0565e73b.entry.js} +2 -2
  88. package/dist/atomic/{p-f2bae47c.entry.js → p-061fb6f9.entry.js} +2 -2
  89. package/dist/atomic/{p-8044bbe4.entry.js → p-064567c3.entry.js} +2 -2
  90. package/dist/atomic/{p-7b9026d7.js → p-07f25674.js} +2 -2
  91. package/dist/atomic/{p-75b863ea.entry.js → p-0a76cd30.entry.js} +2 -2
  92. package/dist/atomic/{p-c727cd49.entry.js → p-0d32a5f2.entry.js} +2 -2
  93. package/dist/atomic/{p-eb026d69.entry.js → p-129799b2.entry.js} +2 -2
  94. package/dist/atomic/{p-3bda3e96.entry.js → p-12e41bc3.entry.js} +2 -2
  95. package/dist/atomic/{p-8b6aaeed.entry.js → p-15048f34.entry.js} +2 -2
  96. package/dist/atomic/{p-7464f00a.entry.js → p-15214935.entry.js} +2 -2
  97. package/dist/atomic/{p-a3aaf456.entry.js → p-19db78c9.entry.js} +2 -2
  98. package/dist/atomic/{p-fb26a29f.entry.js → p-24302330.entry.js} +2 -2
  99. package/dist/atomic/{p-c19a9af4.entry.js → p-25263126.entry.js} +2 -2
  100. package/dist/atomic/{p-633628d5.entry.js → p-25c09399.entry.js} +2 -2
  101. package/dist/atomic/{p-77ae34ce.entry.js → p-37d6236f.entry.js} +2 -2
  102. package/dist/atomic/{p-db9ca9c3.entry.js → p-395b2384.entry.js} +2 -2
  103. package/dist/atomic/{p-1e21a920.entry.js → p-3fd98a23.entry.js} +2 -2
  104. package/dist/atomic/{p-100da102.entry.js → p-40c4d7ac.entry.js} +2 -2
  105. package/dist/atomic/{p-db3dce80.entry.js → p-452b7ae6.entry.js} +2 -2
  106. package/dist/atomic/{p-946fe85f.js → p-4aaffb59.js} +2 -2
  107. package/dist/atomic/{p-9da1c516.entry.js → p-4bf5df6f.entry.js} +2 -2
  108. package/dist/atomic/{p-6083c9be.entry.js → p-4d15767c.entry.js} +2 -2
  109. package/dist/atomic/{p-d172edcc.entry.js → p-5459a1f0.entry.js} +2 -2
  110. package/dist/atomic/{p-2f668825.entry.js → p-556d401d.entry.js} +2 -2
  111. package/dist/atomic/{p-c35fb052.entry.js → p-55e41484.entry.js} +2 -2
  112. package/dist/atomic/{p-48c8a766.entry.js → p-5730dec7.entry.js} +2 -2
  113. package/dist/atomic/{p-4eb5bc54.entry.js → p-5a366eac.entry.js} +2 -2
  114. package/dist/atomic/p-5d785d02.entry.js +2 -0
  115. package/dist/atomic/p-5d785d02.entry.js.map +1 -0
  116. package/dist/atomic/p-632046cf.entry.js +2 -0
  117. package/dist/atomic/{p-dc89e560.entry.js → p-6c7d88eb.entry.js} +2 -2
  118. package/dist/atomic/{p-27064d6e.entry.js → p-6f151c5f.entry.js} +2 -2
  119. package/dist/atomic/{p-444bff80.entry.js → p-77160de0.entry.js} +2 -2
  120. package/dist/atomic/{p-a1924914.entry.js → p-789c166b.entry.js} +2 -2
  121. package/dist/atomic/{p-8b80d576.entry.js → p-80b418c5.entry.js} +2 -2
  122. package/dist/atomic/{p-fbacb7a0.entry.js → p-8321376b.entry.js} +2 -2
  123. package/dist/atomic/{p-731b7ad8.entry.js → p-83d0fa08.entry.js} +2 -2
  124. package/dist/atomic/p-847d1273.entry.js +2 -0
  125. package/dist/atomic/{p-5afe99b1.entry.js → p-85dcd0b8.entry.js} +2 -2
  126. package/dist/atomic/{p-ba67a16b.js → p-87c13ba0.js} +2 -2
  127. package/dist/atomic/{p-ba67a16b.js.map → p-87c13ba0.js.map} +1 -1
  128. package/dist/atomic/{p-009525f1.entry.js → p-88f0bb62.entry.js} +2 -2
  129. package/dist/atomic/{p-113cc160.entry.js → p-8baf5ec4.entry.js} +2 -2
  130. package/dist/atomic/{p-bfdecd0f.entry.js → p-8bdd7a67.entry.js} +2 -2
  131. package/dist/atomic/{p-e392095a.entry.js → p-8dec58c0.entry.js} +2 -2
  132. package/dist/atomic/{p-f9289f2f.entry.js → p-8f277cb8.entry.js} +2 -2
  133. package/dist/atomic/{p-8d0b9f5a.entry.js → p-9742f412.entry.js} +2 -2
  134. package/dist/atomic/{p-882a99f5.entry.js → p-99d5f93b.entry.js} +2 -2
  135. package/dist/atomic/{p-b0bd2709.entry.js → p-9cb248b7.entry.js} +2 -2
  136. package/dist/atomic/{p-5c813055.entry.js → p-9de46009.entry.js} +2 -2
  137. package/dist/atomic/p-aad40b42.js +2 -0
  138. package/dist/atomic/p-aad40b42.js.map +1 -0
  139. package/dist/atomic/{p-ca0a32dc.entry.js → p-afe08816.entry.js} +2 -2
  140. package/dist/atomic/{p-09924944.entry.js → p-b5d80111.entry.js} +2 -2
  141. package/dist/atomic/{p-04481727.entry.js → p-b8b26796.entry.js} +2 -2
  142. package/dist/atomic/{p-b6c5584a.entry.js → p-bc03189c.entry.js} +2 -2
  143. package/dist/atomic/{p-09934c1e.entry.js → p-c7fc7d32.entry.js} +2 -2
  144. package/dist/atomic/p-ccfe600e.entry.js +2 -0
  145. package/dist/atomic/p-ccfe600e.entry.js.map +1 -0
  146. package/dist/atomic/{p-22ef68f4.entry.js → p-cdf2f41d.entry.js} +2 -2
  147. package/dist/atomic/{p-58fe83ae.entry.js → p-d23032ec.entry.js} +2 -2
  148. package/dist/atomic/{p-31d3304c.entry.js → p-d554cf29.entry.js} +2 -2
  149. package/dist/atomic/{p-9a72f043.entry.js → p-d6937e96.entry.js} +2 -2
  150. package/dist/atomic/{p-2b76b255.entry.js → p-d6992ca7.entry.js} +2 -2
  151. package/dist/atomic/{p-4dd88abc.entry.js → p-d91d00a0.entry.js} +2 -2
  152. package/dist/atomic/{p-d5628c4c.entry.js → p-dbac498d.entry.js} +2 -2
  153. package/dist/atomic/{p-91d64c67.entry.js → p-dbeed413.entry.js} +2 -2
  154. package/dist/atomic/p-dbf8b517.entry.js +2 -0
  155. package/dist/atomic/p-dbf8b517.entry.js.map +1 -0
  156. package/dist/atomic/{p-005dcc88.entry.js → p-e1a6502d.entry.js} +2 -2
  157. package/dist/atomic/{p-d3e1a9aa.entry.js → p-e8dd2a37.entry.js} +2 -2
  158. package/dist/atomic/{p-f5f8990e.entry.js → p-eecdba00.entry.js} +2 -2
  159. package/dist/atomic/{p-2a7ac870.entry.js → p-f165c179.entry.js} +2 -2
  160. package/dist/atomic/{p-ac8941e8.entry.js → p-f79fda00.entry.js} +2 -2
  161. package/dist/atomic/{p-09a5ef74.entry.js → p-fe934267.entry.js} +2 -2
  162. package/dist/cjs/_loader.cjs.js +1 -1
  163. package/dist/cjs/{analytics-config-f34a68ee.js → analytics-config-27e563ce.js} +2 -2
  164. package/dist/cjs/analytics-config-27e563ce.js.map +1 -0
  165. package/dist/cjs/atomic-category-facet.cjs.entry.js +1 -1
  166. package/dist/cjs/{atomic-generated-answer-feedback-modal.cjs.entry.js → atomic-citation_2.cjs.entry.js} +526 -1
  167. package/dist/cjs/atomic-citation_2.cjs.entry.js.map +1 -0
  168. package/dist/cjs/atomic-facet-manager.cjs.entry.js +1 -1
  169. package/dist/cjs/atomic-facet.cjs.entry.js +1 -1
  170. package/dist/cjs/atomic-format-currency.cjs.entry.js +1 -1
  171. package/dist/cjs/atomic-format-number.cjs.entry.js +1 -1
  172. package/dist/cjs/atomic-format-unit.cjs.entry.js +1 -1
  173. package/dist/cjs/atomic-generated-answer.cjs.entry.js +65 -27
  174. package/dist/cjs/atomic-generated-answer.cjs.entry.js.map +1 -1
  175. package/dist/cjs/atomic-html.cjs.entry.js +1 -1
  176. package/dist/cjs/atomic-insight-folded-result-list.cjs.entry.js +1 -1
  177. package/dist/cjs/atomic-insight-generated-answer.cjs.entry.js +71 -32
  178. package/dist/cjs/atomic-insight-generated-answer.cjs.entry.js.map +1 -1
  179. package/dist/cjs/atomic-insight-history-toggle.cjs.entry.js +1 -1
  180. package/dist/cjs/atomic-insight-interface.cjs.entry.js +1 -1
  181. package/dist/cjs/atomic-insight-no-results.cjs.entry.js +1 -1
  182. package/dist/cjs/atomic-insight-numeric-facet.cjs.entry.js +1 -1
  183. package/dist/cjs/atomic-insight-pager.cjs.entry.js +3 -3
  184. package/dist/cjs/atomic-insight-query-error.cjs.entry.js +1 -1
  185. package/dist/cjs/atomic-insight-refine-modal.cjs.entry.js +2 -2
  186. package/dist/cjs/atomic-insight-refine-toggle.cjs.entry.js +1 -1
  187. package/dist/cjs/atomic-insight-result-attach-to-case-indicator.cjs.entry.js +1 -1
  188. package/dist/cjs/atomic-insight-result-children.cjs.entry.js +1 -1
  189. package/dist/cjs/atomic-insight-result-list.cjs.entry.js +1 -1
  190. package/dist/cjs/atomic-insight-result-quickview-action.cjs.entry.js +1 -1
  191. package/dist/cjs/atomic-insight-result.cjs.entry.js +1 -1
  192. package/dist/cjs/atomic-insight-search-box.cjs.entry.js +2 -2
  193. package/dist/cjs/atomic-insight-smart-snippet-feedback-modal.cjs.entry.js +2 -2
  194. package/dist/cjs/atomic-insight-tabs.cjs.entry.js +1 -1
  195. package/dist/cjs/atomic-insight-user-actions-session_2.cjs.entry.js +1 -1
  196. package/dist/cjs/atomic-insight-user-actions-toggle.cjs.entry.js +1 -1
  197. package/dist/cjs/atomic-ipx-body.cjs.entry.js +2 -2
  198. package/dist/cjs/atomic-ipx-button.cjs.entry.js +2 -2
  199. package/dist/cjs/atomic-ipx-embedded.cjs.entry.js +1 -1
  200. package/dist/cjs/atomic-ipx-modal.cjs.entry.js +2 -2
  201. package/dist/cjs/atomic-ipx-recs-list.cjs.entry.js +1 -1
  202. package/dist/cjs/atomic-ipx-refine-modal.cjs.entry.js +1 -1
  203. package/dist/cjs/atomic-ipx-refine-toggle.cjs.entry.js +1 -1
  204. package/dist/cjs/atomic-ipx-result-link.cjs.entry.js +1 -1
  205. package/dist/cjs/atomic-ipx-tabs.cjs.entry.js +1 -1
  206. package/dist/cjs/atomic-load-more-results.cjs.entry.js +1 -1
  207. package/dist/cjs/atomic-no-results.cjs.entry.js +1 -1
  208. package/dist/cjs/atomic-numeric-facet.cjs.entry.js +1 -1
  209. package/dist/cjs/atomic-pager.cjs.entry.js +3 -3
  210. package/dist/cjs/atomic-query-error.cjs.entry.js +1 -1
  211. package/dist/cjs/atomic-query-summary.cjs.entry.js +1 -1
  212. package/dist/cjs/atomic-quickview-modal.cjs.entry.js +1 -1
  213. package/dist/cjs/atomic-quickview.cjs.entry.js +1 -1
  214. package/dist/cjs/atomic-recs-error.cjs.entry.js +1 -1
  215. package/dist/cjs/atomic-recs-interface.cjs.entry.js +1 -1
  216. package/dist/cjs/atomic-recs-list.cjs.entry.js +1 -1
  217. package/dist/cjs/atomic-refine-modal.cjs.entry.js +1 -1
  218. package/dist/cjs/atomic-refine-toggle.cjs.entry.js +1 -1
  219. package/dist/cjs/atomic-relevance-inspector.cjs.entry.js +2 -2
  220. package/dist/cjs/atomic-result-children.cjs.entry.js +1 -1
  221. package/dist/cjs/atomic-result-fields-list.cjs.entry.js +1 -1
  222. package/dist/cjs/atomic-result-link.cjs.entry.js +1 -1
  223. package/dist/cjs/atomic-result-list.cjs.entry.js +1 -1
  224. package/dist/cjs/atomic-result-placeholder_8.cjs.entry.js +1 -1
  225. package/dist/cjs/atomic-search-box-query-suggestions_2.cjs.entry.js +2 -2
  226. package/dist/cjs/atomic-search-box.cjs.entry.js +4 -4
  227. package/dist/cjs/atomic-search-interface.cjs.entry.js +1 -1
  228. package/dist/cjs/atomic-smart-snippet-feedback-modal.cjs.entry.js +2 -2
  229. package/dist/cjs/atomic-sort-dropdown.cjs.entry.js +2 -2
  230. package/dist/cjs/atomic-sort-expression.cjs.entry.js +1 -1
  231. package/dist/cjs/atomic-tab-manager.cjs.entry.js +1 -1
  232. package/dist/cjs/atomic.cjs.js +1 -1
  233. package/dist/cjs/{generated-answer-common-4cd4b7c6.js → generated-answer-renderer-b91052b8.js} +164 -247
  234. package/dist/cjs/generated-answer-renderer-b91052b8.js.map +1 -0
  235. package/dist/cjs/index-757bc886.js +4 -8
  236. package/dist/cjs/version.cjs.js +2 -2
  237. package/dist/esm/_loader.js +1 -1
  238. package/dist/esm/{analytics-config-672b6eba.js → analytics-config-9607b4dd.js} +2 -2
  239. package/dist/esm/analytics-config-9607b4dd.js.map +1 -0
  240. package/dist/esm/atomic-category-facet.entry.js +1 -1
  241. package/dist/esm/atomic-citation_2.entry.js +938 -0
  242. package/dist/esm/atomic-citation_2.entry.js.map +1 -0
  243. package/dist/esm/atomic-facet-manager.entry.js +1 -1
  244. package/dist/esm/atomic-facet.entry.js +1 -1
  245. package/dist/esm/atomic-format-currency.entry.js +1 -1
  246. package/dist/esm/atomic-format-number.entry.js +1 -1
  247. package/dist/esm/atomic-format-unit.entry.js +1 -1
  248. package/dist/esm/atomic-generated-answer.entry.js +67 -29
  249. package/dist/esm/atomic-generated-answer.entry.js.map +1 -1
  250. package/dist/esm/atomic-html.entry.js +1 -1
  251. package/dist/esm/atomic-insight-folded-result-list.entry.js +1 -1
  252. package/dist/esm/atomic-insight-generated-answer.entry.js +74 -35
  253. package/dist/esm/atomic-insight-generated-answer.entry.js.map +1 -1
  254. package/dist/esm/atomic-insight-history-toggle.entry.js +1 -1
  255. package/dist/esm/atomic-insight-interface.entry.js +1 -1
  256. package/dist/esm/atomic-insight-no-results.entry.js +1 -1
  257. package/dist/esm/atomic-insight-numeric-facet.entry.js +1 -1
  258. package/dist/esm/atomic-insight-pager.entry.js +3 -3
  259. package/dist/esm/atomic-insight-query-error.entry.js +1 -1
  260. package/dist/esm/atomic-insight-refine-modal.entry.js +2 -2
  261. package/dist/esm/atomic-insight-refine-toggle.entry.js +1 -1
  262. package/dist/esm/atomic-insight-result-attach-to-case-indicator.entry.js +1 -1
  263. package/dist/esm/atomic-insight-result-children.entry.js +1 -1
  264. package/dist/esm/atomic-insight-result-list.entry.js +1 -1
  265. package/dist/esm/atomic-insight-result-quickview-action.entry.js +1 -1
  266. package/dist/esm/atomic-insight-result.entry.js +1 -1
  267. package/dist/esm/atomic-insight-search-box.entry.js +2 -2
  268. package/dist/esm/atomic-insight-smart-snippet-feedback-modal.entry.js +2 -2
  269. package/dist/esm/atomic-insight-tabs.entry.js +1 -1
  270. package/dist/esm/atomic-insight-user-actions-session_2.entry.js +1 -1
  271. package/dist/esm/atomic-insight-user-actions-toggle.entry.js +1 -1
  272. package/dist/esm/atomic-ipx-body.entry.js +2 -2
  273. package/dist/esm/atomic-ipx-button.entry.js +2 -2
  274. package/dist/esm/atomic-ipx-embedded.entry.js +1 -1
  275. package/dist/esm/atomic-ipx-modal.entry.js +2 -2
  276. package/dist/esm/atomic-ipx-recs-list.entry.js +1 -1
  277. package/dist/esm/atomic-ipx-refine-modal.entry.js +1 -1
  278. package/dist/esm/atomic-ipx-refine-toggle.entry.js +1 -1
  279. package/dist/esm/atomic-ipx-result-link.entry.js +1 -1
  280. package/dist/esm/atomic-ipx-tabs.entry.js +1 -1
  281. package/dist/esm/atomic-load-more-results.entry.js +1 -1
  282. package/dist/esm/atomic-no-results.entry.js +1 -1
  283. package/dist/esm/atomic-numeric-facet.entry.js +1 -1
  284. package/dist/esm/atomic-pager.entry.js +3 -3
  285. package/dist/esm/atomic-popover.entry.js +2 -2
  286. package/dist/esm/atomic-query-error.entry.js +1 -1
  287. package/dist/esm/atomic-query-summary.entry.js +1 -1
  288. package/dist/esm/atomic-quickview-modal.entry.js +1 -1
  289. package/dist/esm/atomic-quickview.entry.js +1 -1
  290. package/dist/esm/atomic-recs-error.entry.js +1 -1
  291. package/dist/esm/atomic-recs-interface.entry.js +1 -1
  292. package/dist/esm/atomic-recs-list.entry.js +1 -1
  293. package/dist/esm/atomic-refine-modal.entry.js +1 -1
  294. package/dist/esm/atomic-refine-toggle.entry.js +1 -1
  295. package/dist/esm/atomic-relevance-inspector.entry.js +2 -2
  296. package/dist/esm/atomic-result-children.entry.js +1 -1
  297. package/dist/esm/atomic-result-fields-list.entry.js +1 -1
  298. package/dist/esm/atomic-result-link.entry.js +1 -1
  299. package/dist/esm/atomic-result-list.entry.js +1 -1
  300. package/dist/esm/atomic-result-placeholder_8.entry.js +1 -1
  301. package/dist/esm/atomic-search-box-query-suggestions_2.entry.js +3 -3
  302. package/dist/esm/atomic-search-box.entry.js +5 -5
  303. package/dist/esm/atomic-search-interface.entry.js +2 -2
  304. package/dist/esm/atomic-smart-snippet-feedback-modal.entry.js +2 -2
  305. package/dist/esm/atomic-sort-dropdown.entry.js +2 -2
  306. package/dist/esm/atomic-sort-expression.entry.js +1 -1
  307. package/dist/esm/atomic-tab-bar_2.entry.js +2 -2
  308. package/dist/esm/atomic-tab-manager.entry.js +1 -1
  309. package/dist/esm/atomic.js +1 -1
  310. package/dist/esm/{createPopper-a633eb88.js → createPopper-ed15cfea.js} +2 -2
  311. package/dist/esm/{createPopper-a633eb88.js.map → createPopper-ed15cfea.js.map} +1 -1
  312. package/dist/esm/{generated-answer-common-06146290.js → generated-answer-renderer-469d25f0.js} +159 -247
  313. package/dist/esm/generated-answer-renderer-469d25f0.js.map +1 -0
  314. package/dist/esm/index-3f35faca.js +4 -8
  315. package/dist/esm/{local-storage-utils-410269e6.js → local-storage-utils-a4bf8fba.js} +2 -2
  316. package/dist/esm/{local-storage-utils-410269e6.js.map → local-storage-utils-a4bf8fba.js.map} +1 -1
  317. package/dist/esm/{popper-lite-2035100c.js → popper-lite-4b6382b2.js} +2 -2
  318. package/dist/esm/{popper-lite-2035100c.js.map → popper-lite-4b6382b2.js.map} +1 -1
  319. package/dist/esm/version.js +2 -2
  320. package/dist/types/components/common/generated-answer/generated-answer-common.d.ts +15 -54
  321. package/dist/types/components/common/generated-answer/generated-answer-renderer.d.ts +25 -0
  322. package/dist/types/components/insight/atomic-insight-generated-answer/atomic-insight-generated-answer.d.ts +11 -3
  323. package/dist/types/components/search/atomic-generated-answer/atomic-generated-answer.d.ts +9 -1
  324. package/docs/atomic-docs.json +17 -3
  325. package/package.json +3 -3
  326. package/dist/atomic/components/generated-answer-common.js.map +0 -1
  327. package/dist/atomic/p-0c076058.entry.js +0 -2
  328. package/dist/atomic/p-0c076058.entry.js.map +0 -1
  329. package/dist/atomic/p-421850f9.entry.js +0 -2
  330. package/dist/atomic/p-421850f9.entry.js.map +0 -1
  331. package/dist/atomic/p-52121e1e.entry.js +0 -2
  332. package/dist/atomic/p-579c5b46.entry.js +0 -2
  333. package/dist/atomic/p-579c5b46.entry.js.map +0 -1
  334. package/dist/atomic/p-5fca1435.js +0 -2
  335. package/dist/atomic/p-5fca1435.js.map +0 -1
  336. package/dist/atomic/p-bed5a86b.js +0 -2
  337. package/dist/atomic/p-d5d1c5c0.entry.js +0 -2
  338. package/dist/atomic/p-e27e1e46.entry.js +0 -2
  339. package/dist/atomic/p-e27e1e46.entry.js.map +0 -1
  340. package/dist/cjs/analytics-config-f34a68ee.js.map +0 -1
  341. package/dist/cjs/atomic-citation.cjs.entry.js +0 -533
  342. package/dist/cjs/atomic-citation.cjs.entry.js.map +0 -1
  343. package/dist/cjs/atomic-generated-answer-feedback-modal.cjs.entry.js.map +0 -1
  344. package/dist/cjs/generated-answer-common-4cd4b7c6.js.map +0 -1
  345. package/dist/esm/analytics-config-672b6eba.js.map +0 -1
  346. package/dist/esm/atomic-citation.entry.js.map +0 -1
  347. package/dist/esm/atomic-generated-answer-feedback-modal.entry.js.map +0 -1
  348. package/dist/esm/generated-answer-common-06146290.js.map +0 -1
  349. /package/dist/atomic/{p-5db0ffd7.entry.js.map → p-0565e73b.entry.js.map} +0 -0
  350. /package/dist/atomic/{p-f2bae47c.entry.js.map → p-061fb6f9.entry.js.map} +0 -0
  351. /package/dist/atomic/{p-8044bbe4.entry.js.map → p-064567c3.entry.js.map} +0 -0
  352. /package/dist/atomic/{p-7b9026d7.js.map → p-07f25674.js.map} +0 -0
  353. /package/dist/atomic/{p-75b863ea.entry.js.map → p-0a76cd30.entry.js.map} +0 -0
  354. /package/dist/atomic/{p-c727cd49.entry.js.map → p-0d32a5f2.entry.js.map} +0 -0
  355. /package/dist/atomic/{p-eb026d69.entry.js.map → p-129799b2.entry.js.map} +0 -0
  356. /package/dist/atomic/{p-3bda3e96.entry.js.map → p-12e41bc3.entry.js.map} +0 -0
  357. /package/dist/atomic/{p-8b6aaeed.entry.js.map → p-15048f34.entry.js.map} +0 -0
  358. /package/dist/atomic/{p-7464f00a.entry.js.map → p-15214935.entry.js.map} +0 -0
  359. /package/dist/atomic/{p-a3aaf456.entry.js.map → p-19db78c9.entry.js.map} +0 -0
  360. /package/dist/atomic/{p-fb26a29f.entry.js.map → p-24302330.entry.js.map} +0 -0
  361. /package/dist/atomic/{p-c19a9af4.entry.js.map → p-25263126.entry.js.map} +0 -0
  362. /package/dist/atomic/{p-633628d5.entry.js.map → p-25c09399.entry.js.map} +0 -0
  363. /package/dist/atomic/{p-77ae34ce.entry.js.map → p-37d6236f.entry.js.map} +0 -0
  364. /package/dist/atomic/{p-db9ca9c3.entry.js.map → p-395b2384.entry.js.map} +0 -0
  365. /package/dist/atomic/{p-1e21a920.entry.js.map → p-3fd98a23.entry.js.map} +0 -0
  366. /package/dist/atomic/{p-100da102.entry.js.map → p-40c4d7ac.entry.js.map} +0 -0
  367. /package/dist/atomic/{p-db3dce80.entry.js.map → p-452b7ae6.entry.js.map} +0 -0
  368. /package/dist/atomic/{p-946fe85f.js.map → p-4aaffb59.js.map} +0 -0
  369. /package/dist/atomic/{p-9da1c516.entry.js.map → p-4bf5df6f.entry.js.map} +0 -0
  370. /package/dist/atomic/{p-6083c9be.entry.js.map → p-4d15767c.entry.js.map} +0 -0
  371. /package/dist/atomic/{p-d172edcc.entry.js.map → p-5459a1f0.entry.js.map} +0 -0
  372. /package/dist/atomic/{p-2f668825.entry.js.map → p-556d401d.entry.js.map} +0 -0
  373. /package/dist/atomic/{p-c35fb052.entry.js.map → p-55e41484.entry.js.map} +0 -0
  374. /package/dist/atomic/{p-48c8a766.entry.js.map → p-5730dec7.entry.js.map} +0 -0
  375. /package/dist/atomic/{p-4eb5bc54.entry.js.map → p-5a366eac.entry.js.map} +0 -0
  376. /package/dist/atomic/{p-d5d1c5c0.entry.js.map → p-632046cf.entry.js.map} +0 -0
  377. /package/dist/atomic/{p-dc89e560.entry.js.map → p-6c7d88eb.entry.js.map} +0 -0
  378. /package/dist/atomic/{p-27064d6e.entry.js.map → p-6f151c5f.entry.js.map} +0 -0
  379. /package/dist/atomic/{p-444bff80.entry.js.map → p-77160de0.entry.js.map} +0 -0
  380. /package/dist/atomic/{p-a1924914.entry.js.map → p-789c166b.entry.js.map} +0 -0
  381. /package/dist/atomic/{p-8b80d576.entry.js.map → p-80b418c5.entry.js.map} +0 -0
  382. /package/dist/atomic/{p-fbacb7a0.entry.js.map → p-8321376b.entry.js.map} +0 -0
  383. /package/dist/atomic/{p-731b7ad8.entry.js.map → p-83d0fa08.entry.js.map} +0 -0
  384. /package/dist/atomic/{p-52121e1e.entry.js.map → p-847d1273.entry.js.map} +0 -0
  385. /package/dist/atomic/{p-5afe99b1.entry.js.map → p-85dcd0b8.entry.js.map} +0 -0
  386. /package/dist/atomic/{p-009525f1.entry.js.map → p-88f0bb62.entry.js.map} +0 -0
  387. /package/dist/atomic/{p-113cc160.entry.js.map → p-8baf5ec4.entry.js.map} +0 -0
  388. /package/dist/atomic/{p-bfdecd0f.entry.js.map → p-8bdd7a67.entry.js.map} +0 -0
  389. /package/dist/atomic/{p-e392095a.entry.js.map → p-8dec58c0.entry.js.map} +0 -0
  390. /package/dist/atomic/{p-f9289f2f.entry.js.map → p-8f277cb8.entry.js.map} +0 -0
  391. /package/dist/atomic/{p-8d0b9f5a.entry.js.map → p-9742f412.entry.js.map} +0 -0
  392. /package/dist/atomic/{p-882a99f5.entry.js.map → p-99d5f93b.entry.js.map} +0 -0
  393. /package/dist/atomic/{p-b0bd2709.entry.js.map → p-9cb248b7.entry.js.map} +0 -0
  394. /package/dist/atomic/{p-5c813055.entry.js.map → p-9de46009.entry.js.map} +0 -0
  395. /package/dist/atomic/{p-ca0a32dc.entry.js.map → p-afe08816.entry.js.map} +0 -0
  396. /package/dist/atomic/{p-09924944.entry.js.map → p-b5d80111.entry.js.map} +0 -0
  397. /package/dist/atomic/{p-04481727.entry.js.map → p-b8b26796.entry.js.map} +0 -0
  398. /package/dist/atomic/{p-b6c5584a.entry.js.map → p-bc03189c.entry.js.map} +0 -0
  399. /package/dist/atomic/{p-09934c1e.entry.js.map → p-c7fc7d32.entry.js.map} +0 -0
  400. /package/dist/atomic/{p-22ef68f4.entry.js.map → p-cdf2f41d.entry.js.map} +0 -0
  401. /package/dist/atomic/{p-58fe83ae.entry.js.map → p-d23032ec.entry.js.map} +0 -0
  402. /package/dist/atomic/{p-31d3304c.entry.js.map → p-d554cf29.entry.js.map} +0 -0
  403. /package/dist/atomic/{p-9a72f043.entry.js.map → p-d6937e96.entry.js.map} +0 -0
  404. /package/dist/atomic/{p-2b76b255.entry.js.map → p-d6992ca7.entry.js.map} +0 -0
  405. /package/dist/atomic/{p-4dd88abc.entry.js.map → p-d91d00a0.entry.js.map} +0 -0
  406. /package/dist/atomic/{p-d5628c4c.entry.js.map → p-dbac498d.entry.js.map} +0 -0
  407. /package/dist/atomic/{p-91d64c67.entry.js.map → p-dbeed413.entry.js.map} +0 -0
  408. /package/dist/atomic/{p-005dcc88.entry.js.map → p-e1a6502d.entry.js.map} +0 -0
  409. /package/dist/atomic/{p-d3e1a9aa.entry.js.map → p-e8dd2a37.entry.js.map} +0 -0
  410. /package/dist/atomic/{p-f5f8990e.entry.js.map → p-eecdba00.entry.js.map} +0 -0
  411. /package/dist/atomic/{p-2a7ac870.entry.js.map → p-f165c179.entry.js.map} +0 -0
  412. /package/dist/atomic/{p-ac8941e8.entry.js.map → p-f79fda00.entry.js.map} +0 -0
  413. /package/dist/atomic/{p-09a5ef74.entry.js.map → p-fe934267.entry.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["readGeneratedAnswerStoredData","withToggle","storage","SafeStorage","storedData","getParsedJSON","StorageItems","GENERATED_ANSWER_DATA","isVisible","writeGeneratedAnswerStoredData","data","setJSON","insertGeneratedAnswerFeedbackModal","host","generatedAnswer","modalRef","document","createElement","insertAdjacentElement","getGeneratedAnswerStatus","generatedAnswerState","i18n","isHidden","isGenerating","isStreaming","hasAnswer","answer","hasError","error","t","copyToClipboard","async","setCopied","setCopyError","onLogCopyToClipboard","logger","navigator","clipboard","writeText","setTimeout","Switch","props","attributes","onClick","onToggle","checked","ariaLabel","String","part","tabIndex","title","containerClasses","join","handleClasses","buttonClasses","h","role","class","CopyButton","Button","style","isCopied","icon","CopyIcon","FeedbackButton","variant","active","ariaPressed","Thumbs","global","factory","exports","this","_getDefaults","breaks","extensions","gfm","hooks","pedantic","renderer","silent","tokenizer","walkTokens","defaults","changeDefaults","newDefaults","escapeTest","escapeReplace","RegExp","source","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","escape$1","html","encode","test","replace","unescapeTest","unescape","_","n","toLowerCase","charAt","fromCharCode","parseInt","substring","caret","edit","regex","opt","obj","name","val","valSource","getRegex","cleanUrl","href","encodeURI","e","noopTest","exec","splitCells","tableRow","count","row","match","offset","str","escaped","curr","cells","split","i","trim","shift","length","pop","splice","push","rtrim","c","invert","l","suffLen","currChar","slice","findClosingBracket","b","indexOf","level","outputLink","cap","link","raw","lexer","text","state","inLink","token","type","tokens","inlineTokens","indentCodeCompensation","matchIndentToCode","indentToCode","map","node","matchIndentInNode","indentInNode","_Tokenizer","options","rules","constructor","space","src","block","newline","code","codeBlockStyle","fences","lang","inline","anyPunctuation","heading","trimmed","depth","hr","blockquote","top","blockTokens","list","bull","isordered","ordered","start","loose","items","itemRegex","itemContents","endsWithBlankLine","endEarly","line","repeat","nextLine","indent","trimStart","search","blankLine","nextBulletRegex","Math","min","hrRegex","fencesBeginRegex","headingBeginRegex","rawLine","istask","ischecked","task","trimEnd","spacers","filter","hasMultipleLineBreaks","some","pre","def","tag","table","headers","aligns","rows","item","header","align","cell","lheading","paragraph","escape","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","reflink","links","nolink","linkString","emStrong","maskedSrc","prevChar","emStrongLDelim","nextChar","punctuation","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","emStrongRDelimAst","emStrongRDelimUnd","lastIndex","lastCharLength","index","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","br","del","autolink","url","prevCapZero","_backpedal","inlineText","blockCode","bullet","_paragraph","blockText","_blockLabel","_tag","_comment","blockNormal","gfmTable","blockGfm","blockPedantic","inlineCode","_punctuation","blockSkip","_inlineComment","_inlineLabel","reflinkSearch","inlineNormal","inlinePedantic","inlineGfm","inlineBreaks","normal","_Lexer","inlineQueue","Object","create","lex","lexInline","next","leading","tabs","lastToken","cutSrc","lastParagraphClipped","extTokenizer","call","startBlock","startIndex","Infinity","tempSrc","tempStart","forEach","getStartIndex","errMsg","charCodeAt","console","Error","keepPrevChar","keys","includes","lastIndexOf","startInline","_Renderer","infostring","quote","body","startatt","listitem","checkbox","tablerow","content","tablecell","flags","strong","em","cleanHref","out","image","_TextRenderer","_Parser","textRenderer","parse","parser","parseInline","renderers","genericToken","ret","headingToken","codeToken","tableToken","j","k","blockquoteToken","listToken","itemBody","unshift","htmlToken","paragraphToken","textToken","escapeToken","tagToken","linkToken","imageToken","strongToken","emToken","codespanToken","delToken","_Hooks","static","Set","preprocess","markdown","postprocess","processAllTokens","Marked","setOptions","parseMarkdown","Parser","Renderer","TextRenderer","Lexer","Tokenizer","Hooks","args","use","callback","values","concat","childTokens","flat","pack","opts","ext","prevRenderer","apply","extLevel","prop","rendererProp","rendererFunc","tokenizerProp","tokenizerFunc","prevTokenizer","hooksProp","hooksFunc","prevHook","passThroughHooks","has","arg","Promise","resolve","then","packWalktokens","origOpt","warn","throwError","onError","prototype","toString","all","catch","message","msg","reject","markedInstance","marked","getDefaults","toInlinePlainText","textWithHtml","withoutHtmlTags","withCollapsedWhitespaces","unclosedElement","completeUnclosedElement","symbol","replacements","escapeHtml","customRenderer","plainText","unwrappedText","withClosedElement","transformMarkdownToHtml","GeneratedMarkdownContent","answerAsHtml","DOMPurify","sanitize","ADD_ATTR","innerHTML","GeneratedTextContent","GeneratedContentContainer","children","answerContentFormat","RetryPrompt","buttonLabel","ShowButton","isCollapsed","ArrowBottomIcon","ArrowTopIcon","SourceCitations","label","GeneratedAnswerRenderer","onShowButtonClick","onClickDislike","onClickLike","onCopyToClipboard","collapsible","disableCitationAnchoring","copied","copyError","isAnswerVisible","hasRetryableError","hasClipboard","hasNoAnswerGenerated","hasCustomNoAnswerMessage","buildInteractiveCitationForCitation","cannotAnswer","GeneratedAnswerWrapper","GeneratedAnswerNoAnswerMessage","GeneratedAnswerHeader","show","hide","GeneratedAnswerRetryPrompt","onRetry","retry","GeneratedAnswerContent","citations","GeneratedAnswerFooter","expanded","GeneratedAnswerDisclaimer","slot","contentClasses","classes","toggleTooltip","Heading","GeneratedAnswerFeedbackAndCopyButtons","disliked","liked","copyToClipboardTooltip","GeneratedAnswerCitations","buildInteractiveCitation","onLogCitationHover","getCitation","citation","interactiveCitation","key","id","sendHoverEndEvent","citationHoverTimeMs","exportparts","showGeneratingLabel","showButton","citationId","logCitationHover"],"sources":["src/components/common/generated-answer/generated-answer-common.ts","src/components/common/switch.tsx","src/components/common/generated-answer/copy-button.tsx","src/components/common/generated-answer/feedback-button.tsx","../../node_modules/marked/lib/marked.umd.js","src/components/common/generated-answer/generated-content/markdown-utils.ts","src/components/common/generated-answer/generated-content/generated-markdown-content.tsx","src/components/common/generated-answer/generated-content/generated-text-content.tsx","src/components/common/generated-answer/generated-content-container.tsx","src/components/common/generated-answer/retry-prompt.tsx","src/components/common/generated-answer/show-button.tsx","src/components/common/generated-answer/source-citations.tsx","src/components/common/generated-answer/generated-answer-renderer.tsx"],"sourcesContent":["import type {GeneratedAnswer, GeneratedAnswerState} from '@coveo/headless';\nimport type {i18n} from 'i18next';\nimport {\n type GeneratedAnswerData,\n SafeStorage,\n StorageItems,\n} from '../../../utils/local-storage-utils.js';\n\nexport const readGeneratedAnswerStoredData = (\n withToggle: boolean\n): GeneratedAnswerData => {\n const storage = new SafeStorage();\n const storedData = storage.getParsedJSON<GeneratedAnswerData>(\n StorageItems.GENERATED_ANSWER_DATA,\n {isVisible: true}\n );\n\n // This check ensures that the answer is visible when the toggle is hidden and visible is set to false in the local storage.\n return {isVisible: (withToggle && storedData.isVisible) || !withToggle};\n};\n\nexport const writeGeneratedAnswerStoredData = (data: GeneratedAnswerData) => {\n const storage = new SafeStorage();\n storage.setJSON(StorageItems.GENERATED_ANSWER_DATA, data);\n};\n\nexport const insertGeneratedAnswerFeedbackModal = (\n host: HTMLElement,\n generatedAnswer: () => GeneratedAnswer\n) => {\n const modalRef = document.createElement(\n 'atomic-generated-answer-feedback-modal'\n );\n modalRef.generatedAnswer = generatedAnswer();\n host.insertAdjacentElement('beforebegin', modalRef);\n return modalRef;\n};\n\nexport const getGeneratedAnswerStatus = (\n generatedAnswerState: GeneratedAnswerState,\n i18n: i18n\n) => {\n if (!generatedAnswerState || !i18n) {\n return '';\n }\n\n const isHidden = !generatedAnswerState.isVisible;\n const isGenerating = !!generatedAnswerState.isStreaming;\n const hasAnswer = !!generatedAnswerState.answer;\n const hasError = !!generatedAnswerState.error;\n\n if (isHidden) {\n return i18n.t('generated-answer-hidden');\n }\n\n if (isGenerating) {\n return i18n.t('generating-answer');\n }\n\n if (hasError) {\n return i18n.t('answer-could-not-be-generated');\n }\n\n if (hasAnswer) {\n return i18n.t('answer-generated', {\n answer: generatedAnswerState.answer,\n });\n }\n\n return '';\n};\n\ntype CopyToClipboardParams = {\n answer: string;\n setCopied: (copied: boolean) => void;\n setCopyError: (error: boolean) => void;\n onLogCopyToClipboard: () => void;\n logger: Pick<Console, 'error'>;\n};\n\nexport const copyToClipboard = async ({\n answer,\n setCopied,\n setCopyError,\n onLogCopyToClipboard,\n logger,\n}: CopyToClipboardParams) => {\n try {\n await navigator.clipboard.writeText(answer);\n setCopied(true);\n onLogCopyToClipboard();\n } catch (error) {\n setCopyError(true);\n logger?.error(`Failed to copy to clipboard: ${error}`);\n }\n\n setTimeout(() => {\n setCopied(false);\n setCopyError(false);\n }, 2000);\n};\n","import {FunctionalComponent, h} from '@stencil/core';\n\nexport interface SwitchProps {\n checked?: boolean;\n onToggle?(checked: boolean): void;\n ariaLabel?: string;\n part?: string;\n tabIndex?: number;\n title?: string;\n withToggle?: boolean;\n}\n\nexport const Switch: FunctionalComponent<SwitchProps> = (props) => {\n const attributes = {\n onClick: () => props.onToggle?.(!props.checked),\n 'arial-label': props.ariaLabel,\n 'aria-checked': String(!!props.checked),\n part: props.part,\n tabIndex: props.tabIndex,\n title: props.title,\n };\n\n const containerClasses = [\n 'w-12',\n 'h-6',\n 'p-1',\n 'rounded-full',\n props.checked ? 'bg-primary' : 'bg-neutral',\n ].join(' ');\n\n const handleClasses = [\n 'w-4',\n 'h-4',\n 'rounded-full',\n 'bg-white',\n props.checked ? 'ml-6' : '',\n ].join(' ');\n\n const buttonClasses = [\n 'rounded-full',\n 'btn-outline-neutral',\n props.withToggle ? 'flex' : 'hidden',\n ].join(' ');\n\n return (\n <button role=\"switch\" {...attributes} class={buttonClasses}>\n <div class={containerClasses}>\n <div class={handleClasses}></div>\n </div>\n </button>\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\nimport CopyIcon from '../../../images/copy.svg';\nimport {Button} from '../stencil-button';\n\ninterface CopyButtonProps {\n title: string;\n isCopied: boolean;\n error: boolean;\n onClick: () => void;\n}\n\nexport const CopyButton: FunctionalComponent<CopyButtonProps> = (props) => {\n return (\n <Button\n title={props.title}\n part=\"copy-button\"\n style={'text-transparent'}\n class={`rounded-md p-2 ${props.isCopied ? 'copied' : ''} ${\n props.error ? 'error' : ''\n }`}\n onClick={props.onClick}\n >\n <div class=\"icon-container text-neutral-dark\">\n <atomic-icon class=\"w-5\" icon={CopyIcon}></atomic-icon>\n </div>\n </Button>\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\nimport Thumbs from '../../../images/thumbs.svg';\nimport {Button} from '../stencil-button';\n\ntype FeedbackVariant = 'like' | 'dislike';\n\ninterface FeedbackButtonProps {\n title: string;\n variant: FeedbackVariant;\n active: boolean;\n onClick: () => void;\n}\n\nexport const FeedbackButton: FunctionalComponent<FeedbackButtonProps> = (\n props\n) => {\n return (\n <Button\n title={props.title}\n style=\"text-transparent\"\n part=\"feedback-button\"\n class={`feedback-button rounded-md p-2 ${props.variant} ${\n props.active ? 'active' : ''\n }`}\n onClick={props.onClick}\n ariaPressed={`${props.active}`}\n >\n <atomic-icon class=\"w-5\" icon={Thumbs}></atomic-icon>\n </Button>\n );\n};\n","/**\n * marked v12.0.2 - a markdown parser\n * Copyright (c) 2011-2024, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.marked = {}));\n})(this, (function (exports) { 'use strict';\n\n /**\n * Gets the original marked default options.\n */\n function _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null\n };\n }\n exports.defaults = _getDefaults();\n function changeDefaults(newDefaults) {\n exports.defaults = newDefaults;\n }\n\n /**\n * Helpers\n */\n const escapeTest = /[&<>\"']/;\n const escapeReplace = new RegExp(escapeTest.source, 'g');\n const escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\n const escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\n const escapeReplacements = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n };\n const getEscapeReplacement = (ch) => escapeReplacements[ch];\n function escape$1(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n }\n const unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n }\n const caret = /(^|[^\\[])\\^/g;\n function edit(regex, opt) {\n let source = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n }\n };\n return obj;\n }\n function cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch (e) {\n return null;\n }\n return href;\n }\n const noopTest = { exec: () => null };\n function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n }\n /**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\n function rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n }\n function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n }\n\n function outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape$1(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape$1(text)\n };\n }\n function indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n }\n /**\n * Tokenizer\n */\n class _Tokenizer {\n options;\n rules; // set by the lexer\n lexer; // set by the lexer\n constructor(options) {\n this.options = options || exports.defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n // precede setext continuation with 4 spaces so it isn't a setext\n let text = cap[0].replace(/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g, '\\n $1');\n text = rtrim(text.replace(/^ *>[ \\t]?/gm, ''), '\\n');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let raw = '';\n let itemContents = '';\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n let blankLine = false;\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimEnd();\n (list.items[list.items.length - 1]).text = itemContents.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0]\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n const item = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: []\n };\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n for (const align of aligns) {\n if (/^ *-+: *$/.test(align)) {\n item.align.push('right');\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align.push('center');\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align.push('left');\n }\n else {\n item.align.push(null);\n }\n }\n for (const header of headers) {\n item.header.push({\n text: header,\n tokens: this.lexer.inline(header)\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map(cell => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell)\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape$1(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n this.lexer.state.inLink = true;\n }\n else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!(/>$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^</.test(href)) {\n if (this.options.pedantic && !(/>$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape$1(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape$1(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape$1(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape$1(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = escape$1(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape$1(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n }\n\n /**\n * Block-Level Grammar\n */\n const newline = /^(?: *(?:\\n|$))+/;\n const blockCode = /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/;\n const fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\n const hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\n const heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\n const bullet = /(?:[*+-]|\\d{1,9}[.)])/;\n const lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, / {4}/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .getRegex();\n const _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\n const blockText = /^[^\\n]+/;\n const _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\n const def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\n const list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\n const _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n + '|tr|track|ul';\n const _comment = /<!--(?:-?>|[\\s\\S]*?(?:-->|$))/;\n const html = edit('^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n const paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n const blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n /**\n * Normal Block Grammar\n */\n const blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText\n };\n /**\n * GFM Block Grammar\n */\n const gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n const blockGfm = {\n ...blockNormal,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex()\n };\n /**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n const blockPedantic = {\n ...blockNormal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex()\n };\n /**\n * Inline-Level Grammar\n */\n const escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\n const inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\n const br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\n const inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/;\n // list of unicode punctuation marks, plus any missing characters from CommonMark spec\n const _punctuation = '\\\\p{P}\\\\p{S}';\n const punctuation = edit(/^((?![*_])[\\spunctuation])/, 'u')\n .replace(/punctuation/g, _punctuation).getRegex();\n // sequences em should skip over [title](link), `code`, <html>\n const blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\n const emStrongLDelim = edit(/^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\n const emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n + '|[^*]+(?=[^*])' // Consume to delim\n + '|(?!\\\\*)[punct](\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?!\\\\*)(?=[punct\\\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter\n + '|(?!\\\\*)[punct\\\\s](\\\\*+)(?=[^punct\\\\s])' // (3) #***a, ***a can only be Left Delimiter\n + '|[\\\\s](\\\\*+)(?!\\\\*)(?=[punct])' // (4) ***# can only be Left Delimiter\n + '|(?!\\\\*)[punct](\\\\*+)(?!\\\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?=[^punct\\\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\n // (6) Not allowed for _\n const emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n + '|[^_]+(?=[^_])' // Consume to delim\n + '|(?!_)[punct](_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n + '|[^punct\\\\s](_+)(?!_)(?=[punct\\\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter\n + '|(?!_)[punct\\\\s](_+)(?=[^punct\\\\s])' // (3) #___a, ___a can only be Left Delimiter\n + '|[\\\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter\n + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\n const anyPunctuation = edit(/\\\\([punct])/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\n const autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\n const _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\n const tag = edit('^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\n const _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\n const link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\n const reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\n const nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\n const reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n /**\n * Normal Inline Grammar\n */\n const inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest\n };\n /**\n * Pedantic Inline Grammar\n */\n const inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex()\n };\n /**\n * GFM Inline Grammar\n */\n const inlineGfm = {\n ...inlineNormal,\n escape: edit(escape).replace('])', '~|])').getRegex(),\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n };\n /**\n * GFM + Line Breaks Inline Grammar\n */\n const inlineBreaks = {\n ...inlineGfm,\n br: edit(br).replace('{2,}', '*').getRegex(),\n text: edit(inlineGfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex()\n };\n /**\n * exports\n */\n const block = {\n normal: blockNormal,\n gfm: blockGfm,\n pedantic: blockPedantic\n };\n const inline = {\n normal: inlineNormal,\n gfm: inlineGfm,\n breaks: inlineBreaks,\n pedantic: inlinePedantic\n };\n\n /**\n * Block Lexer\n */\n class _Lexer {\n tokens;\n options;\n state;\n tokenizer;\n inlineQueue;\n constructor(options) {\n // TokenList cannot be created in one go\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || exports.defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n }\n else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n }\n else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n this.blockTokens(src, this.tokens);\n for (let i = 0; i < this.inlineQueue.length; i++) {\n const next = this.inlineQueue[i];\n this.inlineTokens(next.src, next.tokens);\n }\n this.inlineQueue = [];\n return this.tokens;\n }\n blockTokens(src, tokens = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n }\n else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n let token;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n }\n\n /**\n * Renderer\n */\n class _Renderer {\n options;\n constructor(options) {\n this.options = options || exports.defaults;\n }\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/^\\S*/)?.[0];\n code = code.replace(/\\n$/, '') + '\\n';\n if (!lang) {\n return '<pre><code>'\n + (escaped ? code : escape$1(code, true))\n + '</code></pre>\\n';\n }\n return '<pre><code class=\"language-'\n + escape$1(lang)\n + '\">'\n + (escaped ? code : escape$1(code, true))\n + '</code></pre>\\n';\n }\n blockquote(quote) {\n return `<blockquote>\\n${quote}</blockquote>\\n`;\n }\n html(html, block) {\n return html;\n }\n heading(text, level, raw) {\n // ignore IDs\n return `<h${level}>${text}</h${level}>\\n`;\n }\n hr() {\n return '<hr>\\n';\n }\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul';\n const startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n }\n listitem(text, task, checked) {\n return `<li>${text}</li>\\n`;\n }\n checkbox(checked) {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\">';\n }\n paragraph(text) {\n return `<p>${text}</p>\\n`;\n }\n table(header, body) {\n if (body)\n body = `<tbody>${body}</tbody>`;\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n';\n }\n tablerow(content) {\n return `<tr>\\n${content}</tr>\\n`;\n }\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `</${type}>\\n`;\n }\n /**\n * span level renderer\n */\n strong(text) {\n return `<strong>${text}</strong>`;\n }\n em(text) {\n return `<em>${text}</em>`;\n }\n codespan(text) {\n return `<code>${text}</code>`;\n }\n br() {\n return '<br>';\n }\n del(text) {\n return `<del>${text}</del>`;\n }\n link(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n }\n image(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `<img src=\"${href}\" alt=\"${text}\"`;\n if (title) {\n out += ` title=\"${title}\"`;\n }\n out += '>';\n return out;\n }\n text(text) {\n return text;\n }\n }\n\n /**\n * TextRenderer\n * returns only the textual part of the token\n */\n class _TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n em(text) {\n return text;\n }\n codespan(text) {\n return text;\n }\n del(text) {\n return text;\n }\n html(text) {\n return text;\n }\n text(text) {\n return text;\n }\n link(href, title, text) {\n return '' + text;\n }\n image(href, title, text) {\n return '' + text;\n }\n br() {\n return '';\n }\n }\n\n /**\n * Parsing & Compiling\n */\n class _Parser {\n options;\n renderer;\n textRenderer;\n constructor(options) {\n this.options = options || exports.defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n }\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const genericToken = token;\n const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(genericToken.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n const headingToken = token;\n out += this.renderer.heading(this.parseInline(headingToken.tokens), headingToken.depth, unescape(this.parseInline(headingToken.tokens, this.textRenderer)));\n continue;\n }\n case 'code': {\n const codeToken = token;\n out += this.renderer.code(codeToken.text, codeToken.lang, !!codeToken.escaped);\n continue;\n }\n case 'table': {\n const tableToken = token;\n let header = '';\n // header\n let cell = '';\n for (let j = 0; j < tableToken.header.length; j++) {\n cell += this.renderer.tablecell(this.parseInline(tableToken.header[j].tokens), { header: true, align: tableToken.align[j] });\n }\n header += this.renderer.tablerow(cell);\n let body = '';\n for (let j = 0; j < tableToken.rows.length; j++) {\n const row = tableToken.rows[j];\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k].tokens), { header: false, align: tableToken.align[k] });\n }\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n const blockquoteToken = token;\n const body = this.parse(blockquoteToken.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n const listToken = token;\n const ordered = listToken.ordered;\n const start = listToken.start;\n const loose = listToken.loose;\n let body = '';\n for (let j = 0; j < listToken.items.length; j++) {\n const item = listToken.items[j];\n const checked = item.checked;\n const task = item.task;\n let itemBody = '';\n if (item.task) {\n const checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox + ' '\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n const htmlToken = token;\n out += this.renderer.html(htmlToken.text, htmlToken.block);\n continue;\n }\n case 'paragraph': {\n const paragraphToken = token;\n out += this.renderer.paragraph(this.parseInline(paragraphToken.tokens));\n continue;\n }\n case 'text': {\n let textToken = token;\n let body = textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text;\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i];\n body += '\\n' + (textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'escape': {\n const escapeToken = token;\n out += renderer.text(escapeToken.text);\n break;\n }\n case 'html': {\n const tagToken = token;\n out += renderer.html(tagToken.text);\n break;\n }\n case 'link': {\n const linkToken = token;\n out += renderer.link(linkToken.href, linkToken.title, this.parseInline(linkToken.tokens, renderer));\n break;\n }\n case 'image': {\n const imageToken = token;\n out += renderer.image(imageToken.href, imageToken.title, imageToken.text);\n break;\n }\n case 'strong': {\n const strongToken = token;\n out += renderer.strong(this.parseInline(strongToken.tokens, renderer));\n break;\n }\n case 'em': {\n const emToken = token;\n out += renderer.em(this.parseInline(emToken.tokens, renderer));\n break;\n }\n case 'codespan': {\n const codespanToken = token;\n out += renderer.codespan(codespanToken.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n const delToken = token;\n out += renderer.del(this.parseInline(delToken.tokens, renderer));\n break;\n }\n case 'text': {\n const textToken = token;\n out += renderer.text(textToken.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n }\n\n class _Hooks {\n options;\n constructor(options) {\n this.options = options || exports.defaults;\n }\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens'\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens) {\n return tokens;\n }\n }\n\n class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n Parser = _Parser;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n const tokens = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens, callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n #parseMarkdown(lexer, parser) {\n return (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n // Show warning if an extension set async to true but the parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n if (!opt.silent) {\n console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n }\n opt.async = true;\n }\n const throwError = this.#onError(!!opt.silent, !!opt.async);\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n }\n #onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '<p>An error occurred:</p><pre>'\n + escape$1(e.message + '', true)\n + '</pre>';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n }\n\n const markedInstance = new Marked();\n function marked(src, opt) {\n return markedInstance.parse(src, opt);\n }\n /**\n * Sets the default options.\n *\n * @param options Hash of options\n */\n marked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n /**\n * Gets the original marked default options.\n */\n marked.getDefaults = _getDefaults;\n marked.defaults = exports.defaults;\n /**\n * Use Extension\n */\n marked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n /**\n * Run callback for every token\n */\n marked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n };\n /**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\n marked.parseInline = markedInstance.parseInline;\n /**\n * Expose\n */\n marked.Parser = _Parser;\n marked.parser = _Parser.parse;\n marked.Renderer = _Renderer;\n marked.TextRenderer = _TextRenderer;\n marked.Lexer = _Lexer;\n marked.lexer = _Lexer.lex;\n marked.Tokenizer = _Tokenizer;\n marked.Hooks = _Hooks;\n marked.parse = marked;\n const options = marked.options;\n const setOptions = marked.setOptions;\n const use = marked.use;\n const walkTokens = marked.walkTokens;\n const parseInline = marked.parseInline;\n const parse = marked;\n const parser = _Parser.parse;\n const lexer = _Lexer.lex;\n\n exports.Hooks = _Hooks;\n exports.Lexer = _Lexer;\n exports.Marked = Marked;\n exports.Parser = _Parser;\n exports.Renderer = _Renderer;\n exports.TextRenderer = _TextRenderer;\n exports.Tokenizer = _Tokenizer;\n exports.getDefaults = _getDefaults;\n exports.lexer = lexer;\n exports.marked = marked;\n exports.options = options;\n exports.parse = parse;\n exports.parseInline = parseInline;\n exports.parser = parser;\n exports.setOptions = setOptions;\n exports.use = use;\n exports.walkTokens = walkTokens;\n\n}));\n//# sourceMappingURL=marked.umd.js.map\n","import {marked} from 'marked';\n\nconst toInlinePlainText = (textWithHtml: string): string => {\n const withoutHtmlTags = textWithHtml.replace(/<[^>]*>/g, ' ');\n const withCollapsedWhitespaces = withoutHtmlTags.replace(/\\s{2,}/g, ' ');\n\n return withCollapsedWhitespaces.trim();\n};\n\nconst unclosedElement = /(\\*{1,3}|`)($|\\w[\\w\\s]*$)/;\n\nconst completeUnclosedElement = (text: string) => {\n const match = unclosedElement.exec(text);\n if (match) {\n const symbol = match[1];\n\n const replacements: Record<string, string> = {\n '***':\n '<strong part=\"answer-strong\"><em part=\"answer-emphasis\">$2</em></strong>',\n '**': '<strong part=\"answer-strong\">$2</strong>',\n '*': '<em part=\"answer-emphasis\">$2</em>',\n '`': '<code part=\"answer-inline-code\">$2</code>',\n };\n\n return text.replace(unclosedElement, replacements[symbol]);\n }\n\n return text;\n};\n\nconst escapeHtml = (text: string) => {\n return text\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;');\n};\n\nconst customRenderer = {\n blockquote(quote: string) {\n return `<blockquote part=\"answer-quote-block\">${quote}</blockquote>`;\n },\n\n code(code: string) {\n return `<pre part=\"answer-code-block\"><code>${escapeHtml(code)}</code></pre>`;\n },\n\n codespan(text: string) {\n return `<code part=\"answer-inline-code\">${text}</code>`;\n },\n\n em(text: string) {\n return `<em part=\"answer-emphasis\">${text}</em>`;\n },\n\n heading(text: string, level: number) {\n const plainText = toInlinePlainText(text);\n\n return `<div part=\"answer-heading-${level}\" aria-label=\"${plainText}\">${text}</div>`;\n },\n\n html(text: string) {\n return escapeHtml(text);\n },\n\n list(body: string, ordered: boolean, start: number | '') {\n const type = ordered ? 'ol' : 'ul';\n const part = ordered ? 'answer-ordered-list' : 'answer-unordered-list';\n\n const tag =\n ordered && start !== 1\n ? `<${type} part=\"${part}\" start=\"${start}\">`\n : `<${type} part=\"${part}\">`;\n\n return `${tag}${body}</${type}>`;\n },\n\n /**\n * Custom Marked renderer to remove wrapping `<p>` element around list item content.\n * @param text The element text content.\n * @returns The list item element to render.\n */\n listitem(text: string) {\n const unwrappedText = text\n .replace(/^<p[^>]*>/, '')\n .replace(/<\\/p>\\n?$/, '');\n const withClosedElement = completeUnclosedElement(unwrappedText);\n return `<li part=\"answer-list-item\">${withClosedElement}</li>`;\n },\n\n paragraph(text: string) {\n return `<p part=\"answer-paragraph\">${text}</p>`;\n },\n\n strong(text: string) {\n return `<strong part=\"answer-strong\">${text}</strong>`;\n },\n\n /**\n * Custom Marked renderer to wrap `<table>` element in a scrolling container.\n * @param header The table header content.\n * @param body The table body content.\n * @returns The element to render.\n */\n table(header: string, body: string) {\n return `<div part=\"answer-table-container\" class=\"scrollable-table\"><table part=\"answer-table\"><thead>${header}</thead><tbody>${body}</tbody></table></div>`;\n },\n\n tablecell(\n content: string,\n flags: {header: boolean; align: 'center' | 'left' | 'right' | null}\n ) {\n const type = flags.header ? 'th' : 'td';\n const part = flags.header ? 'answer-table-header' : 'answer-table-content';\n const tag = flags.align\n ? `<${type} part=\"${part}\" align=\"${flags.align}\">`\n : `<${type} part=\"${part}\">`;\n\n return `${tag}${content}</${type}>`;\n },\n\n /**\n * Custom Marked renderer to complete unclosed inline elements such as bold, italic, and code.\n * @param text The text content.\n * @returns The corrected text content.\n */\n text(text: string) {\n return completeUnclosedElement(text);\n },\n};\n\nexport const transformMarkdownToHtml = (text: string): string => {\n return marked.use({renderer: customRenderer}).parse(text) as string;\n};\n","import {FunctionalComponent, h} from '@stencil/core';\nimport DOMPurify from 'dompurify';\nimport {transformMarkdownToHtml} from './markdown-utils';\n\ninterface GeneratedMarkdownContentProps {\n answer?: string;\n isStreaming: boolean;\n}\n\nexport const GeneratedMarkdownContent: FunctionalComponent<\n GeneratedMarkdownContentProps\n> = (props) => {\n const answerAsHtml = DOMPurify.sanitize(\n transformMarkdownToHtml(props.answer ?? ''),\n {ADD_ATTR: ['part']}\n );\n\n return (\n <div\n part=\"generated-text\"\n class={`text-on-background mb-0 ${props.isStreaming ? 'cursor' : ''}`}\n innerHTML={answerAsHtml}\n />\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\n\ninterface GeneratedTextContentProps {\n answer?: string;\n isStreaming: boolean;\n}\n\nexport const GeneratedTextContent: FunctionalComponent<\n GeneratedTextContentProps\n> = (props) => {\n return (\n <p\n part=\"generated-text\"\n class={`text-on-background mb-0 whitespace-pre-wrap ${\n props.isStreaming ? 'cursor' : ''\n }`}\n >\n {props.answer}\n </p>\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {GeneratedMarkdownContent} from './generated-content/generated-markdown-content';\nimport {GeneratedTextContent} from './generated-content/generated-text-content';\n\ninterface GeneratedContentContainerProps {\n answer?: string;\n answerContentFormat?: string;\n isStreaming: boolean;\n}\n\nexport const GeneratedContentContainer: FunctionalComponent<\n GeneratedContentContainerProps\n> = (props, children) => {\n return (\n <div part=\"generated-container\" class=\"mt-6\">\n {props.answerContentFormat === 'text/markdown' ? (\n <GeneratedMarkdownContent\n answer={props.answer}\n isStreaming={props.isStreaming}\n />\n ) : (\n <GeneratedTextContent\n answer={props.answer}\n isStreaming={props.isStreaming}\n />\n )}\n <div class=\"footer mt-6\">{children}</div>\n </div>\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {Button} from '../stencil-button';\n\ninterface RetryPromptProps {\n message: string;\n buttonLabel: string;\n onClick: () => void;\n}\n\nexport const RetryPrompt: FunctionalComponent<RetryPromptProps> = (props) => (\n <div part=\"retry-container\" class=\"mt-4\">\n <div class=\"text-neutral-dark mx-auto text-center\">{props.message}</div>\n <Button\n class=\"mx-auto mt-4 block px-4 py-2\"\n style=\"outline-primary\"\n onClick={props.onClick}\n >\n {props.buttonLabel}\n </Button>\n </div>\n);\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport ArrowBottomIcon from '../../../images/arrow-bottom-rounded.svg';\nimport ArrowTopIcon from '../../../images/arrow-top-rounded.svg';\nimport {Button} from '../stencil-button';\n\ninterface ShowButtonProps {\n i18n: i18n;\n isCollapsed: boolean;\n onClick: () => void;\n}\n\nexport const ShowButton: FunctionalComponent<ShowButtonProps> = (props) => (\n <Button\n style=\"text-primary\"\n part=\"answer-show-button\"\n class=\"hidden items-center hover:bg-transparent\"\n onClick={() => props.onClick()}\n >\n <div class=\"text-base font-light\">\n {props.isCollapsed\n ? props.i18n.t('show-more')\n : props.i18n.t('show-less')}\n </div>\n <atomic-icon\n part=\"answer-show-icon\"\n class=\"ml-2 w-3.5\"\n icon={props.isCollapsed ? ArrowBottomIcon : ArrowTopIcon}\n ></atomic-icon>\n </Button>\n);\n","import {FunctionalComponent, h} from '@stencil/core';\n\ninterface SourceCitationsProps {\n label: string;\n isVisible: boolean;\n}\n\nexport const SourceCitations: FunctionalComponent<SourceCitationsProps> = (\n props,\n children\n) =>\n props.isVisible ? (\n <div class=\"source-citations\">\n <p part=\"citations-label\" class=\"text-neutral-dark mb-2 shrink-0\">\n {props.label}\n </p>\n <ol class=\"citations-container flex list-none flex-wrap items-center gap-2\">\n {children}\n </ol>\n </div>\n ) : null;\n","import type {\n GeneratedAnswer,\n GeneratedAnswerCitation,\n GeneratedAnswerState,\n InteractiveCitation,\n} from '@coveo/headless';\nimport { FunctionalComponent, h } from '@stencil/core';\nimport type { i18n } from 'i18next';\nimport { Heading } from '../stencil-heading';\nimport { Switch } from '../switch';\nimport { CopyButton } from './copy-button';\nimport { FeedbackButton } from './feedback-button';\nimport { GeneratedContentContainer } from './generated-content-container';\nimport { RetryPrompt } from './retry-prompt';\nimport { ShowButton } from './show-button';\nimport { SourceCitations } from './source-citations';\n\ninterface GeneratedAnswerRendererProps {\n collapsible?: boolean;\n hasNoAnswerGenerated: boolean;\n hasCustomNoAnswerMessage: boolean;\n onShowButtonClick: () => void;\n onClickDislike: () => void;\n onClickLike: () => void;\n onCopyToClipboard: () => Promise<void>;\n disableCitationAnchoring?: boolean;\n copied: boolean;\n i18n: i18n;\n copyError: boolean;\n generatedAnswer: GeneratedAnswer;\n generatedAnswerState: GeneratedAnswerState;\n withToggle?: boolean;\n isAnswerVisible: boolean;\n hasRetryableError: boolean;\n hasClipboard: boolean;\n buildInteractiveCitationForCitation: (citation: GeneratedAnswerCitation) => InteractiveCitation;\n}\n\nexport const GeneratedAnswerRenderer: FunctionalComponent<GeneratedAnswerRendererProps> = ({\n onShowButtonClick,\n onClickDislike,\n onClickLike,\n onCopyToClipboard,\n collapsible,\n disableCitationAnchoring,\n copied,\n i18n,\n copyError,\n generatedAnswer,\n generatedAnswerState,\n withToggle,\n isAnswerVisible,\n hasRetryableError,\n hasClipboard,\n hasNoAnswerGenerated,\n hasCustomNoAnswerMessage,\n buildInteractiveCitationForCitation\n}) => {\n if (hasNoAnswerGenerated) {\n return generatedAnswerState?.cannotAnswer && hasCustomNoAnswerMessage ? (\n <GeneratedAnswerWrapper>\n <GeneratedAnswerNoAnswerMessage i18n={i18n}>\n <slot name=\"no-answer-message\"></slot>\n </GeneratedAnswerNoAnswerMessage>\n </GeneratedAnswerWrapper>\n ) : null;\n }\n return <GeneratedAnswerWrapper>\n <div part=\"generated-content\">\n <GeneratedAnswerHeader\n i18n={i18n}\n isAnswerVisible={!!isAnswerVisible}\n withToggle={withToggle}\n onToggle={(checked) => {\n checked ? generatedAnswer?.show() : generatedAnswer?.hide();\n }} />\n\n {hasRetryableError && isAnswerVisible ? (\n <GeneratedAnswerRetryPrompt\n i18n={i18n}\n onRetry={() => generatedAnswer?.retry()} />\n ) : null}\n\n {!hasRetryableError && isAnswerVisible ? (\n <GeneratedAnswerContent\n answer={generatedAnswerState?.answer}\n answerContentFormat={generatedAnswerState?.answerContentFormat}\n citations={generatedAnswerState?.citations}\n i18n={i18n}\n isStreaming={generatedAnswerState?.isStreaming}\n copied={copied}\n copyError={copyError}\n generatedAnswerState={generatedAnswerState}\n withToggle={withToggle}\n onClickDislike={onClickDislike}\n onClickLike={onClickLike}\n onCopyToClipboard={onCopyToClipboard}\n hasClipboard={hasClipboard}\n disableCitationAnchoring={disableCitationAnchoring}\n buildInteractiveCitationForCitation={buildInteractiveCitationForCitation}\n generatedAnswer={generatedAnswer}\n />\n ) : null}\n\n {!hasRetryableError && isAnswerVisible && (\n <GeneratedAnswerFooter\n collapsible={collapsible}\n expanded={generatedAnswerState?.expanded}\n i18n={i18n}\n isStreaming={generatedAnswerState?.isStreaming}\n onShowButtonClick={onShowButtonClick}\n >\n <GeneratedAnswerDisclaimer\n isStreaming={generatedAnswerState?.isStreaming}\n i18n={i18n}\n >\n <slot name=\"disclaimer\" slot=\"disclaimer\">\n {i18n.t('generated-answer-disclaimer')}\n </slot>\n </GeneratedAnswerDisclaimer>\n </GeneratedAnswerFooter>\n )}\n </div>\n </GeneratedAnswerWrapper>;\n}\n\nconst GeneratedAnswerWrapper: FunctionalComponent<{\n contentClasses?: string;\n}> = ({ contentClasses }, children) => {\n const classes = contentClasses ||\n 'mx-auto mt-0 mb-4 border border-neutral shadow-lg p-6 bg-background rounded-lg p-6 text-on-background';\n\n return (\n <div>\n <aside class={classes} part=\"container\">\n <article>{children}</article>\n </aside>\n </div>\n );\n};\n\nconst GeneratedAnswerHeader: FunctionalComponent<{\n i18n: i18n;\n isAnswerVisible: boolean;\n withToggle?: boolean;\n onToggle: (checked: boolean) => void;\n}> = ({ i18n, isAnswerVisible, withToggle, onToggle }) => {\n const toggleTooltip = isAnswerVisible\n ? i18n.t('generated-answer-toggle-on')\n : i18n.t('generated-answer-toggle-off');\n return (\n <div class=\"flex items-center\">\n <Heading\n level={0}\n part=\"header-label\"\n class=\"text-primary bg-primary-background inline-block rounded-md px-2.5 py-2 font-medium\"\n >\n {i18n.t('generated-answer-title')}\n </Heading>\n <div class=\"ml-auto flex h-9 items-center\">\n <Switch\n part=\"toggle\"\n checked={isAnswerVisible}\n onToggle={onToggle}\n ariaLabel={i18n.t('generated-answer-title')}\n title={toggleTooltip}\n withToggle={withToggle}\n ></Switch>\n </div>\n </div>\n );\n};\n\nconst GeneratedAnswerFeedbackAndCopyButtons: FunctionalComponent<{\n copied: boolean;\n copyError: boolean;\n disliked?: boolean;\n hasClipboard: boolean;\n i18n: i18n;\n isStreaming?: boolean;\n liked?: boolean;\n withToggle?: boolean;\n onClickDislike: () => void;\n onClickLike: () => void;\n onCopyToClipboard: () => Promise<void>;\n}> = ({\n copied,\n copyError,\n disliked,\n hasClipboard,\n i18n,\n isStreaming,\n liked,\n withToggle,\n onClickDislike,\n onClickLike,\n onCopyToClipboard,\n}) => {\n const containerClasses = [\n 'feedback-buttons',\n 'flex',\n 'h-9',\n 'absolute',\n 'top-6',\n 'shrink-0',\n 'gap-2',\n withToggle ? 'right-20' : 'right-6',\n ].join(' ');\n\n if (isStreaming) {\n return null;\n }\n\n const copyToClipboardTooltip = copyError\n ? i18n.t('failed-to-copy-generated-answer')\n : !copied\n ? i18n.t('copy-generated-answer')\n : i18n.t('generated-answer-copied');\n\n return (\n <div class={containerClasses}>\n <FeedbackButton\n title={i18n.t('this-answer-was-helpful')}\n variant=\"like\"\n active={!!liked}\n onClick={onClickLike}\n />\n <FeedbackButton\n title={i18n.t('this-answer-was-not-helpful')}\n variant=\"dislike\"\n active={!!disliked}\n onClick={onClickDislike}\n />\n {hasClipboard ? (\n <CopyButton\n title={copyToClipboardTooltip}\n isCopied={copied}\n error={copyError}\n onClick={onCopyToClipboard}\n />\n ) : null}\n </div>\n );\n };\n\nconst GeneratedAnswerCitations: FunctionalComponent<{\n citations?: GeneratedAnswerCitation[];\n disableCitationAnchoring?: boolean;\n buildInteractiveCitation?: (citation: GeneratedAnswerCitation) => InteractiveCitation;\n onLogCitationHover?: (citationId: string, citationHoverTimeMs: number) => void;\n i18n?: i18n;\n}> = ({\n citations,\n disableCitationAnchoring,\n buildInteractiveCitation,\n onLogCitationHover,\n i18n,\n}) => {\n if (!citations?.length) {\n return [];\n }\n\n const getCitation = (citation: GeneratedAnswerCitation) => {\n const { title } = citation;\n\n return title.trim() !== ''\n ? citation\n : { ...citation, title: i18n?.t ? i18n.t('no-title') : 'No title' };\n };\n\n return citations.map((citation: GeneratedAnswerCitation, index: number) => {\n const interactiveCitation = buildInteractiveCitation?.(citation);\n return (\n <li key={citation.id} class=\"max-w-full\">\n <atomic-citation\n citation={getCitation(citation)}\n index={index}\n sendHoverEndEvent={(citationHoverTimeMs: number) => {\n onLogCitationHover?.(citation.id, citationHoverTimeMs);\n }}\n interactiveCitation={interactiveCitation!}\n disableCitationAnchoring={disableCitationAnchoring}\n exportparts=\"citation,citation-popover\"\n />\n </li>\n );\n });\n };\n\nconst GeneratedAnswerDisclaimer: FunctionalComponent<{\n isStreaming?: boolean;\n i18n: i18n;\n}> = ({ isStreaming, i18n }, children) => {\n if (isStreaming) {\n return null;\n }\n return (\n <div class=\"text-neutral-dark text-xs/[1rem]\">\n {children || i18n.t('generated-answer-disclaimer')}\n </div>\n );\n};\n\nconst GeneratedAnswerFooter: FunctionalComponent<{\n collapsible?: boolean;\n expanded?: boolean;\n i18n: i18n;\n isStreaming?: boolean;\n onShowButtonClick?: () => void;\n}> = ({ collapsible, expanded, i18n, isStreaming, onShowButtonClick }, children) => {\n const showGeneratingLabel = collapsible && isStreaming;\n const showButton = collapsible && !isStreaming;\n\n return (\n <div part=\"generated-answer-footer\" class=\"mt-6 flex justify-end\">\n {showGeneratingLabel && (\n <div\n part=\"is-generating\"\n class=\"text-primary hidden text-base font-light\"\n >\n {i18n.t('generating-answer')}...\n </div>\n )}\n {showButton && onShowButtonClick && (\n <ShowButton\n i18n={i18n}\n onClick={onShowButtonClick}\n isCollapsed={!expanded}\n ></ShowButton>\n )}\n {children}\n </div>\n );\n};\n\nconst GeneratedAnswerRetryPrompt: FunctionalComponent<{\n i18n: i18n;\n onRetry: () => void;\n}> = ({ i18n, onRetry }) => {\n return (\n <RetryPrompt\n onClick={onRetry}\n buttonLabel={i18n.t('retry')}\n message={i18n.t('retry-stream-message')}\n />\n );\n};\n\nconst GeneratedAnswerContent: FunctionalComponent<{\n copied: boolean;\n copyError: boolean;\n generatedAnswerState: GeneratedAnswerState;\n withToggle?: boolean;\n onClickDislike: () => void;\n onClickLike: () => void;\n onCopyToClipboard: () => Promise<void>;\n hasClipboard: boolean;\n disableCitationAnchoring?: boolean;\n buildInteractiveCitationForCitation: (citation: any) => InteractiveCitation;\n generatedAnswer: GeneratedAnswer;\n answer?: string;\n answerContentFormat?: string;\n citations?: GeneratedAnswerCitation[];\n i18n: i18n;\n isStreaming?: boolean;\n}> = ({ answer, answerContentFormat, citations, i18n, isStreaming, copied, copyError, generatedAnswerState, withToggle, onClickDislike, onClickLike, onCopyToClipboard, hasClipboard, disableCitationAnchoring, buildInteractiveCitationForCitation, generatedAnswer }) => {\n return (\n <GeneratedContentContainer\n answer={answer}\n answerContentFormat={answerContentFormat}\n isStreaming={!!isStreaming}\n >\n <GeneratedAnswerFeedbackAndCopyButtons\n copied={copied}\n copyError={copyError}\n disliked={generatedAnswerState?.disliked}\n hasClipboard={hasClipboard}\n i18n={i18n}\n isStreaming={generatedAnswerState?.isStreaming}\n liked={generatedAnswerState?.liked}\n withToggle={withToggle}\n onClickDislike={onClickDislike}\n onClickLike={onClickLike}\n onCopyToClipboard={onCopyToClipboard} />\n <SourceCitations\n label={i18n.t('citations')}\n isVisible={!!citations?.length}\n >\n <GeneratedAnswerCitations\n citations={generatedAnswerState.citations}\n disableCitationAnchoring={disableCitationAnchoring}\n buildInteractiveCitation={buildInteractiveCitationForCitation}\n onLogCitationHover={(citationId, citationHoverTimeMs) => {\n generatedAnswer?.logCitationHover?.(citationId, citationHoverTimeMs);\n }}\n i18n={i18n} />\n </SourceCitations>\n </GeneratedContentContainer>\n );\n};\n\nconst GeneratedAnswerNoAnswerMessage: FunctionalComponent<{\n i18n: i18n;\n}> = ({ i18n }, children) => {\n return (\n <div part=\"generated-content\">\n <div class=\"flex items-center\">\n <Heading\n level={0}\n part=\"header-label\"\n class=\"text-primary bg-primary-background inline-block rounded-md px-2.5 py-2 font-medium\"\n >\n {i18n.t('generated-answer-title')}\n </Heading>\n </div>\n <div part=\"generated-container\" class=\"mt-6 break-words\">\n {children}\n </div>\n </div>\n );\n};"],"mappings":"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","ignoreList":[]}