@genexus/genexus-ide-ui 1.0.56 → 1.0.57

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 (320) hide show
  1. package/dist/cjs/{code-render-43aa3faf.js → code-render-d66a13e2.js} +12 -5
  2. package/dist/cjs/code-render-d66a13e2.js.map +1 -0
  3. package/dist/cjs/{common-f571dfc1.js → common-f7361979.js} +2 -2
  4. package/dist/cjs/{common-f571dfc1.js.map → common-f7361979.js.map} +1 -1
  5. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  6. package/dist/cjs/gx-ide-ai-assistant.cjs.entry.js +1 -1
  7. package/dist/cjs/gx-ide-ai-message.cjs.entry.js +2 -2
  8. package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js +3 -3
  9. package/dist/cjs/gx-ide-bpm-assign-roles.cjs.entry.js +1 -1
  10. package/dist/cjs/gx-ide-bpm-export-xpdl.cjs.entry.js +1 -1
  11. package/dist/cjs/gx-ide-bpm-import-files.cjs.entry.js +2 -2
  12. package/dist/cjs/gx-ide-bpm-import-gxpm.cjs.entry.js +1 -1
  13. package/dist/cjs/gx-ide-bpm-objects-selector.cjs.entry.js +2 -2
  14. package/dist/cjs/gx-ide-bpm-timer-duration.cjs.entry.js +1 -1
  15. package/dist/cjs/gx-ide-card.cjs.entry.js +1 -1
  16. package/dist/cjs/gx-ide-chat-container.cjs.entry.js +3 -3
  17. package/dist/cjs/gx-ide-chat-container.cjs.entry.js.map +1 -1
  18. package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js +1 -1
  19. package/dist/cjs/gx-ide-container_2.cjs.entry.js +1 -1
  20. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +1 -1
  21. package/dist/cjs/gx-ide-current-user-info.cjs.entry.js +1 -1
  22. package/dist/cjs/gx-ide-dashboard-home.cjs.entry.js +2 -2
  23. package/dist/cjs/gx-ide-data-selector.cjs.entry.js +1 -1
  24. package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js +1 -1
  25. package/dist/cjs/gx-ide-design-import.cjs.entry.js +1 -1
  26. package/dist/cjs/gx-ide-directory-selector.cjs.entry.js +1 -1
  27. package/dist/cjs/gx-ide-edit-module-server.cjs.entry.js +1 -1
  28. package/dist/cjs/gx-ide-empty-state.cjs.entry.js +1 -1
  29. package/dist/cjs/gx-ide-entity-selector.cjs.entry.js +1 -1
  30. package/dist/cjs/gx-ide-gam-installation-settings.cjs.entry.js +1 -1
  31. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +1 -1
  32. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +1 -1
  33. package/dist/cjs/gx-ide-list-selector_2.cjs.entry.js +1 -1
  34. package/dist/cjs/gx-ide-loader.cjs.entry.js +1 -1
  35. package/dist/cjs/gx-ide-manage-module-references-v2.cjs.entry.js +2 -2
  36. package/dist/cjs/gx-ide-manage-module-references.cjs.entry.js +2 -2
  37. package/dist/cjs/gx-ide-navigation-report.cjs.entry.js +1 -1
  38. package/dist/cjs/gx-ide-new-environment.cjs.entry.js +3 -3
  39. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +3 -3
  40. package/dist/cjs/gx-ide-new-object.cjs.entry.js +1 -1
  41. package/dist/cjs/gx-ide-object-selector.cjs.entry.js +2 -2
  42. package/dist/cjs/gx-ide-references.cjs.entry.js +2 -2
  43. package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js +5 -16
  44. package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js.map +1 -1
  45. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js +1 -1
  46. package/dist/cjs/gx-ide-select-user-team.cjs.entry.js +1 -1
  47. package/dist/cjs/gx-ide-share-kb.cjs.entry.js +1 -1
  48. package/dist/cjs/gx-ide-sign-in-team.cjs.entry.js +1 -1
  49. package/dist/cjs/gx-ide-sign-in.cjs.entry.js +1 -1
  50. package/dist/cjs/gx-ide-splash.cjs.entry.js +1 -1
  51. package/dist/cjs/gx-ide-start-page.cjs.entry.js +1 -1
  52. package/dist/cjs/gx-ide-status-buttons.cjs.entry.js +1 -1
  53. package/dist/cjs/gx-ide-switch-panel.cjs.entry.js +1 -1
  54. package/dist/cjs/gx-ide-switcher.cjs.entry.js +1 -1
  55. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +3 -3
  56. package/dist/cjs/gx-ide-team-dev-select-recent-comment.cjs.entry.js +2 -2
  57. package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js +1 -1
  58. package/dist/cjs/gx-ide-team-dev-update-to-revision.cjs.entry.js +1 -1
  59. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +3 -3
  60. package/dist/cjs/gx-ide-template.cjs.entry.js +1 -1
  61. package/dist/cjs/gx-ide-test.cjs.entry.js +1 -1
  62. package/dist/cjs/gx-ide-top-bar.cjs.entry.js +1 -1
  63. package/dist/cjs/gx-ide-welcome-page.cjs.entry.js +1 -1
  64. package/dist/cjs/gx-ide-wf-settings.cjs.entry.js +1 -1
  65. package/dist/cjs/gx-ide-ww-attributes.cjs.entry.js +1 -1
  66. package/dist/cjs/gx-ide-ww-images.cjs.entry.js +3 -3
  67. package/dist/cjs/{helpers-03ef57a7.js → helpers-30f109a4.js} +2 -2
  68. package/dist/cjs/{helpers-03ef57a7.js.map → helpers-30f109a4.js.map} +1 -1
  69. package/dist/cjs/{index-caaa95cf.js → index-e227aefb.js} +34 -4
  70. package/dist/cjs/index-e227aefb.js.map +1 -0
  71. package/dist/cjs/index.cjs.js +2 -2
  72. package/dist/cjs/loader.cjs.js +1 -1
  73. package/dist/cjs/{render-combo-items-878e8852.js → render-combo-items-e774f796.js} +2 -2
  74. package/dist/cjs/{render-combo-items-878e8852.js.map → render-combo-items-e774f796.js.map} +1 -1
  75. package/dist/cjs/{render-list-item-c71032e3.js → render-list-item-7c6449c4.js} +2 -2
  76. package/dist/cjs/{render-list-item-c71032e3.js.map → render-list-item-7c6449c4.js.map} +1 -1
  77. package/dist/cjs/{render-suggest-4c515c9d.js → render-suggest-4a569cbe.js} +2 -2
  78. package/dist/cjs/{render-suggest-4c515c9d.js.map → render-suggest-4a569cbe.js.map} +1 -1
  79. package/dist/collection/components/_helpers/chat-container/chat-container.css +34 -3
  80. package/dist/collection/components/_helpers/chat-container/chat-container.js +1 -1
  81. package/dist/collection/components/_helpers/chat-container/chat-container.js.map +1 -1
  82. package/dist/collection/components/_helpers/chat-container/code-render.js +4 -3
  83. package/dist/collection/components/_helpers/chat-container/code-render.js.map +1 -1
  84. package/dist/collection/showcase/chat-container/callbacks.js +2 -13
  85. package/dist/collection/showcase/chat-container/callbacks.js.map +1 -1
  86. package/dist/collection/showcase/chat-container/chat.showcase.js +1 -1
  87. package/dist/collection/showcase/chat-container/chat.showcase.js.map +1 -1
  88. package/dist/components/chat-container.js +2 -2
  89. package/dist/components/chat-container.js.map +1 -1
  90. package/dist/components/code-render.js +10 -3
  91. package/dist/components/code-render.js.map +1 -1
  92. package/dist/components/gx-ide-sc-chat-container.js +3 -14
  93. package/dist/components/gx-ide-sc-chat-container.js.map +1 -1
  94. package/dist/components/index.js +0 -1
  95. package/dist/components/index.js.map +1 -1
  96. package/dist/esm/{code-render-9ccc8dac.js → code-render-67c13139.js} +12 -5
  97. package/dist/esm/code-render-67c13139.js.map +1 -0
  98. package/dist/esm/{common-c15a0328.js → common-2a1e4e67.js} +2 -2
  99. package/dist/esm/{common-c15a0328.js.map → common-2a1e4e67.js.map} +1 -1
  100. package/dist/esm/genexus-ide-ui.js +2 -2
  101. package/dist/esm/gx-ide-ai-assistant.entry.js +1 -1
  102. package/dist/esm/gx-ide-ai-message.entry.js +2 -2
  103. package/dist/esm/gx-ide-bpm-app-declaration.entry.js +3 -3
  104. package/dist/esm/gx-ide-bpm-assign-roles.entry.js +1 -1
  105. package/dist/esm/gx-ide-bpm-export-xpdl.entry.js +1 -1
  106. package/dist/esm/gx-ide-bpm-import-files.entry.js +2 -2
  107. package/dist/esm/gx-ide-bpm-import-gxpm.entry.js +1 -1
  108. package/dist/esm/gx-ide-bpm-objects-selector.entry.js +2 -2
  109. package/dist/esm/gx-ide-bpm-timer-duration.entry.js +1 -1
  110. package/dist/esm/gx-ide-card.entry.js +1 -1
  111. package/dist/esm/gx-ide-chat-container.entry.js +3 -3
  112. package/dist/esm/gx-ide-chat-container.entry.js.map +1 -1
  113. package/dist/esm/gx-ide-connect-gx-server.entry.js +1 -1
  114. package/dist/esm/gx-ide-container_2.entry.js +1 -1
  115. package/dist/esm/gx-ide-create-kb-from-server.entry.js +1 -1
  116. package/dist/esm/gx-ide-current-user-info.entry.js +1 -1
  117. package/dist/esm/gx-ide-dashboard-home.entry.js +2 -2
  118. package/dist/esm/gx-ide-data-selector.entry.js +1 -1
  119. package/dist/esm/gx-ide-data-type-selector.entry.js +1 -1
  120. package/dist/esm/gx-ide-design-import.entry.js +1 -1
  121. package/dist/esm/gx-ide-directory-selector.entry.js +1 -1
  122. package/dist/esm/gx-ide-edit-module-server.entry.js +1 -1
  123. package/dist/esm/gx-ide-empty-state.entry.js +1 -1
  124. package/dist/esm/gx-ide-entity-selector.entry.js +1 -1
  125. package/dist/esm/gx-ide-gam-installation-settings.entry.js +1 -1
  126. package/dist/esm/gx-ide-kb-manager-export.entry.js +1 -1
  127. package/dist/esm/gx-ide-kb-manager-import.entry.js +1 -1
  128. package/dist/esm/gx-ide-list-selector_2.entry.js +1 -1
  129. package/dist/esm/gx-ide-loader.entry.js +1 -1
  130. package/dist/esm/gx-ide-manage-module-references-v2.entry.js +2 -2
  131. package/dist/esm/gx-ide-manage-module-references.entry.js +2 -2
  132. package/dist/esm/gx-ide-navigation-report.entry.js +1 -1
  133. package/dist/esm/gx-ide-new-environment.entry.js +3 -3
  134. package/dist/esm/gx-ide-new-kb.entry.js +3 -3
  135. package/dist/esm/gx-ide-new-object.entry.js +1 -1
  136. package/dist/esm/gx-ide-object-selector.entry.js +2 -2
  137. package/dist/esm/gx-ide-references.entry.js +2 -2
  138. package/dist/esm/gx-ide-sc-chat-container.entry.js +5 -16
  139. package/dist/esm/gx-ide-sc-chat-container.entry.js.map +1 -1
  140. package/dist/esm/gx-ide-select-kb-items.entry.js +1 -1
  141. package/dist/esm/gx-ide-select-user-team.entry.js +1 -1
  142. package/dist/esm/gx-ide-share-kb.entry.js +1 -1
  143. package/dist/esm/gx-ide-sign-in-team.entry.js +1 -1
  144. package/dist/esm/gx-ide-sign-in.entry.js +1 -1
  145. package/dist/esm/gx-ide-splash.entry.js +1 -1
  146. package/dist/esm/gx-ide-start-page.entry.js +1 -1
  147. package/dist/esm/gx-ide-status-buttons.entry.js +1 -1
  148. package/dist/esm/gx-ide-switch-panel.entry.js +1 -1
  149. package/dist/esm/gx-ide-switcher.entry.js +1 -1
  150. package/dist/esm/gx-ide-team-dev-commit.entry.js +3 -3
  151. package/dist/esm/gx-ide-team-dev-select-recent-comment.entry.js +2 -2
  152. package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js +1 -1
  153. package/dist/esm/gx-ide-team-dev-update-to-revision.entry.js +1 -1
  154. package/dist/esm/gx-ide-team-dev-update.entry.js +3 -3
  155. package/dist/esm/gx-ide-template.entry.js +1 -1
  156. package/dist/esm/gx-ide-test.entry.js +1 -1
  157. package/dist/esm/gx-ide-top-bar.entry.js +1 -1
  158. package/dist/esm/gx-ide-welcome-page.entry.js +1 -1
  159. package/dist/esm/gx-ide-wf-settings.entry.js +1 -1
  160. package/dist/esm/gx-ide-ww-attributes.entry.js +1 -1
  161. package/dist/esm/gx-ide-ww-images.entry.js +3 -3
  162. package/dist/esm/{helpers-39459872.js → helpers-ec4585e5.js} +2 -2
  163. package/dist/esm/{helpers-39459872.js.map → helpers-ec4585e5.js.map} +1 -1
  164. package/dist/esm/{index-93411ea2.js → index-6a0d98df.js} +34 -4
  165. package/dist/esm/index-6a0d98df.js.map +1 -0
  166. package/dist/esm/index.js +2 -2
  167. package/dist/esm/loader.js +2 -2
  168. package/dist/esm/{render-combo-items-7a49ed63.js → render-combo-items-70aa3ecf.js} +2 -2
  169. package/dist/esm/{render-combo-items-7a49ed63.js.map → render-combo-items-70aa3ecf.js.map} +1 -1
  170. package/dist/esm/{render-list-item-2bd9cf13.js → render-list-item-2ad96b71.js} +2 -2
  171. package/dist/esm/{render-list-item-2bd9cf13.js.map → render-list-item-2ad96b71.js.map} +1 -1
  172. package/dist/esm/{render-suggest-6b99b199.js → render-suggest-dac35d72.js} +2 -2
  173. package/dist/esm/{render-suggest-6b99b199.js.map → render-suggest-dac35d72.js.map} +1 -1
  174. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +3 -3
  175. package/dist/genexus-ide-ui/index.esm.js +2 -2
  176. package/dist/genexus-ide-ui/{p-22d8de70.entry.js → p-03265b1b.entry.js} +4 -4
  177. package/dist/genexus-ide-ui/{p-86b0cf22.entry.js → p-09d55db9.entry.js} +2 -2
  178. package/dist/genexus-ide-ui/{p-ec2cb326.entry.js → p-1105c966.entry.js} +2 -2
  179. package/dist/genexus-ide-ui/{p-1e44952c.entry.js → p-1364f700.entry.js} +3 -3
  180. package/dist/genexus-ide-ui/{p-ae468251.entry.js → p-1a53cc60.entry.js} +2 -2
  181. package/dist/genexus-ide-ui/{p-37a2e9ac.entry.js → p-1c36217e.entry.js} +2 -2
  182. package/dist/genexus-ide-ui/{p-fdd9de33.entry.js → p-1cfcec9e.entry.js} +2 -2
  183. package/dist/genexus-ide-ui/{p-64e05f19.entry.js → p-22908448.entry.js} +8 -8
  184. package/dist/genexus-ide-ui/{p-cce8a91a.entry.js → p-24af7f98.entry.js} +2 -2
  185. package/dist/genexus-ide-ui/{p-e2a87cd7.entry.js → p-26aff07c.entry.js} +3 -3
  186. package/dist/genexus-ide-ui/{p-49712340.js → p-2cf37639.js} +161 -132
  187. package/dist/genexus-ide-ui/p-2cf37639.js.map +1 -0
  188. package/dist/genexus-ide-ui/{p-56ab7460.entry.js → p-2d7323a8.entry.js} +2 -2
  189. package/dist/genexus-ide-ui/{p-296d8ba7.js → p-2de01408.js} +2 -2
  190. package/dist/genexus-ide-ui/{p-90c8cb0d.entry.js → p-3468662b.entry.js} +2 -2
  191. package/dist/genexus-ide-ui/{p-5a565d8f.entry.js → p-34b5a494.entry.js} +2 -2
  192. package/dist/genexus-ide-ui/{p-e4fe373f.entry.js → p-3e15089e.entry.js} +2 -2
  193. package/dist/genexus-ide-ui/{p-7a3baebc.entry.js → p-49f9f6bf.entry.js} +2 -2
  194. package/dist/genexus-ide-ui/{p-324af897.entry.js → p-4cd56d14.entry.js} +2 -2
  195. package/dist/genexus-ide-ui/{p-d9c27591.entry.js → p-502f2b47.entry.js} +2 -2
  196. package/dist/genexus-ide-ui/{p-848b26be.entry.js → p-52af77c2.entry.js} +5 -5
  197. package/dist/genexus-ide-ui/{p-d26f3f46.js → p-5545d58d.js} +2 -2
  198. package/dist/genexus-ide-ui/{p-4f6d120f.entry.js → p-57354473.entry.js} +2 -2
  199. package/dist/genexus-ide-ui/{p-3611f8b7.entry.js → p-57986b2e.entry.js} +2 -2
  200. package/dist/genexus-ide-ui/{p-67b7c308.entry.js → p-5a734013.entry.js} +2 -2
  201. package/dist/genexus-ide-ui/{p-960c4988.js → p-5b1576cc.js} +2 -2
  202. package/dist/genexus-ide-ui/{p-cff284a9.entry.js → p-5dc54e85.entry.js} +2 -2
  203. package/dist/genexus-ide-ui/{p-e9f2dd3f.entry.js → p-6374dabb.entry.js} +4 -4
  204. package/dist/genexus-ide-ui/{p-20cca16c.entry.js → p-6637e817.entry.js} +6 -6
  205. package/dist/genexus-ide-ui/{p-6d8b4f96.entry.js → p-6e667dde.entry.js} +4 -4
  206. package/dist/genexus-ide-ui/{p-4fc17d27.entry.js → p-70024ecb.entry.js} +2 -2
  207. package/dist/genexus-ide-ui/{p-9dbe2323.entry.js → p-71f3b66e.entry.js} +2 -2
  208. package/dist/genexus-ide-ui/{p-c49885c3.entry.js → p-822090ba.entry.js} +2 -2
  209. package/dist/genexus-ide-ui/{p-2e043c76.entry.js → p-8900c81a.entry.js} +2 -2
  210. package/dist/genexus-ide-ui/{p-ae3102f4.entry.js → p-97114eef.entry.js} +3 -3
  211. package/dist/genexus-ide-ui/{p-2320aa7a.entry.js → p-9a604798.entry.js} +3 -3
  212. package/dist/genexus-ide-ui/{p-fdb45861.entry.js → p-9e27c0cc.entry.js} +9 -9
  213. package/dist/genexus-ide-ui/p-9e27c0cc.entry.js.map +1 -0
  214. package/dist/genexus-ide-ui/{p-07fedb96.entry.js → p-9ffe118a.entry.js} +2 -2
  215. package/dist/genexus-ide-ui/{p-57542159.entry.js → p-a6dd3f03.entry.js} +2 -2
  216. package/dist/genexus-ide-ui/{p-307e47a1.entry.js → p-aa821b66.entry.js} +3 -3
  217. package/dist/genexus-ide-ui/{p-562db47d.entry.js → p-acaed500.entry.js} +2 -2
  218. package/dist/genexus-ide-ui/{p-68b911a6.entry.js → p-afc73c6f.entry.js} +2 -2
  219. package/dist/genexus-ide-ui/{p-7153555f.entry.js → p-b238a545.entry.js} +11 -11
  220. package/dist/genexus-ide-ui/{p-a837de2e.entry.js → p-b2af0c95.entry.js} +2 -2
  221. package/dist/genexus-ide-ui/{p-2b1634e7.entry.js → p-b3e352c8.entry.js} +2 -2
  222. package/dist/genexus-ide-ui/p-bb0eb196.entry.js +85 -0
  223. package/dist/genexus-ide-ui/p-bb0eb196.entry.js.map +1 -0
  224. package/dist/genexus-ide-ui/{p-f0efd16f.entry.js → p-bb1394ca.entry.js} +2 -2
  225. package/dist/genexus-ide-ui/{p-3f44de6a.entry.js → p-c21300fb.entry.js} +2 -2
  226. package/dist/genexus-ide-ui/{p-b5fa3116.entry.js → p-c74d18fe.entry.js} +2 -2
  227. package/dist/genexus-ide-ui/{p-9c83ec17.entry.js → p-c9fd4853.entry.js} +2 -2
  228. package/dist/genexus-ide-ui/{p-27a2429c.entry.js → p-d7169c07.entry.js} +2 -2
  229. package/dist/genexus-ide-ui/{p-291eb585.entry.js → p-d8c7e0b5.entry.js} +2 -2
  230. package/dist/genexus-ide-ui/{p-4f815835.entry.js → p-dcb1516d.entry.js} +2 -2
  231. package/dist/genexus-ide-ui/{p-e3711567.entry.js → p-df4249e1.entry.js} +3 -3
  232. package/dist/genexus-ide-ui/{p-580899ab.entry.js → p-df8bf481.entry.js} +2 -2
  233. package/dist/genexus-ide-ui/{p-e4bd955a.entry.js → p-e07c97d5.entry.js} +4 -4
  234. package/dist/genexus-ide-ui/{p-f1cc5d30.entry.js → p-e3f234a8.entry.js} +3 -3
  235. package/dist/genexus-ide-ui/{p-a526d1f5.entry.js → p-eaab7765.entry.js} +3 -3
  236. package/dist/genexus-ide-ui/{p-5cb80ab8.entry.js → p-ebe6d71f.entry.js} +2 -2
  237. package/dist/genexus-ide-ui/{p-d1cb5507.js → p-f194af32.js} +11 -11
  238. package/dist/genexus-ide-ui/{p-5707060d.entry.js → p-f2f9e36e.entry.js} +2 -2
  239. package/dist/genexus-ide-ui/{p-14e9afa7.js → p-f3aa0e41.js} +2 -2
  240. package/dist/genexus-ide-ui/{p-e36d7f5c.entry.js → p-f654f86d.entry.js} +2 -2
  241. package/dist/genexus-ide-ui/p-f963b96e.entry.js +17 -0
  242. package/dist/genexus-ide-ui/{p-de92ee84.entry.js → p-fbab024e.entry.js} +2 -2
  243. package/dist/genexus-ide-ui/p-fc7b3ace.js +106 -0
  244. package/dist/genexus-ide-ui/p-fc7b3ace.js.map +1 -0
  245. package/dist/genexus-ide-ui/{p-9e78c60c.entry.js → p-fce76974.entry.js} +4 -4
  246. package/dist/types/components/_helpers/chat-container/code-render.d.ts +1 -1
  247. package/package.json +1 -1
  248. package/dist/cjs/code-render-43aa3faf.js.map +0 -1
  249. package/dist/cjs/index-caaa95cf.js.map +0 -1
  250. package/dist/esm/code-render-9ccc8dac.js.map +0 -1
  251. package/dist/esm/index-93411ea2.js.map +0 -1
  252. package/dist/genexus-ide-ui/p-49712340.js.map +0 -1
  253. package/dist/genexus-ide-ui/p-4b665a04.js +0 -68
  254. package/dist/genexus-ide-ui/p-4b665a04.js.map +0 -1
  255. package/dist/genexus-ide-ui/p-caad0b7e.entry.js +0 -17
  256. package/dist/genexus-ide-ui/p-e0db2615.entry.js +0 -87
  257. package/dist/genexus-ide-ui/p-e0db2615.entry.js.map +0 -1
  258. package/dist/genexus-ide-ui/p-fdb45861.entry.js.map +0 -1
  259. /package/dist/genexus-ide-ui/{p-22d8de70.entry.js.map → p-03265b1b.entry.js.map} +0 -0
  260. /package/dist/genexus-ide-ui/{p-86b0cf22.entry.js.map → p-09d55db9.entry.js.map} +0 -0
  261. /package/dist/genexus-ide-ui/{p-ec2cb326.entry.js.map → p-1105c966.entry.js.map} +0 -0
  262. /package/dist/genexus-ide-ui/{p-1e44952c.entry.js.map → p-1364f700.entry.js.map} +0 -0
  263. /package/dist/genexus-ide-ui/{p-ae468251.entry.js.map → p-1a53cc60.entry.js.map} +0 -0
  264. /package/dist/genexus-ide-ui/{p-37a2e9ac.entry.js.map → p-1c36217e.entry.js.map} +0 -0
  265. /package/dist/genexus-ide-ui/{p-fdd9de33.entry.js.map → p-1cfcec9e.entry.js.map} +0 -0
  266. /package/dist/genexus-ide-ui/{p-64e05f19.entry.js.map → p-22908448.entry.js.map} +0 -0
  267. /package/dist/genexus-ide-ui/{p-cce8a91a.entry.js.map → p-24af7f98.entry.js.map} +0 -0
  268. /package/dist/genexus-ide-ui/{p-e2a87cd7.entry.js.map → p-26aff07c.entry.js.map} +0 -0
  269. /package/dist/genexus-ide-ui/{p-56ab7460.entry.js.map → p-2d7323a8.entry.js.map} +0 -0
  270. /package/dist/genexus-ide-ui/{p-296d8ba7.js.map → p-2de01408.js.map} +0 -0
  271. /package/dist/genexus-ide-ui/{p-90c8cb0d.entry.js.map → p-3468662b.entry.js.map} +0 -0
  272. /package/dist/genexus-ide-ui/{p-5a565d8f.entry.js.map → p-34b5a494.entry.js.map} +0 -0
  273. /package/dist/genexus-ide-ui/{p-e4fe373f.entry.js.map → p-3e15089e.entry.js.map} +0 -0
  274. /package/dist/genexus-ide-ui/{p-7a3baebc.entry.js.map → p-49f9f6bf.entry.js.map} +0 -0
  275. /package/dist/genexus-ide-ui/{p-324af897.entry.js.map → p-4cd56d14.entry.js.map} +0 -0
  276. /package/dist/genexus-ide-ui/{p-d9c27591.entry.js.map → p-502f2b47.entry.js.map} +0 -0
  277. /package/dist/genexus-ide-ui/{p-848b26be.entry.js.map → p-52af77c2.entry.js.map} +0 -0
  278. /package/dist/genexus-ide-ui/{p-d26f3f46.js.map → p-5545d58d.js.map} +0 -0
  279. /package/dist/genexus-ide-ui/{p-4f6d120f.entry.js.map → p-57354473.entry.js.map} +0 -0
  280. /package/dist/genexus-ide-ui/{p-3611f8b7.entry.js.map → p-57986b2e.entry.js.map} +0 -0
  281. /package/dist/genexus-ide-ui/{p-67b7c308.entry.js.map → p-5a734013.entry.js.map} +0 -0
  282. /package/dist/genexus-ide-ui/{p-960c4988.js.map → p-5b1576cc.js.map} +0 -0
  283. /package/dist/genexus-ide-ui/{p-cff284a9.entry.js.map → p-5dc54e85.entry.js.map} +0 -0
  284. /package/dist/genexus-ide-ui/{p-e9f2dd3f.entry.js.map → p-6374dabb.entry.js.map} +0 -0
  285. /package/dist/genexus-ide-ui/{p-20cca16c.entry.js.map → p-6637e817.entry.js.map} +0 -0
  286. /package/dist/genexus-ide-ui/{p-6d8b4f96.entry.js.map → p-6e667dde.entry.js.map} +0 -0
  287. /package/dist/genexus-ide-ui/{p-4fc17d27.entry.js.map → p-70024ecb.entry.js.map} +0 -0
  288. /package/dist/genexus-ide-ui/{p-9dbe2323.entry.js.map → p-71f3b66e.entry.js.map} +0 -0
  289. /package/dist/genexus-ide-ui/{p-c49885c3.entry.js.map → p-822090ba.entry.js.map} +0 -0
  290. /package/dist/genexus-ide-ui/{p-2e043c76.entry.js.map → p-8900c81a.entry.js.map} +0 -0
  291. /package/dist/genexus-ide-ui/{p-ae3102f4.entry.js.map → p-97114eef.entry.js.map} +0 -0
  292. /package/dist/genexus-ide-ui/{p-2320aa7a.entry.js.map → p-9a604798.entry.js.map} +0 -0
  293. /package/dist/genexus-ide-ui/{p-07fedb96.entry.js.map → p-9ffe118a.entry.js.map} +0 -0
  294. /package/dist/genexus-ide-ui/{p-57542159.entry.js.map → p-a6dd3f03.entry.js.map} +0 -0
  295. /package/dist/genexus-ide-ui/{p-307e47a1.entry.js.map → p-aa821b66.entry.js.map} +0 -0
  296. /package/dist/genexus-ide-ui/{p-562db47d.entry.js.map → p-acaed500.entry.js.map} +0 -0
  297. /package/dist/genexus-ide-ui/{p-68b911a6.entry.js.map → p-afc73c6f.entry.js.map} +0 -0
  298. /package/dist/genexus-ide-ui/{p-7153555f.entry.js.map → p-b238a545.entry.js.map} +0 -0
  299. /package/dist/genexus-ide-ui/{p-a837de2e.entry.js.map → p-b2af0c95.entry.js.map} +0 -0
  300. /package/dist/genexus-ide-ui/{p-2b1634e7.entry.js.map → p-b3e352c8.entry.js.map} +0 -0
  301. /package/dist/genexus-ide-ui/{p-f0efd16f.entry.js.map → p-bb1394ca.entry.js.map} +0 -0
  302. /package/dist/genexus-ide-ui/{p-3f44de6a.entry.js.map → p-c21300fb.entry.js.map} +0 -0
  303. /package/dist/genexus-ide-ui/{p-b5fa3116.entry.js.map → p-c74d18fe.entry.js.map} +0 -0
  304. /package/dist/genexus-ide-ui/{p-9c83ec17.entry.js.map → p-c9fd4853.entry.js.map} +0 -0
  305. /package/dist/genexus-ide-ui/{p-27a2429c.entry.js.map → p-d7169c07.entry.js.map} +0 -0
  306. /package/dist/genexus-ide-ui/{p-291eb585.entry.js.map → p-d8c7e0b5.entry.js.map} +0 -0
  307. /package/dist/genexus-ide-ui/{p-4f815835.entry.js.map → p-dcb1516d.entry.js.map} +0 -0
  308. /package/dist/genexus-ide-ui/{p-e3711567.entry.js.map → p-df4249e1.entry.js.map} +0 -0
  309. /package/dist/genexus-ide-ui/{p-580899ab.entry.js.map → p-df8bf481.entry.js.map} +0 -0
  310. /package/dist/genexus-ide-ui/{p-e4bd955a.entry.js.map → p-e07c97d5.entry.js.map} +0 -0
  311. /package/dist/genexus-ide-ui/{p-f1cc5d30.entry.js.map → p-e3f234a8.entry.js.map} +0 -0
  312. /package/dist/genexus-ide-ui/{p-a526d1f5.entry.js.map → p-eaab7765.entry.js.map} +0 -0
  313. /package/dist/genexus-ide-ui/{p-5cb80ab8.entry.js.map → p-ebe6d71f.entry.js.map} +0 -0
  314. /package/dist/genexus-ide-ui/{p-d1cb5507.js.map → p-f194af32.js.map} +0 -0
  315. /package/dist/genexus-ide-ui/{p-5707060d.entry.js.map → p-f2f9e36e.entry.js.map} +0 -0
  316. /package/dist/genexus-ide-ui/{p-14e9afa7.js.map → p-f3aa0e41.js.map} +0 -0
  317. /package/dist/genexus-ide-ui/{p-e36d7f5c.entry.js.map → p-f654f86d.entry.js.map} +0 -0
  318. /package/dist/genexus-ide-ui/{p-caad0b7e.entry.js.map → p-f963b96e.entry.js.map} +0 -0
  319. /package/dist/genexus-ide-ui/{p-de92ee84.entry.js.map → p-fbab024e.entry.js.map} +0 -0
  320. /package/dist/genexus-ide-ui/{p-9e78c60c.entry.js.map → p-fce76974.entry.js.map} +0 -0
