@genexus/genexus-ide-ui 1.0.56 → 1.0.58

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 (336) 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 +2 -2
  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 +5 -1
  21. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js.map +1 -1
  22. package/dist/cjs/gx-ide-current-user-info.cjs.entry.js +1 -1
  23. package/dist/cjs/gx-ide-dashboard-home.cjs.entry.js +2 -2
  24. package/dist/cjs/gx-ide-data-selector.cjs.entry.js +1 -1
  25. package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js +1 -1
  26. package/dist/cjs/gx-ide-design-import.cjs.entry.js +1 -1
  27. package/dist/cjs/gx-ide-directory-selector.cjs.entry.js +1 -1
  28. package/dist/cjs/gx-ide-edit-module-server.cjs.entry.js +1 -1
  29. package/dist/cjs/gx-ide-empty-state.cjs.entry.js +1 -1
  30. package/dist/cjs/gx-ide-entity-selector.cjs.entry.js +1 -1
  31. package/dist/cjs/gx-ide-gam-installation-settings.cjs.entry.js +1 -1
  32. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +1 -1
  33. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +1 -1
  34. package/dist/cjs/gx-ide-list-selector_2.cjs.entry.js +1 -1
  35. package/dist/cjs/gx-ide-loader.cjs.entry.js +1 -1
  36. package/dist/cjs/gx-ide-manage-module-references-v2.cjs.entry.js +2 -2
  37. package/dist/cjs/gx-ide-manage-module-references.cjs.entry.js +2 -2
  38. package/dist/cjs/gx-ide-navigation-report.cjs.entry.js +1 -1
  39. package/dist/cjs/gx-ide-new-environment.cjs.entry.js +3 -3
  40. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +3 -3
  41. package/dist/cjs/gx-ide-new-object.cjs.entry.js +1 -1
  42. package/dist/cjs/gx-ide-object-selector.cjs.entry.js +2 -2
  43. package/dist/cjs/gx-ide-references.cjs.entry.js +2 -2
  44. package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js +5 -16
  45. package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js.map +1 -1
  46. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js +13 -6
  47. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js.map +1 -1
  48. package/dist/cjs/gx-ide-select-user-team.cjs.entry.js +1 -1
  49. package/dist/cjs/gx-ide-share-kb.cjs.entry.js +1 -1
  50. package/dist/cjs/gx-ide-sign-in-team.cjs.entry.js +1 -1
  51. package/dist/cjs/gx-ide-sign-in.cjs.entry.js +1 -1
  52. package/dist/cjs/gx-ide-splash.cjs.entry.js +1 -1
  53. package/dist/cjs/gx-ide-start-page.cjs.entry.js +1 -1
  54. package/dist/cjs/gx-ide-status-buttons.cjs.entry.js +1 -1
  55. package/dist/cjs/gx-ide-switch-panel.cjs.entry.js +1 -1
  56. package/dist/cjs/gx-ide-switcher.cjs.entry.js +1 -1
  57. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +3 -3
  58. package/dist/cjs/gx-ide-team-dev-select-recent-comment.cjs.entry.js +2 -2
  59. package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js +1 -1
  60. package/dist/cjs/gx-ide-team-dev-update-to-revision.cjs.entry.js +1 -1
  61. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +3 -3
  62. package/dist/cjs/gx-ide-template.cjs.entry.js +1 -1
  63. package/dist/cjs/gx-ide-test.cjs.entry.js +1 -1
  64. package/dist/cjs/gx-ide-top-bar.cjs.entry.js +1 -1
  65. package/dist/cjs/gx-ide-welcome-page.cjs.entry.js +1 -1
  66. package/dist/cjs/gx-ide-wf-settings.cjs.entry.js +1 -1
  67. package/dist/cjs/gx-ide-ww-attributes.cjs.entry.js +1 -1
  68. package/dist/cjs/gx-ide-ww-images.cjs.entry.js +3 -3
  69. package/dist/cjs/{helpers-03ef57a7.js → helpers-30f109a4.js} +2 -2
  70. package/dist/cjs/{helpers-03ef57a7.js.map → helpers-30f109a4.js.map} +1 -1
  71. package/dist/cjs/{index-caaa95cf.js → index-e227aefb.js} +34 -4
  72. package/dist/cjs/index-e227aefb.js.map +1 -0
  73. package/dist/cjs/index.cjs.js +2 -2
  74. package/dist/cjs/loader.cjs.js +2 -2
  75. package/dist/cjs/{render-combo-items-878e8852.js → render-combo-items-e774f796.js} +2 -2
  76. package/dist/cjs/{render-combo-items-878e8852.js.map → render-combo-items-e774f796.js.map} +1 -1
  77. package/dist/cjs/{render-list-item-c71032e3.js → render-list-item-7c6449c4.js} +2 -2
  78. package/dist/cjs/{render-list-item-c71032e3.js.map → render-list-item-7c6449c4.js.map} +1 -1
  79. package/dist/cjs/{render-suggest-4c515c9d.js → render-suggest-4a569cbe.js} +2 -2
  80. package/dist/cjs/{render-suggest-4c515c9d.js.map → render-suggest-4a569cbe.js.map} +1 -1
  81. package/dist/collection/components/_helpers/chat-container/chat-container.css +34 -3
  82. package/dist/collection/components/_helpers/chat-container/chat-container.js +1 -1
  83. package/dist/collection/components/_helpers/chat-container/chat-container.js.map +1 -1
  84. package/dist/collection/components/_helpers/chat-container/code-render.js +4 -3
  85. package/dist/collection/components/_helpers/chat-container/code-render.js.map +1 -1
  86. package/dist/collection/components/select-kb-items/select-kb-items.css +8 -0
  87. package/dist/collection/components/select-kb-items/select-kb-items.js +12 -4
  88. package/dist/collection/components/select-kb-items/select-kb-items.js.map +1 -1
  89. package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js +4 -0
  90. package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js.map +1 -1
  91. package/dist/collection/showcase/chat-container/callbacks.js +2 -13
  92. package/dist/collection/showcase/chat-container/callbacks.js.map +1 -1
  93. package/dist/collection/showcase/chat-container/chat.showcase.js +1 -1
  94. package/dist/collection/showcase/chat-container/chat.showcase.js.map +1 -1
  95. package/dist/components/chat-container.js +2 -2
  96. package/dist/components/chat-container.js.map +1 -1
  97. package/dist/components/code-render.js +10 -3
  98. package/dist/components/code-render.js.map +1 -1
  99. package/dist/components/gx-ide-create-kb-from-server.js +4 -0
  100. package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
  101. package/dist/components/gx-ide-sc-chat-container.js +3 -14
  102. package/dist/components/gx-ide-sc-chat-container.js.map +1 -1
  103. package/dist/components/gx-ide-select-kb-items.js +20 -6
  104. package/dist/components/gx-ide-select-kb-items.js.map +1 -1
  105. package/dist/components/index.js +0 -1
  106. package/dist/components/index.js.map +1 -1
  107. package/dist/esm/{code-render-9ccc8dac.js → code-render-67c13139.js} +12 -5
  108. package/dist/esm/code-render-67c13139.js.map +1 -0
  109. package/dist/esm/{common-c15a0328.js → common-2a1e4e67.js} +2 -2
  110. package/dist/esm/{common-c15a0328.js.map → common-2a1e4e67.js.map} +1 -1
  111. package/dist/esm/genexus-ide-ui.js +3 -3
  112. package/dist/esm/gx-ide-ai-assistant.entry.js +1 -1
  113. package/dist/esm/gx-ide-ai-message.entry.js +2 -2
  114. package/dist/esm/gx-ide-bpm-app-declaration.entry.js +3 -3
  115. package/dist/esm/gx-ide-bpm-assign-roles.entry.js +1 -1
  116. package/dist/esm/gx-ide-bpm-export-xpdl.entry.js +1 -1
  117. package/dist/esm/gx-ide-bpm-import-files.entry.js +2 -2
  118. package/dist/esm/gx-ide-bpm-import-gxpm.entry.js +1 -1
  119. package/dist/esm/gx-ide-bpm-objects-selector.entry.js +2 -2
  120. package/dist/esm/gx-ide-bpm-timer-duration.entry.js +1 -1
  121. package/dist/esm/gx-ide-card.entry.js +1 -1
  122. package/dist/esm/gx-ide-chat-container.entry.js +3 -3
  123. package/dist/esm/gx-ide-chat-container.entry.js.map +1 -1
  124. package/dist/esm/gx-ide-connect-gx-server.entry.js +1 -1
  125. package/dist/esm/gx-ide-container_2.entry.js +1 -1
  126. package/dist/esm/gx-ide-create-kb-from-server.entry.js +5 -1
  127. package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
  128. package/dist/esm/gx-ide-current-user-info.entry.js +1 -1
  129. package/dist/esm/gx-ide-dashboard-home.entry.js +2 -2
  130. package/dist/esm/gx-ide-data-selector.entry.js +1 -1
  131. package/dist/esm/gx-ide-data-type-selector.entry.js +1 -1
  132. package/dist/esm/gx-ide-design-import.entry.js +1 -1
  133. package/dist/esm/gx-ide-directory-selector.entry.js +1 -1
  134. package/dist/esm/gx-ide-edit-module-server.entry.js +1 -1
  135. package/dist/esm/gx-ide-empty-state.entry.js +1 -1
  136. package/dist/esm/gx-ide-entity-selector.entry.js +1 -1
  137. package/dist/esm/gx-ide-gam-installation-settings.entry.js +1 -1
  138. package/dist/esm/gx-ide-kb-manager-export.entry.js +1 -1
  139. package/dist/esm/gx-ide-kb-manager-import.entry.js +1 -1
  140. package/dist/esm/gx-ide-list-selector_2.entry.js +1 -1
  141. package/dist/esm/gx-ide-loader.entry.js +1 -1
  142. package/dist/esm/gx-ide-manage-module-references-v2.entry.js +2 -2
  143. package/dist/esm/gx-ide-manage-module-references.entry.js +2 -2
  144. package/dist/esm/gx-ide-navigation-report.entry.js +1 -1
  145. package/dist/esm/gx-ide-new-environment.entry.js +3 -3
  146. package/dist/esm/gx-ide-new-kb.entry.js +3 -3
  147. package/dist/esm/gx-ide-new-object.entry.js +1 -1
  148. package/dist/esm/gx-ide-object-selector.entry.js +2 -2
  149. package/dist/esm/gx-ide-references.entry.js +2 -2
  150. package/dist/esm/gx-ide-sc-chat-container.entry.js +5 -16
  151. package/dist/esm/gx-ide-sc-chat-container.entry.js.map +1 -1
  152. package/dist/esm/gx-ide-select-kb-items.entry.js +13 -6
  153. package/dist/esm/gx-ide-select-kb-items.entry.js.map +1 -1
  154. package/dist/esm/gx-ide-select-user-team.entry.js +1 -1
  155. package/dist/esm/gx-ide-share-kb.entry.js +1 -1
  156. package/dist/esm/gx-ide-sign-in-team.entry.js +1 -1
  157. package/dist/esm/gx-ide-sign-in.entry.js +1 -1
  158. package/dist/esm/gx-ide-splash.entry.js +1 -1
  159. package/dist/esm/gx-ide-start-page.entry.js +1 -1
  160. package/dist/esm/gx-ide-status-buttons.entry.js +1 -1
  161. package/dist/esm/gx-ide-switch-panel.entry.js +1 -1
  162. package/dist/esm/gx-ide-switcher.entry.js +1 -1
  163. package/dist/esm/gx-ide-team-dev-commit.entry.js +3 -3
  164. package/dist/esm/gx-ide-team-dev-select-recent-comment.entry.js +2 -2
  165. package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js +1 -1
  166. package/dist/esm/gx-ide-team-dev-update-to-revision.entry.js +1 -1
  167. package/dist/esm/gx-ide-team-dev-update.entry.js +3 -3
  168. package/dist/esm/gx-ide-template.entry.js +1 -1
  169. package/dist/esm/gx-ide-test.entry.js +1 -1
  170. package/dist/esm/gx-ide-top-bar.entry.js +1 -1
  171. package/dist/esm/gx-ide-welcome-page.entry.js +1 -1
  172. package/dist/esm/gx-ide-wf-settings.entry.js +1 -1
  173. package/dist/esm/gx-ide-ww-attributes.entry.js +1 -1
  174. package/dist/esm/gx-ide-ww-images.entry.js +3 -3
  175. package/dist/esm/{helpers-39459872.js → helpers-ec4585e5.js} +2 -2
  176. package/dist/esm/{helpers-39459872.js.map → helpers-ec4585e5.js.map} +1 -1
  177. package/dist/esm/{index-93411ea2.js → index-6a0d98df.js} +34 -4
  178. package/dist/esm/index-6a0d98df.js.map +1 -0
  179. package/dist/esm/index.js +2 -2
  180. package/dist/esm/loader.js +3 -3
  181. package/dist/esm/{render-combo-items-7a49ed63.js → render-combo-items-70aa3ecf.js} +2 -2
  182. package/dist/esm/{render-combo-items-7a49ed63.js.map → render-combo-items-70aa3ecf.js.map} +1 -1
  183. package/dist/esm/{render-list-item-2bd9cf13.js → render-list-item-2ad96b71.js} +2 -2
  184. package/dist/esm/{render-list-item-2bd9cf13.js.map → render-list-item-2ad96b71.js.map} +1 -1
  185. package/dist/esm/{render-suggest-6b99b199.js → render-suggest-dac35d72.js} +2 -2
  186. package/dist/esm/{render-suggest-6b99b199.js.map → render-suggest-dac35d72.js.map} +1 -1
  187. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +3 -3
  188. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  189. package/dist/genexus-ide-ui/index.esm.js +2 -2
  190. package/dist/genexus-ide-ui/{p-22d8de70.entry.js → p-03265b1b.entry.js} +4 -4
  191. package/dist/genexus-ide-ui/{p-86b0cf22.entry.js → p-09d55db9.entry.js} +2 -2
  192. package/dist/genexus-ide-ui/{p-ec2cb326.entry.js → p-1105c966.entry.js} +2 -2
  193. package/dist/genexus-ide-ui/{p-1e44952c.entry.js → p-1364f700.entry.js} +3 -3
  194. package/dist/genexus-ide-ui/{p-ae468251.entry.js → p-1a53cc60.entry.js} +2 -2
  195. package/dist/genexus-ide-ui/{p-37a2e9ac.entry.js → p-1c36217e.entry.js} +2 -2
  196. package/dist/genexus-ide-ui/{p-fdd9de33.entry.js → p-1cfcec9e.entry.js} +2 -2
  197. package/dist/genexus-ide-ui/{p-64e05f19.entry.js → p-22908448.entry.js} +8 -8
  198. package/dist/genexus-ide-ui/{p-cce8a91a.entry.js → p-24af7f98.entry.js} +2 -2
  199. package/dist/genexus-ide-ui/{p-e2a87cd7.entry.js → p-26aff07c.entry.js} +3 -3
  200. package/dist/genexus-ide-ui/{p-49712340.js → p-2cf37639.js} +161 -132
  201. package/dist/genexus-ide-ui/p-2cf37639.js.map +1 -0
  202. package/dist/genexus-ide-ui/{p-296d8ba7.js → p-2de01408.js} +2 -2
  203. package/dist/genexus-ide-ui/{p-90c8cb0d.entry.js → p-3468662b.entry.js} +2 -2
  204. package/dist/genexus-ide-ui/{p-5a565d8f.entry.js → p-34b5a494.entry.js} +2 -2
  205. package/dist/genexus-ide-ui/{p-56ab7460.entry.js → p-395e9c81.entry.js} +51 -41
  206. package/dist/genexus-ide-ui/p-395e9c81.entry.js.map +1 -0
  207. package/dist/genexus-ide-ui/{p-e4fe373f.entry.js → p-3e15089e.entry.js} +2 -2
  208. package/dist/genexus-ide-ui/{p-7a3baebc.entry.js → p-49f9f6bf.entry.js} +2 -2
  209. package/dist/genexus-ide-ui/{p-324af897.entry.js → p-4cd56d14.entry.js} +2 -2
  210. package/dist/genexus-ide-ui/{p-d9c27591.entry.js → p-502f2b47.entry.js} +2 -2
  211. package/dist/genexus-ide-ui/{p-848b26be.entry.js → p-52af77c2.entry.js} +5 -5
  212. package/dist/genexus-ide-ui/{p-d26f3f46.js → p-5545d58d.js} +2 -2
  213. package/dist/genexus-ide-ui/{p-4f6d120f.entry.js → p-57354473.entry.js} +2 -2
  214. package/dist/genexus-ide-ui/{p-3611f8b7.entry.js → p-57986b2e.entry.js} +2 -2
  215. package/dist/genexus-ide-ui/{p-67b7c308.entry.js → p-5a734013.entry.js} +2 -2
  216. package/dist/genexus-ide-ui/{p-960c4988.js → p-5b1576cc.js} +2 -2
  217. package/dist/genexus-ide-ui/{p-cff284a9.entry.js → p-5dc54e85.entry.js} +2 -2
  218. package/dist/genexus-ide-ui/{p-e9f2dd3f.entry.js → p-6374dabb.entry.js} +4 -4
  219. package/dist/genexus-ide-ui/{p-20cca16c.entry.js → p-6637e817.entry.js} +6 -6
  220. package/dist/genexus-ide-ui/{p-6d8b4f96.entry.js → p-6e667dde.entry.js} +4 -4
  221. package/dist/genexus-ide-ui/{p-4fc17d27.entry.js → p-70024ecb.entry.js} +2 -2
  222. package/dist/genexus-ide-ui/{p-9dbe2323.entry.js → p-71f3b66e.entry.js} +2 -2
  223. package/dist/genexus-ide-ui/{p-c49885c3.entry.js → p-822090ba.entry.js} +2 -2
  224. package/dist/genexus-ide-ui/{p-2e043c76.entry.js → p-8900c81a.entry.js} +2 -2
  225. package/dist/genexus-ide-ui/{p-9c83ec17.entry.js → p-8ff555f4.entry.js} +12 -8
  226. package/dist/genexus-ide-ui/{p-9c83ec17.entry.js.map → p-8ff555f4.entry.js.map} +1 -1
  227. package/dist/genexus-ide-ui/{p-ae3102f4.entry.js → p-97114eef.entry.js} +3 -3
  228. package/dist/genexus-ide-ui/{p-2320aa7a.entry.js → p-9a604798.entry.js} +3 -3
  229. package/dist/genexus-ide-ui/{p-fdb45861.entry.js → p-9e27c0cc.entry.js} +9 -9
  230. package/dist/genexus-ide-ui/p-9e27c0cc.entry.js.map +1 -0
  231. package/dist/genexus-ide-ui/{p-07fedb96.entry.js → p-9ffe118a.entry.js} +2 -2
  232. package/dist/genexus-ide-ui/{p-57542159.entry.js → p-a6dd3f03.entry.js} +2 -2
  233. package/dist/genexus-ide-ui/{p-307e47a1.entry.js → p-aa821b66.entry.js} +3 -3
  234. package/dist/genexus-ide-ui/{p-562db47d.entry.js → p-acaed500.entry.js} +2 -2
  235. package/dist/genexus-ide-ui/{p-68b911a6.entry.js → p-afc73c6f.entry.js} +2 -2
  236. package/dist/genexus-ide-ui/{p-7153555f.entry.js → p-b238a545.entry.js} +11 -11
  237. package/dist/genexus-ide-ui/{p-a837de2e.entry.js → p-b2af0c95.entry.js} +2 -2
  238. package/dist/genexus-ide-ui/{p-2b1634e7.entry.js → p-b3e352c8.entry.js} +2 -2
  239. package/dist/genexus-ide-ui/p-bb0eb196.entry.js +85 -0
  240. package/dist/genexus-ide-ui/p-bb0eb196.entry.js.map +1 -0
  241. package/dist/genexus-ide-ui/{p-f0efd16f.entry.js → p-bb1394ca.entry.js} +2 -2
  242. package/dist/genexus-ide-ui/{p-3f44de6a.entry.js → p-c21300fb.entry.js} +2 -2
  243. package/dist/genexus-ide-ui/{p-b5fa3116.entry.js → p-c74d18fe.entry.js} +2 -2
  244. package/dist/genexus-ide-ui/{p-27a2429c.entry.js → p-d7169c07.entry.js} +2 -2
  245. package/dist/genexus-ide-ui/{p-291eb585.entry.js → p-d8c7e0b5.entry.js} +2 -2
  246. package/dist/genexus-ide-ui/{p-4f815835.entry.js → p-dcb1516d.entry.js} +2 -2
  247. package/dist/genexus-ide-ui/{p-e3711567.entry.js → p-df4249e1.entry.js} +3 -3
  248. package/dist/genexus-ide-ui/{p-580899ab.entry.js → p-df8bf481.entry.js} +2 -2
  249. package/dist/genexus-ide-ui/{p-e4bd955a.entry.js → p-e07c97d5.entry.js} +4 -4
  250. package/dist/genexus-ide-ui/{p-f1cc5d30.entry.js → p-e3f234a8.entry.js} +3 -3
  251. package/dist/genexus-ide-ui/{p-a526d1f5.entry.js → p-eaab7765.entry.js} +3 -3
  252. package/dist/genexus-ide-ui/{p-5cb80ab8.entry.js → p-ebe6d71f.entry.js} +2 -2
  253. package/dist/genexus-ide-ui/{p-d1cb5507.js → p-f194af32.js} +11 -11
  254. package/dist/genexus-ide-ui/{p-5707060d.entry.js → p-f2f9e36e.entry.js} +2 -2
  255. package/dist/genexus-ide-ui/{p-14e9afa7.js → p-f3aa0e41.js} +2 -2
  256. package/dist/genexus-ide-ui/{p-e36d7f5c.entry.js → p-f654f86d.entry.js} +2 -2
  257. package/dist/genexus-ide-ui/p-f963b96e.entry.js +17 -0
  258. package/dist/genexus-ide-ui/{p-de92ee84.entry.js → p-fbab024e.entry.js} +2 -2
  259. package/dist/genexus-ide-ui/p-fc7b3ace.js +106 -0
  260. package/dist/genexus-ide-ui/p-fc7b3ace.js.map +1 -0
  261. package/dist/genexus-ide-ui/{p-9e78c60c.entry.js → p-fce76974.entry.js} +4 -4
  262. package/dist/types/components/_helpers/chat-container/code-render.d.ts +1 -1
  263. package/dist/types/components/select-kb-items/select-kb-items.d.ts +4 -0
  264. package/package.json +1 -1
  265. package/dist/cjs/code-render-43aa3faf.js.map +0 -1
  266. package/dist/cjs/index-caaa95cf.js.map +0 -1
  267. package/dist/esm/code-render-9ccc8dac.js.map +0 -1
  268. package/dist/esm/index-93411ea2.js.map +0 -1
  269. package/dist/genexus-ide-ui/p-49712340.js.map +0 -1
  270. package/dist/genexus-ide-ui/p-4b665a04.js +0 -68
  271. package/dist/genexus-ide-ui/p-4b665a04.js.map +0 -1
  272. package/dist/genexus-ide-ui/p-56ab7460.entry.js.map +0 -1
  273. package/dist/genexus-ide-ui/p-caad0b7e.entry.js +0 -17
  274. package/dist/genexus-ide-ui/p-e0db2615.entry.js +0 -87
  275. package/dist/genexus-ide-ui/p-e0db2615.entry.js.map +0 -1
  276. package/dist/genexus-ide-ui/p-fdb45861.entry.js.map +0 -1
  277. /package/dist/genexus-ide-ui/{p-22d8de70.entry.js.map → p-03265b1b.entry.js.map} +0 -0
  278. /package/dist/genexus-ide-ui/{p-86b0cf22.entry.js.map → p-09d55db9.entry.js.map} +0 -0
  279. /package/dist/genexus-ide-ui/{p-ec2cb326.entry.js.map → p-1105c966.entry.js.map} +0 -0
  280. /package/dist/genexus-ide-ui/{p-1e44952c.entry.js.map → p-1364f700.entry.js.map} +0 -0
  281. /package/dist/genexus-ide-ui/{p-ae468251.entry.js.map → p-1a53cc60.entry.js.map} +0 -0
  282. /package/dist/genexus-ide-ui/{p-37a2e9ac.entry.js.map → p-1c36217e.entry.js.map} +0 -0
  283. /package/dist/genexus-ide-ui/{p-fdd9de33.entry.js.map → p-1cfcec9e.entry.js.map} +0 -0
  284. /package/dist/genexus-ide-ui/{p-64e05f19.entry.js.map → p-22908448.entry.js.map} +0 -0
  285. /package/dist/genexus-ide-ui/{p-cce8a91a.entry.js.map → p-24af7f98.entry.js.map} +0 -0
  286. /package/dist/genexus-ide-ui/{p-e2a87cd7.entry.js.map → p-26aff07c.entry.js.map} +0 -0
  287. /package/dist/genexus-ide-ui/{p-296d8ba7.js.map → p-2de01408.js.map} +0 -0
  288. /package/dist/genexus-ide-ui/{p-90c8cb0d.entry.js.map → p-3468662b.entry.js.map} +0 -0
  289. /package/dist/genexus-ide-ui/{p-5a565d8f.entry.js.map → p-34b5a494.entry.js.map} +0 -0
  290. /package/dist/genexus-ide-ui/{p-e4fe373f.entry.js.map → p-3e15089e.entry.js.map} +0 -0
  291. /package/dist/genexus-ide-ui/{p-7a3baebc.entry.js.map → p-49f9f6bf.entry.js.map} +0 -0
  292. /package/dist/genexus-ide-ui/{p-324af897.entry.js.map → p-4cd56d14.entry.js.map} +0 -0
  293. /package/dist/genexus-ide-ui/{p-d9c27591.entry.js.map → p-502f2b47.entry.js.map} +0 -0
  294. /package/dist/genexus-ide-ui/{p-848b26be.entry.js.map → p-52af77c2.entry.js.map} +0 -0
  295. /package/dist/genexus-ide-ui/{p-d26f3f46.js.map → p-5545d58d.js.map} +0 -0
  296. /package/dist/genexus-ide-ui/{p-4f6d120f.entry.js.map → p-57354473.entry.js.map} +0 -0
  297. /package/dist/genexus-ide-ui/{p-3611f8b7.entry.js.map → p-57986b2e.entry.js.map} +0 -0
  298. /package/dist/genexus-ide-ui/{p-67b7c308.entry.js.map → p-5a734013.entry.js.map} +0 -0
  299. /package/dist/genexus-ide-ui/{p-960c4988.js.map → p-5b1576cc.js.map} +0 -0
  300. /package/dist/genexus-ide-ui/{p-cff284a9.entry.js.map → p-5dc54e85.entry.js.map} +0 -0
  301. /package/dist/genexus-ide-ui/{p-e9f2dd3f.entry.js.map → p-6374dabb.entry.js.map} +0 -0
  302. /package/dist/genexus-ide-ui/{p-20cca16c.entry.js.map → p-6637e817.entry.js.map} +0 -0
  303. /package/dist/genexus-ide-ui/{p-6d8b4f96.entry.js.map → p-6e667dde.entry.js.map} +0 -0
  304. /package/dist/genexus-ide-ui/{p-4fc17d27.entry.js.map → p-70024ecb.entry.js.map} +0 -0
  305. /package/dist/genexus-ide-ui/{p-9dbe2323.entry.js.map → p-71f3b66e.entry.js.map} +0 -0
  306. /package/dist/genexus-ide-ui/{p-c49885c3.entry.js.map → p-822090ba.entry.js.map} +0 -0
  307. /package/dist/genexus-ide-ui/{p-2e043c76.entry.js.map → p-8900c81a.entry.js.map} +0 -0
  308. /package/dist/genexus-ide-ui/{p-ae3102f4.entry.js.map → p-97114eef.entry.js.map} +0 -0
  309. /package/dist/genexus-ide-ui/{p-2320aa7a.entry.js.map → p-9a604798.entry.js.map} +0 -0
  310. /package/dist/genexus-ide-ui/{p-07fedb96.entry.js.map → p-9ffe118a.entry.js.map} +0 -0
  311. /package/dist/genexus-ide-ui/{p-57542159.entry.js.map → p-a6dd3f03.entry.js.map} +0 -0
  312. /package/dist/genexus-ide-ui/{p-307e47a1.entry.js.map → p-aa821b66.entry.js.map} +0 -0
  313. /package/dist/genexus-ide-ui/{p-562db47d.entry.js.map → p-acaed500.entry.js.map} +0 -0
  314. /package/dist/genexus-ide-ui/{p-68b911a6.entry.js.map → p-afc73c6f.entry.js.map} +0 -0
  315. /package/dist/genexus-ide-ui/{p-7153555f.entry.js.map → p-b238a545.entry.js.map} +0 -0
  316. /package/dist/genexus-ide-ui/{p-a837de2e.entry.js.map → p-b2af0c95.entry.js.map} +0 -0
  317. /package/dist/genexus-ide-ui/{p-2b1634e7.entry.js.map → p-b3e352c8.entry.js.map} +0 -0
  318. /package/dist/genexus-ide-ui/{p-f0efd16f.entry.js.map → p-bb1394ca.entry.js.map} +0 -0
  319. /package/dist/genexus-ide-ui/{p-3f44de6a.entry.js.map → p-c21300fb.entry.js.map} +0 -0
  320. /package/dist/genexus-ide-ui/{p-b5fa3116.entry.js.map → p-c74d18fe.entry.js.map} +0 -0
  321. /package/dist/genexus-ide-ui/{p-27a2429c.entry.js.map → p-d7169c07.entry.js.map} +0 -0
  322. /package/dist/genexus-ide-ui/{p-291eb585.entry.js.map → p-d8c7e0b5.entry.js.map} +0 -0
  323. /package/dist/genexus-ide-ui/{p-4f815835.entry.js.map → p-dcb1516d.entry.js.map} +0 -0
  324. /package/dist/genexus-ide-ui/{p-e3711567.entry.js.map → p-df4249e1.entry.js.map} +0 -0
  325. /package/dist/genexus-ide-ui/{p-580899ab.entry.js.map → p-df8bf481.entry.js.map} +0 -0
  326. /package/dist/genexus-ide-ui/{p-e4bd955a.entry.js.map → p-e07c97d5.entry.js.map} +0 -0
  327. /package/dist/genexus-ide-ui/{p-f1cc5d30.entry.js.map → p-e3f234a8.entry.js.map} +0 -0
  328. /package/dist/genexus-ide-ui/{p-a526d1f5.entry.js.map → p-eaab7765.entry.js.map} +0 -0
  329. /package/dist/genexus-ide-ui/{p-5cb80ab8.entry.js.map → p-ebe6d71f.entry.js.map} +0 -0
  330. /package/dist/genexus-ide-ui/{p-d1cb5507.js.map → p-f194af32.js.map} +0 -0
  331. /package/dist/genexus-ide-ui/{p-5707060d.entry.js.map → p-f2f9e36e.entry.js.map} +0 -0
  332. /package/dist/genexus-ide-ui/{p-14e9afa7.js.map → p-f3aa0e41.js.map} +0 -0
  333. /package/dist/genexus-ide-ui/{p-e36d7f5c.entry.js.map → p-f654f86d.entry.js.map} +0 -0
  334. /package/dist/genexus-ide-ui/{p-caad0b7e.entry.js.map → p-f963b96e.entry.js.map} +0 -0
  335. /package/dist/genexus-ide-ui/{p-de92ee84.entry.js.map → p-fbab024e.entry.js.map} +0 -0
  336. /package/dist/genexus-ide-ui/{p-9e78c60c.entry.js.map → p-fce76974.entry.js.map} +0 -0
@@ -1,68 +0,0 @@
1
- import { h as e } from "./p-49712340.js";
2
-
3
- import "./p-c9551186.js";
4
-
5
- const s = "message__copied-feedback";
6
-
7
- const a = "message__copied-feedback-visible";
8
-
9
- const copy = e => t => {
10
- t.stopPropagation();
11
- // 1. Copy message
12
- navigator.clipboard.writeText(e);
13
- // 2. Display "copied" message (expects to be the next sibling!)
14
- const o = t.target.nextSibling;
15
- const c = o.getAttribute("part");
16
- if (c === s) {
17
- o.setAttribute("part", `${s} ${a}`);
18
- setTimeout((() => {
19
- o.setAttribute("part", `${s}`);
20
- }), 1e3);
21
- }
22
- };
23
-
24
- const copyButton = (s, a, t) => e("button", {
25
- "aria-label": a,
26
- title: a,
27
- class: "button-copy-code",
28
- type: "button",
29
- onClick: copy(s),
30
- part: `message__copy-button ${t}`
31
- });
32
-
33
- const mercuryCodeRender = s => a => e("div", {
34
- class: "code-block-container"
35
- }, e("div", {
36
- class: "code-block-header"
37
- }, copyButton(a.plainText, s, "code-render")), e("ch-code", {
38
- language: a.language,
39
- lastNestedChildClass: a.lastNestedChildClass,
40
- value: a.plainText
41
- }));
42
-
43
- const mercuryChatMessageRender = (a, t = "You", o = "AI Assistant", c = "Processing request") => n => n.role === "assistant" && n.status === "waiting" ? [ e("span", {
44
- part: "message__processing"
45
- }, c), e("div", {
46
- class: "processing-animation",
47
- part: "processing-animation"
48
- }) ] : [
49
- // "copy button" before "role" and "time" to hide both on button:focus
50
- copyButton(n.content, "Copy code", "common-message"), e("p", {
51
- part: s
52
- }, "message copied to clipboard"), e("span", {
53
- part: `message__role ${n.role}`
54
- }, n.role === "user" ? t : o), e("time", {
55
- dateTime: n.metadata,
56
- part: "message__time"
57
- }, n.metadata), n.role === "user" ? e("span", {
58
- part: "message__content user"
59
- }, n.content) : e("ch-markdown-viewer", {
60
- part: n.role === "assistant" && (n.status === "complete" || !n.status) && !n.parts ? `message__content no-error` : "message__content",
61
- theme: a,
62
- showIndicator: false,
63
- renderCode: mercuryCodeRender("Copy code"),
64
- value: n.content
65
- }) ];
66
-
67
- export { mercuryCodeRender as a, mercuryChatMessageRender as m };
68
- //# sourceMappingURL=p-4b665a04.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["MESSAGE_COPIED_PART_SELECTOR","MESSAGE_COPIED_VISIBLE_PART_SELECTOR","copy","text","event","stopPropagation","navigator","clipboard","writeText","copiedFeedbackRef","target","nextSibling","copiedFeedbackPart","getAttribute","setAttribute","setTimeout","copyButton","textToCopy","accessibleName","additionalPart","h","title","class","type","onClick","part","mercuryCodeRender","copyButtonAccessibleName","options","plainText","language","lastNestedChildClass","value","mercuryChatMessageRender","theme","userName","assistantName","assistantTaskDescription","messageModel","role","status","content","dateTime","metadata","parts","showIndicator","renderCode"],"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"],"mappings":";;;;AASA,MAAMA,IAA+B;;AACrC,MAAMC,IAAuC;;AAE7C,MAAMC,OAAQC,KAAkBC;EAC9BA,EAAMC;;IAGNC,UAAUC,UAAUC,UAAUL;;IAG9B,MAAMM,IAAqBL,EAAMM,OAC9BC;EACH,MAAMC,IAAqBH,EAAkBI,aAAa;EAC1D,IAAID,MAAuBZ,GAA8B;IACvDS,EAAkBK,aAChB,QACA,GAAGd,KAAgCC;IAGrCc,YAAW;MACTN,EAAkBK,aAAa,QAAQ,GAAGd;AAA+B,QACxE;;;;AAIP,MAAMgB,aAAa,CACjBC,GACAC,GACAC,MAGEC,EAAA;EAAA,cACcF;EACZG,OAAOH;EACPI,OAAM;EACNC,MAAK;EACLC,SAAStB,KAAKe;EACdQ,MAAM,wBAAwBN;;;MAKvBO,oBACVC,KACAC,KAEGR,EAAA;EAAKE,OAAM;GACTF,EAAA;EAAKE,OAAM;GACRN,WACCY,EAAQC,WACRF,GACA,iBAGJP,EAAA;EACEU,UAAUF,EAAQE;EAClBC,sBAAsBH,EAAQG;EAC9BC,OAAOJ,EAAQC;;;MAKZI,2BACX,CACEC,GACAC,IAAmB,OACnBC,IAAwB,gBACxBC,IAAmC,yBAEpCC,KACCA,EAAaC,SAAS,eAAeD,EAAaE,WAAW,YACzD,EACEpB,EAAA;EAAMK,MAAK;GAAuBY,IAElCjB,EAAA;EAAKE,OAAM;EAAuBG,MAAK;OAEzC;;AAEET,WACEsB,EAAaG,SACb,aACA,mBAEFrB,EAAA;EAAGK,MAAMzB;GAA4B,gCAGrCoB,EAAA;EAAMK,MAAM,iBAAiBa,EAAaC;GACvCD,EAAaC,SAAS,SAASJ,IAAWC,IAE7ChB,EAAA;EAAMsB,UAAUJ,EAAaK;EAAUlB,MAAK;GACzCa,EAAaK,WAGhBL,EAAaC,SAAS,SACpBnB,EAAA;EAAMK,MAAK;GAAyBa,EAAaG,WAEjDrB,EAAA;EACEK,MACEa,EAAaC,SAAS,gBACrBD,EAAaE,WAAW,eAAeF,EAAaE,YACpDF,EAAaM,QACV,8BACA;EAENV,OAAOA;EACPW,eAAe;EACfC,YAAYpB,kBAAkB;EAC9BM,OAAOM,EAAaG"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["convertItemsNodeListToFlattenedTreeViewModel","itemsList","checkboxType","itemsListFlattenedTreeViewModel","processNode","item","leaf","_a","nodes","length","checkbox","metaData","JSON","stringify","versionType","type","push","id","toString","metadata","caption","name","checked","expanded","startImgSrc","icon","items","selected","forEach","childNode","convertItemsListToTreeViewModel","itemsListTreeViewModel","order","parseInt","findItemNode","itemNode","result","findItemInArray","itemsNodes","setAllLeafsCheckedFalse","uncheck","unselectAllNodes","unselect","checkItems","idsChecked","itemFind","expandItems","selectItems","idsSelected","searchInNode","node","parents","searchParentsItems","ids","rootItem","results","selectKbItemsCss","CSS_BUNDLES","SYSTEM_SEARCH_ICON","getIconPath","category","colorType","VIEW_AS_TREE_ID","VIEW_AS_LIST_ID","TOGGLE_CHECKBOXES_CHECKED_VALUE","GxIdeSelectKbItems","_GxIdeSelectKbItems__componentLocale","set","this","_GxIdeSelectKbItems_checkedNodesIds","_GxIdeSelectKbItems_chShortcutsEl","_GxIdeSelectKbItems_selectedNodesIds","_GxIdeSelectKbItems_shortcutsSrc","getAssetPath","_GxIdeSelectKbItems_updatedModelList","_GxIdeSelectKbItems_viewItemsAsModel","_GxIdeSelectKbItems_treeViewRenderEl","_GxIdeSelectKbItems_cancelHandler","cancelCallback","_GxIdeSelectKbItems_checkedItemsChangeHandler","async","e","checkedNodesIds","detail","__classPrivateFieldSet","__classPrivateFieldGet","checkedChanged","_GxIdeSelectKbItems_confirmHandler","confirmCallback","_GxIdeSelectKbItems_contextMenuHandler","itemContextMenuCallback","info","isSelected","find","updateItemsProperties","clientX","contextmenuEvent","clientY","selection","_GxIdeSelectKbItems_executeDialogAction","callback","_GxIdeSelectKbItems_patternSearchValueChangedHandler","event","searchPatternValue","_GxIdeSelectKbItems_renderActionButtons","h","dialogActions","map","action","class","part","onClick","call","_GxIdeSelectKbItems_renderFooter","footer","cancel","select","_GxIdeSelectKbItems_selectedItemsChangeHandler","selectedNodesIds","selectionChanged","_GxIdeSelectKbItems_toggleAndSelectNodesInModelItems","selectedItemsIds","nodesToToggle","newItemsSelected","newItemsExpanded","_GxIdeSelectKbItems_updateViews","_GxIdeSelectKbItems_toggleCheckedNodesInModelItems","newItemsList","nodeVersionsListTreeModel","nodeListFlattenedTreeModel","_GxIdeSelectKbItems_viewItemsAsChangedHandler","selectedViewType","nodesVersionsViewType","_GxIdeSelectKbItems_toggleCheckboxesChangedHandler","toggleCheckboxes","watchNodeListHandler","componentWillLoad","Locale","getComponentStrings","el","value","main","tree","suspendShortcuts","suspend","updateSelection","render","Host","model","src","ref","htmlFor","onChange","htmlfor","checkedValue","onInput","placeholder","header","searchPatternPlaceholder","expandableButton","onItemContextmenu","onCheckedItemsChange","onSelectedItemsChange","multiSelection","filter","filterType"],"sources":["src/components/select-kb-items/helpers.tsx","src/components/select-kb-items/select-kb-items.scss?tag=gx-ide-select-kb-items&encapsulation=shadow","src/components/select-kb-items/select-kb-items.tsx"],"sourcesContent":["import { ItemNode, CheckboxType } from \"./select-kb-items\";\nimport { TreeViewItemModel } from \"@genexus/chameleon-controls-library\";\n\nexport const convertItemsNodeListToFlattenedTreeViewModel = (\n itemsList: ItemNode[],\n checkboxType: CheckboxType\n): TreeViewItemModel[] => {\n const itemsListFlattenedTreeViewModel: TreeViewItemModel[] = [];\n\n const processNode = (item: ItemNode) => {\n const leaf = !item.nodes?.length;\n const checkbox =\n checkboxType === \"all\" ||\n (checkboxType === \"custom\" && item.checkbox) ||\n (checkboxType === \"leaf\" && leaf);\n const metaData = JSON.stringify({\n versionType: item.type\n });\n itemsListFlattenedTreeViewModel.push({\n id: item.id.toString(),\n metadata: metaData,\n caption: item.name,\n checked: item.checked,\n checkbox: checkbox,\n expanded: item.expanded,\n startImgSrc: item.icon,\n items: null,\n leaf: leaf,\n selected: item.selected\n });\n\n if (item.nodes) {\n item.nodes.forEach(childNode => processNode(childNode));\n }\n };\n\n itemsList.forEach(item => processNode(item));\n return itemsListFlattenedTreeViewModel;\n};\n\nexport const convertItemsListToTreeViewModel = (\n itemsList: ItemNode[],\n checkboxType: CheckboxType\n): TreeViewItemModel[] => {\n const itemsListTreeViewModel: TreeViewItemModel[] = [];\n itemsList.forEach(item => {\n const leaf = !item.nodes?.length;\n const expanded = item.expanded;\n const icon = item.icon;\n const order = parseInt(item.id);\n const checkbox =\n checkboxType === \"all\" ||\n (checkboxType === \"custom\" && item.checkbox) ||\n (checkboxType === \"leaf\" && leaf);\n const metaData = JSON.stringify({\n versionType: item.type\n });\n itemsListTreeViewModel.push({\n id: item.id.toString(),\n metadata: metaData,\n caption: item.name,\n checkbox: checkbox,\n checked: item.checked,\n order: order,\n selected: item.selected,\n expanded: expanded,\n startImgSrc: icon,\n items: !leaf\n ? convertItemsListToTreeViewModel(item.nodes, checkboxType)\n : null,\n leaf: leaf\n });\n });\n\n return itemsListTreeViewModel;\n};\n\nconst findItemNode = (id: string, item: ItemNode): ItemNode | null => {\n if (item.id === id) {\n return item;\n }\n\n if (item.nodes) {\n for (const itemNode of item.nodes) {\n const result = findItemNode(id, itemNode);\n if (result) {\n return result;\n }\n }\n }\n return null;\n};\n\nfunction findItemInArray(itemsNodes: ItemNode[], id: string): ItemNode | null {\n for (const item of itemsNodes) {\n const result = findItemNode(id, item);\n if (result) {\n return result;\n }\n }\n return null;\n}\nconst setAllLeafsCheckedFalse = (itemsList: ItemNode[]): ItemNode[] => {\n const uncheck = (itemNode: ItemNode) => {\n itemNode.checked = false;\n if (itemNode.nodes?.length) {\n itemNode.nodes.forEach(childNode => uncheck(childNode));\n }\n };\n\n itemsList.forEach(item => uncheck(item));\n return itemsList;\n};\n\nexport const unselectAllNodes = (itemsList: ItemNode[]) => {\n const unselect = (itemNode: ItemNode) => {\n itemNode.selected = false;\n if (itemNode.nodes?.length) {\n itemNode.nodes.forEach(childNode => unselect(childNode));\n }\n };\n\n itemsList.forEach(item => unselect(item));\n};\n\nexport const checkItems = (\n itemsList: ItemNode[],\n idsChecked: string[]\n): ItemNode[] => {\n setAllLeafsCheckedFalse(itemsList);\n idsChecked.forEach(id => {\n const itemFind = findItemInArray(itemsList, id);\n if (itemFind) {\n itemFind.checked = true;\n }\n });\n\n return itemsList;\n};\n\nexport const expandItems = (\n itemsList: ItemNode[],\n idsChecked: string[]\n): ItemNode[] => {\n idsChecked.forEach(id => {\n const itemFind = findItemInArray(itemsList, id);\n if (itemFind) {\n itemFind.expanded = true;\n }\n });\n\n return itemsList;\n};\n\nexport const selectItems = (\n itemsList: ItemNode[],\n idsSelected: string[]\n): ItemNode[] => {\n idsSelected.forEach(id => {\n const itemFind = findItemInArray(itemsList, id);\n if (itemFind) {\n itemFind.selected = true;\n }\n });\n return itemsList;\n};\n\nfunction searchInNode(item: ItemNode, id: string): string[] | null {\n // If the current node is the searched node, we return an empty list (it has no parents in this branch)\n if (item.id === id) {\n return [];\n }\n\n // We traverse each child looking for the target node\n if (item.nodes?.length) {\n for (const node of item.nodes) {\n const parents = searchInNode(node, id);\n if (parents !== null) {\n // If we find it, we include the current node at the beginning of the path and return\n return [item.id, ...parents];\n }\n }\n }\n return null;\n}\n\nexport const searchParentsItems = (\n items: ItemNode[],\n ids: string[]\n): string[] | null => {\n const parents: string[] = [];\n for (const id of ids) {\n for (const rootItem of items) {\n const results = searchInNode(rootItem, id);\n if (results !== null) {\n results.forEach(result => {\n parents.push(result);\n });\n }\n }\n }\n return parents;\n};\n",":host {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n display: contents;\n}\n\n// header\n.view-mode__toggle-checkboxes {\n grid-template-columns: max-content max-content;\n}\n.field__items-view-type {\n align-items: center;\n .label {\n margin-block-start: 0 !important; // WA to center label with radio-group\n }\n}\n.field__toggle-checkboxes {\n .label {\n margin-block-start: 0 !important; // WA to center label with radio-group\n }\n}\n","import {\n Component,\n Element,\n getAssetPath,\n Host,\n h,\n Prop,\n State,\n Watch,\n Method\n} from \"@stencil/core\";\n\nimport {\n ChCheckboxCustomEvent,\n TreeViewItemModel,\n TreeViewItemModelExtended\n} from \"@genexus/chameleon-controls-library\";\n\nimport {\n checkItems,\n convertItemsListToTreeViewModel,\n convertItemsNodeListToFlattenedTreeViewModel,\n expandItems,\n searchParentsItems,\n selectItems,\n unselectAllNodes\n} from \"./helpers\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport { Locale } from \"../../common/locale\";\nimport { ContextMenuInfo } from \"../../common/types\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"chameleon/scrollbar\",\n \"components/tooltip\",\n \"components/tree-view\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\"\n];\n\nconst SYSTEM_SEARCH_ICON = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-surface\"\n});\n\nconst VIEW_AS_TREE_ID: NodesVersionsViewType = \"tree\";\nconst VIEW_AS_LIST_ID: NodesVersionsViewType = \"list\";\n\nconst TOGGLE_CHECKBOXES_CHECKED_VALUE = \"on\";\n\n@Component({\n tag: \"gx-ide-select-kb-items\",\n styleUrl: \"select-kb-items.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/select-kb-items\"]\n})\nexport class GxIdeSelectKbItems {\n #_componentLocale: any;\n #checkedNodesIds: string[] = [];\n #chShortcutsEl: HTMLChShortcutsElement;\n #selectedNodesIds: string[] = [];\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/select-kb-items/shortcuts.json`\n );\n #updatedModelList: ItemNode[] = [];\n\n #viewItemsAsModel: RadioGroupItemModel[];\n\n @Element() el: HTMLGxIdeSelectKbItemsElement;\n #treeViewRenderEl: HTMLChTreeViewRenderElement;\n\n /**\n * Represents the nodes list model\n */\n @State() nodeListFlattenedTreeModel: TreeViewItemModel[] = [];\n\n /**\n * View type for the nodes.\n */\n @State() nodesVersionsViewType: NodesVersionsViewType = \"tree\";\n\n /**\n * Represents the nodes tree model\n */\n @State() nodeVersionsListTreeModel: TreeViewItemModel[] = [];\n\n /**\n * \"Search Pattern\" input value, used to filter the nodes tree/list.\n */\n @State() searchPatternValue: string = null;\n\n /**\n * It maps to the ch-tree-view-render \"toggleCheckboxes\" property.\n */\n @State() toggleCheckboxes: boolean = true;\n\n /**\n * Callback emitted when the 'cancel' button is pressed\n */\n @Prop() readonly cancelCallback?: () => Promise<void>;\n /**\n * Defines which nodes of the component have checkboxes.\n */\n @Prop() readonly checkboxType: CheckboxType;\n\n /**\n * Callback emitted when the items checked items change\n */\n @Prop() readonly checkedChanged?: (checkedItems: string[]) => Promise<void>;\n\n /**\n * Callback emitted when the 'select' button is pressed\n */\n @Prop() readonly confirmCallback?: (checkedItems: string[]) => Promise<void>;\n\n /**\n * Set of additional actions (callbacks) to those already provided by default by the selector (cancelCallback and selectCallback)\n */\n @Prop() readonly dialogActions: DialogAction[] = [];\n\n /**\n * Callback emitted when the user right click on an item\n */\n @Prop() readonly itemContextMenuCallback: (\n info: ContextMenuInfo\n ) => Promise<void>;\n\n /**\n * Represents the itemLis list model\n */\n @Prop() readonly itemsList: ItemNode[] = [];\n\n @Watch(\"itemsList\")\n watchNodeListHandler(newItemsList: ItemNode[]) {\n this.#updateViews(newItemsList);\n }\n\n /**\n * This define if the selection is unique or not\n */\n @Prop() readonly multiSelection?: boolean = false;\n\n /**\n * Callback emitted when the items selection change\n */\n @Prop() readonly selectionChanged?: (selectedItem: string[]) => Promise<void>;\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.#viewItemsAsModel = [\n { value: VIEW_AS_TREE_ID, caption: this.#_componentLocale.main.tree },\n { value: VIEW_AS_LIST_ID, caption: \"List\" }\n ];\n this.watchNodeListHandler(this.itemsList);\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.#chShortcutsEl.suspend = true;\n } else {\n this.#chShortcutsEl.suspend = false;\n }\n }\n\n /**\n * Allow to update the selected items\n */\n @Method()\n async updateSelection(selectedItemsIds: string[]) {\n // first clear selected\n this.#treeViewRenderEl.updateItemsProperties(this.#selectedNodesIds, {\n selected: false\n });\n // then select\n this.#treeViewRenderEl.updateItemsProperties(selectedItemsIds, {\n selected: true\n });\n }\n\n #cancelHandler = () => {\n if (this.cancelCallback) {\n this.cancelCallback();\n }\n };\n\n #checkedItemsChangeHandler = async (\n e: CustomEvent<Map<string, TreeViewItemModelExtended>>\n ) => {\n const checkedNodesIds: string[] = [];\n e.detail.forEach(node => {\n node.item.checked && checkedNodesIds.push(node.item.id);\n });\n this.#checkedNodesIds = checkedNodesIds;\n this.#updatedModelList = checkItems(this.itemsList, this.#checkedNodesIds);\n\n if (this.checkedChanged) {\n this.checkedChanged(this.#checkedNodesIds);\n }\n };\n\n #confirmHandler = () => {\n if (this.confirmCallback) {\n this.confirmCallback(this.#checkedNodesIds);\n }\n };\n\n #contextMenuHandler = async (\n e: CustomEvent<{\n id: string;\n itemRef: HTMLChTreeViewItemElement;\n metadata: string;\n contextmenuEvent: PointerEvent;\n }>\n ) => {\n if (this.itemContextMenuCallback) {\n let info: ContextMenuInfo;\n const isSelected = this.#selectedNodesIds.find(id => id === e.detail.id);\n if (!this.#selectedNodesIds.length || !isSelected) {\n await this.#treeViewRenderEl.updateItemsProperties(\n this.#selectedNodesIds,\n { selected: false }\n );\n await this.#treeViewRenderEl.updateItemsProperties([e.detail.id], {\n selected: true\n });\n info = {\n clientX: e.detail.contextmenuEvent.clientX,\n clientY: e.detail.contextmenuEvent.clientY,\n selection: [e.detail.id]\n };\n } else {\n info = {\n clientX: e.detail.contextmenuEvent.clientX,\n clientY: e.detail.contextmenuEvent.clientY,\n selection: this.#selectedNodesIds\n };\n }\n this.itemContextMenuCallback(info);\n }\n };\n\n #executeDialogAction = (\n callback: (checkedNodesIds: string[], selectedNodesIds: string[]) => void\n ) => {\n return () => {\n callback(this.#checkedNodesIds, this.#selectedNodesIds);\n };\n };\n\n #patternSearchValueChangedHandler = (\n event: CustomEvent<string> | InputEvent\n ) => {\n this.searchPatternValue = event.detail.toString();\n };\n\n #renderActionButtons = (): HTMLElement[] => {\n return (\n <div>\n {this.dialogActions.map(action => {\n return (\n <button\n class={\"button-tertiary\"}\n part={`button button-${action.name}`}\n onClick={this.#executeDialogAction(action.callback)}\n >\n {action.name}\n </button>\n );\n })}\n </div>\n );\n };\n\n #renderFooter = (): HTMLElement => {\n return (\n <footer class=\"footer control-footer-with-border spacing-body-inline spacing-body-block-end control-footer-space-between\">\n {this.#renderActionButtons()}\n <div class=\"buttons-spacer \">\n {this.cancelCallback && (\n <button\n class={\"button-secondary\"}\n part={\"cancel-button\"}\n onClick={this.#cancelHandler}\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n )}\n {this.confirmCallback && (\n <button\n class={\"button-primary\"}\n part={\"confirm-button\"}\n onClick={this.#confirmHandler}\n >\n {this.#_componentLocale.footer.select}\n </button>\n )}\n </div>\n </footer>\n );\n };\n\n #selectedItemsChangeHandler = (\n e: CustomEvent<TreeViewItemModelExtended[]>\n ) => {\n const selectedNodesIds: string[] = [];\n unselectAllNodes(this.itemsList);\n e.detail.forEach(node => {\n selectedNodesIds.push(node.item.id);\n });\n this.#selectedNodesIds = selectedNodesIds;\n if (this.selectionChanged) {\n this.selectionChanged(this.#selectedNodesIds);\n }\n\n this.#updatedModelList = selectItems(this.itemsList, selectedNodesIds);\n };\n\n #toggleAndSelectNodesInModelItems = async (selectedItemsIds: string[]) => {\n const nodesToToggle = searchParentsItems(this.itemsList, selectedItemsIds);\n const newItemsSelected = selectItems(this.itemsList, selectedItemsIds);\n const newItemsExpanded = expandItems(newItemsSelected, nodesToToggle);\n this.#updateViews(newItemsExpanded);\n };\n\n #toggleCheckedNodesInModelItems = async (selectedItemsIds: string[]) => {\n const nodesToToggle = searchParentsItems(this.itemsList, selectedItemsIds);\n const newItemsExpanded = expandItems(this.itemsList, nodesToToggle);\n this.#updateViews(newItemsExpanded);\n };\n\n #updateViews = (newItemsList: ItemNode[]) => {\n this.nodeVersionsListTreeModel = convertItemsListToTreeViewModel(\n newItemsList,\n this.checkboxType\n );\n\n this.nodeListFlattenedTreeModel =\n convertItemsNodeListToFlattenedTreeViewModel(\n newItemsList,\n this.checkboxType\n );\n };\n\n #viewItemsAsChangedHandler = async (event: CustomEvent<string>) => {\n const selectedViewType = event.detail as NodesVersionsViewType;\n this.nodesVersionsViewType = selectedViewType;\n if (this.nodesVersionsViewType === \"tree\") {\n await this.#toggleAndSelectNodesInModelItems(this.#selectedNodesIds);\n await this.#toggleCheckedNodesInModelItems(this.#checkedNodesIds);\n }\n this.#updateViews(this.#updatedModelList);\n };\n\n #toggleCheckboxesChangedHandler = (\n event: ChCheckboxCustomEvent<string> | InputEvent\n ) => {\n this.toggleCheckboxes = event.detail === TOGGLE_CHECKBOXES_CHECKED_VALUE;\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n <section class=\"section\">\n <header class=\"control-header field-group spacing-body-block-start spacing-body-inline\">\n <div class=\"field-group view-mode__toggle-checkboxes\">\n <div class=\"field field-inline field__items-view-type\">\n <label class=\"label\" htmlFor=\"view-mode\">\n Select view mode:\n </label>\n <ch-radio-group-render\n class=\"radio-group\"\n id=\"view-mode\"\n model={this.#viewItemsAsModel}\n onChange={this.#viewItemsAsChangedHandler}\n value={this.#viewItemsAsModel[0].value}\n ></ch-radio-group-render>\n </div>\n\n <div class=\"field field-inline field__toggle-checkboxes\">\n <label\n class=\"label\"\n htmlFor=\"control-id-1\"\n htmlfor=\"toggle-checkboxes\"\n >\n Toggle Checkboxes\n </label>\n <ch-checkbox\n class=\"checkbox\"\n id=\"toggle-checkboxes\"\n checkedValue={TOGGLE_CHECKBOXES_CHECKED_VALUE}\n value={TOGGLE_CHECKBOXES_CHECKED_VALUE}\n onInput={this.#toggleCheckboxesChangedHandler}\n ></ch-checkbox>\n </div>\n </div>\n\n <ch-edit\n class=\"input pattern-filter\"\n placeholder={\n this.#_componentLocale.header.searchPatternPlaceholder\n }\n startImgSrc={SYSTEM_SEARCH_ICON}\n onInput={this.#patternSearchValueChangedHandler}\n ></ch-edit>\n </header>\n\n <div class=\"spacing-body-inline-start trees\">\n <ch-tree-view-render\n class=\"tree-view\"\n model={\n this.nodesVersionsViewType === \"tree\"\n ? this.nodeVersionsListTreeModel\n : this.nodeListFlattenedTreeModel\n }\n show-lines={\n this.nodesVersionsViewType === \"tree\" ? \"all\" : \"none\"\n }\n expandableButton={\n this.nodesVersionsViewType === \"tree\" ? \"decorative\" : \"no\"\n }\n onItemContextmenu={this.#contextMenuHandler}\n onCheckedItemsChange={this.#checkedItemsChangeHandler}\n onSelectedItemsChange={this.#selectedItemsChangeHandler}\n multiSelection={this.multiSelection}\n filter={this.searchPatternValue}\n filterType=\"caption\"\n toggleCheckboxes={this.toggleCheckboxes}\n ref={(el: HTMLChTreeViewRenderElement) => {\n this.#treeViewRenderEl = el as HTMLChTreeViewRenderElement;\n }}\n ></ch-tree-view-render>\n </div>\n {this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n\nexport type CheckboxType = \"none\" | \"all\" | \"leaf\" | \"custom\";\n\nexport type DialogAction = {\n name: string;\n callback: DialogActionCallback;\n};\n\nexport type DialogActionCallback = (...args: any[]) => void;\n\nexport type ItemCommon = {\n icon: string;\n expanded: boolean;\n};\n\nexport type ItemNode = {\n checkbox?: boolean;\n checked?: boolean;\n expanded?: boolean;\n icon?: string;\n id: string;\n name: string;\n nodes?: ItemNode[];\n selected?: boolean;\n type: ItemType;\n};\n\nexport type ItemType = {\n id: string;\n name: string;\n};\n\ntype NodesVersionsViewType = \"tree\" | \"list\";\n"],"mappings":";;;;;;;;AAGO,MAAMA,+CAA+C,CAC1DC,GACAC;EAEA,MAAMC,IAAuD;EAE7D,MAAMC,cAAeC;;IACnB,MAAMC,OAAQC,IAAAF,EAAKG,WAAK,QAAAD,WAAA,aAAAA,EAAEE;IAC1B,MAAMC,IACJR,MAAiB,SAChBA,MAAiB,YAAYG,EAAKK,YAClCR,MAAiB,UAAUI;IAC9B,MAAMK,IAAWC,KAAKC,UAAU;MAC9BC,aAAaT,EAAKU;;IAEpBZ,EAAgCa,KAAK;MACnCC,IAAIZ,EAAKY,GAAGC;MACZC,UAAUR;MACVS,SAASf,EAAKgB;MACdC,SAASjB,EAAKiB;MACdZ,UAAUA;MACVa,UAAUlB,EAAKkB;MACfC,aAAanB,EAAKoB;MAClBC,OAAO;MACPpB,MAAMA;MACNqB,UAAUtB,EAAKsB;;IAGjB,IAAItB,EAAKG,OAAO;MACdH,EAAKG,MAAMoB,SAAQC,KAAazB,YAAYyB;;;EAIhD5B,EAAU2B,SAAQvB,KAAQD,YAAYC;EACtC,OAAOF;AAA+B;;AAGjC,MAAM2B,kCAAkC,CAC7C7B,GACAC;EAEA,MAAM6B,IAA8C;EACpD9B,EAAU2B,SAAQvB;;IAChB,MAAMC,OAAQC,IAAAF,EAAKG,WAAK,QAAAD,WAAA,aAAAA,EAAEE;IAC1B,MAAMc,IAAWlB,EAAKkB;IACtB,MAAME,IAAOpB,EAAKoB;IAClB,MAAMO,IAAQC,SAAS5B,EAAKY;IAC5B,MAAMP,IACJR,MAAiB,SAChBA,MAAiB,YAAYG,EAAKK,YAClCR,MAAiB,UAAUI;IAC9B,MAAMK,IAAWC,KAAKC,UAAU;MAC9BC,aAAaT,EAAKU;;IAEpBgB,EAAuBf,KAAK;MAC1BC,IAAIZ,EAAKY,GAAGC;MACZC,UAAUR;MACVS,SAASf,EAAKgB;MACdX,UAAUA;MACVY,SAASjB,EAAKiB;MACdU,OAAOA;MACPL,UAAUtB,EAAKsB;MACfJ,UAAUA;MACVC,aAAaC;MACbC,QAAQpB,IACJwB,gCAAgCzB,EAAKG,OAAON,KAC5C;MACJI,MAAMA;;AACN;EAGJ,OAAOyB;AAAsB;;AAG/B,MAAMG,eAAe,CAACjB,GAAYZ;EAChC,IAAIA,EAAKY,OAAOA,GAAI;IAClB,OAAOZ;;EAGT,IAAIA,EAAKG,OAAO;IACd,KAAK,MAAM2B,KAAY9B,EAAKG,OAAO;MACjC,MAAM4B,IAASF,aAAajB,GAAIkB;MAChC,IAAIC,GAAQ;QACV,OAAOA;;;;EAIb,OAAO;AAAI;;AAGb,SAASC,gBAAgBC,GAAwBrB;EAC/C,KAAK,MAAMZ,KAAQiC,GAAY;IAC7B,MAAMF,IAASF,aAAajB,GAAIZ;IAChC,IAAI+B,GAAQ;MACV,OAAOA;;;EAGX,OAAO;AACT;;AACA,MAAMG,0BAA2BtC;EAC/B,MAAMuC,UAAWL;;IACfA,EAASb,UAAU;IACnB,KAAIf,IAAA4B,EAAS3B,WAAK,QAAAD,WAAA,aAAAA,EAAEE,QAAQ;MAC1B0B,EAAS3B,MAAMoB,SAAQC,KAAaW,QAAQX;;;EAIhD5B,EAAU2B,SAAQvB,KAAQmC,QAAQnC;EAClC,OAAOJ;AAAS;;AAGX,MAAMwC,mBAAoBxC;EAC/B,MAAMyC,WAAYP;;IAChBA,EAASR,WAAW;IACpB,KAAIpB,IAAA4B,EAAS3B,WAAK,QAAAD,WAAA,aAAAA,EAAEE,QAAQ;MAC1B0B,EAAS3B,MAAMoB,SAAQC,KAAaa,SAASb;;;EAIjD5B,EAAU2B,SAAQvB,KAAQqC,SAASrC;AAAM;;AAGpC,MAAMsC,aAAa,CACxB1C,GACA2C;EAEAL,wBAAwBtC;EACxB2C,EAAWhB,SAAQX;IACjB,MAAM4B,IAAWR,gBAAgBpC,GAAWgB;IAC5C,IAAI4B,GAAU;MACZA,EAASvB,UAAU;;;EAIvB,OAAOrB;AAAS;;AAGX,MAAM6C,cAAc,CACzB7C,GACA2C;EAEAA,EAAWhB,SAAQX;IACjB,MAAM4B,IAAWR,gBAAgBpC,GAAWgB;IAC5C,IAAI4B,GAAU;MACZA,EAAStB,WAAW;;;EAIxB,OAAOtB;AAAS;;AAGX,MAAM8C,cAAc,CACzB9C,GACA+C;EAEAA,EAAYpB,SAAQX;IAClB,MAAM4B,IAAWR,gBAAgBpC,GAAWgB;IAC5C,IAAI4B,GAAU;MACZA,EAASlB,WAAW;;;EAGxB,OAAO1B;AAAS;;AAGlB,SAASgD,aAAa5C,GAAgBY;;;IAEpC,IAAIZ,EAAKY,OAAOA,GAAI;IAClB,OAAO;;;IAIT,KAAIV,IAAAF,EAAKG,WAAK,QAAAD,WAAA,aAAAA,EAAEE,QAAQ;IACtB,KAAK,MAAMyC,KAAQ7C,EAAKG,OAAO;MAC7B,MAAM2C,IAAUF,aAAaC,GAAMjC;MACnC,IAAIkC,MAAY,MAAM;;QAEpB,OAAO,EAAC9C,EAAKY,OAAOkC;;;;EAI1B,OAAO;AACT;;AAEO,MAAMC,qBAAqB,CAChC1B,GACA2B;EAEA,MAAMF,IAAoB;EAC1B,KAAK,MAAMlC,KAAMoC,GAAK;IACpB,KAAK,MAAMC,KAAY5B,GAAO;MAC5B,MAAM6B,IAAUN,aAAaK,GAAUrC;MACvC,IAAIsC,MAAY,MAAM;QACpBA,EAAQ3B,SAAQQ;UACde,EAAQnC,KAAKoB;AAAO;;;;EAK5B,OAAOe;AAAO;;ACzMhB,MAAMK,IAAmB;;;;;;;;;;;;;;;;;ACgCzB,MAAMC,IAA8B,EAClC,qBACA,uBACA,sBACA,wBACA,oBACA,gBACA,iBACA;;AAGF,MAAMC,IAAqBC,EAAY;EACrCC,UAAU;EACVvC,MAAM;EACNwC,WAAW;;;AAGb,MAAMC,IAAyC;;AAC/C,MAAMC,IAAyC;;AAE/C,MAAMC,IAAkC;;MAQ3BC,IAAkB;;;IAC7BC,EAAAC,IAAAC,WAAA;IACAC,EAAAF,IAAAC,MAA6B;IAC7BE,EAAAH,IAAAC,WAAA;IACAG,EAAAJ,IAAAC,MAA8B;IAC9BI,EAAAL,IAAAC,MAAgBK,EACd;IAEFC,EAAAP,IAAAC,MAAgC;IAEhCO,EAAAR,IAAAC,WAAA;IAGAQ,EAAAT,IAAAC,WAAA;IAkHAS,EAAAV,IAAAC,OAAiB;MACf,IAAIA,KAAKU,gBAAgB;QACvBV,KAAKU;;;IAITC,EAAAZ,IAAAC,OAA6BY,MAC3BC;MAEA,MAAMC,IAA4B;MAClCD,EAAEE,OAAOvD,SAAQsB;QACfA,EAAK7C,KAAKiB,WAAW4D,EAAgBlE,KAAKkC,EAAK7C,KAAKY;AAAG;MAEzDmE,EAAAhB,MAAIC,GAAoBa,GAAe;MACvCE,EAAAhB,MAAIM,GAAqB/B,WAAWyB,KAAKnE,WAAWoF,EAAAjB,MAAIC,GAAA,OAAkB;MAE1E,IAAID,KAAKkB,gBAAgB;QACvBlB,KAAKkB,eAAeD,EAAAjB,MAAIC,GAAA;;;IAI5BkB,EAAApB,IAAAC,OAAkB;MAChB,IAAIA,KAAKoB,iBAAiB;QACxBpB,KAAKoB,gBAAgBH,EAAAjB,MAAIC,GAAA;;;IAI7BoB,EAAAtB,IAAAC,OAAsBY,MACpBC;MAOA,IAAIb,KAAKsB,yBAAyB;QAChC,IAAIC;QACJ,MAAMC,IAAaP,EAAAjB,MAAIG,GAAA,KAAmBsB,MAAK5E,KAAMA,MAAOgE,EAAEE,OAAOlE;QACrE,KAAKoE,EAAAjB,MAAIG,GAAA,KAAmB9D,WAAWmF,GAAY;gBAC3CP,EAAAjB,MAAIQ,GAAA,KAAmBkB,sBAC3BT,EAAAjB,MAAIG,GAAA,MACJ;YAAE5C,UAAU;;gBAER0D,EAAAjB,MAAIQ,GAAA,KAAmBkB,sBAAsB,EAACb,EAAEE,OAAOlE,MAAK;YAChEU,UAAU;;UAEZgE,IAAO;YACLI,SAASd,EAAEE,OAAOa,iBAAiBD;YACnCE,SAAShB,EAAEE,OAAOa,iBAAiBC;YACnCC,WAAW,EAACjB,EAAEE,OAAOlE;;eAElB;UACL0E,IAAO;YACLI,SAASd,EAAEE,OAAOa,iBAAiBD;YACnCE,SAAShB,EAAEE,OAAOa,iBAAiBC;YACnCC,WAAWb,EAAAjB,MAAIG,GAAA;;;QAGnBH,KAAKsB,wBAAwBC;;;IAIjCQ,EAAAhC,IAAAC,OACEgC,KAEO;MACLA,EAASf,EAAAjB,MAAIC,GAAA,MAAmBgB,EAAAjB,MAAIG,GAAA;AAAmB;IAI3D8B,EAAAlC,IAAAC,OACEkC;MAEAlC,KAAKmC,qBAAqBD,EAAMnB,OAAOjE;AAAU;IAGnDsF,EAAArC,IAAAC,OAAuB,MAEnBqC,EAAA,aACGrC,KAAKsC,cAAcC,KAAIC,KAEpBH,EAAA;MACEI,OAAO;MACPC,MAAM,iBAAiBF,EAAOvF;MAC9B0F,SAAS1B,EAAAjB,MAAI+B,GAAA,KAAqBa,KAAzB5C,MAA0BwC,EAAOR;OAEzCQ,EAAOvF;IAQpB4F,EAAA9C,IAAAC,OAAgB,MAEZqC,EAAA;MAAQI,OAAM;OACXxB,EAAAjB,MAAIoC,GAAA,KAAqBQ,KAAzB5C,OACDqC,EAAA;MAAKI,OAAM;OACRzC,KAAKU,kBACJ2B,EAAA;MACEI,OAAO;MACPC,MAAM;MACNC,SAAS1B,EAAAjB,MAAIS,GAAA;OAEZQ,EAAAjB,MAAIF,GAAA,KAAmBgD,OAAOC,SAGlC/C,KAAKoB,mBACJiB,EAAA;MACEI,OAAO;MACPC,MAAM;MACNC,SAAS1B,EAAAjB,MAAImB,GAAA;OAEZF,EAAAjB,MAAIF,GAAA,KAAmBgD,OAAOE;IAQ3CC,EAAAlD,IAAAC,OACEa;MAEA,MAAMqC,IAA6B;MACnC7E,iBAAiB2B,KAAKnE;MACtBgF,EAAEE,OAAOvD,SAAQsB;QACfoE,EAAiBtG,KAAKkC,EAAK7C,KAAKY;AAAG;MAErCmE,EAAAhB,MAAIG,GAAqB+C,GAAgB;MACzC,IAAIlD,KAAKmD,kBAAkB;QACzBnD,KAAKmD,iBAAiBlC,EAAAjB,MAAIG,GAAA;;MAG5Ba,EAAAhB,MAAIM,GAAqB3B,YAAYqB,KAAKnE,WAAWqH,IAAiB;AAAA;IAGxEE,EAAArD,IAAAC,OAAoCY,MAAOyC;MACzC,MAAMC,IAAgBtE,mBAAmBgB,KAAKnE,WAAWwH;MACzD,MAAME,IAAmB5E,YAAYqB,KAAKnE,WAAWwH;MACrD,MAAMG,IAAmB9E,YAAY6E,GAAkBD;MACvDrC,EAAAjB,MAAIyD,GAAA,KAAab,KAAjB5C,MAAkBwD;AAAiB;IAGrCE,EAAA3D,IAAAC,OAAkCY,MAAOyC;MACvC,MAAMC,IAAgBtE,mBAAmBgB,KAAKnE,WAAWwH;MACzD,MAAMG,IAAmB9E,YAAYsB,KAAKnE,WAAWyH;MACrDrC,EAAAjB,MAAIyD,GAAA,KAAab,KAAjB5C,MAAkBwD;AAAiB;IAGrCC,EAAA1D,IAAAC,OAAgB2D;MACd3D,KAAK4D,4BAA4BlG,gCAC/BiG,GACA3D,KAAKlE;MAGPkE,KAAK6D,6BACHjI,6CACE+H,GACA3D,KAAKlE;AACN;IAGLgI,EAAA/D,IAAAC,OAA6BY,MAAOsB;MAClC,MAAM6B,IAAmB7B,EAAMnB;MAC/Bf,KAAKgE,wBAAwBD;MAC7B,IAAI/D,KAAKgE,0BAA0B,QAAQ;cACnC/C,EAAAjB,MAAIoD,GAAA,KAAkCR,KAAtC5C,MAAuCiB,EAAAjB,MAAIG,GAAA;cAC3Cc,EAAAjB,MAAI0D,GAAA,KAAgCd,KAApC5C,MAAqCiB,EAAAjB,MAAIC,GAAA;;MAEjDgB,EAAAjB,MAAIyD,GAAA,KAAab,KAAjB5C,MAAkBiB,EAAAjB,MAAIM,GAAA;AAAmB;IAG3C2D,EAAAlE,IAAAC,OACEkC;MAEAlC,KAAKkE,mBAAmBhC,EAAMnB,WAAWnB;AAA+B;sCA9Rf;iCAKH;qCAKE;8BAKpB;4BAKD;;;;;yBAwBY;;qBAYR;0BAUG;;;EAP5C,oBAAAuE,CAAqBR;IACnB1C,EAAAjB,MAAIyD,GAAA,KAAab,KAAjB5C,MAAkB2D;;EAapB,uBAAMS;IACJpD,EAAAhB,MAAIF,SAA2BuE,EAAOC,oBAAoBtE,KAAKuE,KAAG;IAClEvD,EAAAhB,MAAIO,GAAqB,EACvB;MAAEiE,OAAO9E;MAAiB1C,SAASiE,EAAAjB,MAAIF,GAAA,KAAmB2E,KAAKC;OAC/D;MAAEF,OAAO7E;MAAiB3C,SAAS;SACpC;IACDgD,KAAKmE,qBAAqBnE,KAAKnE;;;;SAOjC,sBAAM8I,CAAiBA;IACrB,IAAIA,GAAkB;MACpB1D,EAAAjB,MAAIE,GAAA,KAAgB0E,UAAU;WACzB;MACL3D,EAAAjB,MAAIE,GAAA,KAAgB0E,UAAU;;;;;SAQlC,qBAAMC,CAAgBxB;;IAEpBpC,EAAAjB,MAAIQ,GAAA,KAAmBkB,sBAAsBT,EAAAjB,MAAIG,GAAA,MAAoB;MACnE5C,UAAU;;;QAGZ0D,EAAAjB,MAAIQ,GAAA,KAAmBkB,sBAAsB2B,GAAkB;MAC7D9F,UAAU;;;EAwLd,MAAAuH;IACE,OACEzC,EAAC0C,GAAI;MAACtC,OAAM;OACVJ,EAAA;MAAU2C,OAAO3F;QACjBgD,EAAA;MACE4C,KAAKhE,EAAAjB,MAAII,GAAA;MACT8E,KAAMX,KACHvD,EAAAhB,MAAIE,GAAkBqE,GAA4B;QAGvDlC,EAAA;MAASI,OAAM;OACbJ,EAAA;MAAQI,OAAM;OACZJ,EAAA;MAAKI,OAAM;OACTJ,EAAA;MAAKI,OAAM;OACTJ,EAAA;MAAOI,OAAM;MAAQ0C,SAAQ;OAAW,sBAGxC9C,EAAA;MACEI,OAAM;MACN5F,IAAG;MACHmI,OAAO/D,EAAAjB,MAAIO,GAAA;MACX6E,UAAUnE,EAAAjB,MAAI8D,GAAA;MACdU,OAAOvD,EAAAjB,MAAIO,GAAA,KAAmB,GAAGiE;SAIrCnC,EAAA;MAAKI,OAAM;OACTJ,EAAA;MACEI,OAAM;MACN0C,SAAQ;MACRE,SAAQ;OAAmB,sBAI7BhD,EAAA;MACEI,OAAM;MACN5F,IAAG;MACHyI,cAAc1F;MACd4E,OAAO5E;MACP2F,SAAStE,EAAAjB,MAAIiE,GAAA;UAKnB5B,EAAA;MACEI,OAAM;MACN+C,aACEvE,EAAAjB,MAAIF,GAAA,KAAmB2F,OAAOC;MAEhCtI,aAAakC;MACbiG,SAAStE,EAAAjB,MAAIiC,GAAA;SAIjBI,EAAA;MAAKI,OAAM;OACTJ,EAAA;MACEI,OAAM;MACNuC,OACEhF,KAAKgE,0BAA0B,SAC3BhE,KAAK4D,4BACL5D,KAAK6D;MAA0B,cAGnC7D,KAAKgE,0BAA0B,SAAS,QAAQ;MAElD2B,kBACE3F,KAAKgE,0BAA0B,SAAS,eAAe;MAEzD4B,mBAAmB3E,EAAAjB,MAAIqB,GAAA;MACvBwE,sBAAsB5E,EAAAjB,MAAIW,GAAA;MAC1BmF,uBAAuB7E,EAAAjB,MAAIiD,GAAA;MAC3B8C,gBAAgB/F,KAAK+F;MACrBC,QAAQhG,KAAKmC;MACb8D,YAAW;MACX/B,kBAAkBlE,KAAKkE;MACvBgB,KAAMX;QACJvD,EAAAhB,MAAIQ,GAAqB+D,GAAiC;AAAA;SAI/DtD,EAAAjB,MAAI6C,GAAA,KAAcD,KAAlB5C"}
@@ -1,17 +0,0 @@
1
- import { r as s, h as r, H as t } from "./p-49712340.js";
2
-
3
- const o = ":host{display:block}";
4
-
5
- const l = class {
6
- constructor(r) {
7
- s(this, r);
8
- }
9
- render() {
10
- return r(t, null, r("slot", null));
11
- }
12
- };
13
-
14
- l.style = o;
15
-
16
- export { l as gx_ide_switcher };
17
- //# sourceMappingURL=p-caad0b7e.entry.js.map
@@ -1,87 +0,0 @@
1
- import { r as t, h as e, H as a } from "./p-49712340.js";
2
-
3
- import { g as o } from "./p-6e4208d8.js";
4
-
5
- import "./p-c9551186.js";
6
-
7
- const i = '.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)}';
8
-
9
- const r = [ "resets/box-sizing", "utils/typography", "chameleon/scrollbar", "components/button", "components/icon", "utils/elevation" ];
10
-
11
- const n = o({
12
- category: "system",
13
- name: "copy",
14
- colorType: "neutral"
15
- });
16
-
17
- const s = o({
18
- category: "system",
19
- name: "delete-outlined",
20
- colorType: "error"
21
- });
22
-
23
- const c = o({
24
- category: "objects",
25
- name: "conversational-flows"
26
- });
27
-
28
- const p = class {
29
- constructor(e) {
30
- t(this, e);
31
- this.chatTitle = undefined;
32
- this.copyConversationCallback = undefined;
33
- this.deleteConversationCallback = undefined;
34
- this.displayConversationCopiedMessage = false;
35
- }
36
- /**
37
- * It will display a feedback message that the conversation has been copied
38
- */ async showCopyConversationMessage() {
39
- this.displayConversationCopiedMessage = true;
40
- setTimeout((() => {
41
- this.displayConversationCopiedMessage = false;
42
- }), 2e3);
43
- }
44
- render() {
45
- const t = this.chatTitle || this.copyConversationCallback || this.deleteConversationCallback;
46
- const o = this.copyConversationCallback || this.deleteConversationCallback;
47
- return e(a, {
48
- class: "chat-container"
49
- }, e("ch-theme", {
50
- model: r
51
- }), e("section", {
52
- class: "section"
53
- }, t && e("header", {
54
- class: "chat-container__header elevation-1 body-italic-m"
55
- }, this.chatTitle && this.chatTitle, o && e("div", {
56
- class: "buttons-spacer"
57
- }, this.deleteConversationCallback && e("button", {
58
- class: "button-secondary button-icon-only",
59
- onClick: this.deleteConversationCallback
60
- }, e("ch-image", {
61
- class: "icon-md",
62
- src: s
63
- })), this.copyConversationCallback && e("button", {
64
- class: "button-secondary button-icon-only",
65
- onClick: this.copyConversationCallback
66
- }, e("ch-image", {
67
- class: "icon-md",
68
- src: n
69
- })))), e("section", {
70
- class: "chat-container__ch-chat"
71
- }, e("slot", null), this.displayConversationCopiedMessage && e("div", {
72
- class: "chat-container__conversation-copied"
73
- }, e("div", {
74
- class: "chat-container__conversation-copied-wrapper"
75
- }, e("ch-image", {
76
- class: "icon-md",
77
- src: c
78
- }), e("p", {
79
- class: "body-regular-l"
80
- }, "conversation copied"))))));
81
- }
82
- };
83
-
84
- p.style = i;
85
-
86
- export { p as gx_ide_chat_container };
87
- //# sourceMappingURL=p-e0db2615.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["chatContainerCss","CSS_BUNDLES","COPY_ICON","getIconPath","category","name","colorType","DELETE_ICON","CONVERSATION_ICON","GxIdeChatContainer","showCopyConversationMessage","this","displayConversationCopiedMessage","setTimeout","render","renderHeader","chatTitle","copyConversationCallback","deleteConversationCallback","renderButtonsGroup","h","Host","class","model","onClick","src"],"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"],"mappings":";;;;;;AAAA,MAAMA,IAAmB;;ACGzB,MAAMC,IAA8B,EAClC,qBACA,oBACA,uBACA,qBACA,mBACA;;AAGF,MAAMC,IAAYC,EAAY;EAC5BC,UAAU;EACVC,MAAM;EACNC,WAAW;;;AAEb,MAAMC,IAAcJ,EAAY;EAC9BC,UAAU;EACVC,MAAM;EACNC,WAAW;;;AAEb,MAAME,IAAoBL,EAAY;EACpCC,UAAU;EACVC,MAAM;;;MAQKI,IAAkB;;;;;;4CAmBwB;;;;SAMrD,iCAAMC;IACJC,KAAKC,mCAAmC;IACxCC,YAAW;MACTF,KAAKC,mCAAmC;AAAK,QAC5C;;EAGL,MAAAE;IACE,MAAMC,IACJJ,KAAKK,aACLL,KAAKM,4BACLN,KAAKO;IAEP,MAAMC,IACJR,KAAKM,4BAA4BN,KAAKO;IACxC,OACEE,EAACC,GAAI;MAACC,OAAM;OACVF,EAAA;MAAUG,OAAOtB;QACjBmB,EAAA;MAASE,OAAM;OACZP,KACCK,EAAA;MAAQE,OAAM;OACXX,KAAKK,aAAaL,KAAKK,WAEvBG,KACCC,EAAA;MAAKE,OAAM;OACRX,KAAKO,8BACJE,EAAA;MACEE,OAAM;MACNE,SAASb,KAAKO;OAEdE,EAAA;MAAUE,OAAM;MAAUG,KAAKlB;SAIlCI,KAAKM,4BACJG,EAAA;MACEE,OAAM;MACNE,SAASb,KAAKM;OAEdG,EAAA;MAAUE,OAAM;MAAUG,KAAKvB;WAO3CkB,EAAA;MAASE,OAAM;OACbF,EAAA,eACCT,KAAKC,oCACJQ,EAAA;MAAKE,OAAM;OACTF,EAAA;MAAKE,OAAM;OACTF,EAAA;MAAUE,OAAM;MAAUG,KAAKjB;QAC/BY,EAAA;MAAGE,OAAM;OAAgB"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["PROCESSING_PLACEHOLDER","timeOut","ASSISTANT_RESPONSE_MARKDOWN","ASSISTANT_RESPONSE_SHORT_MARKDOWN","sendChatToLLM","chatRef","document","querySelector","addNewMessage","id","Date","getTime","role","content","status","setTimeout","updateLastMessage","dummyStreaming","counter","stringToDisplay","mode","streamingCompleted","length","message","substring","files","url","caption","undefined","chatCallbacks","clear","Promise","resolve","uploadImage","stopGeneratingAnswer","clearTimeout","chatTranslations","accessibleName","clearChat","copyResponseButton","downloadCodeButton","imagePicker","removeUploadedImage","sendButton","sendInput","stopGeneratingAnswerButton","placeholder","text","copyCodeButton","processing","sourceFiles","Array","from","_","index","codeFixerRecord","metadata","parts","chatShowcaseCss","CSS_BUNDLES","GxIdeScChatContainer","_GxIdeScChatContainer_chatContainerRef","set","this","_GxIdeScChatContainer_copyConversationCallbackHandler","__classPrivateFieldGet","showCopyConversationMessage","_GxIdeScChatContainer_deleteConversationCallbackHandler","console","log","componentDidLoad","assistantStatus","render","h","Host","model","chatTitle","copyConversationCallback","deleteConversationCallback","ref","el","__classPrivateFieldSet","callbacks","class","generatingResponse","loadingState","markdownTheme","renderItem","mercuryChatMessageRender","isMobile","items","showAdditionalContent","translations","slot"],"sources":["src/showcase/chat-container/callbacks.ts","src/showcase/chat-container/chat-showcase.scss?tag=gx-ide-sc-chat-container&encapsulation=shadow","src/showcase/chat-container/chat.showcase.tsx"],"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",":host {\n block-size: 100%;\n display: grid;\n}\n","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"],"mappings":"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"}