@@ -2,8 +2,8 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const codeRender = require('./code-render-43aa3faf.js');
6
- require('./index-caaa95cf.js');
5
+ const codeRender = require('./code-render-d66a13e2.js');
6
+ require('./index-e227aefb.js');
7
7
  require('./MERCURY_ASSETS-36f04790.js');
8
8
 
9
9
  // Add types from Chameleon, without importing any JS in the final bundle.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-caaa95cf.js');
5
+ const index = require('./index-e227aefb.js');
6
6
 
7
7
  const defineCustomElements = (win, options) => {
8
8
  if (typeof window === 'undefined') return undefined;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const index = require('./index-caaa95cf.js');
3
+ const index = require('./index-e227aefb.js');
4
4
 
5
5
  /* STENCIL IMPORTS */
6
6
  const renderComboItems = (gxOptions) => {
@@ -15,4 +15,4 @@ const renderComboItems = (gxOptions) => {
15
15
 
16
16
  exports.renderComboItems = renderComboItems;
17
17
 
18
- //# sourceMappingURL=render-combo-items-878e8852.js.map
18
+ //# sourceMappingURL=render-combo-items-e774f796.js.map
@@ -1 +1 @@
1
- {"file":"render-combo-items-878e8852.js","mappings":";;;;AAAA;MAMa,gBAAgB,GAAG,CAC9B,SAA0B;IAE1B,MAAM,eAAe,GAAiC,EAAE,CAAC;IACzD,SAAS,CAAC,OAAO,CAAC,CAAC,QAAkB;QACnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC;QACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,EAAE,CAAC;QAC5C,eAAe,CAAC,IAAI,CAClBA,gCAAoB,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,IAC7C,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,EAAE,CAC9C,CACtB,CAAC;KACH,CAAC,CAAC;IACH,OAAO,eAAe,CAAC;AACzB;;;;","names":["h"],"sources":["src/common/render-combo-items.tsx"],"sourcesContent":["/* STENCIL IMPORTS */\nimport { h } from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { GxOption } from \"./types\";\n\nexport const renderComboItems = (\n gxOptions: Array<GxOption>\n): HTMLGxgComboBoxItemElement[] => {\n const comboItemsArray: HTMLGxgComboBoxItemElement[] = [];\n gxOptions.forEach((gxOption: GxOption) => {\n const iconName = gxOption.iconName || gxOption.icon;\n const value = gxOption.value || gxOption.id;\n comboItemsArray.push(\n <gxg-combo-box-item value={value} icon={iconName}>\n {gxOption.label || gxOption.name || gxOption.value || gxOption.id}\n </gxg-combo-box-item>\n );\n });\n return comboItemsArray;\n};\n"],"version":3}
1
+ {"file":"render-combo-items-e774f796.js","mappings":";;;;AAAA;MAMa,gBAAgB,GAAG,CAC9B,SAA0B;IAE1B,MAAM,eAAe,GAAiC,EAAE,CAAC;IACzD,SAAS,CAAC,OAAO,CAAC,CAAC,QAAkB;QACnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC;QACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,EAAE,CAAC;QAC5C,eAAe,CAAC,IAAI,CAClBA,gCAAoB,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,IAC7C,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,EAAE,CAC9C,CACtB,CAAC;KACH,CAAC,CAAC;IACH,OAAO,eAAe,CAAC;AACzB;;;;","names":["h"],"sources":["src/common/render-combo-items.tsx"],"sourcesContent":["/* STENCIL IMPORTS */\nimport { h } from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { GxOption } from \"./types\";\n\nexport const renderComboItems = (\n gxOptions: Array<GxOption>\n): HTMLGxgComboBoxItemElement[] => {\n const comboItemsArray: HTMLGxgComboBoxItemElement[] = [];\n gxOptions.forEach((gxOption: GxOption) => {\n const iconName = gxOption.iconName || gxOption.icon;\n const value = gxOption.value || gxOption.id;\n comboItemsArray.push(\n <gxg-combo-box-item value={value} icon={iconName}>\n {gxOption.label || gxOption.name || gxOption.value || gxOption.id}\n </gxg-combo-box-item>\n );\n });\n return comboItemsArray;\n};\n"],"version":3}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const index = require('./index-caaa95cf.js');
3
+ const index = require('./index-e227aefb.js');
4
4
 
5
5
  /* STENCIL IMPORTS */
6
6
  const renderListItems = (itemsData) => {
@@ -16,4 +16,4 @@ const renderListItems = (itemsData) => {
16
16
 
17
17
  exports.renderListItems = renderListItems;
18
18
 
19
- //# sourceMappingURL=render-list-item-c71032e3.js.map
19
+ //# sourceMappingURL=render-list-item-7c6449c4.js.map
@@ -1 +1 @@
1
- {"file":"render-list-item-c71032e3.js","mappings":";;;;AAAA;MAMa,eAAe,GAAG,CAC7B,SAAqB;IAErB,MAAM,cAAc,GAAuC,EAAE,CAAC;IAC9D,SAAS,CAAC,OAAO,CAAC,IAAI;QACpB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,cAAc,CAAC,IAAI,CACjBA,uCACE,MAAM,EAAE,EAAE,EACV,SAAS,EAAE,KAAK,EAChB,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,EAAE,GACoB,CAC9B,CAAC;KACH,CAAC,CAAC;IACH,OAAO,cAAc,CAAC;AACxB;;;;","names":["h"],"sources":["src/common/render-list-item.tsx"],"sourcesContent":["/* STENCIL IMPORTS */\nimport { h } from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { ItemData } from \"../components/_helpers/list-selector/list-selector-item/list-selector-item\";\n\nexport const renderListItems = (\n itemsData: ItemData[]\n): HTMLGxIdeListSelectorItemElement[] => {\n const listItemsArray: HTMLGxIdeListSelectorItemElement[] = [];\n itemsData.forEach(item => {\n const id = item.itemId;\n const value = item.itemValue;\n const icon = item.itemIcon;\n listItemsArray.push(\n <gx-ide-list-selector-item\n itemId={id}\n itemValue={value}\n icon={icon}\n key={id}\n ></gx-ide-list-selector-item>\n );\n });\n return listItemsArray;\n};\n"],"version":3}
1
+ {"file":"render-list-item-7c6449c4.js","mappings":";;;;AAAA;MAMa,eAAe,GAAG,CAC7B,SAAqB;IAErB,MAAM,cAAc,GAAuC,EAAE,CAAC;IAC9D,SAAS,CAAC,OAAO,CAAC,IAAI;QACpB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,cAAc,CAAC,IAAI,CACjBA,uCACE,MAAM,EAAE,EAAE,EACV,SAAS,EAAE,KAAK,EAChB,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,EAAE,GACoB,CAC9B,CAAC;KACH,CAAC,CAAC;IACH,OAAO,cAAc,CAAC;AACxB;;;;","names":["h"],"sources":["src/common/render-list-item.tsx"],"sourcesContent":["/* STENCIL IMPORTS */\nimport { h } from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { ItemData } from \"../components/_helpers/list-selector/list-selector-item/list-selector-item\";\n\nexport const renderListItems = (\n itemsData: ItemData[]\n): HTMLGxIdeListSelectorItemElement[] => {\n const listItemsArray: HTMLGxIdeListSelectorItemElement[] = [];\n itemsData.forEach(item => {\n const id = item.itemId;\n const value = item.itemValue;\n const icon = item.itemIcon;\n listItemsArray.push(\n <gx-ide-list-selector-item\n itemId={id}\n itemValue={value}\n icon={icon}\n key={id}\n ></gx-ide-list-selector-item>\n );\n });\n return listItemsArray;\n};\n"],"version":3}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const index = require('./index-caaa95cf.js');
3
+ const index = require('./index-e227aefb.js');
4
4
 
5
5
  /* eslint-disable @typescript-eslint/no-use-before-define */
6
6
  const renderSuggestLists = (suggestData) => {
@@ -25,4 +25,4 @@ const renderIcon = (iconName) => {
25
25
 
26
26
  exports.renderSuggestLists = renderSuggestLists;
27
27
 
28
- //# sourceMappingURL=render-suggest-4c515c9d.js.map
28
+ //# sourceMappingURL=render-suggest-4a569cbe.js.map
@@ -1 +1 @@
1
- {"file":"render-suggest-4c515c9d.js","mappings":";;;;AAAA;MAMa,kBAAkB,GAAG,CAChC,WAAwB;IAExB,IAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,YAAY,CAAC,MAAM,EAAE;QACpC,OAAO,WAAW,CAAC,YAAY,CAAC,GAAG,CACjC,CAAC,IAAqB;YACpB,QACEA,6BAAiB,KAAK,EAAE,IAAI,CAAC,KAAK,IAC/B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAqB;gBACpC,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC;aACrC,CAAC,CACc,EAClB;SACH,CACF,CAAC;KACH;IACD,OAAO,EAAE,CAAC;AACZ,EAAE;AAEF,MAAM,sBAAsB,GAAG,CAC7B,WAA4B;IAE5B,QACEA,kCAAsB,KAAK,EAAE,WAAW,CAAC,KAAK,IAC3C;QACC,WAAW,CAAC,WAAW,IAAI,WAAW,CAAC,KAAK;QAC5C,WAAW,CAAC,IAAI,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC;KACjD,CACoB,EACvB;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,QAAgB;IAClC,OAAOA,sBAAU,KAAK,EAAC,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,MAAM,GAAY,CAAC;AACxE,CAAC;;;;","names":["h"],"sources":["src/common/render-suggest.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { h } from \"@stencil/core\";\nimport { SuggestItemData } from \"@genexus/chameleon-controls-library/dist/types/deprecated-components/suggest/suggest-list-item/ch-suggest-list-item\";\nimport { SuggestListData } from \"@genexus/chameleon-controls-library/dist/types/deprecated-components/suggest/suggest-list/ch-suggest-list\";\nimport { SuggestData } from \"@genexus/chameleon-controls-library/dist/types/deprecated-components/suggest/ch-suggest\";\n\nexport const renderSuggestLists = (\n suggestData: SuggestData\n): HTMLChSuggestListElement[] => {\n if (suggestData?.suggestLists.length) {\n return suggestData.suggestLists.map(\n (list: SuggestListData): HTMLChSuggestListElement => {\n return (\n <ch-suggest-list label={list.label}>\n {list.items.map((item: SuggestItemData) => {\n return renderSuggestListsItem(item);\n })}\n </ch-suggest-list>\n );\n }\n );\n }\n return [];\n};\n\nconst renderSuggestListsItem = (\n suggestItem: SuggestItemData\n): HTMLChSuggestListItemElement => {\n return (\n <ch-suggest-list-item value={suggestItem.value}>\n {[\n suggestItem.description || suggestItem.value,\n suggestItem.icon && renderIcon(suggestItem.icon)\n ]}\n </ch-suggest-list-item>\n );\n};\n\nconst renderIcon = (iconName: string): HTMLGxgIconElement => {\n return <gxg-icon color=\"auto\" type={iconName} slot=\"icon\"></gxg-icon>;\n};\n"],"version":3}
1
+ {"file":"render-suggest-4a569cbe.js","mappings":";;;;AAAA;MAMa,kBAAkB,GAAG,CAChC,WAAwB;IAExB,IAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,YAAY,CAAC,MAAM,EAAE;QACpC,OAAO,WAAW,CAAC,YAAY,CAAC,GAAG,CACjC,CAAC,IAAqB;YACpB,QACEA,6BAAiB,KAAK,EAAE,IAAI,CAAC,KAAK,IAC/B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAqB;gBACpC,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC;aACrC,CAAC,CACc,EAClB;SACH,CACF,CAAC;KACH;IACD,OAAO,EAAE,CAAC;AACZ,EAAE;AAEF,MAAM,sBAAsB,GAAG,CAC7B,WAA4B;IAE5B,QACEA,kCAAsB,KAAK,EAAE,WAAW,CAAC,KAAK,IAC3C;QACC,WAAW,CAAC,WAAW,IAAI,WAAW,CAAC,KAAK;QAC5C,WAAW,CAAC,IAAI,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC;KACjD,CACoB,EACvB;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,QAAgB;IAClC,OAAOA,sBAAU,KAAK,EAAC,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,MAAM,GAAY,CAAC;AACxE,CAAC;;;;","names":["h"],"sources":["src/common/render-suggest.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { h } from \"@stencil/core\";\nimport { SuggestItemData } from \"@genexus/chameleon-controls-library/dist/types/deprecated-components/suggest/suggest-list-item/ch-suggest-list-item\";\nimport { SuggestListData } from \"@genexus/chameleon-controls-library/dist/types/deprecated-components/suggest/suggest-list/ch-suggest-list\";\nimport { SuggestData } from \"@genexus/chameleon-controls-library/dist/types/deprecated-components/suggest/ch-suggest\";\n\nexport const renderSuggestLists = (\n suggestData: SuggestData\n): HTMLChSuggestListElement[] => {\n if (suggestData?.suggestLists.length) {\n return suggestData.suggestLists.map(\n (list: SuggestListData): HTMLChSuggestListElement => {\n return (\n <ch-suggest-list label={list.label}>\n {list.items.map((item: SuggestItemData) => {\n return renderSuggestListsItem(item);\n })}\n </ch-suggest-list>\n );\n }\n );\n }\n return [];\n};\n\nconst renderSuggestListsItem = (\n suggestItem: SuggestItemData\n): HTMLChSuggestListItemElement => {\n return (\n <ch-suggest-list-item value={suggestItem.value}>\n {[\n suggestItem.description || suggestItem.value,\n suggestItem.icon && renderIcon(suggestItem.icon)\n ]}\n </ch-suggest-list-item>\n );\n};\n\nconst renderIcon = (iconName: string): HTMLGxgIconElement => {\n return <gxg-icon color=\"auto\" type={iconName} slot=\"icon\"></gxg-icon>;\n};\n"],"version":3}
@@ -3,8 +3,7 @@
3
3
  block-size: 100%;
4
4
  overflow: auto;
5
5
  grid-template-rows: max-content 1fr max-content;
6
- gap: var(--mer-spacing--xs);
7
- padding: var(--mer-spacing--xs);
6
+ gap: 6px;
8
7
  position: relative;
9
8
  --chat-common-border-radius: var(--mer-spacing--2xs);
10
9
  }
@@ -25,12 +24,12 @@
25
24
  overflow: auto;
26
25
  position: relative;
27
26
  display: grid;
27
+ padding: 0 var(--mer-spacing--xs) var(--mer-spacing--xs) var(--mer-spacing--xs);
28
28
  }
29
29
 
30
30
  .chat-container__header,
31
31
  .chat-container__footer {
32
32
  padding: var(--mer-spacing--2xs) var(--mer-spacing--2xs) var(--mer-spacing--2xs) var(--mer-spacing--sm);
33
- border-radius: var(--chat-common-border-radius);
34
33
  }
35
34
 
36
35
  .chat-container__conversation-copied {
@@ -91,6 +90,16 @@
91
90
  --date-opacity: 1;
92
91
  }
93
92
 
93
+ .chat::part(message__content) {
94
+ font-size: 13px !important;
95
+ line-height: 1.3 !important;
96
+ }
97
+
98
+ .chat::part(message user) {
99
+ width: 90%;
100
+ justify-self: end;
101
+ }
102
+
94
103
  .chat::part(message__time),
95
104
  .chat::part(message__copy-button) {
96
105
  transition: opacity var(--mer-timing--super-fast) ease-in-out;
@@ -175,4 +184,26 @@
175
184
  .chat::part(send-button):active {
176
185
  --icon-path: var(--icon__system_send_primary--active);
177
186
  --control__border-color: var(--mer-border-color__primary--active);
187
+ }
188
+
189
+ .chat::part(message__processing) {
190
+ font-size: 13px !important;
191
+ line-height: 1.4;
192
+ }
193
+
194
+ .chat::part(message assistant waiting) {
195
+ align-items: center;
196
+ gap: var(--mer-spacing--md) !important;
197
+ }
198
+
199
+ .button-copy-chat,
200
+ .button-delete-chat {
201
+ --control__border-color: transparent !important;
202
+ }
203
+
204
+ .button-delete-chat:hover {
205
+ filter: brightness(1.3);
206
+ }
207
+ .button-delete-chat:active {
208
+ filter: brightness(0.8);
178
209
  }
@@ -43,7 +43,7 @@ export class GxIdeChatContainer {
43
43
  this.copyConversationCallback ||
44
44
  this.deleteConversationCallback;
45
45
  const renderButtonsGroup = this.copyConversationCallback || this.deleteConversationCallback;
46
- return (h(Host, { class: "chat-container" }, h("ch-theme", { model: CSS_BUNDLES }), h("section", { class: "section" }, renderHeader && (h("header", { class: "chat-container__header elevation-1 body-italic-m" }, this.chatTitle && this.chatTitle, renderButtonsGroup && (h("div", { class: "buttons-spacer" }, this.deleteConversationCallback && (h("button", { class: "button-secondary button-icon-only", onClick: this.deleteConversationCallback }, h("ch-image", { class: "icon-md", src: DELETE_ICON }))), this.copyConversationCallback && (h("button", { class: "button-secondary button-icon-only", onClick: this.copyConversationCallback }, h("ch-image", { class: "icon-md", src: COPY_ICON }))))))), h("section", { class: "chat-container__ch-chat" }, h("slot", null), this.displayConversationCopiedMessage && (h("div", { class: "chat-container__conversation-copied" }, h("div", { class: "chat-container__conversation-copied-wrapper" }, h("ch-image", { class: "icon-md", src: CONVERSATION_ICON }), h("p", { class: "body-regular-l" }, "conversation copied"))))))));
46
+ return (h(Host, { class: "chat-container" }, h("ch-theme", { model: CSS_BUNDLES }), h("section", { class: "section" }, renderHeader && (h("header", { class: "chat-container__header elevation-1 body-italic-m" }, this.chatTitle && this.chatTitle, renderButtonsGroup && (h("div", null, this.deleteConversationCallback && (h("button", { class: "button-secondary button-icon-only button-delete-chat", onClick: this.deleteConversationCallback }, h("ch-image", { class: "icon-md", src: DELETE_ICON }))), this.copyConversationCallback && (h("button", { class: "button-secondary button-icon-only button-copy-chat", onClick: this.copyConversationCallback }, h("ch-image", { class: "icon-md", src: COPY_ICON }))))))), h("section", { class: "chat-container__ch-chat" }, h("slot", null), this.displayConversationCopiedMessage && (h("div", { class: "chat-container__conversation-copied" }, h("div", { class: "chat-container__conversation-copied-wrapper" }, h("ch-image", { class: "icon-md", src: CONVERSATION_ICON }), h("p", { class: "body-regular-l" }, "conversation copied"))))))));
47
47
  }
48
48
  static get is() { return "gx-ide-chat-container"; }
49
49
  static get originalStyleUrls() {
@@ -1 +1 @@
1
- {"version":3,"file":"chat-container.js","sourceRoot":"","sources":["../../../../src/components/_helpers/chat-container/chat-container.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAkB,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/D,MAAM,WAAW,GAAmB;IAClC,mBAAmB;IACnB,kBAAkB;IAClB,qBAAqB;IACrB,mBAAmB;IACnB,iBAAiB;IACjB,iBAAiB;CAClB,CAAC;AAEF,MAAM,SAAS,GAAG,WAAW,CAAC;IAC5B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,SAAS;CACrB,CAAC,CAAC;AACH,MAAM,WAAW,GAAG,WAAW,CAAC;IAC9B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,iBAAiB;IACvB,SAAS,EAAE,OAAO;CACnB,CAAC,CAAC;AACH,MAAM,iBAAiB,GAAG,WAAW,CAAC;IACpC,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,sBAAsB;CAC7B,CAAC,CAAC;AAOH,MAAM,OAAO,kBAAkB;;;;;gDAmBwB,KAAK;;IAE1D;;OAEG;IAEH,KAAK,CAAC,2BAA2B;QAC/B,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;QAC7C,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,gCAAgC,GAAG,KAAK,CAAC;QAChD,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAED,MAAM;QACJ,MAAM,YAAY,GAChB,IAAI,CAAC,SAAS;YACd,IAAI,CAAC,wBAAwB;YAC7B,IAAI,CAAC,0BAA0B,CAAC;QAElC,MAAM,kBAAkB,GACtB,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,0BAA0B,CAAC;QACnE,OAAO,CACL,EAAC,IAAI,IAAC,KAAK,EAAC,gBAAgB;YAC1B,gBAAU,KAAK,EAAE,WAAW,GAAa;YACzC,eAAS,KAAK,EAAC,SAAS;gBACrB,YAAY,IAAI,CACf,cAAQ,KAAK,EAAC,kDAAkD;oBAC7D,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;oBAEhC,kBAAkB,IAAI,CACrB,WAAK,KAAK,EAAC,gBAAgB;wBACxB,IAAI,CAAC,0BAA0B,IAAI,CAClC,cACE,KAAK,EAAC,mCAAmC,EACzC,OAAO,EAAE,IAAI,CAAC,0BAA0B;4BAExC,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,WAAW,GAAa,CAChD,CACV;wBAEA,IAAI,CAAC,wBAAwB,IAAI,CAChC,cACE,KAAK,EAAC,mCAAmC,EACzC,OAAO,EAAE,IAAI,CAAC,wBAAwB;4BAEtC,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,SAAS,GAAa,CAC9C,CACV,CACG,CACP,CACM,CACV;gBACD,eAAS,KAAK,EAAC,yBAAyB;oBACtC,eAAa;oBACZ,IAAI,CAAC,gCAAgC,IAAI,CACxC,WAAK,KAAK,EAAC,qCAAqC;wBAC9C,WAAK,KAAK,EAAC,6CAA6C;4BACtD,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,iBAAiB,GAAa;4BAC7D,SAAG,KAAK,EAAC,gBAAgB,0BAAwB,CAC7C,CACF,CACP,CACO,CAEF,CACL,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, h, Prop, Method, State } from \"@stencil/core\";\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"chameleon/scrollbar\",\n \"components/button\",\n \"components/icon\",\n \"utils/elevation\"\n];\n\nconst COPY_ICON = getIconPath({\n category: \"system\",\n name: \"copy\",\n colorType: \"neutral\"\n});\nconst DELETE_ICON = getIconPath({\n category: \"system\",\n name: \"delete-outlined\",\n colorType: \"error\"\n});\nconst CONVERSATION_ICON = getIconPath({\n category: \"objects\",\n name: \"conversational-flows\"\n});\n\n@Component({\n tag: \"gx-ide-chat-container\",\n styleUrl: \"chat-container.scss\",\n shadow: false\n})\nexport class GxIdeChatContainer {\n /**\n * The chat title\n */\n @Prop() readonly chatTitle?: string;\n\n /**\n * If true a button for copying the conversation will be render on the header\n */\n @Prop() readonly copyConversationCallback: () => void;\n\n /**\n * If true a button for deleting the conversation will be render on the header\n */\n @Prop() readonly deleteConversationCallback: () => void;\n\n /**\n * Coneration Copied\n */\n @State() displayConversationCopiedMessage: boolean = false;\n\n /**\n * It will display a feedback message that the conversation has been copied\n */\n @Method()\n async showCopyConversationMessage() {\n this.displayConversationCopiedMessage = true;\n setTimeout(() => {\n this.displayConversationCopiedMessage = false;\n }, 2000);\n }\n\n render() {\n const renderHeader =\n this.chatTitle ||\n this.copyConversationCallback ||\n this.deleteConversationCallback;\n\n const renderButtonsGroup =\n this.copyConversationCallback || this.deleteConversationCallback;\n return (\n <Host class=\"chat-container\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n {renderHeader && (\n <header class=\"chat-container__header elevation-1 body-italic-m\">\n {this.chatTitle && this.chatTitle}\n\n {renderButtonsGroup && (\n <div class=\"buttons-spacer\">\n {this.deleteConversationCallback && (\n <button\n class=\"button-secondary button-icon-only\"\n onClick={this.deleteConversationCallback}\n >\n <ch-image class=\"icon-md\" src={DELETE_ICON}></ch-image>\n </button>\n )}\n\n {this.copyConversationCallback && (\n <button\n class=\"button-secondary button-icon-only\"\n onClick={this.copyConversationCallback}\n >\n <ch-image class=\"icon-md\" src={COPY_ICON}></ch-image>\n </button>\n )}\n </div>\n )}\n </header>\n )}\n <section class=\"chat-container__ch-chat\">\n <slot></slot>\n {this.displayConversationCopiedMessage && (\n <div class=\"chat-container__conversation-copied\">\n <div class=\"chat-container__conversation-copied-wrapper\">\n <ch-image class=\"icon-md\" src={CONVERSATION_ICON}></ch-image>\n <p class=\"body-regular-l\">conversation copied</p>\n </div>\n </div>\n )}\n </section>\n {/* <footer class=\"chat-container__footer elevation-1\">footer</footer> */}\n </section>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"chat-container.js","sourceRoot":"","sources":["../../../../src/components/_helpers/chat-container/chat-container.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAkB,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/D,MAAM,WAAW,GAAmB;IAClC,mBAAmB;IACnB,kBAAkB;IAClB,qBAAqB;IACrB,mBAAmB;IACnB,iBAAiB;IACjB,iBAAiB;CAClB,CAAC;AAEF,MAAM,SAAS,GAAG,WAAW,CAAC;IAC5B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,SAAS;CACrB,CAAC,CAAC;AACH,MAAM,WAAW,GAAG,WAAW,CAAC;IAC9B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,iBAAiB;IACvB,SAAS,EAAE,OAAO;CACnB,CAAC,CAAC;AACH,MAAM,iBAAiB,GAAG,WAAW,CAAC;IACpC,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,sBAAsB;CAC7B,CAAC,CAAC;AAOH,MAAM,OAAO,kBAAkB;;;;;gDAmBwB,KAAK;;IAE1D;;OAEG;IAEH,KAAK,CAAC,2BAA2B;QAC/B,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;QAC7C,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,gCAAgC,GAAG,KAAK,CAAC;QAChD,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAED,MAAM;QACJ,MAAM,YAAY,GAChB,IAAI,CAAC,SAAS;YACd,IAAI,CAAC,wBAAwB;YAC7B,IAAI,CAAC,0BAA0B,CAAC;QAElC,MAAM,kBAAkB,GACtB,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,0BAA0B,CAAC;QACnE,OAAO,CACL,EAAC,IAAI,IAAC,KAAK,EAAC,gBAAgB;YAC1B,gBAAU,KAAK,EAAE,WAAW,GAAa;YACzC,eAAS,KAAK,EAAC,SAAS;gBACrB,YAAY,IAAI,CACf,cAAQ,KAAK,EAAC,kDAAkD;oBAC7D,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;oBAEhC,kBAAkB,IAAI,CACrB;wBACG,IAAI,CAAC,0BAA0B,IAAI,CAClC,cACE,KAAK,EAAC,sDAAsD,EAC5D,OAAO,EAAE,IAAI,CAAC,0BAA0B;4BAExC,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,WAAW,GAAa,CAChD,CACV;wBAEA,IAAI,CAAC,wBAAwB,IAAI,CAChC,cACE,KAAK,EAAC,oDAAoD,EAC1D,OAAO,EAAE,IAAI,CAAC,wBAAwB;4BAEtC,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,SAAS,GAAa,CAC9C,CACV,CACG,CACP,CACM,CACV;gBACD,eAAS,KAAK,EAAC,yBAAyB;oBACtC,eAAa;oBACZ,IAAI,CAAC,gCAAgC,IAAI,CACxC,WAAK,KAAK,EAAC,qCAAqC;wBAC9C,WAAK,KAAK,EAAC,6CAA6C;4BACtD,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,iBAAiB,GAAa;4BAC7D,SAAG,KAAK,EAAC,gBAAgB,0BAAwB,CAC7C,CACF,CACP,CACO,CAEF,CACL,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, h, Prop, Method, State } from \"@stencil/core\";\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"chameleon/scrollbar\",\n \"components/button\",\n \"components/icon\",\n \"utils/elevation\"\n];\n\nconst COPY_ICON = getIconPath({\n category: \"system\",\n name: \"copy\",\n colorType: \"neutral\"\n});\nconst DELETE_ICON = getIconPath({\n category: \"system\",\n name: \"delete-outlined\",\n colorType: \"error\"\n});\nconst CONVERSATION_ICON = getIconPath({\n category: \"objects\",\n name: \"conversational-flows\"\n});\n\n@Component({\n tag: \"gx-ide-chat-container\",\n styleUrl: \"chat-container.scss\",\n shadow: false\n})\nexport class GxIdeChatContainer {\n /**\n * The chat title\n */\n @Prop() readonly chatTitle?: string;\n\n /**\n * If true a button for copying the conversation will be render on the header\n */\n @Prop() readonly copyConversationCallback: () => void;\n\n /**\n * If true a button for deleting the conversation will be render on the header\n */\n @Prop() readonly deleteConversationCallback: () => void;\n\n /**\n * Coneration Copied\n */\n @State() displayConversationCopiedMessage: boolean = false;\n\n /**\n * It will display a feedback message that the conversation has been copied\n */\n @Method()\n async showCopyConversationMessage() {\n this.displayConversationCopiedMessage = true;\n setTimeout(() => {\n this.displayConversationCopiedMessage = false;\n }, 2000);\n }\n\n render() {\n const renderHeader =\n this.chatTitle ||\n this.copyConversationCallback ||\n this.deleteConversationCallback;\n\n const renderButtonsGroup =\n this.copyConversationCallback || this.deleteConversationCallback;\n return (\n <Host class=\"chat-container\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n {renderHeader && (\n <header class=\"chat-container__header elevation-1 body-italic-m\">\n {this.chatTitle && this.chatTitle}\n\n {renderButtonsGroup && (\n <div>\n {this.deleteConversationCallback && (\n <button\n class=\"button-secondary button-icon-only button-delete-chat\"\n onClick={this.deleteConversationCallback}\n >\n <ch-image class=\"icon-md\" src={DELETE_ICON}></ch-image>\n </button>\n )}\n\n {this.copyConversationCallback && (\n <button\n class=\"button-secondary button-icon-only button-copy-chat\"\n onClick={this.copyConversationCallback}\n >\n <ch-image class=\"icon-md\" src={COPY_ICON}></ch-image>\n </button>\n )}\n </div>\n )}\n </header>\n )}\n <section class=\"chat-container__ch-chat\">\n <slot></slot>\n {this.displayConversationCopiedMessage && (\n <div class=\"chat-container__conversation-copied\">\n <div class=\"chat-container__conversation-copied-wrapper\">\n <ch-image class=\"icon-md\" src={CONVERSATION_ICON}></ch-image>\n <p class=\"body-regular-l\">conversation copied</p>\n </div>\n </div>\n )}\n </section>\n {/* <footer class=\"chat-container__footer elevation-1\">footer</footer> */}\n </section>\n </Host>\n );\n }\n}\n"]}
@@ -3,6 +3,7 @@ import { getIconPath } from "@genexus/mercury";
3
3
  getIconPath;
4
4
  const MESSAGE_COPIED_PART_SELECTOR = "message__copied-feedback";
5
5
  const MESSAGE_COPIED_VISIBLE_PART_SELECTOR = "message__copied-feedback-visible";
6
+ const ANIMATION_DOTS = (h("svg", { width: "36", height: "8", fill: "transparent" }, h("circle", { cx: "4", cy: "4", r: "4", opacity: "0", fill: "var(--mer-color__primary--200)" }, h("animate", { attributeName: "opacity", values: "0;1;0", dur: "1s", repeatCount: "indefinite" })), h("circle", { cx: "18", cy: "4", r: "4", opacity: "0", fill: "var(--mer-color__primary--200)" }, h("animate", { attributeName: "opacity", values: "0;1;0", dur: "1s", begin: "0.15s", repeatCount: "indefinite" })), h("circle", { cx: "32", cy: "4", r: "4", opacity: "0", fill: "var(--mer-color__primary--200)" }, h("animate", { attributeName: "opacity", values: "0;1;0", dur: "1s", begin: "0.30s", repeatCount: "indefinite" }))));
6
7
  const copy = (text) => (event) => {
7
8
  event.stopPropagation();
8
9
  // 1. Copy message
@@ -22,10 +23,10 @@ const copyButton = (textToCopy, accessibleName, additionalPart) => {
22
23
  return (h("button", { "aria-label": accessibleName, title: accessibleName, class: "button-copy-code", type: "button", onClick: copy(textToCopy), part: `message__copy-button ${additionalPart}` }));
23
24
  };
24
25
  export const mercuryCodeRender = (copyButtonAccessibleName) => (options) => (h("div", { class: "code-block-container" }, h("div", { class: "code-block-header" }, copyButton(options.plainText, copyButtonAccessibleName, "code-render")), h("ch-code", { language: options.language, lastNestedChildClass: options.lastNestedChildClass, value: options.plainText })));
25
- export const mercuryChatMessageRender = (theme, userName = "You", assistantName = "AI Assistant", assistantTaskDescription = "Processing request") => (messageModel) => messageModel.role === "assistant" && messageModel.status === "waiting"
26
+ export const mercuryChatMessageRender = (theme, userName = "You", assistantName = "AI Assistant") => (messageModel) => messageModel.role === "assistant" && messageModel.status === "waiting"
26
27
  ? [
27
- h("span", { part: "message__processing" }, assistantTaskDescription),
28
- h("div", { class: "processing-animation", part: "processing-animation" })
28
+ h("span", { part: "message__processing" }, messageModel.content),
29
+ ANIMATION_DOTS
29
30
  ]
30
31
  : [
31
32
  // "copy button" before "role" and "time" to hide both on button:focus
@@ -1 +1 @@
1
- {"version":3,"file":"code-render.js","sourceRoot":"","sources":["../../../../src/components/_helpers/chat-container/code-render.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h } from \"@stencil/core\";\nimport {\n MarkdownViewerCodeRender,\n ChatMessageByRole\n} from \"@genexus/chameleon-controls-library\";\nimport { MarkdownViewerCodeRenderOptions } from \"@genexus/chameleon-controls-library/dist/types/components/markdown-viewer/parsers/types\";\nimport { getIconPath } from \"@genexus/mercury\";\ngetIconPath;\n\nconst MESSAGE_COPIED_PART_SELECTOR = \"message__copied-feedback\";\nconst MESSAGE_COPIED_VISIBLE_PART_SELECTOR = \"message__copied-feedback-visible\";\n\nconst copy = (text: string) => (event: Event) => {\n event.stopPropagation();\n\n // 1. Copy message\n navigator.clipboard.writeText(text);\n\n // 2. Display \"copied\" message (expects to be the next sibling!)\n const copiedFeedbackRef = (event.target as HTMLElement)\n .nextSibling as HTMLElement;\n const copiedFeedbackPart = copiedFeedbackRef.getAttribute(\"part\");\n if (copiedFeedbackPart === MESSAGE_COPIED_PART_SELECTOR) {\n copiedFeedbackRef.setAttribute(\n \"part\",\n `${MESSAGE_COPIED_PART_SELECTOR} ${MESSAGE_COPIED_VISIBLE_PART_SELECTOR}`\n );\n\n setTimeout(() => {\n copiedFeedbackRef.setAttribute(\"part\", `${MESSAGE_COPIED_PART_SELECTOR}`);\n }, 1000);\n }\n};\n\nconst copyButton = (\n textToCopy: string,\n accessibleName: string,\n additionalPart: string\n) => {\n return (\n <button\n aria-label={accessibleName}\n title={accessibleName}\n class=\"button-copy-code\"\n type=\"button\"\n onClick={copy(textToCopy)}\n part={`message__copy-button ${additionalPart}`}\n ></button>\n );\n};\n\nexport const mercuryCodeRender =\n (copyButtonAccessibleName: string) =>\n (options: MarkdownViewerCodeRenderOptions): MarkdownViewerCodeRender =>\n (\n <div class=\"code-block-container\">\n <div class=\"code-block-header\">\n {copyButton(\n options.plainText,\n copyButtonAccessibleName,\n \"code-render\"\n )}\n </div>\n <ch-code\n language={options.language}\n lastNestedChildClass={options.lastNestedChildClass}\n value={options.plainText}\n ></ch-code>\n </div>\n );\n\nexport const mercuryChatMessageRender =\n (\n theme: string,\n userName: string = \"You\",\n assistantName: string = \"AI Assistant\",\n assistantTaskDescription: string = \"Processing request\"\n ) =>\n (messageModel: ChatMessageByRole<\"assistant\" | \"error\" | \"user\">) =>\n messageModel.role === \"assistant\" && messageModel.status === \"waiting\"\n ? [\n <span part=\"message__processing\">{assistantTaskDescription}</span>,\n\n <div class=\"processing-animation\" part=\"processing-animation\"></div>\n ]\n : [\n // \"copy button\" before \"role\" and \"time\" to hide both on button:focus\n copyButton(\n messageModel.content as string,\n \"Copy code\",\n \"common-message\"\n ),\n <p part={MESSAGE_COPIED_PART_SELECTOR}>\n message copied to clipboard\n </p>,\n <span part={`message__role ${messageModel.role}`}>\n {messageModel.role === \"user\" ? userName : assistantName}\n </span>,\n <time dateTime={messageModel.metadata} part=\"message__time\">\n {messageModel.metadata}\n </time>,\n\n messageModel.role === \"user\" ? (\n <span part=\"message__content user\">{messageModel.content}</span>\n ) : (\n <ch-markdown-viewer\n part={\n messageModel.role === \"assistant\" &&\n (messageModel.status === \"complete\" || !messageModel.status) &&\n !messageModel.parts\n ? `message__content no-error`\n : \"message__content\"\n }\n theme={theme}\n showIndicator={false}\n renderCode={mercuryCodeRender(\"Copy code\")}\n value={messageModel.content as string}\n ></ch-markdown-viewer>\n )\n ];\n"]}
1
+ {"version":3,"file":"code-render.js","sourceRoot":"","sources":["../../../../src/components/_helpers/chat-container/code-render.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAMlC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,WAAW,CAAC;AAEZ,MAAM,4BAA4B,GAAG,0BAA0B,CAAC;AAChE,MAAM,oCAAoC,GAAG,kCAAkC,CAAC;AAEhF,MAAM,cAAc,GAAG,CACrB,WAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,GAAG,EAAC,IAAI,EAAC,aAAa;IAC3C,cACE,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,EACN,CAAC,EAAC,GAAG,EACL,OAAO,EAAC,GAAG,EACX,IAAI,EAAC,gCAAgC;QAErC,eACE,aAAa,EAAC,SAAS,EACvB,MAAM,EAAC,OAAO,EACd,GAAG,EAAC,IAAI,EACR,WAAW,EAAC,YAAY,GACxB,CACK;IACT,cACE,EAAE,EAAC,IAAI,EACP,EAAE,EAAC,GAAG,EACN,CAAC,EAAC,GAAG,EACL,OAAO,EAAC,GAAG,EACX,IAAI,EAAC,gCAAgC;QAErC,eACE,aAAa,EAAC,SAAS,EACvB,MAAM,EAAC,OAAO,EACd,GAAG,EAAC,IAAI,EACR,KAAK,EAAC,OAAO,EACb,WAAW,EAAC,YAAY,GACxB,CACK;IACT,cACE,EAAE,EAAC,IAAI,EACP,EAAE,EAAC,GAAG,EACN,CAAC,EAAC,GAAG,EACL,OAAO,EAAC,GAAG,EACX,IAAI,EAAC,gCAAgC;QAErC,eACE,aAAa,EAAC,SAAS,EACvB,MAAM,EAAC,OAAO,EACd,GAAG,EAAC,IAAI,EACR,KAAK,EAAC,OAAO,EACb,WAAW,EAAC,YAAY,GACxB,CACK,CACL,CACP,CAAC;AAEF,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,KAAY,EAAE,EAAE;IAC9C,KAAK,CAAC,eAAe,EAAE,CAAC;IAExB,kBAAkB;IAClB,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEpC,gEAAgE;IAChE,MAAM,iBAAiB,GAAI,KAAK,CAAC,MAAsB;SACpD,WAA0B,CAAC;IAC9B,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAClE,IAAI,kBAAkB,KAAK,4BAA4B,EAAE;QACvD,iBAAiB,CAAC,YAAY,CAC5B,MAAM,EACN,GAAG,4BAA4B,IAAI,oCAAoC,EAAE,CAC1E,CAAC;QAEF,UAAU,CAAC,GAAG,EAAE;YACd,iBAAiB,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,4BAA4B,EAAE,CAAC,CAAC;QAC5E,CAAC,EAAE,IAAI,CAAC,CAAC;KACV;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CACjB,UAAkB,EAClB,cAAsB,EACtB,cAAsB,EACtB,EAAE;IACF,OAAO,CACL,4BACc,cAAc,EAC1B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAC,kBAAkB,EACxB,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,EACzB,IAAI,EAAE,wBAAwB,cAAc,EAAE,GACtC,CACX,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAC5B,CAAC,wBAAgC,EAAE,EAAE,CACrC,CAAC,OAAwC,EAA4B,EAAE,CACrE,CACE,WAAK,KAAK,EAAC,sBAAsB;IAC/B,WAAK,KAAK,EAAC,mBAAmB,IAC3B,UAAU,CACT,OAAO,CAAC,SAAS,EACjB,wBAAwB,EACxB,aAAa,CACd,CACG;IACN,eACE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAC1B,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAClD,KAAK,EAAE,OAAO,CAAC,SAAS,GACf,CACP,CACP,CAAC;AAEN,MAAM,CAAC,MAAM,wBAAwB,GACnC,CACE,KAAa,EACb,WAAmB,KAAK,EACxB,gBAAwB,cAAc,EACtC,EAAE,CACJ,CAAC,YAA+D,EAAE,EAAE,CAClE,YAAY,CAAC,IAAI,KAAK,WAAW,IAAI,YAAY,CAAC,MAAM,KAAK,SAAS;IACpE,CAAC,CAAC;QACE,YAAM,IAAI,EAAC,qBAAqB,IAAE,YAAY,CAAC,OAAO,CAAQ;QAC9D,cAAc;KACf;IACH,CAAC,CAAC;QACE,sEAAsE;QACtE,UAAU,CACR,YAAY,CAAC,OAAiB,EAC9B,WAAW,EACX,gBAAgB,CACjB;QACD,SAAG,IAAI,EAAE,4BAA4B,kCAEjC;QACJ,YAAM,IAAI,EAAE,iBAAiB,YAAY,CAAC,IAAI,EAAE,IAC7C,YAAY,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CACnD;QACP,YAAM,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAC,eAAe,IACxD,YAAY,CAAC,QAAQ,CACjB;QAEP,YAAY,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAC7B,YAAM,IAAI,EAAC,uBAAuB,IAAE,YAAY,CAAC,OAAO,CAAQ,CACjE,CAAC,CAAC,CAAC,CACF,0BACE,IAAI,EACF,YAAY,CAAC,IAAI,KAAK,WAAW;gBACjC,CAAC,YAAY,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;gBAC5D,CAAC,YAAY,CAAC,KAAK;gBACjB,CAAC,CAAC,2BAA2B;gBAC7B,CAAC,CAAC,kBAAkB,EAExB,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,KAAK,EACpB,UAAU,EAAE,iBAAiB,CAAC,WAAW,CAAC,EAC1C,KAAK,EAAE,YAAY,CAAC,OAAiB,GACjB,CACvB;KACF,CAAC","sourcesContent":["import { h } from \"@stencil/core\";\nimport {\n MarkdownViewerCodeRender,\n ChatMessageByRole\n} from \"@genexus/chameleon-controls-library\";\nimport { MarkdownViewerCodeRenderOptions } from \"@genexus/chameleon-controls-library/dist/types/components/markdown-viewer/parsers/types\";\nimport { getIconPath } from \"@genexus/mercury\";\ngetIconPath;\n\nconst MESSAGE_COPIED_PART_SELECTOR = \"message__copied-feedback\";\nconst MESSAGE_COPIED_VISIBLE_PART_SELECTOR = \"message__copied-feedback-visible\";\n\nconst ANIMATION_DOTS = (\n <svg width=\"36\" height=\"8\" fill=\"transparent\">\n <circle\n cx=\"4\"\n cy=\"4\"\n r=\"4\"\n opacity=\"0\"\n fill=\"var(--mer-color__primary--200)\"\n >\n <animate\n attributeName=\"opacity\"\n values=\"0;1;0\"\n dur=\"1s\"\n repeatCount=\"indefinite\"\n />\n </circle>\n <circle\n cx=\"18\"\n cy=\"4\"\n r=\"4\"\n opacity=\"0\"\n fill=\"var(--mer-color__primary--200)\"\n >\n <animate\n attributeName=\"opacity\"\n values=\"0;1;0\"\n dur=\"1s\"\n begin=\"0.15s\"\n repeatCount=\"indefinite\"\n />\n </circle>\n <circle\n cx=\"32\"\n cy=\"4\"\n r=\"4\"\n opacity=\"0\"\n fill=\"var(--mer-color__primary--200)\"\n >\n <animate\n attributeName=\"opacity\"\n values=\"0;1;0\"\n dur=\"1s\"\n begin=\"0.30s\"\n repeatCount=\"indefinite\"\n />\n </circle>\n </svg>\n);\n\nconst copy = (text: string) => (event: Event) => {\n event.stopPropagation();\n\n // 1. Copy message\n navigator.clipboard.writeText(text);\n\n // 2. Display \"copied\" message (expects to be the next sibling!)\n const copiedFeedbackRef = (event.target as HTMLElement)\n .nextSibling as HTMLElement;\n const copiedFeedbackPart = copiedFeedbackRef.getAttribute(\"part\");\n if (copiedFeedbackPart === MESSAGE_COPIED_PART_SELECTOR) {\n copiedFeedbackRef.setAttribute(\n \"part\",\n `${MESSAGE_COPIED_PART_SELECTOR} ${MESSAGE_COPIED_VISIBLE_PART_SELECTOR}`\n );\n\n setTimeout(() => {\n copiedFeedbackRef.setAttribute(\"part\", `${MESSAGE_COPIED_PART_SELECTOR}`);\n }, 1000);\n }\n};\n\nconst copyButton = (\n textToCopy: string,\n accessibleName: string,\n additionalPart: string\n) => {\n return (\n <button\n aria-label={accessibleName}\n title={accessibleName}\n class=\"button-copy-code\"\n type=\"button\"\n onClick={copy(textToCopy)}\n part={`message__copy-button ${additionalPart}`}\n ></button>\n );\n};\n\nexport const mercuryCodeRender =\n (copyButtonAccessibleName: string) =>\n (options: MarkdownViewerCodeRenderOptions): MarkdownViewerCodeRender =>\n (\n <div class=\"code-block-container\">\n <div class=\"code-block-header\">\n {copyButton(\n options.plainText,\n copyButtonAccessibleName,\n \"code-render\"\n )}\n </div>\n <ch-code\n language={options.language}\n lastNestedChildClass={options.lastNestedChildClass}\n value={options.plainText}\n ></ch-code>\n </div>\n );\n\nexport const mercuryChatMessageRender =\n (\n theme: string,\n userName: string = \"You\",\n assistantName: string = \"AI Assistant\"\n ) =>\n (messageModel: ChatMessageByRole<\"assistant\" | \"error\" | \"user\">) =>\n messageModel.role === \"assistant\" && messageModel.status === \"waiting\"\n ? [\n <span part=\"message__processing\">{messageModel.content}</span>,\n ANIMATION_DOTS\n ]\n : [\n // \"copy button\" before \"role\" and \"time\" to hide both on button:focus\n copyButton(\n messageModel.content as string,\n \"Copy code\",\n \"common-message\"\n ),\n <p part={MESSAGE_COPIED_PART_SELECTOR}>\n message copied to clipboard\n </p>,\n <span part={`message__role ${messageModel.role}`}>\n {messageModel.role === \"user\" ? userName : assistantName}\n </span>,\n <time dateTime={messageModel.metadata} part=\"message__time\">\n {messageModel.metadata}\n </time>,\n\n messageModel.role === \"user\" ? (\n <span part=\"message__content user\">{messageModel.content}</span>\n ) : (\n <ch-markdown-viewer\n part={\n messageModel.role === \"assistant\" &&\n (messageModel.status === \"complete\" || !messageModel.status) &&\n !messageModel.parts\n ? `message__content no-error`\n : \"message__content\"\n }\n theme={theme}\n showIndicator={false}\n renderCode={mercuryCodeRender(\"Copy code\")}\n value={messageModel.content as string}\n ></ch-markdown-viewer>\n )\n ];\n"]}
@@ -51,18 +51,7 @@ const ASSISTANT_RESPONSE_MARKDOWN = `
51
51
  ### Horizontal Rules {#horizontal-rules}
52
52
  To create a horizontal rule, use three or more asterisks (\`***\`), dashes (\`---\`), or underscores (\`___\`) on a line by themselves.
53
53
  `;
54
- const ASSISTANT_RESPONSE_SHORT_MARKDOWN = `
55
- ### Code block {#code-block}
56
- To create code blocks, you’ll use three backticks (\` \`\`\` \`) or three tildes (\`~~~\`) on the lines before and after the code block.
57
-
58
- \`\`\`json
59
- {
60
- "firstName": "John",
61
- "lastName": "Smith",
62
- "age": 25
63
- }
64
- \`\`\`
65
- `;
54
+ const ASSISTANT_RESPONSE_SHORT_MARKDOWN = '\n### Code block {#code-block}\nTo create code blocks, you’ll use three backticks (` ``` `) or three tildes (`~~~`) on the lines before and after the code block.\n\n```json\n{\n "firstName": "John",\n "lastName": "Smith",\n "age": 25\n}\n```\n\nindex: 5\nindex: 5\nindex: 5\nindex: 5\nindex: 5\nindex: 5\nindex: 5\n';
66
55
  const sendChatToLLM = () => {
67
56
  // This is a WA to get the chat reference
68
57
  const chatRef = document.querySelector("ch-chat");
@@ -235,7 +224,7 @@ export const codeFixerRecord = [
235
224
  id: "8",
236
225
  role: "assistant",
237
226
  status: "waiting",
238
- content: "Processing Request"
227
+ content: "You can provide further details or updates"
239
228
  },
240
229
  {
241
230
  id: "9",
@@ -1 +1 @@
1
- {"version":3,"file":"callbacks.js","sourceRoot":"","sources":["../../../src/showcase/chat-container/callbacks.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ChatInternalCallbacks,\n ChatMessage,\n ChatTranslations\n} from \"@genexus/chameleon-controls-library\";\n\nconst PROCESSING_PLACEHOLDER = \"{{ASSISTANT_NAME}}\";\n\nlet timeOut: NodeJS.Timeout;\n\nconst ASSISTANT_RESPONSE_MARKDOWN = `\n ### Code block {#code-block}\n To create code blocks, you’ll use three backticks (\\` \\`\\`\\` \\`) or three tildes (\\`~~~\\`) on the lines before and after the code block.\n \n \\`\\`\\`\n {\n \"firstName\": \"John\",\n \"lastName\": \"Smith\",\n \"age\": 25\n }\n \\`\\`\\`\n \n Another way to create code blocks is to indent every line of the block by at least four spaces or one tab.\n \n <html>\n <head>\n </head>\n </html>\n \n \n #### Syntax Highlighting {#syntax-highlighting}\n This feature allows you to add color highlighting for whatever language your code was written in.\n To add syntax highlighting, specify a language next to the backticks before the fenced code block.\n \n \\`\\`\\`json\n {\n \"firstName\": \"John\",\n \"lastName\": \"Smith\",\n \"age\": 25\n }\n \\`\\`\\`\n \n \\`\\`\\`javascript\n import React from 'react'\n import ReactDOM from 'react-dom'\n import Markdown from 'react-markdown'\n import rehypeHighlight from 'rehype-highlight'\n \n const markdown = \\`\n # Your markdown here\n \\`\n \n ReactDOM.render(\n <Markdown rehypePlugins={[rehypeHighlight]}>{markdown}</Markdown>,\n document.querySelector('#content')\n )\n \\`\\`\\`\n \n ### Horizontal Rules {#horizontal-rules}\n To create a horizontal rule, use three or more asterisks (\\`***\\`), dashes (\\`---\\`), or underscores (\\`___\\`) on a line by themselves.\n `;\n\nconst ASSISTANT_RESPONSE_SHORT_MARKDOWN = `\n ### Code block {#code-block}\n To create code blocks, you’ll use three backticks (\\` \\`\\`\\` \\`) or three tildes (\\`~~~\\`) on the lines before and after the code block.\n \n \\`\\`\\`json\n {\n \"firstName\": \"John\",\n \"lastName\": \"Smith\",\n \"age\": 25\n }\n \\`\\`\\`\n `;\n\nconst sendChatToLLM = () => {\n // This is a WA to get the chat reference\n const chatRef = document.querySelector(\"ch-chat\") as HTMLChChatElement;\n\n chatRef.addNewMessage({\n id: `${new Date().getTime()}`,\n role: \"assistant\",\n content: \"Analyzing\",\n status: \"waiting\"\n });\n\n timeOut = setTimeout(() => {\n chatRef.updateLastMessage(\n {\n role: \"assistant\",\n content: \"Processing with Chat with LLMs\",\n status: \"waiting\"\n },\n \"replace\"\n );\n\n timeOut = setTimeout(() => {\n dummyStreaming(chatRef, 20, ASSISTANT_RESPONSE_MARKDOWN, \"replace\");\n }, 200);\n }, 200);\n};\n\nfunction dummyStreaming(\n chatRef: HTMLChChatElement,\n counter: number,\n stringToDisplay: string,\n mode: \"concat\" | \"replace\"\n) {\n timeOut = setTimeout(\n () => {\n const streamingCompleted = counter >= stringToDisplay.length;\n\n chatRef.updateLastMessage(\n {\n role: \"assistant\",\n content: {\n message: stringToDisplay.substring(counter - 20, counter),\n files: streamingCompleted\n ? [\n {\n url: \"https://next.genexus.ai\",\n caption: \"Mars Exploration Contract\"\n },\n {\n url: \"https://gx-chameleon.netlify.app\",\n caption: \"Venus Exploration Contract\"\n }\n ]\n : undefined\n },\n status: streamingCompleted ? \"complete\" : \"streaming\"\n },\n mode\n );\n\n if (!streamingCompleted) {\n dummyStreaming(chatRef, counter + 20, stringToDisplay, \"concat\");\n }\n },\n counter % 200 === 0 ? 50 : 40\n );\n}\n\nexport const chatCallbacks: ChatInternalCallbacks = {\n clear: () => new Promise(resolve => resolve()),\n sendChatToLLM: sendChatToLLM,\n uploadImage: () => new Promise(resolve => resolve(\"\")),\n stopGeneratingAnswer: () => {\n clearTimeout(timeOut);\n\n // This is a WA to get the chat reference\n const chatRef = document.querySelector(\"ch-chat\") as HTMLChChatElement;\n\n chatRef.updateLastMessage(\n {\n role: \"assistant\",\n content: \"\",\n status: \"complete\"\n },\n \"concat\"\n );\n\n return new Promise(resolve => setTimeout(() => resolve, 10));\n }\n};\n\nexport const chatTranslations: ChatTranslations = {\n accessibleName: {\n clearChat: \"Clear chat\",\n copyResponseButton: \"Copy assistant response\",\n downloadCodeButton: \"Download code\",\n imagePicker: \"Select images\",\n removeUploadedImage: \"Remove uploaded image\",\n sendButton: \"Send\",\n sendInput: \"Message\",\n stopGeneratingAnswerButton: \"Stop generating answer\"\n },\n placeholder: {\n sendInput: \"Ask me a question...\"\n },\n text: {\n copyCodeButton: \"Copy code\",\n processing: `Processing with ${PROCESSING_PLACEHOLDER}`,\n sourceFiles: \"Source files:\"\n }\n};\n\nexport const chatRecord: ChatMessage[] = [\n { id: \"1\", role: \"user\", content: \"Hello world\" },\n { id: \"2\", role: \"assistant\", content: ASSISTANT_RESPONSE_MARKDOWN },\n { id: \"3\", role: \"user\", content: \"Hello world 1\" },\n { id: \"4\", role: \"assistant\", content: ASSISTANT_RESPONSE_SHORT_MARKDOWN },\n { id: \"5\", role: \"user\", content: \"Hello world 2\" },\n { id: \"6\", role: \"assistant\", content: ASSISTANT_RESPONSE_SHORT_MARKDOWN },\n { id: \"7\", role: \"user\", content: \"Hello world 3\" },\n { id: \"8\", role: \"assistant\", content: ASSISTANT_RESPONSE_SHORT_MARKDOWN },\n { id: \"9\", role: \"user\", content: \"Hello world 4\" },\n { id: \"10\", role: \"assistant\", content: ASSISTANT_RESPONSE_SHORT_MARKDOWN }\n];\n\nexport const longChatRecord: ChatMessage[] = Array.from(\n { length: 40 },\n (_, index) =>\n index % 2 === 0\n ? {\n id: `index: ${index}`,\n role: \"user\",\n content:\n `index: ${index}` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n`\n }\n : {\n id: `index: ${index}`,\n role: \"assistant\",\n content:\n ASSISTANT_RESPONSE_SHORT_MARKDOWN +\n `\\nindex: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n`\n }\n);\n\nexport const codeFixerRecord: ChatMessage[] = [\n {\n id: \"1\",\n role: \"user\",\n content: \"Please give me an example about...\",\n metadata: \"14:55\"\n },\n {\n id: \"2\",\n role: \"assistant\",\n status: \"complete\",\n content:\n \"Action required example. Action required example. Action required example.\",\n metadata: \"14:56\"\n },\n {\n id: \"3\",\n role: \"assistant\",\n status: \"complete\",\n content: \"Warning in request\",\n metadata: \"14:57\",\n parts: \"warning\"\n },\n {\n id: \"4\",\n role: \"error\",\n content: \"Error in Request\",\n metadata: \"14:58\"\n },\n {\n id: \"5\",\n role: \"assistant\",\n status: \"complete\",\n content: \"Warning in request\",\n metadata: \"14:59\",\n parts: \"success\"\n },\n {\n id: \"6\",\n role: \"user\",\n content:\n \"Implement the function calculate_average_grade in grades.py that takes a list of grades as input and returns the average grade as a floating-point number\",\n metadata: \"15:00\"\n },\n {\n id: \"7\",\n role: \"assistant\",\n status: \"complete\",\n content:\n \"You can provide further details or updates regarding your support ticket and its associated code. Your input here helps us better understand and address your issue effectively.\",\n metadata: \"15:01\"\n },\n {\n id: \"8\",\n role: \"assistant\",\n status: \"waiting\",\n content: \"Processing Request\"\n },\n {\n id: \"9\",\n role: \"assistant\",\n status: \"complete\",\n content: ASSISTANT_RESPONSE_SHORT_MARKDOWN\n }\n];\n"]}
1
+ {"version":3,"file":"callbacks.js","sourceRoot":"","sources":["../../../src/showcase/chat-container/callbacks.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ChatInternalCallbacks,\n ChatMessage,\n ChatTranslations\n} from \"@genexus/chameleon-controls-library\";\n\nconst PROCESSING_PLACEHOLDER = \"{{ASSISTANT_NAME}}\";\n\nlet timeOut: NodeJS.Timeout;\n\nconst ASSISTANT_RESPONSE_MARKDOWN = `\n ### Code block {#code-block}\n To create code blocks, you’ll use three backticks (\\` \\`\\`\\` \\`) or three tildes (\\`~~~\\`) on the lines before and after the code block.\n \n \\`\\`\\`\n {\n \"firstName\": \"John\",\n \"lastName\": \"Smith\",\n \"age\": 25\n }\n \\`\\`\\`\n \n Another way to create code blocks is to indent every line of the block by at least four spaces or one tab.\n \n <html>\n <head>\n </head>\n </html>\n \n \n #### Syntax Highlighting {#syntax-highlighting}\n This feature allows you to add color highlighting for whatever language your code was written in.\n To add syntax highlighting, specify a language next to the backticks before the fenced code block.\n \n \\`\\`\\`json\n {\n \"firstName\": \"John\",\n \"lastName\": \"Smith\",\n \"age\": 25\n }\n \\`\\`\\`\n \n \\`\\`\\`javascript\n import React from 'react'\n import ReactDOM from 'react-dom'\n import Markdown from 'react-markdown'\n import rehypeHighlight from 'rehype-highlight'\n \n const markdown = \\`\n # Your markdown here\n \\`\n \n ReactDOM.render(\n <Markdown rehypePlugins={[rehypeHighlight]}>{markdown}</Markdown>,\n document.querySelector('#content')\n )\n \\`\\`\\`\n \n ### Horizontal Rules {#horizontal-rules}\n To create a horizontal rule, use three or more asterisks (\\`***\\`), dashes (\\`---\\`), or underscores (\\`___\\`) on a line by themselves.\n `;\n\nconst ASSISTANT_RESPONSE_SHORT_MARKDOWN =\n '\\n### Code block {#code-block}\\nTo create code blocks, you’ll use three backticks (` ``` `) or three tildes (`~~~`) on the lines before and after the code block.\\n\\n```json\\n{\\n \"firstName\": \"John\",\\n \"lastName\": \"Smith\",\\n \"age\": 25\\n}\\n```\\n\\nindex: 5\\nindex: 5\\nindex: 5\\nindex: 5\\nindex: 5\\nindex: 5\\nindex: 5\\n';\n\nconst sendChatToLLM = () => {\n // This is a WA to get the chat reference\n const chatRef = document.querySelector(\"ch-chat\") as HTMLChChatElement;\n\n chatRef.addNewMessage({\n id: `${new Date().getTime()}`,\n role: \"assistant\",\n content: \"Analyzing\",\n status: \"waiting\"\n });\n\n timeOut = setTimeout(() => {\n chatRef.updateLastMessage(\n {\n role: \"assistant\",\n content: \"Processing with Chat with LLMs\",\n status: \"waiting\"\n },\n \"replace\"\n );\n\n timeOut = setTimeout(() => {\n dummyStreaming(chatRef, 20, ASSISTANT_RESPONSE_MARKDOWN, \"replace\");\n }, 200);\n }, 200);\n};\n\nfunction dummyStreaming(\n chatRef: HTMLChChatElement,\n counter: number,\n stringToDisplay: string,\n mode: \"concat\" | \"replace\"\n) {\n timeOut = setTimeout(\n () => {\n const streamingCompleted = counter >= stringToDisplay.length;\n\n chatRef.updateLastMessage(\n {\n role: \"assistant\",\n content: {\n message: stringToDisplay.substring(counter - 20, counter),\n files: streamingCompleted\n ? [\n {\n url: \"https://next.genexus.ai\",\n caption: \"Mars Exploration Contract\"\n },\n {\n url: \"https://gx-chameleon.netlify.app\",\n caption: \"Venus Exploration Contract\"\n }\n ]\n : undefined\n },\n status: streamingCompleted ? \"complete\" : \"streaming\"\n },\n mode\n );\n\n if (!streamingCompleted) {\n dummyStreaming(chatRef, counter + 20, stringToDisplay, \"concat\");\n }\n },\n counter % 200 === 0 ? 50 : 40\n );\n}\n\nexport const chatCallbacks: ChatInternalCallbacks = {\n clear: () => new Promise(resolve => resolve()),\n sendChatToLLM: sendChatToLLM,\n uploadImage: () => new Promise(resolve => resolve(\"\")),\n stopGeneratingAnswer: () => {\n clearTimeout(timeOut);\n\n // This is a WA to get the chat reference\n const chatRef = document.querySelector(\"ch-chat\") as HTMLChChatElement;\n\n chatRef.updateLastMessage(\n {\n role: \"assistant\",\n content: \"\",\n status: \"complete\"\n },\n \"concat\"\n );\n\n return new Promise(resolve => setTimeout(() => resolve, 10));\n }\n};\n\nexport const chatTranslations: ChatTranslations = {\n accessibleName: {\n clearChat: \"Clear chat\",\n copyResponseButton: \"Copy assistant response\",\n downloadCodeButton: \"Download code\",\n imagePicker: \"Select images\",\n removeUploadedImage: \"Remove uploaded image\",\n sendButton: \"Send\",\n sendInput: \"Message\",\n stopGeneratingAnswerButton: \"Stop generating answer\"\n },\n placeholder: {\n sendInput: \"Ask me a question...\"\n },\n text: {\n copyCodeButton: \"Copy code\",\n processing: `Processing with ${PROCESSING_PLACEHOLDER}`,\n sourceFiles: \"Source files:\"\n }\n};\n\nexport const chatRecord: ChatMessage[] = [\n { id: \"1\", role: \"user\", content: \"Hello world\" },\n { id: \"2\", role: \"assistant\", content: ASSISTANT_RESPONSE_MARKDOWN },\n { id: \"3\", role: \"user\", content: \"Hello world 1\" },\n { id: \"4\", role: \"assistant\", content: ASSISTANT_RESPONSE_SHORT_MARKDOWN },\n { id: \"5\", role: \"user\", content: \"Hello world 2\" },\n { id: \"6\", role: \"assistant\", content: ASSISTANT_RESPONSE_SHORT_MARKDOWN },\n { id: \"7\", role: \"user\", content: \"Hello world 3\" },\n { id: \"8\", role: \"assistant\", content: ASSISTANT_RESPONSE_SHORT_MARKDOWN },\n { id: \"9\", role: \"user\", content: \"Hello world 4\" },\n { id: \"10\", role: \"assistant\", content: ASSISTANT_RESPONSE_SHORT_MARKDOWN }\n];\n\nexport const longChatRecord: ChatMessage[] = Array.from(\n { length: 40 },\n (_, index) =>\n index % 2 === 0\n ? {\n id: `index: ${index}`,\n role: \"user\",\n content:\n `index: ${index}` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n`\n }\n : {\n id: `index: ${index}`,\n role: \"assistant\",\n content:\n ASSISTANT_RESPONSE_SHORT_MARKDOWN +\n `\\nindex: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n`\n }\n);\n\nexport const codeFixerRecord: ChatMessage[] = [\n {\n id: \"1\",\n role: \"user\",\n content: \"Please give me an example about...\",\n metadata: \"14:55\"\n },\n {\n id: \"2\",\n role: \"assistant\",\n status: \"complete\",\n content:\n \"Action required example. Action required example. Action required example.\",\n metadata: \"14:56\"\n },\n {\n id: \"3\",\n role: \"assistant\",\n status: \"complete\",\n content: \"Warning in request\",\n metadata: \"14:57\",\n parts: \"warning\"\n },\n {\n id: \"4\",\n role: \"error\",\n content: \"Error in Request\",\n metadata: \"14:58\"\n },\n {\n id: \"5\",\n role: \"assistant\",\n status: \"complete\",\n content: \"Warning in request\",\n metadata: \"14:59\",\n parts: \"success\"\n },\n {\n id: \"6\",\n role: \"user\",\n content:\n \"Implement the function calculate_average_grade in grades.py that takes a list of grades as input and returns the average grade as a floating-point number\",\n metadata: \"15:00\"\n },\n {\n id: \"7\",\n role: \"assistant\",\n status: \"complete\",\n content:\n \"You can provide further details or updates regarding your support ticket and its associated code. Your input here helps us better understand and address your issue effectively.\",\n metadata: \"15:01\"\n },\n {\n id: \"8\",\n role: \"assistant\",\n status: \"waiting\",\n content: \"You can provide further details or updates\"\n },\n {\n id: \"9\",\n role: \"assistant\",\n status: \"complete\",\n content: ASSISTANT_RESPONSE_SHORT_MARKDOWN\n }\n];\n"]}
@@ -38,7 +38,7 @@ export class GxIdeScChatContainer {
38
38
  }, 1000);
39
39
  }
40
40
  render() {
41
- return (h(Host, null, h("ch-theme", { model: CSS_BUNDLES }), h("gx-ide-chat-container", { chatTitle: "GeneXus Assistant", copyConversationCallback: __classPrivateFieldGet(this, _GxIdeScChatContainer_copyConversationCallbackHandler, "f"), deleteConversationCallback: __classPrivateFieldGet(this, _GxIdeScChatContainer_deleteConversationCallbackHandler, "f"), ref: el => (__classPrivateFieldSet(this, _GxIdeScChatContainer_chatContainerRef, el, "f")) }, h("ch-chat", { callbacks: chatCallbacks, class: "chat", generatingResponse: false, loadingState: "all-records-loaded", markdownTheme: "mercury/markdown-viewer", renderItem: mercuryChatMessageRender("mercury/markdown-viewer", "Bruno", "Gx Assistant", this.assistantStatus), isMobile: false, items: codeFixerRecord, showAdditionalContent: this.showAdditionalContent, translations: chatTranslations }, h("div", { slot: "additional-content" }, "Custom content that is rendered when the chat renders content")))));
41
+ return (h(Host, null, h("ch-theme", { model: CSS_BUNDLES }), h("gx-ide-chat-container", { chatTitle: "GeneXus Assistant", copyConversationCallback: __classPrivateFieldGet(this, _GxIdeScChatContainer_copyConversationCallbackHandler, "f"), deleteConversationCallback: __classPrivateFieldGet(this, _GxIdeScChatContainer_deleteConversationCallbackHandler, "f"), ref: el => (__classPrivateFieldSet(this, _GxIdeScChatContainer_chatContainerRef, el, "f")) }, h("ch-chat", { callbacks: chatCallbacks, class: "chat", generatingResponse: false, loadingState: "all-records-loaded", markdownTheme: "mercury/markdown-viewer", renderItem: mercuryChatMessageRender("mercury/markdown-viewer", "Bruno", "Gx Assistant"), isMobile: false, items: codeFixerRecord, showAdditionalContent: this.showAdditionalContent, translations: chatTranslations }, h("div", { slot: "additional-content" }, "Custom content that is rendered when the chat renders content")))));
42
42
  }
43
43
  static get is() { return "gx-ide-sc-chat-container"; }
44
44
  static get encapsulation() { return "shadow"; }
@@ -1 +1 @@
1
- {"version":3,"file":"chat.showcase.js","sourceRoot":"","sources":["../../../src/showcase/chat-container/chat.showcase.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sDAAsD,CAAC;AAGhG,MAAM,WAAW,GAAmB,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;AAE7E,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAO/E,MAAM,OAAO,oBAAoB;;QAC/B,yDAAkD;QAMlD,gEAAmC,GAAG,EAAE;YACtC,uBAAA,IAAI,8CAAkB,CAAC,2BAA2B,EAAE,CAAC;QACvD,CAAC,EAAC;QAEF,kEAAqC,GAAG,EAAE;YACxC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACjC,CAAC,EAAC;qCAVwC,KAAK;kCACR,KAAK;+BACT,cAAc;;IAUjD,gBAAgB;QACd,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,eAAe,GAAG,sBAAsB,CAAC;QAChD,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAED,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH,gBAAU,KAAK,EAAE,WAAW,GAAa;YACzC,6BACE,SAAS,EAAC,mBAAmB,EAC7B,wBAAwB,EAAE,uBAAA,IAAI,6DAAiC,EAC/D,0BAA0B,EAAE,uBAAA,IAAI,+DAAmC,EACnE,GAAG,EAAE,EAAE,CAAC,EAAE,CACR,CAAC,uBAAA,IAAI,0CAAqB,EAAmC,MAAA,CAAC;gBAGhE,eACE,SAAS,EAAE,aAAa,EACxB,KAAK,EAAC,MAAM,EACZ,kBAAkB,EAAE,KAAK,EACzB,YAAY,EAAC,oBAAoB,EACjC,aAAa,EAAC,yBAAyB,EACvC,UAAU,EAAE,wBAAwB,CAClC,yBAAyB,EACzB,OAAO,EACP,cAAc,EACd,IAAI,CAAC,eAAe,CACrB,EACD,QAAQ,EAAE,KAAK,EACf,KAAK,EAAE,eAAe,EACtB,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EACjD,YAAY,EAAE,gBAAgB;oBAE9B,WAAK,IAAI,EAAC,oBAAoB,oEAExB,CACE,CACY,CACnB,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, h, State } from \"@stencil/core\";\nimport { mercuryChatMessageRender } from \"../../components/_helpers/chat-container/code-render\";\nimport { MercuryBundles } from \"@genexus/mercury\";\n\nconst CSS_BUNDLES: MercuryBundles = [\"resets/box-sizing\", \"components/chat\"];\n\nimport { chatCallbacks, chatTranslations, codeFixerRecord } from \"./callbacks\";\n\n@Component({\n tag: \"gx-ide-sc-chat-container\",\n styleUrl: \"chat-showcase.scss\",\n shadow: true\n})\nexport class GxIdeScChatContainer {\n #chatContainerRef!: HTMLGxIdeChatContainerElement;\n\n @State() showAdditionalContent: boolean = false;\n @State() conversationCopied: boolean = false;\n @State() assistantStatus: string = \"Getting Data\";\n\n #copyConversationCallbackHandler = () => {\n this.#chatContainerRef.showCopyConversationMessage();\n };\n\n #deleteConversationCallbackHandler = () => {\n console.log(\"delete messages\");\n };\n\n componentDidLoad() {\n setTimeout(() => {\n this.assistantStatus = \"Creating Data Base..\";\n }, 1000);\n }\n\n render() {\n return (\n <Host>\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <gx-ide-chat-container\n chatTitle=\"GeneXus Assistant\"\n copyConversationCallback={this.#copyConversationCallbackHandler}\n deleteConversationCallback={this.#deleteConversationCallbackHandler}\n ref={el =>\n (this.#chatContainerRef = el as HTMLGxIdeChatContainerElement)\n }\n >\n <ch-chat\n callbacks={chatCallbacks}\n class=\"chat\"\n generatingResponse={false}\n loadingState=\"all-records-loaded\"\n markdownTheme=\"mercury/markdown-viewer\"\n renderItem={mercuryChatMessageRender(\n \"mercury/markdown-viewer\",\n \"Bruno\",\n \"Gx Assistant\",\n this.assistantStatus\n )}\n isMobile={false}\n items={codeFixerRecord}\n showAdditionalContent={this.showAdditionalContent}\n translations={chatTranslations}\n >\n <div slot=\"additional-content\">\n Custom content that is rendered when the chat renders content\n </div>\n </ch-chat>\n </gx-ide-chat-container>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"chat.showcase.js","sourceRoot":"","sources":["../../../src/showcase/chat-container/chat.showcase.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sDAAsD,CAAC;AAGhG,MAAM,WAAW,GAAmB,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;AAE7E,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAO/E,MAAM,OAAO,oBAAoB;;QAC/B,yDAAkD;QAMlD,gEAAmC,GAAG,EAAE;YACtC,uBAAA,IAAI,8CAAkB,CAAC,2BAA2B,EAAE,CAAC;QACvD,CAAC,EAAC;QAEF,kEAAqC,GAAG,EAAE;YACxC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACjC,CAAC,EAAC;qCAVwC,KAAK;kCACR,KAAK;+BACT,cAAc;;IAUjD,gBAAgB;QACd,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,eAAe,GAAG,sBAAsB,CAAC;QAChD,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAED,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH,gBAAU,KAAK,EAAE,WAAW,GAAa;YACzC,6BACE,SAAS,EAAC,mBAAmB,EAC7B,wBAAwB,EAAE,uBAAA,IAAI,6DAAiC,EAC/D,0BAA0B,EAAE,uBAAA,IAAI,+DAAmC,EACnE,GAAG,EAAE,EAAE,CAAC,EAAE,CACR,CAAC,uBAAA,IAAI,0CAAqB,EAAmC,MAAA,CAAC;gBAGhE,eACE,SAAS,EAAE,aAAa,EACxB,KAAK,EAAC,MAAM,EACZ,kBAAkB,EAAE,KAAK,EACzB,YAAY,EAAC,oBAAoB,EACjC,aAAa,EAAC,yBAAyB,EACvC,UAAU,EAAE,wBAAwB,CAClC,yBAAyB,EACzB,OAAO,EACP,cAAc,CACf,EACD,QAAQ,EAAE,KAAK,EACf,KAAK,EAAE,eAAe,EACtB,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EACjD,YAAY,EAAE,gBAAgB;oBAE9B,WAAK,IAAI,EAAC,oBAAoB,oEAExB,CACE,CACY,CACnB,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, h, State } from \"@stencil/core\";\nimport { mercuryChatMessageRender } from \"../../components/_helpers/chat-container/code-render\";\nimport { MercuryBundles } from \"@genexus/mercury\";\n\nconst CSS_BUNDLES: MercuryBundles = [\"resets/box-sizing\", \"components/chat\"];\n\nimport { chatCallbacks, chatTranslations, codeFixerRecord } from \"./callbacks\";\n\n@Component({\n tag: \"gx-ide-sc-chat-container\",\n styleUrl: \"chat-showcase.scss\",\n shadow: true\n})\nexport class GxIdeScChatContainer {\n #chatContainerRef!: HTMLGxIdeChatContainerElement;\n\n @State() showAdditionalContent: boolean = false;\n @State() conversationCopied: boolean = false;\n @State() assistantStatus: string = \"Getting Data\";\n\n #copyConversationCallbackHandler = () => {\n this.#chatContainerRef.showCopyConversationMessage();\n };\n\n #deleteConversationCallbackHandler = () => {\n console.log(\"delete messages\");\n };\n\n componentDidLoad() {\n setTimeout(() => {\n this.assistantStatus = \"Creating Data Base..\";\n }, 1000);\n }\n\n render() {\n return (\n <Host>\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <gx-ide-chat-container\n chatTitle=\"GeneXus Assistant\"\n copyConversationCallback={this.#copyConversationCallbackHandler}\n deleteConversationCallback={this.#deleteConversationCallbackHandler}\n ref={el =>\n (this.#chatContainerRef = el as HTMLGxIdeChatContainerElement)\n }\n >\n <ch-chat\n callbacks={chatCallbacks}\n class=\"chat\"\n generatingResponse={false}\n loadingState=\"all-records-loaded\"\n markdownTheme=\"mercury/markdown-viewer\"\n renderItem={mercuryChatMessageRender(\n \"mercury/markdown-viewer\",\n \"Bruno\",\n \"Gx Assistant\"\n )}\n isMobile={false}\n items={codeFixerRecord}\n showAdditionalContent={this.showAdditionalContent}\n translations={chatTranslations}\n >\n <div slot=\"additional-content\">\n Custom content that is rendered when the chat renders content\n </div>\n </ch-chat>\n </gx-ide-chat-container>\n </Host>\n );\n }\n}\n"]}
@@ -2,7 +2,7 @@ import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal
2
2
  import { g as getIconPath } from './assets-manager.js';
3
3
  import './MERCURY_ASSETS.js';
4
4
 
5
- const chatContainerCss = ".chat-container{display:grid;block-size:100%;overflow:auto;grid-template-rows:max-content 1fr max-content;gap:var(--mer-spacing--xs);padding:var(--mer-spacing--xs);position:relative;--chat-common-border-radius:var(--mer-spacing--2xs)}.section{display:contents}.chat-container__header{padding:var(--mer-spacing--2xs) var(--mer-spacing--2xs) var(--mer-spacing--2xs) var(--mer-spacing--sm);display:flex;align-items:center;gap:var(--mer-spacing--sm);justify-content:space-between}.chat-container__ch-chat{overflow:auto;position:relative;display:grid}.chat-container__header,.chat-container__footer{padding:var(--mer-spacing--2xs) var(--mer-spacing--2xs) var(--mer-spacing--2xs) var(--mer-spacing--sm);border-radius:var(--chat-common-border-radius)}.chat-container__conversation-copied{position:absolute;z-index:1;inline-size:100%;block-size:100%;background:rgba(22, 22, 23, 0.75);backdrop-filter:saturate(180%) blur(20px);display:grid;align-items:center;justify-content:center;text-align:center;padding:32px;--mer-icon__box--md:18px;pointer-events:none;overflow:hidden;animation:fadeIn 100ms ease-in-out forwards;opacity:0}.chat-container__conversation-copied-wrapper{display:flex;align-items:center;gap:var(--mer-spacing--sm)}.chat-container__conversation-copied-wrapper{animation:liftUp var(--mer-timing--fast) ease-in-out forwards;inset-block-start:4px;opacity:0;animation-delay:var(--mer-timing--fast);position:relative}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes liftUp{from{opacity:0;inset-block-start:4px}to{opacity:1;inset-block-start:0}}.chat::part(message){position:relative;--copy-button-opacity:0;--copied-to-clipboard-opacity:0;--date-opacity:1}.chat::part(message__time),.chat::part(message__copy-button){transition:opacity var(--mer-timing--super-fast) ease-in-out}.chat::part(message__time){opacity:var(--date-opacity)}.chat::part(message):hover{position:relative;--copy-button-opacity:1;--date-opacity:0}.chat::part(message__copy-button){position:absolute;z-index:1;inset-inline-end:0;padding:var(--mer-spacing--sm);transition:opacity var(--mer-timing--fast) ease-in-out;opacity:var(--copy-button-opacity)}.chat::part(message__copy-button)::after{content:\"\";inline-size:var(--mer-icon__box--md);block-size:var(--mer-icon__box--md);background:no-repeat center/var(--mer-icon__size--md) var(--icon-path);--icon-path:var(--icon__system_copy_primary--enabled)}.chat::part(message__copy-button):hover::after{--icon-path:var(--icon__system_copy_primary--hover)}.chat::part(message__copy-button):active::after{--icon-path:var(--icon__system_copy_primary--active)}.chat::part(message__copied-feedback){transition:opacity 150ms ease-in-out;position:absolute;inline-size:100%;block-size:100%;display:flex;align-items:center;justify-content:center;z-index:2;background:rgba(22, 22, 23, 0.8);backdrop-filter:saturate(180%) blur(20px);opacity:var(--copied-to-clipboard-opacity);pointer-events:none}.chat::part(message__copied-feedback-visible){--copied-to-clipboard-opacity:1;pointer-events:visible}.chat::part(send-container){gap:var(--mer-spacing--xs)}.chat::part(send-input){--control__padding-block:7px !important}.chat::part(send-button){border-width:var(--control__border-width);border-style:var(--control__border-style);border-color:var(--control__border-color);border-radius:var(--control__border-radius);inline-size:32px;block-size:32px;background:no-repeat center/var(--mer-icon__box--md) var(--icon-path);--icon-path:var(--icon__system_send_primary--enabled)}.chat::part(send-button):hover{--icon-path:var(--icon__system_send_primary--hover);--control__border-color:var(--mer-text__primary--hover)}.chat::part(send-button):active{--icon-path:var(--icon__system_send_primary--active);--control__border-color:var(--mer-border-color__primary--active)}";
5
+ const chatContainerCss = ".chat-container{display:grid;block-size:100%;overflow:auto;grid-template-rows:max-content 1fr max-content;gap:6px;position:relative;--chat-common-border-radius:var(--mer-spacing--2xs)}.section{display:contents}.chat-container__header{padding:var(--mer-spacing--2xs) var(--mer-spacing--2xs) var(--mer-spacing--2xs) var(--mer-spacing--sm);display:flex;align-items:center;gap:var(--mer-spacing--sm);justify-content:space-between}.chat-container__ch-chat{overflow:auto;position:relative;display:grid;padding:0 var(--mer-spacing--xs) var(--mer-spacing--xs) var(--mer-spacing--xs)}.chat-container__header,.chat-container__footer{padding:var(--mer-spacing--2xs) var(--mer-spacing--2xs) var(--mer-spacing--2xs) var(--mer-spacing--sm)}.chat-container__conversation-copied{position:absolute;z-index:1;inline-size:100%;block-size:100%;background:rgba(22, 22, 23, 0.75);backdrop-filter:saturate(180%) blur(20px);display:grid;align-items:center;justify-content:center;text-align:center;padding:32px;--mer-icon__box--md:18px;pointer-events:none;overflow:hidden;animation:fadeIn 100ms ease-in-out forwards;opacity:0}.chat-container__conversation-copied-wrapper{display:flex;align-items:center;gap:var(--mer-spacing--sm)}.chat-container__conversation-copied-wrapper{animation:liftUp var(--mer-timing--fast) ease-in-out forwards;inset-block-start:4px;opacity:0;animation-delay:var(--mer-timing--fast);position:relative}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes liftUp{from{opacity:0;inset-block-start:4px}to{opacity:1;inset-block-start:0}}.chat::part(message){position:relative;--copy-button-opacity:0;--copied-to-clipboard-opacity:0;--date-opacity:1}.chat::part(message__content){font-size:13px !important;line-height:1.3 !important}.chat::part(message user){width:90%;justify-self:end}.chat::part(message__time),.chat::part(message__copy-button){transition:opacity var(--mer-timing--super-fast) ease-in-out}.chat::part(message__time){opacity:var(--date-opacity)}.chat::part(message):hover{position:relative;--copy-button-opacity:1;--date-opacity:0}.chat::part(message__copy-button){position:absolute;z-index:1;inset-inline-end:0;padding:var(--mer-spacing--sm);transition:opacity var(--mer-timing--fast) ease-in-out;opacity:var(--copy-button-opacity)}.chat::part(message__copy-button)::after{content:\"\";inline-size:var(--mer-icon__box--md);block-size:var(--mer-icon__box--md);background:no-repeat center/var(--mer-icon__size--md) var(--icon-path);--icon-path:var(--icon__system_copy_primary--enabled)}.chat::part(message__copy-button):hover::after{--icon-path:var(--icon__system_copy_primary--hover)}.chat::part(message__copy-button):active::after{--icon-path:var(--icon__system_copy_primary--active)}.chat::part(message__copied-feedback){transition:opacity 150ms ease-in-out;position:absolute;inline-size:100%;block-size:100%;display:flex;align-items:center;justify-content:center;z-index:2;background:rgba(22, 22, 23, 0.8);backdrop-filter:saturate(180%) blur(20px);opacity:var(--copied-to-clipboard-opacity);pointer-events:none}.chat::part(message__copied-feedback-visible){--copied-to-clipboard-opacity:1;pointer-events:visible}.chat::part(send-container){gap:var(--mer-spacing--xs)}.chat::part(send-input){--control__padding-block:7px !important}.chat::part(send-button){border-width:var(--control__border-width);border-style:var(--control__border-style);border-color:var(--control__border-color);border-radius:var(--control__border-radius);inline-size:32px;block-size:32px;background:no-repeat center/var(--mer-icon__box--md) var(--icon-path);--icon-path:var(--icon__system_send_primary--enabled)}.chat::part(send-button):hover{--icon-path:var(--icon__system_send_primary--hover);--control__border-color:var(--mer-text__primary--hover)}.chat::part(send-button):active{--icon-path:var(--icon__system_send_primary--active);--control__border-color:var(--mer-border-color__primary--active)}.chat::part(message__processing){font-size:13px !important;line-height:1.4}.chat::part(message assistant waiting){align-items:center;gap:var(--mer-spacing--md) !important}.button-copy-chat,.button-delete-chat{--control__border-color:transparent !important}.button-delete-chat:hover{filter:brightness(1.3)}.button-delete-chat:active{filter:brightness(0.8)}";
6
6
 
7
7
  const CSS_BUNDLES = [
8
8
  "resets/box-sizing",
@@ -49,7 +49,7 @@ const GxIdeChatContainer = /*@__PURE__*/ proxyCustomElement(class GxIdeChatConta
49
49
  this.copyConversationCallback ||
50
50
  this.deleteConversationCallback;
51
51
  const renderButtonsGroup = this.copyConversationCallback || this.deleteConversationCallback;
52
- return (h(Host, { class: "chat-container" }, h("ch-theme", { model: CSS_BUNDLES }), h("section", { class: "section" }, renderHeader && (h("header", { class: "chat-container__header elevation-1 body-italic-m" }, this.chatTitle && this.chatTitle, renderButtonsGroup && (h("div", { class: "buttons-spacer" }, this.deleteConversationCallback && (h("button", { class: "button-secondary button-icon-only", onClick: this.deleteConversationCallback }, h("ch-image", { class: "icon-md", src: DELETE_ICON }))), this.copyConversationCallback && (h("button", { class: "button-secondary button-icon-only", onClick: this.copyConversationCallback }, h("ch-image", { class: "icon-md", src: COPY_ICON }))))))), h("section", { class: "chat-container__ch-chat" }, h("slot", null), this.displayConversationCopiedMessage && (h("div", { class: "chat-container__conversation-copied" }, h("div", { class: "chat-container__conversation-copied-wrapper" }, h("ch-image", { class: "icon-md", src: CONVERSATION_ICON }), h("p", { class: "body-regular-l" }, "conversation copied"))))))));
52
+ return (h(Host, { class: "chat-container" }, h("ch-theme", { model: CSS_BUNDLES }), h("section", { class: "section" }, renderHeader && (h("header", { class: "chat-container__header elevation-1 body-italic-m" }, this.chatTitle && this.chatTitle, renderButtonsGroup && (h("div", null, this.deleteConversationCallback && (h("button", { class: "button-secondary button-icon-only button-delete-chat", onClick: this.deleteConversationCallback }, h("ch-image", { class: "icon-md", src: DELETE_ICON }))), this.copyConversationCallback && (h("button", { class: "button-secondary button-icon-only button-copy-chat", onClick: this.copyConversationCallback }, h("ch-image", { class: "icon-md", src: COPY_ICON }))))))), h("section", { class: "chat-container__ch-chat" }, h("slot", null), this.displayConversationCopiedMessage && (h("div", { class: "chat-container__conversation-copied" }, h("div", { class: "chat-container__conversation-copied-wrapper" }, h("ch-image", { class: "icon-md", src: CONVERSATION_ICON }), h("p", { class: "body-regular-l" }, "conversation copied"))))))));
53
53
  }
54
54
  static get style() { return chatContainerCss; }
55
55
  }, [4, "gx-ide-chat-container", {
@@ -1 +1 @@
1
- {"file":"chat-container.js","mappings":";;;;AAAA,MAAM,gBAAgB,GAAG,isHAAisH;;ACG1tH,MAAM,WAAW,GAAmB;IAClC,mBAAmB;IACnB,kBAAkB;IAClB,qBAAqB;IACrB,mBAAmB;IACnB,iBAAiB;IACjB,iBAAiB;CAClB,CAAC;AAEF,MAAM,SAAS,GAAG,WAAW,CAAC;IAC5B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,SAAS;CACrB,CAAC,CAAC;AACH,MAAM,WAAW,GAAG,WAAW,CAAC;IAC9B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,iBAAiB;IACvB,SAAS,EAAE,OAAO;CACnB,CAAC,CAAC;AACH,MAAM,iBAAiB,GAAG,WAAW,CAAC;IACpC,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,sBAAsB;CAC7B,CAAC,CAAC;MAOU,kBAAkB;;;;;;;gDAmBwB,KAAK;;;;;IAM1D,MAAM,2BAA2B;QAC/B,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;QAC7C,UAAU,CAAC;YACT,IAAI,CAAC,gCAAgC,GAAG,KAAK,CAAC;SAC/C,EAAE,IAAI,CAAC,CAAC;KACV;IAED,MAAM;QACJ,MAAM,YAAY,GAChB,IAAI,CAAC,SAAS;YACd,IAAI,CAAC,wBAAwB;YAC7B,IAAI,CAAC,0BAA0B,CAAC;QAElC,MAAM,kBAAkB,GACtB,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,0BAA0B,CAAC;QACnE,QACE,EAAC,IAAI,IAAC,KAAK,EAAC,gBAAgB,IAC1B,gBAAU,KAAK,EAAE,WAAW,GAAa,EACzC,eAAS,KAAK,EAAC,SAAS,IACrB,YAAY,KACX,cAAQ,KAAK,EAAC,kDAAkD,IAC7D,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAEhC,kBAAkB,KACjB,WAAK,KAAK,EAAC,gBAAgB,IACxB,IAAI,CAAC,0BAA0B,KAC9B,cACE,KAAK,EAAC,mCAAmC,EACzC,OAAO,EAAE,IAAI,CAAC,0BAA0B,IAExC,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,WAAW,GAAa,CAChD,CACV,EAEA,IAAI,CAAC,wBAAwB,KAC5B,cACE,KAAK,EAAC,mCAAmC,EACzC,OAAO,EAAE,IAAI,CAAC,wBAAwB,IAEtC,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,SAAS,GAAa,CAC9C,CACV,CACG,CACP,CACM,CACV,EACD,eAAS,KAAK,EAAC,yBAAyB,IACtC,eAAa,EACZ,IAAI,CAAC,gCAAgC,KACpC,WAAK,KAAK,EAAC,qCAAqC,IAC9C,WAAK,KAAK,EAAC,6CAA6C,IACtD,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,iBAAiB,GAAa,EAC7D,SAAG,KAAK,EAAC,gBAAgB,0BAAwB,CAC7C,CACF,CACP,CACO,CAEF,CACL,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/_helpers/chat-container/chat-container.scss?tag=gx-ide-chat-container","src/components/_helpers/chat-container/chat-container.tsx"],"sourcesContent":[".chat-container {\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n gap: var(--mer-spacing--xs);\n padding: var(--mer-spacing--xs);\n position: relative;\n --chat-common-border-radius: var(--mer-spacing--2xs);\n}\n.section {\n display: contents;\n}\n\n// header\n.chat-container__header {\n padding: var(--mer-spacing--2xs) var(--mer-spacing--2xs)\n var(--mer-spacing--2xs) var(--mer-spacing--sm);\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--sm);\n justify-content: space-between;\n}\n\n// ch-chat container\n.chat-container__ch-chat {\n overflow: auto;\n position: relative;\n display: grid;\n}\n\n// footer\n\n// header & footer (common styles)\n.chat-container__header,\n.chat-container__footer {\n padding: var(--mer-spacing--2xs) var(--mer-spacing--2xs)\n var(--mer-spacing--2xs) var(--mer-spacing--sm);\n border-radius: var(--chat-common-border-radius);\n}\n\n.chat-container__conversation-copied {\n position: absolute;\n z-index: 1;\n inline-size: 100%;\n block-size: 100%;\n background: rgba(22, 22, 23, 0.75);\n backdrop-filter: saturate(180%) blur(20px);\n display: grid;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 32px;\n --mer-icon__box--md: 18px;\n pointer-events: none;\n overflow: hidden;\n animation: fadeIn 100ms ease-in-out forwards;\n opacity: 0;\n}\n.chat-container__conversation-copied-wrapper {\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--sm);\n}\n.chat-container__conversation-copied-wrapper {\n animation: liftUp var(--mer-timing--fast) ease-in-out forwards;\n inset-block-start: 4px;\n opacity: 0;\n animation-delay: var(--mer-timing--fast);\n position: relative;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes liftUp {\n from {\n opacity: 0;\n inset-block-start: 4px;\n }\n to {\n opacity: 1;\n inset-block-start: 0;\n }\n}\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - -\n// ch-chat overrides TODO: move this styles to Mercury\n// - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n.chat::part(message) {\n position: relative;\n --copy-button-opacity: 0;\n --copied-to-clipboard-opacity: 0;\n --date-opacity: 1;\n}\n.chat::part(message__time),\n.chat::part(message__copy-button) {\n transition: opacity var(--mer-timing--super-fast) ease-in-out;\n}\n.chat::part(message__time) {\n opacity: var(--date-opacity);\n}\n.chat::part(message):hover {\n position: relative;\n --copy-button-opacity: 1;\n --date-opacity: 0;\n}\n.chat::part(message__copy-button) {\n position: absolute;\n z-index: 1;\n inset-inline-end: 0;\n padding: var(--mer-spacing--sm); // same as part::(message)\n transition: opacity var(--mer-timing--fast) ease-in-out;\n opacity: var(--copy-button-opacity);\n\n &::after {\n content: \"\";\n inline-size: var(--mer-icon__box--md);\n block-size: var(--mer-icon__box--md);\n background: no-repeat center / var(--mer-icon__size--md) var(--icon-path);\n --icon-path: var(--icon__system_copy_primary--enabled);\n }\n &:hover::after {\n --icon-path: var(--icon__system_copy_primary--hover);\n }\n &:active::after {\n --icon-path: var(--icon__system_copy_primary--active);\n }\n}\n\n// // copy button effect\n.chat::part(message__copied-feedback) {\n transition: opacity 150ms ease-in-out;\n position: absolute;\n inline-size: 100%;\n block-size: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 2;\n background: rgba(22, 22, 23, 0.8);\n backdrop-filter: saturate(180%) blur(20px);\n opacity: var(--copied-to-clipboard-opacity);\n pointer-events: none;\n}\n\n.chat::part(message__copied-feedback-visible) {\n --copied-to-clipboard-opacity: 1;\n pointer-events: visible;\n}\n\n// send button\n\n.chat::part(send-container) {\n gap: var(--mer-spacing--xs);\n}\n.chat::part(send-input) {\n --control__padding-block: 7px !important;\n}\n\n.chat::part(send-button) {\n border-width: var(--control__border-width);\n border-style: var(--control__border-style);\n border-color: var(--control__border-color);\n border-radius: var(--control__border-radius);\n inline-size: 32px;\n block-size: 32px;\n background: no-repeat center / var(--mer-icon__box--md) var(--icon-path);\n --icon-path: var(--icon__system_send_primary--enabled);\n}\n.chat::part(send-button):hover {\n --icon-path: var(--icon__system_send_primary--hover);\n --control__border-color: var(--mer-text__primary--hover);\n}\n.chat::part(send-button):active {\n --icon-path: var(--icon__system_send_primary--active);\n --control__border-color: var(--mer-border-color__primary--active);\n}\n","import { Component, Host, h, Prop, Method, State } from \"@stencil/core\";\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"chameleon/scrollbar\",\n \"components/button\",\n \"components/icon\",\n \"utils/elevation\"\n];\n\nconst COPY_ICON = getIconPath({\n category: \"system\",\n name: \"copy\",\n colorType: \"neutral\"\n});\nconst DELETE_ICON = getIconPath({\n category: \"system\",\n name: \"delete-outlined\",\n colorType: \"error\"\n});\nconst CONVERSATION_ICON = getIconPath({\n category: \"objects\",\n name: \"conversational-flows\"\n});\n\n@Component({\n tag: \"gx-ide-chat-container\",\n styleUrl: \"chat-container.scss\",\n shadow: false\n})\nexport class GxIdeChatContainer {\n /**\n * The chat title\n */\n @Prop() readonly chatTitle?: string;\n\n /**\n * If true a button for copying the conversation will be render on the header\n */\n @Prop() readonly copyConversationCallback: () => void;\n\n /**\n * If true a button for deleting the conversation will be render on the header\n */\n @Prop() readonly deleteConversationCallback: () => void;\n\n /**\n * Coneration Copied\n */\n @State() displayConversationCopiedMessage: boolean = false;\n\n /**\n * It will display a feedback message that the conversation has been copied\n */\n @Method()\n async showCopyConversationMessage() {\n this.displayConversationCopiedMessage = true;\n setTimeout(() => {\n this.displayConversationCopiedMessage = false;\n }, 2000);\n }\n\n render() {\n const renderHeader =\n this.chatTitle ||\n this.copyConversationCallback ||\n this.deleteConversationCallback;\n\n const renderButtonsGroup =\n this.copyConversationCallback || this.deleteConversationCallback;\n return (\n <Host class=\"chat-container\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n {renderHeader && (\n <header class=\"chat-container__header elevation-1 body-italic-m\">\n {this.chatTitle && this.chatTitle}\n\n {renderButtonsGroup && (\n <div class=\"buttons-spacer\">\n {this.deleteConversationCallback && (\n <button\n class=\"button-secondary button-icon-only\"\n onClick={this.deleteConversationCallback}\n >\n <ch-image class=\"icon-md\" src={DELETE_ICON}></ch-image>\n </button>\n )}\n\n {this.copyConversationCallback && (\n <button\n class=\"button-secondary button-icon-only\"\n onClick={this.copyConversationCallback}\n >\n <ch-image class=\"icon-md\" src={COPY_ICON}></ch-image>\n </button>\n )}\n </div>\n )}\n </header>\n )}\n <section class=\"chat-container__ch-chat\">\n <slot></slot>\n {this.displayConversationCopiedMessage && (\n <div class=\"chat-container__conversation-copied\">\n <div class=\"chat-container__conversation-copied-wrapper\">\n <ch-image class=\"icon-md\" src={CONVERSATION_ICON}></ch-image>\n <p class=\"body-regular-l\">conversation copied</p>\n </div>\n </div>\n )}\n </section>\n {/* <footer class=\"chat-container__footer elevation-1\">footer</footer> */}\n </section>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"chat-container.js","mappings":";;;;AAAA,MAAM,gBAAgB,GAAG,0pIAA0pI;;ACGnrI,MAAM,WAAW,GAAmB;IAClC,mBAAmB;IACnB,kBAAkB;IAClB,qBAAqB;IACrB,mBAAmB;IACnB,iBAAiB;IACjB,iBAAiB;CAClB,CAAC;AAEF,MAAM,SAAS,GAAG,WAAW,CAAC;IAC5B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,SAAS;CACrB,CAAC,CAAC;AACH,MAAM,WAAW,GAAG,WAAW,CAAC;IAC9B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,iBAAiB;IACvB,SAAS,EAAE,OAAO;CACnB,CAAC,CAAC;AACH,MAAM,iBAAiB,GAAG,WAAW,CAAC;IACpC,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,sBAAsB;CAC7B,CAAC,CAAC;MAOU,kBAAkB;;;;;;;gDAmBwB,KAAK;;;;;IAM1D,MAAM,2BAA2B;QAC/B,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;QAC7C,UAAU,CAAC;YACT,IAAI,CAAC,gCAAgC,GAAG,KAAK,CAAC;SAC/C,EAAE,IAAI,CAAC,CAAC;KACV;IAED,MAAM;QACJ,MAAM,YAAY,GAChB,IAAI,CAAC,SAAS;YACd,IAAI,CAAC,wBAAwB;YAC7B,IAAI,CAAC,0BAA0B,CAAC;QAElC,MAAM,kBAAkB,GACtB,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,0BAA0B,CAAC;QACnE,QACE,EAAC,IAAI,IAAC,KAAK,EAAC,gBAAgB,IAC1B,gBAAU,KAAK,EAAE,WAAW,GAAa,EACzC,eAAS,KAAK,EAAC,SAAS,IACrB,YAAY,KACX,cAAQ,KAAK,EAAC,kDAAkD,IAC7D,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAEhC,kBAAkB,KACjB,eACG,IAAI,CAAC,0BAA0B,KAC9B,cACE,KAAK,EAAC,sDAAsD,EAC5D,OAAO,EAAE,IAAI,CAAC,0BAA0B,IAExC,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,WAAW,GAAa,CAChD,CACV,EAEA,IAAI,CAAC,wBAAwB,KAC5B,cACE,KAAK,EAAC,oDAAoD,EAC1D,OAAO,EAAE,IAAI,CAAC,wBAAwB,IAEtC,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,SAAS,GAAa,CAC9C,CACV,CACG,CACP,CACM,CACV,EACD,eAAS,KAAK,EAAC,yBAAyB,IACtC,eAAa,EACZ,IAAI,CAAC,gCAAgC,KACpC,WAAK,KAAK,EAAC,qCAAqC,IAC9C,WAAK,KAAK,EAAC,6CAA6C,IACtD,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,iBAAiB,GAAa,EAC7D,SAAG,KAAK,EAAC,gBAAgB,0BAAwB,CAC7C,CACF,CACP,CACO,CAEF,CACL,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/_helpers/chat-container/chat-container.scss?tag=gx-ide-chat-container","src/components/_helpers/chat-container/chat-container.tsx"],"sourcesContent":[".chat-container {\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n gap: 6px;\n position: relative;\n --chat-common-border-radius: var(--mer-spacing--2xs);\n}\n.section {\n display: contents;\n}\n\n// header\n.chat-container__header {\n padding: var(--mer-spacing--2xs) var(--mer-spacing--2xs)\n var(--mer-spacing--2xs) var(--mer-spacing--sm);\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--sm);\n justify-content: space-between;\n}\n\n// ch-chat container\n.chat-container__ch-chat {\n overflow: auto;\n position: relative;\n display: grid;\n padding: 0 var(--mer-spacing--xs) var(--mer-spacing--xs)\n var(--mer-spacing--xs);\n}\n\n// footer\n\n// header & footer (common styles)\n.chat-container__header,\n.chat-container__footer {\n padding: var(--mer-spacing--2xs) var(--mer-spacing--2xs)\n var(--mer-spacing--2xs) var(--mer-spacing--sm);\n}\n\n.chat-container__conversation-copied {\n position: absolute;\n z-index: 1;\n inline-size: 100%;\n block-size: 100%;\n background: rgba(22, 22, 23, 0.75);\n backdrop-filter: saturate(180%) blur(20px);\n display: grid;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 32px;\n --mer-icon__box--md: 18px;\n pointer-events: none;\n overflow: hidden;\n animation: fadeIn 100ms ease-in-out forwards;\n opacity: 0;\n}\n.chat-container__conversation-copied-wrapper {\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--sm);\n}\n.chat-container__conversation-copied-wrapper {\n animation: liftUp var(--mer-timing--fast) ease-in-out forwards;\n inset-block-start: 4px;\n opacity: 0;\n animation-delay: var(--mer-timing--fast);\n position: relative;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes liftUp {\n from {\n opacity: 0;\n inset-block-start: 4px;\n }\n to {\n opacity: 1;\n inset-block-start: 0;\n }\n}\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - -\n// ch-chat overrides TODO: move this styles to Mercury\n// - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n.chat::part(message) {\n position: relative;\n --copy-button-opacity: 0;\n --copied-to-clipboard-opacity: 0;\n --date-opacity: 1;\n}\n\n.chat::part(message__content) {\n font-size: 13px !important;\n line-height: 1.3 !important;\n}\n\n.chat::part(message user) {\n width: 90%;\n justify-self: end; // improve understanding which is the user message\n}\n.chat::part(message__time),\n.chat::part(message__copy-button) {\n transition: opacity var(--mer-timing--super-fast) ease-in-out;\n}\n.chat::part(message__time) {\n opacity: var(--date-opacity);\n}\n.chat::part(message):hover {\n position: relative;\n --copy-button-opacity: 1;\n --date-opacity: 0;\n}\n.chat::part(message__copy-button) {\n position: absolute;\n z-index: 1;\n inset-inline-end: 0;\n padding: var(--mer-spacing--sm); // same as part::(message)\n transition: opacity var(--mer-timing--fast) ease-in-out;\n opacity: var(--copy-button-opacity);\n\n &::after {\n content: \"\";\n inline-size: var(--mer-icon__box--md);\n block-size: var(--mer-icon__box--md);\n background: no-repeat center / var(--mer-icon__size--md) var(--icon-path);\n --icon-path: var(--icon__system_copy_primary--enabled);\n }\n &:hover::after {\n --icon-path: var(--icon__system_copy_primary--hover);\n }\n &:active::after {\n --icon-path: var(--icon__system_copy_primary--active);\n }\n}\n\n// copy button effect\n.chat::part(message__copied-feedback) {\n transition: opacity 150ms ease-in-out;\n position: absolute;\n inline-size: 100%;\n block-size: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 2;\n background: rgba(22, 22, 23, 0.8);\n backdrop-filter: saturate(180%) blur(20px);\n opacity: var(--copied-to-clipboard-opacity);\n pointer-events: none;\n}\n\n.chat::part(message__copied-feedback-visible) {\n --copied-to-clipboard-opacity: 1;\n pointer-events: visible;\n}\n\n// send button\n.chat::part(send-container) {\n gap: var(--mer-spacing--xs);\n}\n.chat::part(send-input) {\n --control__padding-block: 7px !important;\n}\n\n.chat::part(send-button) {\n border-width: var(--control__border-width);\n border-style: var(--control__border-style);\n border-color: var(--control__border-color);\n border-radius: var(--control__border-radius);\n inline-size: 32px;\n block-size: 32px;\n background: no-repeat center / var(--mer-icon__box--md) var(--icon-path);\n --icon-path: var(--icon__system_send_primary--enabled);\n}\n.chat::part(send-button):hover {\n --icon-path: var(--icon__system_send_primary--hover);\n --control__border-color: var(--mer-text__primary--hover);\n}\n.chat::part(send-button):active {\n --icon-path: var(--icon__system_send_primary--active);\n --control__border-color: var(--mer-border-color__primary--active);\n}\n\n// assistant\n\n.chat::part(message__processing) {\n font-size: 13px !important;\n line-height: 1.4;\n}\n\n.chat::part(message assistant waiting) {\n align-items: center;\n gap: var(--mer-spacing--md) !important;\n}\n\n.button-copy-chat,\n.button-delete-chat {\n --control__border-color: transparent !important;\n}\n.button-delete-chat {\n &:hover {\n filter: brightness(1.3);\n }\n &:active {\n filter: brightness(0.8);\n }\n}\n","import { Component, Host, h, Prop, Method, State } from \"@stencil/core\";\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"chameleon/scrollbar\",\n \"components/button\",\n \"components/icon\",\n \"utils/elevation\"\n];\n\nconst COPY_ICON = getIconPath({\n category: \"system\",\n name: \"copy\",\n colorType: \"neutral\"\n});\nconst DELETE_ICON = getIconPath({\n category: \"system\",\n name: \"delete-outlined\",\n colorType: \"error\"\n});\nconst CONVERSATION_ICON = getIconPath({\n category: \"objects\",\n name: \"conversational-flows\"\n});\n\n@Component({\n tag: \"gx-ide-chat-container\",\n styleUrl: \"chat-container.scss\",\n shadow: false\n})\nexport class GxIdeChatContainer {\n /**\n * The chat title\n */\n @Prop() readonly chatTitle?: string;\n\n /**\n * If true a button for copying the conversation will be render on the header\n */\n @Prop() readonly copyConversationCallback: () => void;\n\n /**\n * If true a button for deleting the conversation will be render on the header\n */\n @Prop() readonly deleteConversationCallback: () => void;\n\n /**\n * Coneration Copied\n */\n @State() displayConversationCopiedMessage: boolean = false;\n\n /**\n * It will display a feedback message that the conversation has been copied\n */\n @Method()\n async showCopyConversationMessage() {\n this.displayConversationCopiedMessage = true;\n setTimeout(() => {\n this.displayConversationCopiedMessage = false;\n }, 2000);\n }\n\n render() {\n const renderHeader =\n this.chatTitle ||\n this.copyConversationCallback ||\n this.deleteConversationCallback;\n\n const renderButtonsGroup =\n this.copyConversationCallback || this.deleteConversationCallback;\n return (\n <Host class=\"chat-container\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n {renderHeader && (\n <header class=\"chat-container__header elevation-1 body-italic-m\">\n {this.chatTitle && this.chatTitle}\n\n {renderButtonsGroup && (\n <div>\n {this.deleteConversationCallback && (\n <button\n class=\"button-secondary button-icon-only button-delete-chat\"\n onClick={this.deleteConversationCallback}\n >\n <ch-image class=\"icon-md\" src={DELETE_ICON}></ch-image>\n </button>\n )}\n\n {this.copyConversationCallback && (\n <button\n class=\"button-secondary button-icon-only button-copy-chat\"\n onClick={this.copyConversationCallback}\n >\n <ch-image class=\"icon-md\" src={COPY_ICON}></ch-image>\n </button>\n )}\n </div>\n )}\n </header>\n )}\n <section class=\"chat-container__ch-chat\">\n <slot></slot>\n {this.displayConversationCopiedMessage && (\n <div class=\"chat-container__conversation-copied\">\n <div class=\"chat-container__conversation-copied-wrapper\">\n <ch-image class=\"icon-md\" src={CONVERSATION_ICON}></ch-image>\n <p class=\"body-regular-l\">conversation copied</p>\n </div>\n </div>\n )}\n </section>\n {/* <footer class=\"chat-container__footer elevation-1\">footer</footer> */}\n </section>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -3,6 +3,13 @@ import './MERCURY_ASSETS.js';
3
3
 
4
4
  const MESSAGE_COPIED_PART_SELECTOR = "message__copied-feedback";
5
5
  const MESSAGE_COPIED_VISIBLE_PART_SELECTOR = "message__copied-feedback-visible";
6
+ const ANIMATION_DOTS = (h("svg", { width: "36", height: "8", fill: "transparent" },
7
+ h("circle", { cx: "4", cy: "4", r: "4", opacity: "0", fill: "var(--mer-color__primary--200)" },
8
+ h("animate", { attributeName: "opacity", values: "0;1;0", dur: "1s", repeatCount: "indefinite" })),
9
+ h("circle", { cx: "18", cy: "4", r: "4", opacity: "0", fill: "var(--mer-color__primary--200)" },
10
+ h("animate", { attributeName: "opacity", values: "0;1;0", dur: "1s", begin: "0.15s", repeatCount: "indefinite" })),
11
+ h("circle", { cx: "32", cy: "4", r: "4", opacity: "0", fill: "var(--mer-color__primary--200)" },
12
+ h("animate", { attributeName: "opacity", values: "0;1;0", dur: "1s", begin: "0.30s", repeatCount: "indefinite" }))));
6
13
  const copy = (text) => (event) => {
7
14
  event.stopPropagation();
8
15
  // 1. Copy message
@@ -24,10 +31,10 @@ const copyButton = (textToCopy, accessibleName, additionalPart) => {
24
31
  const mercuryCodeRender = (copyButtonAccessibleName) => (options) => (h("div", { class: "code-block-container" },
25
32
  h("div", { class: "code-block-header" }, copyButton(options.plainText, copyButtonAccessibleName, "code-render")),
26
33
  h("ch-code", { language: options.language, lastNestedChildClass: options.lastNestedChildClass, value: options.plainText })));
27
- const mercuryChatMessageRender = (theme, userName = "You", assistantName = "AI Assistant", assistantTaskDescription = "Processing request") => (messageModel) => messageModel.role === "assistant" && messageModel.status === "waiting"
34
+ const mercuryChatMessageRender = (theme, userName = "You", assistantName = "AI Assistant") => (messageModel) => messageModel.role === "assistant" && messageModel.status === "waiting"
28
35
  ? [
29
- h("span", { part: "message__processing" }, assistantTaskDescription),
30
- h("div", { class: "processing-animation", part: "processing-animation" })
36
+ h("span", { part: "message__processing" }, messageModel.content),
37
+ ANIMATION_DOTS
31
38
  ]
32
39
  : [
33
40
  // "copy button" before "role" and "time" to hide both on button:focus
@@ -1 +1 @@
1
- {"file":"code-render.js","mappings":"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","names":[],"sources":["src/components/_helpers/chat-container/code-render.tsx"],"sourcesContent":["import { h } from \"@stencil/core\";\nimport {\n MarkdownViewerCodeRender,\n ChatMessageByRole\n} from \"@genexus/chameleon-controls-library\";\nimport { MarkdownViewerCodeRenderOptions } from \"@genexus/chameleon-controls-library/dist/types/components/markdown-viewer/parsers/types\";\nimport { getIconPath } from \"@genexus/mercury\";\ngetIconPath;\n\nconst MESSAGE_COPIED_PART_SELECTOR = \"message__copied-feedback\";\nconst MESSAGE_COPIED_VISIBLE_PART_SELECTOR = \"message__copied-feedback-visible\";\n\nconst copy = (text: string) => (event: Event) => {\n event.stopPropagation();\n\n // 1. Copy message\n navigator.clipboard.writeText(text);\n\n // 2. Display \"copied\" message (expects to be the next sibling!)\n const copiedFeedbackRef = (event.target as HTMLElement)\n .nextSibling as HTMLElement;\n const copiedFeedbackPart = copiedFeedbackRef.getAttribute(\"part\");\n if (copiedFeedbackPart === MESSAGE_COPIED_PART_SELECTOR) {\n copiedFeedbackRef.setAttribute(\n \"part\",\n `${MESSAGE_COPIED_PART_SELECTOR} ${MESSAGE_COPIED_VISIBLE_PART_SELECTOR}`\n );\n\n setTimeout(() => {\n copiedFeedbackRef.setAttribute(\"part\", `${MESSAGE_COPIED_PART_SELECTOR}`);\n }, 1000);\n }\n};\n\nconst copyButton = (\n textToCopy: string,\n accessibleName: string,\n additionalPart: string\n) => {\n return (\n <button\n aria-label={accessibleName}\n title={accessibleName}\n class=\"button-copy-code\"\n type=\"button\"\n onClick={copy(textToCopy)}\n part={`message__copy-button ${additionalPart}`}\n ></button>\n );\n};\n\nexport const mercuryCodeRender =\n (copyButtonAccessibleName: string) =>\n (options: MarkdownViewerCodeRenderOptions): MarkdownViewerCodeRender =>\n (\n <div class=\"code-block-container\">\n <div class=\"code-block-header\">\n {copyButton(\n options.plainText,\n copyButtonAccessibleName,\n \"code-render\"\n )}\n </div>\n <ch-code\n language={options.language}\n lastNestedChildClass={options.lastNestedChildClass}\n value={options.plainText}\n ></ch-code>\n </div>\n );\n\nexport const mercuryChatMessageRender =\n (\n theme: string,\n userName: string = \"You\",\n assistantName: string = \"AI Assistant\",\n assistantTaskDescription: string = \"Processing request\"\n ) =>\n (messageModel: ChatMessageByRole<\"assistant\" | \"error\" | \"user\">) =>\n messageModel.role === \"assistant\" && messageModel.status === \"waiting\"\n ? [\n <span part=\"message__processing\">{assistantTaskDescription}</span>,\n\n <div class=\"processing-animation\" part=\"processing-animation\"></div>\n ]\n : [\n // \"copy button\" before \"role\" and \"time\" to hide both on button:focus\n copyButton(\n messageModel.content as string,\n \"Copy code\",\n \"common-message\"\n ),\n <p part={MESSAGE_COPIED_PART_SELECTOR}>\n message copied to clipboard\n </p>,\n <span part={`message__role ${messageModel.role}`}>\n {messageModel.role === \"user\" ? userName : assistantName}\n </span>,\n <time dateTime={messageModel.metadata} part=\"message__time\">\n {messageModel.metadata}\n </time>,\n\n messageModel.role === \"user\" ? (\n <span part=\"message__content user\">{messageModel.content}</span>\n ) : (\n <ch-markdown-viewer\n part={\n messageModel.role === \"assistant\" &&\n (messageModel.status === \"complete\" || !messageModel.status) &&\n !messageModel.parts\n ? `message__content no-error`\n : \"message__content\"\n }\n theme={theme}\n showIndicator={false}\n renderCode={mercuryCodeRender(\"Copy code\")}\n value={messageModel.content as string}\n ></ch-markdown-viewer>\n )\n ];\n"],"version":3}
1
+ {"file":"code-render.js","mappings":"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","names":[],"sources":["src/components/_helpers/chat-container/code-render.tsx"],"sourcesContent":["import { h } from \"@stencil/core\";\nimport {\n MarkdownViewerCodeRender,\n ChatMessageByRole\n} from \"@genexus/chameleon-controls-library\";\nimport { MarkdownViewerCodeRenderOptions } from \"@genexus/chameleon-controls-library/dist/types/components/markdown-viewer/parsers/types\";\nimport { getIconPath } from \"@genexus/mercury\";\ngetIconPath;\n\nconst MESSAGE_COPIED_PART_SELECTOR = \"message__copied-feedback\";\nconst MESSAGE_COPIED_VISIBLE_PART_SELECTOR = \"message__copied-feedback-visible\";\n\nconst ANIMATION_DOTS = (\n <svg width=\"36\" height=\"8\" fill=\"transparent\">\n <circle\n cx=\"4\"\n cy=\"4\"\n r=\"4\"\n opacity=\"0\"\n fill=\"var(--mer-color__primary--200)\"\n >\n <animate\n attributeName=\"opacity\"\n values=\"0;1;0\"\n dur=\"1s\"\n repeatCount=\"indefinite\"\n />\n </circle>\n <circle\n cx=\"18\"\n cy=\"4\"\n r=\"4\"\n opacity=\"0\"\n fill=\"var(--mer-color__primary--200)\"\n >\n <animate\n attributeName=\"opacity\"\n values=\"0;1;0\"\n dur=\"1s\"\n begin=\"0.15s\"\n repeatCount=\"indefinite\"\n />\n </circle>\n <circle\n cx=\"32\"\n cy=\"4\"\n r=\"4\"\n opacity=\"0\"\n fill=\"var(--mer-color__primary--200)\"\n >\n <animate\n attributeName=\"opacity\"\n values=\"0;1;0\"\n dur=\"1s\"\n begin=\"0.30s\"\n repeatCount=\"indefinite\"\n />\n </circle>\n </svg>\n);\n\nconst copy = (text: string) => (event: Event) => {\n event.stopPropagation();\n\n // 1. Copy message\n navigator.clipboard.writeText(text);\n\n // 2. Display \"copied\" message (expects to be the next sibling!)\n const copiedFeedbackRef = (event.target as HTMLElement)\n .nextSibling as HTMLElement;\n const copiedFeedbackPart = copiedFeedbackRef.getAttribute(\"part\");\n if (copiedFeedbackPart === MESSAGE_COPIED_PART_SELECTOR) {\n copiedFeedbackRef.setAttribute(\n \"part\",\n `${MESSAGE_COPIED_PART_SELECTOR} ${MESSAGE_COPIED_VISIBLE_PART_SELECTOR}`\n );\n\n setTimeout(() => {\n copiedFeedbackRef.setAttribute(\"part\", `${MESSAGE_COPIED_PART_SELECTOR}`);\n }, 1000);\n }\n};\n\nconst copyButton = (\n textToCopy: string,\n accessibleName: string,\n additionalPart: string\n) => {\n return (\n <button\n aria-label={accessibleName}\n title={accessibleName}\n class=\"button-copy-code\"\n type=\"button\"\n onClick={copy(textToCopy)}\n part={`message__copy-button ${additionalPart}`}\n ></button>\n );\n};\n\nexport const mercuryCodeRender =\n (copyButtonAccessibleName: string) =>\n (options: MarkdownViewerCodeRenderOptions): MarkdownViewerCodeRender =>\n (\n <div class=\"code-block-container\">\n <div class=\"code-block-header\">\n {copyButton(\n options.plainText,\n copyButtonAccessibleName,\n \"code-render\"\n )}\n </div>\n <ch-code\n language={options.language}\n lastNestedChildClass={options.lastNestedChildClass}\n value={options.plainText}\n ></ch-code>\n </div>\n );\n\nexport const mercuryChatMessageRender =\n (\n theme: string,\n userName: string = \"You\",\n assistantName: string = \"AI Assistant\"\n ) =>\n (messageModel: ChatMessageByRole<\"assistant\" | \"error\" | \"user\">) =>\n messageModel.role === \"assistant\" && messageModel.status === \"waiting\"\n ? [\n <span part=\"message__processing\">{messageModel.content}</span>,\n ANIMATION_DOTS\n ]\n : [\n // \"copy button\" before \"role\" and \"time\" to hide both on button:focus\n copyButton(\n messageModel.content as string,\n \"Copy code\",\n \"common-message\"\n ),\n <p part={MESSAGE_COPIED_PART_SELECTOR}>\n message copied to clipboard\n </p>,\n <span part={`message__role ${messageModel.role}`}>\n {messageModel.role === \"user\" ? userName : assistantName}\n </span>,\n <time dateTime={messageModel.metadata} part=\"message__time\">\n {messageModel.metadata}\n </time>,\n\n messageModel.role === \"user\" ? (\n <span part=\"message__content user\">{messageModel.content}</span>\n ) : (\n <ch-markdown-viewer\n part={\n messageModel.role === \"assistant\" &&\n (messageModel.status === \"complete\" || !messageModel.status) &&\n !messageModel.parts\n ? `message__content no-error`\n : \"message__content\"\n }\n theme={theme}\n showIndicator={false}\n renderCode={mercuryCodeRender(\"Copy code\")}\n value={messageModel.content as string}\n ></ch-markdown-viewer>\n )\n ];\n"],"version":3}