@genexus/genexus-ide-ui 1.1.26 → 1.1.28

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 (391) hide show
  1. package/dist/cjs/{common-8c725d8c.js → common-8e7923c5.js} +2 -2
  2. package/dist/cjs/{common-8c725d8c.js.map → common-8e7923c5.js.map} +1 -1
  3. package/dist/cjs/genexus-ide-ui.cjs.js +2 -2
  4. package/dist/cjs/gx-ide-about.cjs.entry.js +1 -1
  5. package/dist/cjs/gx-ide-ai-assistant.cjs.entry.js +1 -1
  6. package/dist/cjs/gx-ide-ai-message.cjs.entry.js +2 -2
  7. package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js +1 -1
  8. package/dist/cjs/gx-ide-bpm-assign-roles.cjs.entry.js +1 -1
  9. package/dist/cjs/gx-ide-bpm-export-xpdl.cjs.entry.js +1 -1
  10. package/dist/cjs/gx-ide-bpm-import-files.cjs.entry.js +2 -2
  11. package/dist/cjs/gx-ide-bpm-import-gxpm.cjs.entry.js +1 -1
  12. package/dist/cjs/gx-ide-bpm-objects-selector.cjs.entry.js +2 -2
  13. package/dist/cjs/gx-ide-bpm-sync-gam-roles.cjs.entry.js +1 -1
  14. package/dist/cjs/gx-ide-bpm-task-documents.cjs.entry.js +1 -1
  15. package/dist/cjs/gx-ide-bpm-timer-duration.cjs.entry.js +1 -1
  16. package/dist/cjs/gx-ide-card.cjs.entry.js +1 -1
  17. package/dist/cjs/gx-ide-chat-container_2.cjs.entry.js +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-curl-inspector.cjs.entry.js +162 -0
  22. package/dist/cjs/gx-ide-curl-inspector.cjs.entry.js.map +1 -0
  23. package/dist/cjs/gx-ide-current-user-info.cjs.entry.js +1 -1
  24. package/dist/cjs/gx-ide-dashboard-home.cjs.entry.js +2 -2
  25. package/dist/cjs/gx-ide-data-selector.cjs.entry.js +1 -1
  26. package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js +1 -1
  27. package/dist/cjs/gx-ide-deployment-tool.cjs.entry.js +1 -1
  28. package/dist/cjs/gx-ide-design-import.cjs.entry.js +1 -1
  29. package/dist/cjs/gx-ide-directory-selector.cjs.entry.js +1 -1
  30. package/dist/cjs/gx-ide-edit-module-server.cjs.entry.js +1 -1
  31. package/dist/cjs/gx-ide-empty-state.cjs.entry.js +1 -1
  32. package/dist/cjs/gx-ide-entity-selector.cjs.entry.js +1 -1
  33. package/dist/cjs/gx-ide-file-item.cjs.entry.js +1 -1
  34. package/dist/cjs/gx-ide-file-uploader.cjs.entry.js +1 -1
  35. package/dist/cjs/gx-ide-gam-installation-settings.cjs.entry.js +1 -1
  36. package/dist/cjs/gx-ide-json-import.cjs.entry.js +1 -1
  37. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +1 -1
  38. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +1 -1
  39. package/dist/cjs/gx-ide-list-selector_2.cjs.entry.js +1 -1
  40. package/dist/cjs/gx-ide-loader.cjs.entry.js +1 -1
  41. package/dist/cjs/gx-ide-manage-module-references-v2.cjs.entry.js +2 -2
  42. package/dist/cjs/gx-ide-manage-module-references.cjs.entry.js +2 -2
  43. package/dist/cjs/gx-ide-navigation-report.cjs.entry.js +1 -1
  44. package/dist/cjs/gx-ide-new-environment.cjs.entry.js +3 -3
  45. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +3 -3
  46. package/dist/cjs/gx-ide-new-object.cjs.entry.js +1 -1
  47. package/dist/cjs/gx-ide-new-version.cjs.entry.js +1 -1
  48. package/dist/cjs/gx-ide-object-selector.cjs.entry.js +2 -2
  49. package/dist/cjs/gx-ide-open-api-import.cjs.entry.js +1 -1
  50. package/dist/cjs/gx-ide-plugin-details.cjs.entry.js +1 -1
  51. package/dist/cjs/gx-ide-plugin-explorer.cjs.entry.js +1 -1
  52. package/dist/cjs/gx-ide-references.cjs.entry.js +1 -1
  53. package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js +2 -6
  54. package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js.map +1 -1
  55. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js +1 -1
  56. package/dist/cjs/gx-ide-select-user-team.cjs.entry.js +1 -1
  57. package/dist/cjs/gx-ide-share-kb.cjs.entry.js +1 -1
  58. package/dist/cjs/gx-ide-sign-in-team.cjs.entry.js +1 -1
  59. package/dist/cjs/gx-ide-sign-in.cjs.entry.js +2 -2
  60. package/dist/cjs/gx-ide-sign-in.cjs.entry.js.map +1 -1
  61. package/dist/cjs/gx-ide-splash.cjs.entry.js +2 -2
  62. package/dist/cjs/gx-ide-start-page.cjs.entry.js +3 -3
  63. package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
  64. package/dist/cjs/gx-ide-status-buttons.cjs.entry.js +1 -1
  65. package/dist/cjs/gx-ide-switch-panel.cjs.entry.js +1 -1
  66. package/dist/cjs/gx-ide-switcher.cjs.entry.js +1 -1
  67. package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js +2 -2
  68. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +3 -3
  69. package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js +3 -3
  70. package/dist/cjs/gx-ide-team-dev-select-recent-comment.cjs.entry.js +2 -2
  71. package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js +1 -1
  72. package/dist/cjs/gx-ide-team-dev-update-to-revision.cjs.entry.js +1 -1
  73. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +2 -2
  74. package/dist/cjs/gx-ide-template.cjs.entry.js +1 -1
  75. package/dist/cjs/gx-ide-test.cjs.entry.js +1 -1
  76. package/dist/cjs/gx-ide-top-bar.cjs.entry.js +1 -1
  77. package/dist/cjs/gx-ide-welcome-page.cjs.entry.js +1 -1
  78. package/dist/cjs/gx-ide-wf-settings.cjs.entry.js +1 -1
  79. package/dist/cjs/gx-ide-ww-attributes.cjs.entry.js +1 -1
  80. package/dist/cjs/gx-ide-ww-files.cjs.entry.js +77 -30
  81. package/dist/cjs/gx-ide-ww-files.cjs.entry.js.map +1 -1
  82. package/dist/cjs/gx-ide-ww-images.cjs.entry.js +3 -3
  83. package/dist/cjs/{helpers-b30b36b4.js → helpers-8e625231.js} +2 -2
  84. package/dist/cjs/{helpers-b30b36b4.js.map → helpers-8e625231.js.map} +1 -1
  85. package/dist/cjs/{index-e227aefb.js → index-408303ce.js} +9 -4
  86. package/dist/cjs/index-408303ce.js.map +1 -0
  87. package/dist/cjs/loader.cjs.js +2 -2
  88. package/dist/cjs/{render-list-item-7c6449c4.js → render-list-item-5c33517f.js} +2 -2
  89. package/dist/cjs/{render-list-item-7c6449c4.js.map → render-list-item-5c33517f.js.map} +1 -1
  90. package/dist/cjs/{utilities-0b308992.js → utilities-d0de7967.js} +2 -2
  91. package/dist/cjs/{utilities-0b308992.js.map → utilities-d0de7967.js.map} +1 -1
  92. package/dist/collection/collection-manifest.json +1 -0
  93. package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.en.json +2 -1
  94. package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.ja.json +3 -2
  95. package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.zh.json +2 -1
  96. package/dist/collection/components/curl-inspector/curl-inspector.css +50 -0
  97. package/dist/collection/components/curl-inspector/curl-inspector.js +327 -0
  98. package/dist/collection/components/curl-inspector/curl-inspector.js.map +1 -0
  99. package/dist/collection/components/curl-inspector/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.en.json +14 -0
  100. package/dist/collection/components/curl-inspector/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.ja.json +14 -0
  101. package/dist/collection/components/curl-inspector/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.zh.json +14 -0
  102. package/dist/collection/components/curl-inspector/gx-ide-assets/curl-inspector/shortcuts.json +31 -0
  103. package/dist/collection/components/sign-in/sign-in.css +0 -1
  104. package/dist/collection/components/start-page/start-page.js +2 -2
  105. package/dist/collection/components/start-page/start-page.js.map +1 -1
  106. package/dist/collection/components/ww-files/ww-files.js +76 -29
  107. package/dist/collection/components/ww-files/ww-files.js.map +1 -1
  108. package/dist/collection/showcase/chat-container/chat.showcase.js +1 -5
  109. package/dist/collection/showcase/chat-container/chat.showcase.js.map +1 -1
  110. package/dist/collection/testing/locale.e2e.js +2 -1
  111. package/dist/collection/testing/locale.e2e.js.map +1 -1
  112. package/dist/components/gx-ide-curl-inspector.d.ts +11 -0
  113. package/dist/components/gx-ide-curl-inspector.js +194 -0
  114. package/dist/components/gx-ide-curl-inspector.js.map +1 -0
  115. package/dist/components/gx-ide-sc-chat-container.js +1 -5
  116. package/dist/components/gx-ide-sc-chat-container.js.map +1 -1
  117. package/dist/components/gx-ide-sign-in.js +1 -1
  118. package/dist/components/gx-ide-sign-in.js.map +1 -1
  119. package/dist/components/gx-ide-start-page.js +2 -2
  120. package/dist/components/gx-ide-start-page.js.map +1 -1
  121. package/dist/components/gx-ide-ww-files.js +75 -28
  122. package/dist/components/gx-ide-ww-files.js.map +1 -1
  123. package/dist/esm/{common-c25d8c2f.js → common-c8407100.js} +2 -2
  124. package/dist/esm/{common-c25d8c2f.js.map → common-c8407100.js.map} +1 -1
  125. package/dist/esm/genexus-ide-ui.js +3 -3
  126. package/dist/esm/gx-ide-about.entry.js +1 -1
  127. package/dist/esm/gx-ide-ai-assistant.entry.js +1 -1
  128. package/dist/esm/gx-ide-ai-message.entry.js +2 -2
  129. package/dist/esm/gx-ide-bpm-app-declaration.entry.js +1 -1
  130. package/dist/esm/gx-ide-bpm-assign-roles.entry.js +1 -1
  131. package/dist/esm/gx-ide-bpm-export-xpdl.entry.js +1 -1
  132. package/dist/esm/gx-ide-bpm-import-files.entry.js +2 -2
  133. package/dist/esm/gx-ide-bpm-import-gxpm.entry.js +1 -1
  134. package/dist/esm/gx-ide-bpm-objects-selector.entry.js +2 -2
  135. package/dist/esm/gx-ide-bpm-sync-gam-roles.entry.js +1 -1
  136. package/dist/esm/gx-ide-bpm-task-documents.entry.js +1 -1
  137. package/dist/esm/gx-ide-bpm-timer-duration.entry.js +1 -1
  138. package/dist/esm/gx-ide-card.entry.js +1 -1
  139. package/dist/esm/gx-ide-chat-container_2.entry.js +1 -1
  140. package/dist/esm/gx-ide-connect-gx-server.entry.js +1 -1
  141. package/dist/esm/gx-ide-container_2.entry.js +1 -1
  142. package/dist/esm/gx-ide-create-kb-from-server.entry.js +1 -1
  143. package/dist/esm/gx-ide-curl-inspector.entry.js +158 -0
  144. package/dist/esm/gx-ide-curl-inspector.entry.js.map +1 -0
  145. package/dist/esm/gx-ide-current-user-info.entry.js +1 -1
  146. package/dist/esm/gx-ide-dashboard-home.entry.js +2 -2
  147. package/dist/esm/gx-ide-data-selector.entry.js +1 -1
  148. package/dist/esm/gx-ide-data-type-selector.entry.js +1 -1
  149. package/dist/esm/gx-ide-deployment-tool.entry.js +1 -1
  150. package/dist/esm/gx-ide-design-import.entry.js +1 -1
  151. package/dist/esm/gx-ide-directory-selector.entry.js +1 -1
  152. package/dist/esm/gx-ide-edit-module-server.entry.js +1 -1
  153. package/dist/esm/gx-ide-empty-state.entry.js +1 -1
  154. package/dist/esm/gx-ide-entity-selector.entry.js +1 -1
  155. package/dist/esm/gx-ide-file-item.entry.js +1 -1
  156. package/dist/esm/gx-ide-file-uploader.entry.js +1 -1
  157. package/dist/esm/gx-ide-gam-installation-settings.entry.js +1 -1
  158. package/dist/esm/gx-ide-json-import.entry.js +1 -1
  159. package/dist/esm/gx-ide-kb-manager-export.entry.js +1 -1
  160. package/dist/esm/gx-ide-kb-manager-import.entry.js +1 -1
  161. package/dist/esm/gx-ide-list-selector_2.entry.js +1 -1
  162. package/dist/esm/gx-ide-loader.entry.js +1 -1
  163. package/dist/esm/gx-ide-manage-module-references-v2.entry.js +2 -2
  164. package/dist/esm/gx-ide-manage-module-references.entry.js +2 -2
  165. package/dist/esm/gx-ide-navigation-report.entry.js +1 -1
  166. package/dist/esm/gx-ide-new-environment.entry.js +3 -3
  167. package/dist/esm/gx-ide-new-kb.entry.js +3 -3
  168. package/dist/esm/gx-ide-new-object.entry.js +1 -1
  169. package/dist/esm/gx-ide-new-version.entry.js +1 -1
  170. package/dist/esm/gx-ide-object-selector.entry.js +2 -2
  171. package/dist/esm/gx-ide-open-api-import.entry.js +1 -1
  172. package/dist/esm/gx-ide-plugin-details.entry.js +1 -1
  173. package/dist/esm/gx-ide-plugin-explorer.entry.js +1 -1
  174. package/dist/esm/gx-ide-references.entry.js +1 -1
  175. package/dist/esm/gx-ide-sc-chat-container.entry.js +2 -6
  176. package/dist/esm/gx-ide-sc-chat-container.entry.js.map +1 -1
  177. package/dist/esm/gx-ide-select-kb-items.entry.js +1 -1
  178. package/dist/esm/gx-ide-select-user-team.entry.js +1 -1
  179. package/dist/esm/gx-ide-share-kb.entry.js +1 -1
  180. package/dist/esm/gx-ide-sign-in-team.entry.js +1 -1
  181. package/dist/esm/gx-ide-sign-in.entry.js +2 -2
  182. package/dist/esm/gx-ide-sign-in.entry.js.map +1 -1
  183. package/dist/esm/gx-ide-splash.entry.js +2 -2
  184. package/dist/esm/gx-ide-start-page.entry.js +3 -3
  185. package/dist/esm/gx-ide-start-page.entry.js.map +1 -1
  186. package/dist/esm/gx-ide-status-buttons.entry.js +1 -1
  187. package/dist/esm/gx-ide-switch-panel.entry.js +1 -1
  188. package/dist/esm/gx-ide-switcher.entry.js +1 -1
  189. package/dist/esm/gx-ide-team-dev-bring-changes.entry.js +2 -2
  190. package/dist/esm/gx-ide-team-dev-commit.entry.js +3 -3
  191. package/dist/esm/gx-ide-team-dev-history.entry.js +3 -3
  192. package/dist/esm/gx-ide-team-dev-select-recent-comment.entry.js +2 -2
  193. package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js +1 -1
  194. package/dist/esm/gx-ide-team-dev-update-to-revision.entry.js +1 -1
  195. package/dist/esm/gx-ide-team-dev-update.entry.js +2 -2
  196. package/dist/esm/gx-ide-template.entry.js +1 -1
  197. package/dist/esm/gx-ide-test.entry.js +1 -1
  198. package/dist/esm/gx-ide-top-bar.entry.js +1 -1
  199. package/dist/esm/gx-ide-welcome-page.entry.js +1 -1
  200. package/dist/esm/gx-ide-wf-settings.entry.js +1 -1
  201. package/dist/esm/gx-ide-ww-attributes.entry.js +1 -1
  202. package/dist/esm/gx-ide-ww-files.entry.js +77 -30
  203. package/dist/esm/gx-ide-ww-files.entry.js.map +1 -1
  204. package/dist/esm/gx-ide-ww-images.entry.js +3 -3
  205. package/dist/esm/{helpers-a4f16ffb.js → helpers-37946d65.js} +2 -2
  206. package/dist/esm/{helpers-a4f16ffb.js.map → helpers-37946d65.js.map} +1 -1
  207. package/dist/esm/{index-10af18cf.js → index-25ff5600.js} +9 -4
  208. package/dist/esm/index-25ff5600.js.map +1 -0
  209. package/dist/esm/loader.js +3 -3
  210. package/dist/esm/{render-list-item-f5836c31.js → render-list-item-b79501ca.js} +2 -2
  211. package/dist/esm/{render-list-item-f5836c31.js.map → render-list-item-b79501ca.js.map} +1 -1
  212. package/dist/esm/{utilities-00ec1b22.js → utilities-76a18030.js} +2 -2
  213. package/dist/esm/{utilities-00ec1b22.js.map → utilities-76a18030.js.map} +1 -1
  214. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +3 -3
  215. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  216. package/dist/genexus-ide-ui/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.en.json +2 -1
  217. package/dist/genexus-ide-ui/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.ja.json +3 -2
  218. package/dist/genexus-ide-ui/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.zh.json +2 -1
  219. package/dist/genexus-ide-ui/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.en.json +14 -0
  220. package/dist/genexus-ide-ui/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.ja.json +14 -0
  221. package/dist/genexus-ide-ui/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.zh.json +14 -0
  222. package/dist/genexus-ide-ui/gx-ide-assets/curl-inspector/shortcuts.json +31 -0
  223. package/dist/genexus-ide-ui/{p-0c0eb8ae.js → p-0090f914.js} +2 -2
  224. package/dist/genexus-ide-ui/{p-0a0ab008.entry.js → p-04597fd0.entry.js} +2 -2
  225. package/dist/genexus-ide-ui/{p-6b957e82.entry.js → p-06fbe725.entry.js} +3 -3
  226. package/dist/genexus-ide-ui/p-06fbe725.entry.js.map +1 -0
  227. package/dist/genexus-ide-ui/{p-75d6c740.entry.js → p-070628a8.entry.js} +4 -4
  228. package/dist/genexus-ide-ui/{p-bfe3277f.entry.js → p-0e2da68a.entry.js} +2 -2
  229. package/dist/genexus-ide-ui/{p-ded7444c.entry.js → p-1191a6f0.entry.js} +2 -2
  230. package/dist/genexus-ide-ui/{p-8e34e92b.entry.js → p-149e771e.entry.js} +2 -2
  231. package/dist/genexus-ide-ui/{p-1664d366.entry.js → p-1622e339.entry.js} +2 -2
  232. package/dist/genexus-ide-ui/{p-1dd7be84.entry.js → p-1bb1c9cc.entry.js} +2 -2
  233. package/dist/genexus-ide-ui/{p-46ffec64.entry.js → p-2698d51a.entry.js} +2 -2
  234. package/dist/genexus-ide-ui/{p-4ad7826c.entry.js → p-277999c2.entry.js} +2 -2
  235. package/dist/genexus-ide-ui/{p-731b8947.entry.js → p-29db37fd.entry.js} +4 -5
  236. package/dist/genexus-ide-ui/p-29db37fd.entry.js.map +1 -0
  237. package/dist/genexus-ide-ui/{p-e9f8b156.entry.js → p-2e0ace7b.entry.js} +2 -2
  238. package/dist/genexus-ide-ui/{p-e7fb3ee3.entry.js → p-2e559ead.entry.js} +2 -2
  239. package/dist/genexus-ide-ui/{p-5ff6fe1d.entry.js → p-2e8b3151.entry.js} +2 -2
  240. package/dist/genexus-ide-ui/{p-05b04291.entry.js → p-3090813a.entry.js} +2 -2
  241. package/dist/genexus-ide-ui/{p-d4ca8530.entry.js → p-312ea200.entry.js} +2 -2
  242. package/dist/genexus-ide-ui/{p-11b8f81d.entry.js → p-32262d7f.entry.js} +4 -4
  243. package/dist/genexus-ide-ui/{p-f722955f.entry.js → p-34af745b.entry.js} +2 -2
  244. package/dist/genexus-ide-ui/{p-68969051.entry.js → p-36e62da4.entry.js} +2 -2
  245. package/dist/genexus-ide-ui/{p-4bb2c398.entry.js → p-3d143a80.entry.js} +3 -3
  246. package/dist/genexus-ide-ui/{p-25a9f1d7.js → p-4406e156.js} +11 -5
  247. package/dist/genexus-ide-ui/p-4406e156.js.map +1 -0
  248. package/dist/genexus-ide-ui/{p-b58fb87b.entry.js → p-44eacccd.entry.js} +4 -4
  249. package/dist/genexus-ide-ui/{p-e162771e.entry.js → p-45267d6e.entry.js} +2 -2
  250. package/dist/genexus-ide-ui/{p-94904819.entry.js → p-4cafeee4.entry.js} +2 -2
  251. package/dist/genexus-ide-ui/{p-0937c905.entry.js → p-52d48fba.entry.js} +3 -3
  252. package/dist/genexus-ide-ui/{p-e02e3694.entry.js → p-541c43a2.entry.js} +3 -3
  253. package/dist/genexus-ide-ui/{p-9d985956.entry.js → p-5770d8b7.entry.js} +2 -2
  254. package/dist/genexus-ide-ui/{p-8c0b4d9f.js → p-5cb98d5b.js} +2 -2
  255. package/dist/genexus-ide-ui/{p-dce532ea.entry.js → p-61c8d171.entry.js} +2 -2
  256. package/dist/genexus-ide-ui/{p-8714eeb1.entry.js → p-693be6bb.entry.js} +2 -2
  257. package/dist/genexus-ide-ui/{p-538594e2.entry.js → p-6c0cc0fc.entry.js} +6 -6
  258. package/dist/genexus-ide-ui/{p-d7a91333.js → p-6c5cc7e2.js} +19 -19
  259. package/dist/genexus-ide-ui/{p-04c6bd23.entry.js → p-74882b8f.entry.js} +3 -3
  260. package/dist/genexus-ide-ui/{p-1bc2613e.entry.js → p-7884efd9.entry.js} +2 -2
  261. package/dist/genexus-ide-ui/{p-19d197c5.entry.js → p-78d65da3.entry.js} +4 -4
  262. package/dist/genexus-ide-ui/{p-f49bb305.entry.js → p-7965af56.entry.js} +2 -2
  263. package/dist/genexus-ide-ui/{p-d095a37c.entry.js → p-7a8aeb4e.entry.js} +2 -2
  264. package/dist/genexus-ide-ui/{p-960d9108.entry.js → p-7ba4e229.entry.js} +5 -5
  265. package/dist/genexus-ide-ui/{p-957046fd.js → p-7c2a9252.js} +9 -9
  266. package/dist/genexus-ide-ui/{p-e24902a0.entry.js → p-7de1daee.entry.js} +2 -2
  267. package/dist/genexus-ide-ui/{p-a708a870.entry.js → p-7f756647.entry.js} +2 -2
  268. package/dist/genexus-ide-ui/{p-45996535.entry.js → p-811ff88b.entry.js} +2 -2
  269. package/dist/genexus-ide-ui/{p-35f9ebbc.entry.js → p-832ec678.entry.js} +2 -2
  270. package/dist/genexus-ide-ui/{p-4b38fffc.entry.js → p-847cd613.entry.js} +2 -2
  271. package/dist/genexus-ide-ui/{p-f52ea9d4.entry.js → p-8657d13c.entry.js} +2 -2
  272. package/dist/genexus-ide-ui/{p-6e958b79.entry.js → p-888d029f.entry.js} +3 -3
  273. package/dist/genexus-ide-ui/{p-05f1ff03.entry.js → p-8b4fac7e.entry.js} +2 -2
  274. package/dist/genexus-ide-ui/{p-2d04b927.entry.js → p-987081c1.entry.js} +4 -4
  275. package/dist/genexus-ide-ui/{p-cbe2dd13.entry.js → p-9b2a1619.entry.js} +5 -5
  276. package/dist/genexus-ide-ui/{p-b2928645.entry.js → p-9d5dc6a7.entry.js} +2 -2
  277. package/dist/genexus-ide-ui/{p-d8379699.entry.js → p-9e15d58d.entry.js} +3 -3
  278. package/dist/genexus-ide-ui/{p-f3f068f6.entry.js → p-9e8a71db.entry.js} +2 -2
  279. package/dist/genexus-ide-ui/{p-304d5629.entry.js → p-a29936cd.entry.js} +2 -2
  280. package/dist/genexus-ide-ui/{p-86365635.entry.js → p-a4c35113.entry.js} +2 -2
  281. package/dist/genexus-ide-ui/{p-494b3955.entry.js → p-a5de63cc.entry.js} +2 -2
  282. package/dist/genexus-ide-ui/{p-f4a60017.entry.js → p-a7194c97.entry.js} +2 -2
  283. package/dist/genexus-ide-ui/{p-de7f0c1f.entry.js → p-a92f1884.entry.js} +11 -11
  284. package/dist/genexus-ide-ui/{p-f83ceb69.entry.js → p-aae7f543.entry.js} +6 -4
  285. package/dist/genexus-ide-ui/p-aae7f543.entry.js.map +1 -0
  286. package/dist/genexus-ide-ui/{p-c3abc0f5.entry.js → p-afd84bc7.entry.js} +2 -2
  287. package/dist/genexus-ide-ui/{p-03dbccde.entry.js → p-b3aa0ecb.entry.js} +2 -2
  288. package/dist/genexus-ide-ui/{p-88581fe4.entry.js → p-ba9b9aa5.entry.js} +2 -2
  289. package/dist/genexus-ide-ui/p-c3400671.entry.js +217 -0
  290. package/dist/genexus-ide-ui/p-c3400671.entry.js.map +1 -0
  291. package/dist/genexus-ide-ui/{p-80c1ddc3.entry.js → p-cd8831e4.entry.js} +2 -2
  292. package/dist/genexus-ide-ui/{p-caa5ee2f.entry.js → p-ddbd4891.entry.js} +2 -2
  293. package/dist/genexus-ide-ui/{p-2ad98d24.entry.js → p-de83b5d7.entry.js} +3 -3
  294. package/dist/genexus-ide-ui/{p-36c7a87b.entry.js → p-df148798.entry.js} +2 -2
  295. package/dist/genexus-ide-ui/{p-4328be14.entry.js → p-e0eda984.entry.js} +2 -2
  296. package/dist/genexus-ide-ui/{p-5e7f8ae6.entry.js → p-e267e84e.entry.js} +2 -2
  297. package/dist/genexus-ide-ui/{p-163bfc6a.entry.js → p-e27f0e14.entry.js} +268 -234
  298. package/dist/genexus-ide-ui/p-e27f0e14.entry.js.map +1 -0
  299. package/dist/genexus-ide-ui/{p-14165308.entry.js → p-e40929cd.entry.js} +3 -3
  300. package/dist/genexus-ide-ui/{p-f7421997.entry.js → p-e94c0ad6.entry.js} +2 -2
  301. package/dist/genexus-ide-ui/{p-c58e0a92.entry.js → p-eaa0d5ce.entry.js} +2 -2
  302. package/dist/genexus-ide-ui/{p-3dbd3842.entry.js → p-eb3caba5.entry.js} +4 -4
  303. package/dist/genexus-ide-ui/{p-767e0f6d.entry.js → p-eea24d19.entry.js} +2 -2
  304. package/dist/genexus-ide-ui/{p-b1851e6b.entry.js → p-f15c84ab.entry.js} +2 -2
  305. package/dist/genexus-ide-ui/{p-fa52a417.entry.js → p-f5157be1.entry.js} +3 -3
  306. package/dist/genexus-ide-ui/{p-31beae9e.entry.js → p-fb62d808.entry.js} +2 -2
  307. package/dist/genexus-ide-ui/{p-b0aa8cdb.entry.js → p-fdd75b9c.entry.js} +3 -3
  308. package/dist/types/components/curl-inspector/curl-inspector.d.ts +56 -0
  309. package/dist/types/components/ww-files/ww-files.d.ts +2 -1
  310. package/dist/types/components.d.ts +126 -55
  311. package/package.json +1 -1
  312. package/dist/cjs/index-e227aefb.js.map +0 -1
  313. package/dist/esm/index-10af18cf.js.map +0 -1
  314. package/dist/genexus-ide-ui/p-163bfc6a.entry.js.map +0 -1
  315. package/dist/genexus-ide-ui/p-25a9f1d7.js.map +0 -1
  316. package/dist/genexus-ide-ui/p-6b957e82.entry.js.map +0 -1
  317. package/dist/genexus-ide-ui/p-731b8947.entry.js.map +0 -1
  318. package/dist/genexus-ide-ui/p-f83ceb69.entry.js.map +0 -1
  319. /package/dist/genexus-ide-ui/{p-0c0eb8ae.js.map → p-0090f914.js.map} +0 -0
  320. /package/dist/genexus-ide-ui/{p-0a0ab008.entry.js.map → p-04597fd0.entry.js.map} +0 -0
  321. /package/dist/genexus-ide-ui/{p-75d6c740.entry.js.map → p-070628a8.entry.js.map} +0 -0
  322. /package/dist/genexus-ide-ui/{p-bfe3277f.entry.js.map → p-0e2da68a.entry.js.map} +0 -0
  323. /package/dist/genexus-ide-ui/{p-ded7444c.entry.js.map → p-1191a6f0.entry.js.map} +0 -0
  324. /package/dist/genexus-ide-ui/{p-8e34e92b.entry.js.map → p-149e771e.entry.js.map} +0 -0
  325. /package/dist/genexus-ide-ui/{p-1664d366.entry.js.map → p-1622e339.entry.js.map} +0 -0
  326. /package/dist/genexus-ide-ui/{p-1dd7be84.entry.js.map → p-1bb1c9cc.entry.js.map} +0 -0
  327. /package/dist/genexus-ide-ui/{p-46ffec64.entry.js.map → p-2698d51a.entry.js.map} +0 -0
  328. /package/dist/genexus-ide-ui/{p-4ad7826c.entry.js.map → p-277999c2.entry.js.map} +0 -0
  329. /package/dist/genexus-ide-ui/{p-e9f8b156.entry.js.map → p-2e0ace7b.entry.js.map} +0 -0
  330. /package/dist/genexus-ide-ui/{p-e7fb3ee3.entry.js.map → p-2e559ead.entry.js.map} +0 -0
  331. /package/dist/genexus-ide-ui/{p-5ff6fe1d.entry.js.map → p-2e8b3151.entry.js.map} +0 -0
  332. /package/dist/genexus-ide-ui/{p-05b04291.entry.js.map → p-3090813a.entry.js.map} +0 -0
  333. /package/dist/genexus-ide-ui/{p-d4ca8530.entry.js.map → p-312ea200.entry.js.map} +0 -0
  334. /package/dist/genexus-ide-ui/{p-11b8f81d.entry.js.map → p-32262d7f.entry.js.map} +0 -0
  335. /package/dist/genexus-ide-ui/{p-f722955f.entry.js.map → p-34af745b.entry.js.map} +0 -0
  336. /package/dist/genexus-ide-ui/{p-68969051.entry.js.map → p-36e62da4.entry.js.map} +0 -0
  337. /package/dist/genexus-ide-ui/{p-4bb2c398.entry.js.map → p-3d143a80.entry.js.map} +0 -0
  338. /package/dist/genexus-ide-ui/{p-b58fb87b.entry.js.map → p-44eacccd.entry.js.map} +0 -0
  339. /package/dist/genexus-ide-ui/{p-e162771e.entry.js.map → p-45267d6e.entry.js.map} +0 -0
  340. /package/dist/genexus-ide-ui/{p-94904819.entry.js.map → p-4cafeee4.entry.js.map} +0 -0
  341. /package/dist/genexus-ide-ui/{p-0937c905.entry.js.map → p-52d48fba.entry.js.map} +0 -0
  342. /package/dist/genexus-ide-ui/{p-e02e3694.entry.js.map → p-541c43a2.entry.js.map} +0 -0
  343. /package/dist/genexus-ide-ui/{p-9d985956.entry.js.map → p-5770d8b7.entry.js.map} +0 -0
  344. /package/dist/genexus-ide-ui/{p-8c0b4d9f.js.map → p-5cb98d5b.js.map} +0 -0
  345. /package/dist/genexus-ide-ui/{p-dce532ea.entry.js.map → p-61c8d171.entry.js.map} +0 -0
  346. /package/dist/genexus-ide-ui/{p-8714eeb1.entry.js.map → p-693be6bb.entry.js.map} +0 -0
  347. /package/dist/genexus-ide-ui/{p-538594e2.entry.js.map → p-6c0cc0fc.entry.js.map} +0 -0
  348. /package/dist/genexus-ide-ui/{p-d7a91333.js.map → p-6c5cc7e2.js.map} +0 -0
  349. /package/dist/genexus-ide-ui/{p-04c6bd23.entry.js.map → p-74882b8f.entry.js.map} +0 -0
  350. /package/dist/genexus-ide-ui/{p-1bc2613e.entry.js.map → p-7884efd9.entry.js.map} +0 -0
  351. /package/dist/genexus-ide-ui/{p-19d197c5.entry.js.map → p-78d65da3.entry.js.map} +0 -0
  352. /package/dist/genexus-ide-ui/{p-f49bb305.entry.js.map → p-7965af56.entry.js.map} +0 -0
  353. /package/dist/genexus-ide-ui/{p-d095a37c.entry.js.map → p-7a8aeb4e.entry.js.map} +0 -0
  354. /package/dist/genexus-ide-ui/{p-960d9108.entry.js.map → p-7ba4e229.entry.js.map} +0 -0
  355. /package/dist/genexus-ide-ui/{p-957046fd.js.map → p-7c2a9252.js.map} +0 -0
  356. /package/dist/genexus-ide-ui/{p-e24902a0.entry.js.map → p-7de1daee.entry.js.map} +0 -0
  357. /package/dist/genexus-ide-ui/{p-a708a870.entry.js.map → p-7f756647.entry.js.map} +0 -0
  358. /package/dist/genexus-ide-ui/{p-45996535.entry.js.map → p-811ff88b.entry.js.map} +0 -0
  359. /package/dist/genexus-ide-ui/{p-35f9ebbc.entry.js.map → p-832ec678.entry.js.map} +0 -0
  360. /package/dist/genexus-ide-ui/{p-4b38fffc.entry.js.map → p-847cd613.entry.js.map} +0 -0
  361. /package/dist/genexus-ide-ui/{p-f52ea9d4.entry.js.map → p-8657d13c.entry.js.map} +0 -0
  362. /package/dist/genexus-ide-ui/{p-6e958b79.entry.js.map → p-888d029f.entry.js.map} +0 -0
  363. /package/dist/genexus-ide-ui/{p-05f1ff03.entry.js.map → p-8b4fac7e.entry.js.map} +0 -0
  364. /package/dist/genexus-ide-ui/{p-2d04b927.entry.js.map → p-987081c1.entry.js.map} +0 -0
  365. /package/dist/genexus-ide-ui/{p-cbe2dd13.entry.js.map → p-9b2a1619.entry.js.map} +0 -0
  366. /package/dist/genexus-ide-ui/{p-b2928645.entry.js.map → p-9d5dc6a7.entry.js.map} +0 -0
  367. /package/dist/genexus-ide-ui/{p-d8379699.entry.js.map → p-9e15d58d.entry.js.map} +0 -0
  368. /package/dist/genexus-ide-ui/{p-f3f068f6.entry.js.map → p-9e8a71db.entry.js.map} +0 -0
  369. /package/dist/genexus-ide-ui/{p-304d5629.entry.js.map → p-a29936cd.entry.js.map} +0 -0
  370. /package/dist/genexus-ide-ui/{p-86365635.entry.js.map → p-a4c35113.entry.js.map} +0 -0
  371. /package/dist/genexus-ide-ui/{p-494b3955.entry.js.map → p-a5de63cc.entry.js.map} +0 -0
  372. /package/dist/genexus-ide-ui/{p-f4a60017.entry.js.map → p-a7194c97.entry.js.map} +0 -0
  373. /package/dist/genexus-ide-ui/{p-de7f0c1f.entry.js.map → p-a92f1884.entry.js.map} +0 -0
  374. /package/dist/genexus-ide-ui/{p-c3abc0f5.entry.js.map → p-afd84bc7.entry.js.map} +0 -0
  375. /package/dist/genexus-ide-ui/{p-03dbccde.entry.js.map → p-b3aa0ecb.entry.js.map} +0 -0
  376. /package/dist/genexus-ide-ui/{p-88581fe4.entry.js.map → p-ba9b9aa5.entry.js.map} +0 -0
  377. /package/dist/genexus-ide-ui/{p-80c1ddc3.entry.js.map → p-cd8831e4.entry.js.map} +0 -0
  378. /package/dist/genexus-ide-ui/{p-caa5ee2f.entry.js.map → p-ddbd4891.entry.js.map} +0 -0
  379. /package/dist/genexus-ide-ui/{p-2ad98d24.entry.js.map → p-de83b5d7.entry.js.map} +0 -0
  380. /package/dist/genexus-ide-ui/{p-36c7a87b.entry.js.map → p-df148798.entry.js.map} +0 -0
  381. /package/dist/genexus-ide-ui/{p-4328be14.entry.js.map → p-e0eda984.entry.js.map} +0 -0
  382. /package/dist/genexus-ide-ui/{p-5e7f8ae6.entry.js.map → p-e267e84e.entry.js.map} +0 -0
  383. /package/dist/genexus-ide-ui/{p-14165308.entry.js.map → p-e40929cd.entry.js.map} +0 -0
  384. /package/dist/genexus-ide-ui/{p-f7421997.entry.js.map → p-e94c0ad6.entry.js.map} +0 -0
  385. /package/dist/genexus-ide-ui/{p-c58e0a92.entry.js.map → p-eaa0d5ce.entry.js.map} +0 -0
  386. /package/dist/genexus-ide-ui/{p-3dbd3842.entry.js.map → p-eb3caba5.entry.js.map} +0 -0
  387. /package/dist/genexus-ide-ui/{p-767e0f6d.entry.js.map → p-eea24d19.entry.js.map} +0 -0
  388. /package/dist/genexus-ide-ui/{p-b1851e6b.entry.js.map → p-f15c84ab.entry.js.map} +0 -0
  389. /package/dist/genexus-ide-ui/{p-fa52a417.entry.js.map → p-f5157be1.entry.js.map} +0 -0
  390. /package/dist/genexus-ide-ui/{p-31beae9e.entry.js.map → p-fb62d808.entry.js.map} +0 -0
  391. /package/dist/genexus-ide-ui/{p-b0aa8cdb.entry.js.map → p-fdd75b9c.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"locale.e2e.js","sourceRoot":"","sources":["../../src/testing/locale.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EPage, newE2EPage } from \"@stencil/core/testing\";\nimport { GeneXusIdeUIControlsTagName } from \"../common/types\";\nimport { haveSameStructure } from \"./same-structure.e2e\";\n\nconst COMPONENT_PREFIX = \"gx-ide-\";\nconst languages: { name: string; attr: string }[] = [\n { name: \"chinese\", attr: \"zh\" },\n { name: \"english\", attr: \"en\" },\n { name: \"japanese\", attr: \"ja\" }\n];\n\nconst testLocale = (componentNameWithPrefix: GeneXusIdeUIControlsTagName) => {\n describe(`[locale][${componentNameWithPrefix}]`, () => {\n let page: E2EPage;\n const componentName = componentNameWithPrefix.replace(COMPONENT_PREFIX, \"\");\n\n // This implementation is a WA since we can't evaluate JS classes in the page.\n // TODO: Implement the locale utility as a function, which can be evaluated\n // in the page\n const getTranslations = () =>\n page.evaluate(component => {\n const ASSETS_FOLDER = \"gx-ide-assets/\";\n const DEFAULT_LANGUAGE = \"en\";\n const LANGS_FOLDER = \"langs/\";\n const LANG_PREFIX = \".lang.\";\n const LANG_EXTENSION = \".json\";\n const lang =\n document\n .getElementsByTagName(\"html\")[0]\n .getAttribute(\"lang\")\n ?.valueOf() ?? DEFAULT_LANGUAGE;\n const folder = `${component}/`;\n\n const path =\n `/build/${ASSETS_FOLDER}${folder}${LANGS_FOLDER}${component}${LANG_PREFIX}${lang}${LANG_EXTENSION}` as const;\n\n return new Promise(resolve => {\n fetch(path)\n .then(async langFile => {\n if (langFile.ok) {\n const fileObject = await langFile.json();\n resolve(fileObject);\n } else {\n resolve(undefined);\n }\n })\n .catch(() => resolve(undefined));\n });\n }, componentName);\n\n beforeEach(async () => {\n page = await newE2EPage({\n failOnConsoleError: true,\n html: \"\" // Necessary\n });\n });\n\n it(\"should work without specifying the language (lang attr) in the browser\", async () => {\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n });\n\n it(\"should default to english language when there is no language (lang attr) in the browser\", async () => {\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n\n await page.evaluate(() =>\n document.documentElement.setAttribute(\"lang\", \"en\")\n );\n\n const languageEnglishFile: any | undefined = await getTranslations();\n expect(languageEnglishFile).toBeTruthy();\n expect(languageFile).toEqual(languageEnglishFile);\n });\n\n languages.forEach(language => {\n it(`should work with ${language.name} language`, async () => {\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language.attr\n );\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n });\n });\n\n for (let index = 0; index < languages.length - 1; index++) {\n const language1 = languages[index];\n const language2 = languages[index + 1];\n\n // TODO: Complete all translations. At this moment, Japanese and Chinese\n // translations have missing literals\n it(`should translate the same literals (${language1.name} and ${language2.name})`, async () => {\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language1.attr\n );\n const language1File: any | undefined = await getTranslations();\n\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language2.attr\n );\n const language2File: any | undefined = await getTranslations();\n\n expect(language1File).toBeTruthy();\n expect(language2File).toBeTruthy();\n expect(haveSameStructure(language1File, language2File)).toBe(true);\n });\n }\n });\n};\n\n// TypeScript does not have a built-in type to exhaust a list with union types\nconst allGeneXusIdeUIComponents: { [key in GeneXusIdeUIControlsTagName]: 0 } = {\n \"gx-ide-about\": 0,\n \"gx-ide-ai-assistant\": 0,\n \"gx-ide-ai-message\": 0,\n \"gx-ide-bpm-app-declaration\": 0,\n \"gx-ide-bpm-assign-roles\": 0,\n \"gx-ide-bpm-import-files\": 0,\n \"gx-ide-bpm-import-gxpm\": 0,\n \"gx-ide-bpm-objects-selector\": 0,\n \"gx-ide-bpm-sync-gam-roles\": 0,\n \"gx-ide-bpm-task-documents\": 0,\n \"gx-ide-bpm-timer-duration\": 0,\n \"gx-ide-card\": 0,\n \"gx-ide-chat-container\": 0,\n \"gx-ide-chat-welcome\": 0,\n \"gx-ide-sc-chat-container\": 0,\n \"gx-ide-connect-gx-server\": 0,\n \"gx-ide-container\": 0,\n \"gx-ide-create-kb-from-server\": 0,\n \"gx-ide-current-user-info\": 0,\n \"gx-ide-dashboard-home\": 0,\n \"gx-ide-data-selector\": 0,\n \"gx-ide-data-type-selector\": 0,\n \"gx-ide-deployment-tool\": 0,\n \"gx-ide-design-import\": 0,\n \"gx-ide-directory-selector\": 0,\n \"gx-ide-edit-module-server\": 0,\n \"gx-ide-empty-state\": 0,\n \"gx-ide-entity-selector\": 0,\n \"gx-ide-file-item\": 0,\n \"gx-ide-file-uploader\": 0,\n \"gx-ide-gam-installation-settings\": 0,\n \"gx-ide-json-import\": 0,\n \"gx-ide-kb-manager-export\": 0,\n \"gx-ide-kb-manager-import\": 0,\n \"gx-ide-list-selector\": 0,\n \"gx-ide-list-selector-item\": 0,\n \"gx-ide-loader\": 0,\n \"gx-ide-manage-module-references\": 0,\n \"gx-ide-manage-module-references-v2\": 0,\n \"gx-ide-new-environment\": 0,\n \"gx-ide-new-kb\": 0,\n \"gx-ide-new-object\": 0,\n \"gx-ide-new-version\": 0,\n \"gx-ide-object-selector\": 0,\n \"gx-ide-open-api-import\": 0,\n \"gx-ide-plugin-explorer\": 0,\n \"gx-ide-plugin-details\": 0,\n \"gx-ide-references\": 0,\n \"gx-ide-select-kb-items\": 0,\n \"gx-ide-select-user-team\": 0,\n \"gx-ide-sign-in\": 0,\n \"gx-ide-sign-in-team\": 0,\n \"gx-ide-share-kb\": 0,\n \"gx-ide-start-page\": 0,\n \"gx-ide-status-buttons\": 0,\n \"gx-ide-switch-panel\": 0,\n \"gx-ide-switcher\": 0,\n \"gx-ide-team-dev-bring-changes\": 0,\n \"gx-ide-team-dev-commit\": 0,\n \"gx-ide-team-dev-history\": 0,\n \"gx-ide-team-dev-select-recent-comment\": 0,\n \"gx-ide-team-dev-update\": 0,\n \"gx-ide-team-dev-update-partial-selection\": 0,\n \"gx-ide-team-dev-update-to-revision\": 0,\n \"gx-ide-template\": 0,\n \"gx-ide-test\": 0,\n \"gx-ide-title\": 0,\n \"gx-ide-top-bar\": 0,\n \"gx-ide-wf-settings\": 0,\n \"gx-ide-ww-images\": 0,\n \"gx-ide-ww-attributes\": 0,\n \"gx-ide-ww-files\": 0,\n \"gx-ide-navigation-report\": 0,\n \"gx-ide-splash\": 0,\n \"gx-ide-welcome-page\": 0,\n \"gx-ide-bpm-export-xpdl\": 0\n};\n\nconst componentsWithoutTranslations = new Set<GeneXusIdeUIControlsTagName>([\n \"gx-ide-ai-message\",\n \"gx-ide-chat-container\",\n \"gx-ide-container\",\n \"gx-ide-sc-chat-container\",\n \"gx-ide-directory-selector\",\n \"gx-ide-empty-state\",\n \"gx-ide-list-selector\",\n \"gx-ide-list-selector-item\",\n \"gx-ide-loader\",\n \"gx-ide-switch-panel\",\n \"gx-ide-switcher\",\n \"gx-ide-test\",\n \"gx-ide-title\",\n \"gx-ide-top-bar\",\n \"gx-ide-file-item\"\n]);\n\nconst componentsWithTranslations = Object.keys(\n allGeneXusIdeUIComponents\n).filter(\n component =>\n !componentsWithoutTranslations.has(component as GeneXusIdeUIControlsTagName)\n);\n\ncomponentsWithTranslations.forEach(testLocale);\n"]}
1
+ {"version":3,"file":"locale.e2e.js","sourceRoot":"","sources":["../../src/testing/locale.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EPage, newE2EPage } from \"@stencil/core/testing\";\nimport { GeneXusIdeUIControlsTagName } from \"../common/types\";\nimport { haveSameStructure } from \"./same-structure.e2e\";\n\nconst COMPONENT_PREFIX = \"gx-ide-\";\nconst languages: { name: string; attr: string }[] = [\n { name: \"chinese\", attr: \"zh\" },\n { name: \"english\", attr: \"en\" },\n { name: \"japanese\", attr: \"ja\" }\n];\n\nconst testLocale = (componentNameWithPrefix: GeneXusIdeUIControlsTagName) => {\n describe(`[locale][${componentNameWithPrefix}]`, () => {\n let page: E2EPage;\n const componentName = componentNameWithPrefix.replace(COMPONENT_PREFIX, \"\");\n\n // This implementation is a WA since we can't evaluate JS classes in the page.\n // TODO: Implement the locale utility as a function, which can be evaluated\n // in the page\n const getTranslations = () =>\n page.evaluate(component => {\n const ASSETS_FOLDER = \"gx-ide-assets/\";\n const DEFAULT_LANGUAGE = \"en\";\n const LANGS_FOLDER = \"langs/\";\n const LANG_PREFIX = \".lang.\";\n const LANG_EXTENSION = \".json\";\n const lang =\n document\n .getElementsByTagName(\"html\")[0]\n .getAttribute(\"lang\")\n ?.valueOf() ?? DEFAULT_LANGUAGE;\n const folder = `${component}/`;\n\n const path =\n `/build/${ASSETS_FOLDER}${folder}${LANGS_FOLDER}${component}${LANG_PREFIX}${lang}${LANG_EXTENSION}` as const;\n\n return new Promise(resolve => {\n fetch(path)\n .then(async langFile => {\n if (langFile.ok) {\n const fileObject = await langFile.json();\n resolve(fileObject);\n } else {\n resolve(undefined);\n }\n })\n .catch(() => resolve(undefined));\n });\n }, componentName);\n\n beforeEach(async () => {\n page = await newE2EPage({\n failOnConsoleError: true,\n html: \"\" // Necessary\n });\n });\n\n it(\"should work without specifying the language (lang attr) in the browser\", async () => {\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n });\n\n it(\"should default to english language when there is no language (lang attr) in the browser\", async () => {\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n\n await page.evaluate(() =>\n document.documentElement.setAttribute(\"lang\", \"en\")\n );\n\n const languageEnglishFile: any | undefined = await getTranslations();\n expect(languageEnglishFile).toBeTruthy();\n expect(languageFile).toEqual(languageEnglishFile);\n });\n\n languages.forEach(language => {\n it(`should work with ${language.name} language`, async () => {\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language.attr\n );\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n });\n });\n\n for (let index = 0; index < languages.length - 1; index++) {\n const language1 = languages[index];\n const language2 = languages[index + 1];\n\n // TODO: Complete all translations. At this moment, Japanese and Chinese\n // translations have missing literals\n it(`should translate the same literals (${language1.name} and ${language2.name})`, async () => {\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language1.attr\n );\n const language1File: any | undefined = await getTranslations();\n\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language2.attr\n );\n const language2File: any | undefined = await getTranslations();\n\n expect(language1File).toBeTruthy();\n expect(language2File).toBeTruthy();\n expect(haveSameStructure(language1File, language2File)).toBe(true);\n });\n }\n });\n};\n\n// TypeScript does not have a built-in type to exhaust a list with union types\nconst allGeneXusIdeUIComponents: { [key in GeneXusIdeUIControlsTagName]: 0 } = {\n \"gx-ide-about\": 0,\n \"gx-ide-ai-assistant\": 0,\n \"gx-ide-ai-message\": 0,\n \"gx-ide-bpm-app-declaration\": 0,\n \"gx-ide-bpm-assign-roles\": 0,\n \"gx-ide-bpm-import-files\": 0,\n \"gx-ide-bpm-import-gxpm\": 0,\n \"gx-ide-bpm-objects-selector\": 0,\n \"gx-ide-bpm-sync-gam-roles\": 0,\n \"gx-ide-bpm-task-documents\": 0,\n \"gx-ide-bpm-timer-duration\": 0,\n \"gx-ide-card\": 0,\n \"gx-ide-chat-container\": 0,\n \"gx-ide-chat-welcome\": 0,\n \"gx-ide-sc-chat-container\": 0,\n \"gx-ide-connect-gx-server\": 0,\n \"gx-ide-container\": 0,\n \"gx-ide-create-kb-from-server\": 0,\n \"gx-ide-current-user-info\": 0,\n \"gx-ide-dashboard-home\": 0,\n \"gx-ide-data-selector\": 0,\n \"gx-ide-data-type-selector\": 0,\n \"gx-ide-deployment-tool\": 0,\n \"gx-ide-design-import\": 0,\n \"gx-ide-directory-selector\": 0,\n \"gx-ide-edit-module-server\": 0,\n \"gx-ide-empty-state\": 0,\n \"gx-ide-entity-selector\": 0,\n \"gx-ide-file-item\": 0,\n \"gx-ide-file-uploader\": 0,\n \"gx-ide-gam-installation-settings\": 0,\n \"gx-ide-json-import\": 0,\n \"gx-ide-kb-manager-export\": 0,\n \"gx-ide-kb-manager-import\": 0,\n \"gx-ide-list-selector\": 0,\n \"gx-ide-list-selector-item\": 0,\n \"gx-ide-loader\": 0,\n \"gx-ide-manage-module-references\": 0,\n \"gx-ide-manage-module-references-v2\": 0,\n \"gx-ide-new-environment\": 0,\n \"gx-ide-new-kb\": 0,\n \"gx-ide-new-object\": 0,\n \"gx-ide-new-version\": 0,\n \"gx-ide-object-selector\": 0,\n \"gx-ide-open-api-import\": 0,\n \"gx-ide-plugin-explorer\": 0,\n \"gx-ide-plugin-details\": 0,\n \"gx-ide-references\": 0,\n \"gx-ide-select-kb-items\": 0,\n \"gx-ide-select-user-team\": 0,\n \"gx-ide-sign-in\": 0,\n \"gx-ide-sign-in-team\": 0,\n \"gx-ide-share-kb\": 0,\n \"gx-ide-start-page\": 0,\n \"gx-ide-status-buttons\": 0,\n \"gx-ide-switch-panel\": 0,\n \"gx-ide-switcher\": 0,\n \"gx-ide-team-dev-bring-changes\": 0,\n \"gx-ide-team-dev-commit\": 0,\n \"gx-ide-team-dev-history\": 0,\n \"gx-ide-team-dev-select-recent-comment\": 0,\n \"gx-ide-team-dev-update\": 0,\n \"gx-ide-team-dev-update-partial-selection\": 0,\n \"gx-ide-team-dev-update-to-revision\": 0,\n \"gx-ide-template\": 0,\n \"gx-ide-test\": 0,\n \"gx-ide-title\": 0,\n \"gx-ide-top-bar\": 0,\n \"gx-ide-wf-settings\": 0,\n \"gx-ide-ww-images\": 0,\n \"gx-ide-ww-attributes\": 0,\n \"gx-ide-ww-files\": 0,\n \"gx-ide-navigation-report\": 0,\n \"gx-ide-splash\": 0,\n \"gx-ide-welcome-page\": 0,\n \"gx-ide-bpm-export-xpdl\": 0,\n \"gx-ide-curl-inspector\": 0\n};\n\nconst componentsWithoutTranslations = new Set<GeneXusIdeUIControlsTagName>([\n \"gx-ide-ai-message\",\n \"gx-ide-chat-container\",\n \"gx-ide-container\",\n \"gx-ide-sc-chat-container\",\n \"gx-ide-directory-selector\",\n \"gx-ide-empty-state\",\n \"gx-ide-list-selector\",\n \"gx-ide-list-selector-item\",\n \"gx-ide-loader\",\n \"gx-ide-switch-panel\",\n \"gx-ide-switcher\",\n \"gx-ide-test\",\n \"gx-ide-title\",\n \"gx-ide-top-bar\",\n \"gx-ide-file-item\"\n]);\n\nconst componentsWithTranslations = Object.keys(\n allGeneXusIdeUIComponents\n).filter(\n component =>\n !componentsWithoutTranslations.has(component as GeneXusIdeUIControlsTagName)\n);\n\ncomponentsWithTranslations.forEach(testLocale);\n"]}
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface GxIdeCurlInspector extends Components.GxIdeCurlInspector, HTMLElement {}
4
+ export const GxIdeCurlInspector: {
5
+ prototype: GxIdeCurlInspector;
6
+ new (): GxIdeCurlInspector;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,194 @@
1
+ import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
+ import { c as config } from './config.js';
3
+ import { L as Locale } from './locale.js';
4
+ import { v as validateControls } from './form-validation.js';
5
+ import { d as defineCustomElement$2 } from './entity-selector.js';
6
+
7
+ const curlInspectorCss = ":host{display:grid;grid-template-rows:max-content 1fr max-content;block-size:100%;overflow:auto}.section{display:contents}.main{display:grid;overflow:auto}.field-group-name-description-module{align-items:center;grid-template-areas:\"name-label name-input\" \"description-label description-input\" \"module-label module-entity-selector\";grid-template-columns:max-content 1fr}.name-label{grid-area:name-label}.name-input{grid-area:name-input}.description-label{grid-area:description-label}.description-input{grid-area:description-input}.module-label{grid-area:module-label}.module-entity-selector{grid-area:module-entity-selector}.tooltip{height:0}";
8
+
9
+ var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) {
10
+ if (kind === "a" && !f)
11
+ throw new TypeError("Private accessor was defined without a getter");
12
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
13
+ throw new TypeError("Cannot read private member from an object whose class did not declare it");
14
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
15
+ };
16
+ var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
17
+ if (kind === "m")
18
+ throw new TypeError("Private method is not writable");
19
+ if (kind === "a" && !f)
20
+ throw new TypeError("Private accessor was defined without a setter");
21
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
22
+ throw new TypeError("Cannot write private member to an object whose class did not declare it");
23
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
24
+ };
25
+ var _GxIdeCurlInspector_componentLocale, _GxIdeCurlInspector_chShortcutsEl, _GxIdeCurlInspector_descriptionEl, _GxIdeCurlInspector_moduleEntitySelector, _GxIdeCurlInspector_nameEl, _GxIdeCurlInspector_editorEl, _GxIdeCurlInspector_curlContentChangeHandler, _GxIdeCurlInspector_keydownHandler, _GxIdeCurlInspector_initializeValidatableControls, _GxIdeCurlInspector_evaluateTooltipRender, _GxIdeCurlInspector_validateForm, _GxIdeCurlInspector_handleEditorChange, _GxIdeCurlInspector_handleSlotChange, _GxIdeCurlInspector_createHandler;
26
+ const CSS_BUNDLES = [
27
+ "resets/box-sizing",
28
+ "components/tooltip",
29
+ "utils/form--full",
30
+ "utils/layout",
31
+ "utils/typography",
32
+ "utils/spacing",
33
+ "chameleon/scrollbar"
34
+ ];
35
+ const GxIdeCurlInspector$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeCurlInspector extends HTMLElement {
36
+ constructor() {
37
+ super();
38
+ this.__registerHost();
39
+ this.__attachShadow();
40
+ _GxIdeCurlInspector_componentLocale.set(this, void 0);
41
+ _GxIdeCurlInspector_chShortcutsEl.set(this, void 0);
42
+ _GxIdeCurlInspector_descriptionEl.set(this, void 0);
43
+ _GxIdeCurlInspector_moduleEntitySelector.set(this, void 0);
44
+ _GxIdeCurlInspector_nameEl.set(this, void 0);
45
+ _GxIdeCurlInspector_editorEl.set(this, void 0);
46
+ _GxIdeCurlInspector_curlContentChangeHandler.set(this, void 0);
47
+ _GxIdeCurlInspector_keydownHandler.set(this, void 0);
48
+ _GxIdeCurlInspector_initializeValidatableControls.set(this, () => {
49
+ const validatableControls = [
50
+ __classPrivateFieldGet(this, _GxIdeCurlInspector_nameEl, "f"),
51
+ __classPrivateFieldGet(this, _GxIdeCurlInspector_moduleEntitySelector, "f")
52
+ ];
53
+ validatableControls.forEach(validatableControl => {
54
+ if (validatableControl.id) {
55
+ this.validatableControls.set(validatableControl.id, {
56
+ reference: validatableControl,
57
+ hasError: false,
58
+ message: undefined
59
+ });
60
+ }
61
+ });
62
+ });
63
+ _GxIdeCurlInspector_evaluateTooltipRender.set(this, (controlReference) => {
64
+ var _a, _b, _c;
65
+ return ((_b = (_a = this.validatableControls) === null || _a === void 0 ? void 0 : _a.get(controlReference === null || controlReference === void 0 ? void 0 : controlReference.id)) === null || _b === void 0 ? void 0 : _b.hasError) &&
66
+ ((_c = this.validatableControls.get(controlReference.id)) === null || _c === void 0 ? void 0 : _c.message) && (h("ch-tooltip", { class: "tooltip", actionElement: controlReference, blockAlign: config.tooltipSettings.blockAlign, inlineAlign: config.tooltipSettings.inlineAlign, delay: config.tooltipSettings.delay }, this.validatableControls.get(controlReference.id).message));
67
+ });
68
+ _GxIdeCurlInspector_validateForm.set(this, () => {
69
+ var _a, _b, _c, _d, _e;
70
+ const name = ((_b = (_a = __classPrivateFieldGet(this, _GxIdeCurlInspector_nameEl, "f")) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.trim()) || "";
71
+ const parentId = ((_d = (_c = __classPrivateFieldGet(this, _GxIdeCurlInspector_moduleEntitySelector, "f")) === null || _c === void 0 ? void 0 : _c.value) === null || _d === void 0 ? void 0 : _d.id) || "";
72
+ const curl = ((_e = this.curlContent) === null || _e === void 0 ? void 0 : _e.trim()) || "";
73
+ const isNameValid = this.validateNameCallback
74
+ ? this.validateNameCallback(name)
75
+ : Boolean(name);
76
+ const isParentValid = Boolean(parentId);
77
+ const isCurlValid = Boolean(curl);
78
+ this.isFormValid = isNameValid && isParentValid && isCurlValid;
79
+ });
80
+ _GxIdeCurlInspector_handleEditorChange.set(this, () => {
81
+ if (__classPrivateFieldGet(this, _GxIdeCurlInspector_editorEl, "f")) {
82
+ this.curlContent = __classPrivateFieldGet(this, _GxIdeCurlInspector_editorEl, "f").text;
83
+ __classPrivateFieldGet(this, _GxIdeCurlInspector_validateForm, "f").call(this);
84
+ }
85
+ });
86
+ _GxIdeCurlInspector_handleSlotChange.set(this, (e) => {
87
+ const elements = e.target.assignedElements();
88
+ if (elements.length) {
89
+ __classPrivateFieldSet(this, _GxIdeCurlInspector_editorEl, elements[0], "f");
90
+ __classPrivateFieldGet(this, _GxIdeCurlInspector_editorEl, "f").addEventListener("input", __classPrivateFieldGet(this, _GxIdeCurlInspector_handleEditorChange, "f"));
91
+ __classPrivateFieldSet(this, _GxIdeCurlInspector_curlContentChangeHandler, ((event) => {
92
+ this.curlContent = event.detail.content;
93
+ __classPrivateFieldGet(this, _GxIdeCurlInspector_handleEditorChange, "f").call(this);
94
+ }), "f");
95
+ __classPrivateFieldGet(this, _GxIdeCurlInspector_editorEl, "f").addEventListener("curl-content-change", __classPrivateFieldGet(this, _GxIdeCurlInspector_curlContentChangeHandler, "f"));
96
+ __classPrivateFieldSet(this, _GxIdeCurlInspector_keydownHandler, (event) => {
97
+ if ((event.ctrlKey || event.metaKey) && event.key === "v") {
98
+ setTimeout(() => {
99
+ __classPrivateFieldGet(this, _GxIdeCurlInspector_handleEditorChange, "f").call(this);
100
+ }, 0);
101
+ }
102
+ }, "f");
103
+ __classPrivateFieldGet(this, _GxIdeCurlInspector_editorEl, "f").addEventListener("keydown", __classPrivateFieldGet(this, _GxIdeCurlInspector_keydownHandler, "f"));
104
+ this.curlContent = __classPrivateFieldGet(this, _GxIdeCurlInspector_editorEl, "f").text;
105
+ __classPrivateFieldGet(this, _GxIdeCurlInspector_validateForm, "f").call(this);
106
+ }
107
+ });
108
+ _GxIdeCurlInspector_createHandler.set(this, () => {
109
+ var _a;
110
+ const data = {
111
+ name: __classPrivateFieldGet(this, _GxIdeCurlInspector_nameEl, "f").value,
112
+ description: __classPrivateFieldGet(this, _GxIdeCurlInspector_descriptionEl, "f").value,
113
+ parentId: (_a = __classPrivateFieldGet(this, _GxIdeCurlInspector_moduleEntitySelector, "f").value) === null || _a === void 0 ? void 0 : _a.id,
114
+ curl: this.curlContent
115
+ };
116
+ this.confirmCallback(data).then((formSubmitResult) => {
117
+ this.validatableControls = validateControls(formSubmitResult, this.validatableControls);
118
+ });
119
+ });
120
+ this.showTooltipError = false;
121
+ this.isFormValid = false;
122
+ this.curlContent = "";
123
+ this.validatableControls = new Map();
124
+ this.cancelCallback = undefined;
125
+ this.confirmCallback = undefined;
126
+ this.defaultParent = undefined;
127
+ this.parent = undefined;
128
+ this.selectModuleCallback = undefined;
129
+ this.validateNameCallback = undefined;
130
+ }
131
+ async componentWillLoad() {
132
+ __classPrivateFieldSet(this, _GxIdeCurlInspector_componentLocale, await Locale.getComponentStrings(this.el), "f");
133
+ }
134
+ componentDidLoad() {
135
+ __classPrivateFieldGet(this, _GxIdeCurlInspector_initializeValidatableControls, "f").call(this);
136
+ }
137
+ disconnectedCallback() {
138
+ if (__classPrivateFieldGet(this, _GxIdeCurlInspector_editorEl, "f") && __classPrivateFieldGet(this, _GxIdeCurlInspector_editorEl, "f").removeEventListener) {
139
+ __classPrivateFieldGet(this, _GxIdeCurlInspector_editorEl, "f").removeEventListener("input", __classPrivateFieldGet(this, _GxIdeCurlInspector_handleEditorChange, "f"));
140
+ __classPrivateFieldGet(this, _GxIdeCurlInspector_editorEl, "f").removeEventListener("curl-content-change", __classPrivateFieldGet(this, _GxIdeCurlInspector_curlContentChangeHandler, "f"));
141
+ __classPrivateFieldGet(this, _GxIdeCurlInspector_editorEl, "f").removeEventListener("keydown", __classPrivateFieldGet(this, _GxIdeCurlInspector_keydownHandler, "f"));
142
+ }
143
+ }
144
+ /**
145
+ * Suspends or reactivates the shortcuts
146
+ */
147
+ async suspendShortcuts(suspendShortcuts) {
148
+ __classPrivateFieldGet(this, _GxIdeCurlInspector_chShortcutsEl, "f").suspend = suspendShortcuts;
149
+ }
150
+ render() {
151
+ return (h(Host, { class: "widget" }, h("ch-theme", { model: CSS_BUNDLES }), h("ch-shortcuts", { src: "./gx-ide-assets/curl-inspector/shortcuts.json", ref: (el) => (__classPrivateFieldSet(this, _GxIdeCurlInspector_chShortcutsEl, el, "f")) }), h("section", { class: "section" }, h("header", { class: "header field-group spacing-body control-header" }, h("div", { class: "field-group field-group-name-description-module" }, h("label", { class: "label name-label", htmlFor: "input-name" }, __classPrivateFieldGet(this, _GxIdeCurlInspector_componentLocale, "f").header.nameFieldLabel), h("ch-edit", { class: "input name-input", id: "input-name", ref: (el) => (__classPrivateFieldSet(this, _GxIdeCurlInspector_nameEl, el, "f")), onInput: __classPrivateFieldGet(this, _GxIdeCurlInspector_validateForm, "f") }), __classPrivateFieldGet(this, _GxIdeCurlInspector_evaluateTooltipRender, "f").call(this, __classPrivateFieldGet(this, _GxIdeCurlInspector_nameEl, "f")), h("label", { class: "label description-label", htmlFor: "input-description" }, __classPrivateFieldGet(this, _GxIdeCurlInspector_componentLocale, "f").header.descriptionFieldLabel), h("ch-edit", { class: "input description-input", id: "input-description", ref: (el) => (__classPrivateFieldSet(this, _GxIdeCurlInspector_descriptionEl, el, "f")) }), h("label", { class: "label module-label", htmlFor: "input-module" }, __classPrivateFieldGet(this, _GxIdeCurlInspector_componentLocale, "f").header.moduleFolderLabel), h("gx-ide-entity-selector", { class: "module module-entity-selector", id: "module", value: this.defaultParent, ref: (el) => (__classPrivateFieldSet(this, _GxIdeCurlInspector_moduleEntitySelector, el, "f")), labelPosition: "none", defaultValue: this.defaultParent, selectEntityCallback: this.selectModuleCallback }), __classPrivateFieldGet(this, _GxIdeCurlInspector_evaluateTooltipRender, "f").call(this, __classPrivateFieldGet(this, _GxIdeCurlInspector_moduleEntitySelector, "f")))), h("div", { class: "main field-group scrollable" }, h("slot", { name: "CurlTextEditor", onSlotchange: __classPrivateFieldGet(this, _GxIdeCurlInspector_handleSlotChange, "f") })), h("footer", { class: "control-footer control-footer spacing-body-block-end spacing-body-inline" }, h("div", { class: "buttons-spacer" }, h("button", { class: "button-secondary", id: "button-cancel", onClick: this.cancelCallback, part: "button-cancel" }, __classPrivateFieldGet(this, _GxIdeCurlInspector_componentLocale, "f").footer.btnCancel), h("button", { class: "button-primary", id: "button-ok", onClick: __classPrivateFieldGet(this, _GxIdeCurlInspector_createHandler, "f"), part: "button-ok", disabled: !this.isFormValid }, __classPrivateFieldGet(this, _GxIdeCurlInspector_componentLocale, "f").footer.btnCreate))))));
152
+ }
153
+ static get assetsDirs() { return ["gx-ide-assets/curl-inspector"]; }
154
+ get el() { return this; }
155
+ static get style() { return curlInspectorCss; }
156
+ }, [1, "gx-ide-curl-inspector", {
157
+ "cancelCallback": [16],
158
+ "confirmCallback": [16],
159
+ "defaultParent": [16],
160
+ "parent": [16],
161
+ "selectModuleCallback": [16],
162
+ "validateNameCallback": [16],
163
+ "showTooltipError": [32],
164
+ "isFormValid": [32],
165
+ "curlContent": [32],
166
+ "validatableControls": [32],
167
+ "suspendShortcuts": [64]
168
+ }]);
169
+ _GxIdeCurlInspector_componentLocale = new WeakMap(), _GxIdeCurlInspector_chShortcutsEl = new WeakMap(), _GxIdeCurlInspector_descriptionEl = new WeakMap(), _GxIdeCurlInspector_moduleEntitySelector = new WeakMap(), _GxIdeCurlInspector_nameEl = new WeakMap(), _GxIdeCurlInspector_editorEl = new WeakMap(), _GxIdeCurlInspector_curlContentChangeHandler = new WeakMap(), _GxIdeCurlInspector_keydownHandler = new WeakMap(), _GxIdeCurlInspector_initializeValidatableControls = new WeakMap(), _GxIdeCurlInspector_evaluateTooltipRender = new WeakMap(), _GxIdeCurlInspector_validateForm = new WeakMap(), _GxIdeCurlInspector_handleEditorChange = new WeakMap(), _GxIdeCurlInspector_handleSlotChange = new WeakMap(), _GxIdeCurlInspector_createHandler = new WeakMap();
170
+ function defineCustomElement$1() {
171
+ if (typeof customElements === "undefined") {
172
+ return;
173
+ }
174
+ const components = ["gx-ide-curl-inspector", "gx-ide-entity-selector"];
175
+ components.forEach(tagName => { switch (tagName) {
176
+ case "gx-ide-curl-inspector":
177
+ if (!customElements.get(tagName)) {
178
+ customElements.define(tagName, GxIdeCurlInspector$1);
179
+ }
180
+ break;
181
+ case "gx-ide-entity-selector":
182
+ if (!customElements.get(tagName)) {
183
+ defineCustomElement$2();
184
+ }
185
+ break;
186
+ } });
187
+ }
188
+
189
+ const GxIdeCurlInspector = GxIdeCurlInspector$1;
190
+ const defineCustomElement = defineCustomElement$1;
191
+
192
+ export { GxIdeCurlInspector, defineCustomElement };
193
+
194
+ //# sourceMappingURL=gx-ide-curl-inspector.js.map
@@ -0,0 +1 @@
1
+ {"file":"gx-ide-curl-inspector.js","mappings":";;;;;;AAAA,MAAM,gBAAgB,GAAG,yoBAAyoB;;;;;;;;;;;;;;;;;;;ACmBlqB,MAAM,WAAW,GAAmB;IAClC,mBAAmB;IACnB,oBAAoB;IACpB,kBAAkB;IAClB,cAAc;IACd,kBAAkB;IAClB,eAAe;IACf,qBAAqB;CACtB,CAAC;MAQWA,oBAAkB;;;;;QAC7B,sDAAsB;QACtB,oDAAuC;QACvC,oDAAmC;QACnC,2DAAuD;QACvD,6CAA4B;QAC5B,+CAA+B;QAC/B,+DAAyC;QACzC,qDAA+B;QAsE/B,4DAAiC;YAC/B,MAAM,mBAAmB,GAAkB;gBACzC,uBAAA,IAAI,kCAAQ;gBACZ,uBAAA,IAAI,gDAAsB;aAC3B,CAAC;YACF,mBAAmB,CAAC,OAAO,CAAC,kBAAkB;gBAC5C,IAAI,kBAAkB,CAAC,EAAE,EAAE;oBACzB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,EAAE;wBAClD,SAAS,EAAE,kBAAkB;wBAC7B,QAAQ,EAAE,KAAK;wBACf,OAAO,EAAE,SAAS;qBACnB,CAAC,CAAC;iBACJ;aACF,CAAC,CAAC;SACJ,EAAC;QAEF,oDAAyB,CACvB,gBAA6B;;YAE7B,OAAA,CAAA,MAAA,MAAA,IAAI,CAAC,mBAAmB,0CAAE,GAAG,CAAC,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,EAAE,CAAC,0CAAE,QAAQ;iBAC7D,MAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC,0CAAE,OAAO,CAAA,KACxD,kBACE,KAAK,EAAC,SAAS,EACf,aAAa,EAAE,gBAAgD,EAC/D,UAAU,EAAE,MAAM,CAAC,eAAe,CAAC,UAAU,EAC7C,WAAW,EAAE,MAAM,CAAC,eAAe,CAAC,WAAW,EAC/C,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,KAAK,IAElC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,OAAO,CAC/C,CACd,CAAA;SAAA,EAAC;QAEJ,2CAAgB;;YACd,MAAM,IAAI,GAAG,CAAA,MAAA,MAAA,uBAAA,IAAI,kCAAQ,0CAAE,KAAK,0CAAE,IAAI,EAAE,KAAI,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAG,CAAA,MAAA,MAAA,uBAAA,IAAI,gDAAsB,0CAAE,KAAK,0CAAE,EAAE,KAAI,EAAE,CAAC;YAC7D,MAAM,IAAI,GAAG,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,EAAE,KAAI,EAAE,CAAC;YAE5C,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB;kBACzC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;kBAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAElC,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,aAAa,IAAI,WAAW,CAAC;SAChE,EAAC;QAEF,iDAAsB;YACpB,IAAI,uBAAA,IAAI,oCAAU,EAAE;gBAClB,IAAI,CAAC,WAAW,GAAG,uBAAA,IAAI,oCAAU,CAAC,IAAI,CAAC;gBACvC,uBAAA,IAAI,wCAAc,MAAlB,IAAI,CAAgB,CAAC;aACtB;SACF,EAAC;QAEF,+CAAoB,CAAC,CAAQ;YAC3B,MAAM,QAAQ,GAAI,CAAC,CAAC,MAA0B,CAAC,gBAAgB,EAAE,CAAC;YAClE,IAAI,QAAQ,CAAC,MAAM,EAAE;gBACnB,uBAAA,IAAI,gCAAa,QAAQ,CAAC,CAAC,CAAwB,MAAA,CAAC;gBAEpD,uBAAA,IAAI,oCAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,uBAAA,IAAI,8CAAoB,CAAC,CAAC;gBAEnE,uBAAA,IAAI,iDAA8B,CAAC,KAAkB;oBACnD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;oBACxC,uBAAA,IAAI,8CAAoB,MAAxB,IAAI,CAAsB,CAAC;iBAC5B,OAAkB,CAAC;gBAEpB,uBAAA,IAAI,oCAAU,CAAC,gBAAgB,CAC7B,qBAAqB,EACrB,uBAAA,IAAI,oDAA0B,CAC/B,CAAC;gBAEF,uBAAA,IAAI,sCAAmB,CAAC,KAAoB;oBAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;wBACzD,UAAU,CAAC;4BACT,uBAAA,IAAI,8CAAoB,MAAxB,IAAI,CAAsB,CAAC;yBAC5B,EAAE,CAAC,CAAC,CAAC;qBACP;iBACF,MAAA,CAAC;gBAEF,uBAAA,IAAI,oCAAU,CAAC,gBAAgB,CAAC,SAAS,EAAE,uBAAA,IAAI,0CAAgB,CAAC,CAAC;gBAEjE,IAAI,CAAC,WAAW,GAAG,uBAAA,IAAI,oCAAU,CAAC,IAAI,CAAC;gBACvC,uBAAA,IAAI,wCAAc,MAAlB,IAAI,CAAgB,CAAC;aACtB;SACF,EAAC;QAEF,4CAAiB;;YACf,MAAM,IAAI,GAAmB;gBAC3B,IAAI,EAAE,uBAAA,IAAI,kCAAQ,CAAC,KAAK;gBACxB,WAAW,EAAE,uBAAA,IAAI,yCAAe,CAAC,KAAK;gBACtC,QAAQ,EAAE,MAAA,uBAAA,IAAI,gDAAsB,CAAC,KAAK,0CAAE,EAAE;gBAC9C,IAAI,EAAE,IAAI,CAAC,WAAW;aACvB,CAAC;YACF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAkC;gBACjE,IAAI,CAAC,mBAAmB,GAAG,gBAAgB,CACzC,gBAAgB,EAChB,IAAI,CAAC,mBAAmB,CACzB,CAAC;aACH,CAAC,CAAC;SACJ,EAAC;gCApKmC,KAAK;2BACV,KAAK;2BACN,EAAE;mCACF,IAAI,GAAG,EAA6B;;;;;;;;IAoCnE,MAAM,iBAAiB;QACrB,uBAAA,IAAI,uCAAoB,MAAM,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,MAAA,CAAC;KACnE;IAED,gBAAgB;QACd,uBAAA,IAAI,yDAA+B,MAAnC,IAAI,CAAiC,CAAC;KACvC;IAED,oBAAoB;QAClB,IAAI,uBAAA,IAAI,oCAAU,IAAI,uBAAA,IAAI,oCAAU,CAAC,mBAAmB,EAAE;YACxD,uBAAA,IAAI,oCAAU,CAAC,mBAAmB,CAAC,OAAO,EAAE,uBAAA,IAAI,8CAAoB,CAAC,CAAC;YACtE,uBAAA,IAAI,oCAAU,CAAC,mBAAmB,CAChC,qBAAqB,EACrB,uBAAA,IAAI,oDAA0B,CAC/B,CAAC;YACF,uBAAA,IAAI,oCAAU,CAAC,mBAAmB,CAAC,SAAS,EAAE,uBAAA,IAAI,0CAAgB,CAAC,CAAC;SACrE;KACF;;;;IAMD,MAAM,gBAAgB,CAAC,gBAAyB;QAC9C,uBAAA,IAAI,yCAAe,CAAC,OAAO,GAAG,gBAAgB,CAAC;KAChD;IAsGD,MAAM;QACJ,QACE,EAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,IAClB,gBAAU,KAAK,EAAE,WAAW,GAAa,EACzC,oBACE,GAAG,EAAE,+CAA+C,EACpD,GAAG,EAAE,CAAC,EAA0B,MAC7B,uBAAA,IAAI,qCAAkB,EAA4B,MAAA,CAAC,GAExC,EAChB,eAAS,KAAK,EAAC,SAAS,IACtB,cAAQ,KAAK,EAAC,gDAAgD,IAC5D,WAAK,KAAK,EAAC,iDAAiD,IAC1D,aAAO,KAAK,EAAC,kBAAkB,EAAC,OAAO,EAAC,YAAY,IACjD,uBAAA,IAAI,2CAAiB,CAAC,MAAM,CAAC,cAAc,CACtC,EACR,eACE,KAAK,EAAC,kBAAkB,EACxB,EAAE,EAAC,YAAY,EACf,GAAG,EAAE,CAAC,EAAqB,MACxB,uBAAA,IAAI,8BAAW,EAAuB,MAAA,CAAC,EAE1C,OAAO,EAAE,uBAAA,IAAI,wCAAc,GAClB,EACV,uBAAA,IAAI,iDAAuB,MAA3B,IAAI,EAAwB,uBAAA,IAAI,kCAAQ,CAAC,EAE1C,aACE,KAAK,EAAC,yBAAyB,EAC/B,OAAO,EAAC,mBAAmB,IAE1B,uBAAA,IAAI,2CAAiB,CAAC,MAAM,CAAC,qBAAqB,CAC7C,EACR,eACE,KAAK,EAAC,yBAAyB,EAC/B,EAAE,EAAC,mBAAmB,EACtB,GAAG,EAAE,CAAC,EAAqB,MACxB,uBAAA,IAAI,qCAAkB,EAAuB,MAAA,CAAC,GAExC,EAEX,aAAO,KAAK,EAAC,oBAAoB,EAAC,OAAO,EAAC,cAAc,IACrD,uBAAA,IAAI,2CAAiB,CAAC,MAAM,CAAC,iBAAiB,CACzC,EACR,8BACE,KAAK,EAAC,+BAA+B,EACrC,EAAE,EAAC,QAAQ,EACX,KAAK,EAAE,IAAI,CAAC,aAAa,EACzB,GAAG,EAAE,CAAC,EAAkC,MACrC,uBAAA,IAAI,4CACH,EAAoC,MAAA,CAAC,EAEzC,aAAa,EAAC,MAAM,EACpB,YAAY,EAAE,IAAI,CAAC,aAAa,EAChC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,GACvB,EACzB,uBAAA,IAAI,iDAAuB,MAA3B,IAAI,EAAwB,uBAAA,IAAI,gDAAsB,CAAC,CACpD,CACC,EACT,WAAK,KAAK,EAAC,6BAA6B,IACtC,YACE,IAAI,EAAC,gBAAgB,EACrB,YAAY,EAAE,uBAAA,IAAI,4CAAkB,GAC9B,CACJ,EACN,cAAQ,KAAK,EAAC,0EAA0E,IACtF,WAAK,KAAK,EAAC,gBAAgB,IACzB,cACE,KAAK,EAAC,kBAAkB,EACxB,EAAE,EAAC,eAAe,EAClB,OAAO,EAAE,IAAI,CAAC,cAAc,EAC5B,IAAI,EAAC,eAAe,IAEnB,uBAAA,IAAI,2CAAiB,CAAC,MAAM,CAAC,SAAS,CAChC,EACT,cACE,KAAK,EAAC,gBAAgB,EACtB,EAAE,EAAC,WAAW,EACd,OAAO,EAAE,uBAAA,IAAI,yCAAe,EAC5B,IAAI,EAAC,WAAW,EAChB,QAAQ,EAAE,CAAC,IAAI,CAAC,WAAW,IAE1B,uBAAA,IAAI,2CAAiB,CAAC,MAAM,CAAC,SAAS,CAChC,CACL,CACC,CACD,CACL,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["GxIdeCurlInspector"],"sources":["src/components/curl-inspector/curl-inspector.scss?tag=gx-ide-curl-inspector&encapsulation=shadow","src/components/curl-inspector/curl-inspector.tsx"],"sourcesContent":[":host {\n display: grid;\n grid-template-rows: max-content 1fr max-content;\n block-size: 100%;\n overflow: auto;\n}\n\n.section {\n display: contents;\n}\n\n.header {\n}\n\n.main {\n display: grid;\n overflow: auto;\n}\n.field-group-name-description-module {\n align-items: center;\n grid-template-areas:\n \"name-label name-input\"\n \"description-label description-input\"\n \"module-label module-entity-selector\";\n grid-template-columns: max-content 1fr;\n}\n\n.name-label {\n grid-area: name-label;\n}\n.name-input {\n grid-area: name-input;\n}\n.description-label {\n grid-area: description-label;\n}\n.description-input {\n grid-area: description-input;\n}\n.module-label {\n grid-area: module-label;\n}\n.module-entity-selector {\n grid-area: module-entity-selector;\n}\n\n.tooltip {\n /* WA: Tooltip takes layout space by default, height: 0 prevents layout shift */\n height: 0;\n}\n","import {\n Component,\n Host,\n Prop,\n Element,\n State,\n Method,\n h\n} from \"@stencil/core\";\n\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { config } from \"../../common/config\";\nimport { Locale } from \"../../common/locale\";\nimport { FormSubmitResult } from \"../../common/types\";\nimport {\n ControlValidation,\n validateControls\n} from \"../../common/form-validation\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tooltip\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\n@Component({\n tag: \"gx-ide-curl-inspector\",\n styleUrl: \"curl-inspector.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/curl-inspector\"]\n})\nexport class GxIdeCurlInspector {\n #componentLocale: any;\n #chShortcutsEl: HTMLChShortcutsElement;\n #descriptionEl!: HTMLChEditElement;\n #moduleEntitySelector!: HTMLGxIdeEntitySelectorElement;\n #nameEl!: HTMLChEditElement;\n #editorEl: TextProviderElement;\n #curlContentChangeHandler: EventListener;\n #keydownHandler: EventListener;\n\n @Element() el: HTMLGxIdeCurlInspectorElement;\n\n @State() showTooltipError: boolean = false;\n @State() isFormValid: boolean = false;\n @State() curlContent: string = \"\";\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * Callback that must be invoked when the user wants to cancel the operation\n */\n @Prop() readonly cancelCallback: () => Promise<void>;\n\n /**\n * Callback that must be invoked when the user confirms the creation. Receives the data\n * necessary to create the procedure.\n */\n @Prop() readonly confirmCallback!: (\n data: CurlImportData\n ) => Promise<FormSubmitResult>;\n\n /**\n * Default value for Module/Folder field\n */\n @Prop() readonly defaultParent: EntityData;\n\n /**\n * Actual value for Module/Folder field\n */\n @Prop() readonly parent: EntityData;\n\n /**\n * Callback invoked when the action is executed in the Module/Folder filter. It returns the\n * information of the selected object (id and name) or 'undefined' if it was canceled.\n */\n @Prop() readonly selectModuleCallback: SelectModuleCallback;\n\n /**\n * Callback to validate the name. Should return true if the name is valid, false otherwise.\n */\n @Prop() readonly validateNameCallback?: (name: string) => boolean;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidLoad() {\n this.#initializeValidatableControls();\n }\n\n disconnectedCallback() {\n if (this.#editorEl && this.#editorEl.removeEventListener) {\n this.#editorEl.removeEventListener(\"input\", this.#handleEditorChange);\n this.#editorEl.removeEventListener(\n \"curl-content-change\",\n this.#curlContentChangeHandler\n );\n this.#editorEl.removeEventListener(\"keydown\", this.#keydownHandler);\n }\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n this.#chShortcutsEl.suspend = suspendShortcuts;\n }\n\n #initializeValidatableControls = () => {\n const validatableControls: HTMLElement[] = [\n this.#nameEl,\n this.#moduleEntitySelector\n ];\n validatableControls.forEach(validatableControl => {\n if (validatableControl.id) {\n this.validatableControls.set(validatableControl.id, {\n reference: validatableControl,\n hasError: false,\n message: undefined\n });\n }\n });\n };\n\n #evaluateTooltipRender = (\n controlReference: HTMLElement\n ): HTMLChTooltipElement =>\n this.validatableControls?.get(controlReference?.id)?.hasError &&\n this.validatableControls.get(controlReference.id)?.message && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={controlReference as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.validatableControls.get(controlReference.id).message}\n </ch-tooltip>\n );\n\n #validateForm = () => {\n const name = this.#nameEl?.value?.trim() || \"\";\n const parentId = this.#moduleEntitySelector?.value?.id || \"\";\n const curl = this.curlContent?.trim() || \"\";\n\n const isNameValid = this.validateNameCallback\n ? this.validateNameCallback(name)\n : Boolean(name);\n const isParentValid = Boolean(parentId);\n const isCurlValid = Boolean(curl);\n\n this.isFormValid = isNameValid && isParentValid && isCurlValid;\n };\n\n #handleEditorChange = () => {\n if (this.#editorEl) {\n this.curlContent = this.#editorEl.text;\n this.#validateForm();\n }\n };\n\n #handleSlotChange = (e: Event) => {\n const elements = (e.target as HTMLSlotElement).assignedElements();\n if (elements.length) {\n this.#editorEl = elements[0] as TextProviderElement;\n\n this.#editorEl.addEventListener(\"input\", this.#handleEditorChange);\n\n this.#curlContentChangeHandler = ((event: CustomEvent) => {\n this.curlContent = event.detail.content;\n this.#handleEditorChange();\n }) as EventListener;\n\n this.#editorEl.addEventListener(\n \"curl-content-change\",\n this.#curlContentChangeHandler\n );\n\n this.#keydownHandler = (event: KeyboardEvent) => {\n if ((event.ctrlKey || event.metaKey) && event.key === \"v\") {\n setTimeout(() => {\n this.#handleEditorChange();\n }, 0);\n }\n };\n\n this.#editorEl.addEventListener(\"keydown\", this.#keydownHandler);\n\n this.curlContent = this.#editorEl.text;\n this.#validateForm();\n }\n };\n\n #createHandler = () => {\n const data: CurlImportData = {\n name: this.#nameEl.value,\n description: this.#descriptionEl.value,\n parentId: this.#moduleEntitySelector.value?.id,\n curl: this.curlContent\n };\n this.confirmCallback(data).then((formSubmitResult: FormSubmitResult) => {\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\n });\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={\"./gx-ide-assets/curl-inspector/shortcuts.json\"}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n <section class=\"section\">\n <header class=\"header field-group spacing-body control-header\">\n <div class=\"field-group field-group-name-description-module\">\n <label class=\"label name-label\" htmlFor=\"input-name\">\n {this.#componentLocale.header.nameFieldLabel}\n </label>\n <ch-edit\n class=\"input name-input\"\n id=\"input-name\"\n ref={(el: HTMLChEditElement) =>\n (this.#nameEl = el as HTMLChEditElement)\n }\n onInput={this.#validateForm}\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#nameEl)}\n\n <label\n class=\"label description-label\"\n htmlFor=\"input-description\"\n >\n {this.#componentLocale.header.descriptionFieldLabel}\n </label>\n <ch-edit\n class=\"input description-input\"\n id=\"input-description\"\n ref={(el: HTMLChEditElement) =>\n (this.#descriptionEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n\n <label class=\"label module-label\" htmlFor=\"input-module\">\n {this.#componentLocale.header.moduleFolderLabel}\n </label>\n <gx-ide-entity-selector\n class=\"module module-entity-selector\"\n id=\"module\"\n value={this.defaultParent}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#moduleEntitySelector =\n el as HTMLGxIdeEntitySelectorElement)\n }\n labelPosition=\"none\"\n defaultValue={this.defaultParent}\n selectEntityCallback={this.selectModuleCallback}\n ></gx-ide-entity-selector>\n {this.#evaluateTooltipRender(this.#moduleEntitySelector)}\n </div>\n </header>\n <div class=\"main field-group scrollable\">\n <slot\n name=\"CurlTextEditor\"\n onSlotchange={this.#handleSlotChange}\n ></slot>\n </div>\n <footer class=\"control-footer control-footer spacing-body-block-end spacing-body-inline\">\n <div class=\"buttons-spacer\">\n <button\n class=\"button-secondary\"\n id=\"button-cancel\"\n onClick={this.cancelCallback}\n part=\"button-cancel\"\n >\n {this.#componentLocale.footer.btnCancel}\n </button>\n <button\n class=\"button-primary\"\n id=\"button-ok\"\n onClick={this.#createHandler}\n part=\"button-ok\"\n disabled={!this.isFormValid}\n >\n {this.#componentLocale.footer.btnCreate}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type CurlImportData = {\n name: string;\n description: string;\n parentId: string;\n curl: string;\n};\n\nexport type EntityData = {\n id: string;\n name: string;\n iconSrc?: string;\n};\n\nexport type SelectModuleCallback = () => Promise<EntityData | undefined>;\n\ninterface ItextProvider {\n readonly text: string;\n}\n\ntype TextProviderElement = HTMLElement & ItextProvider;\n"],"version":3}
@@ -405,11 +405,7 @@ const GxIdeScChatContainer$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeScCha
405
405
  }
406
406
  }
407
407
  render() {
408
- 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")), class: "elevation-1" }, h("ch-chat", { callbacks: __classPrivateFieldGet(this, _GxIdeScChatContainer_chatCallbacks, "f"), class: "chat-lit", generatingResponse: this.generatingResponse, loadingState: this.loadingState, renderItem: renderItemMercury, items: codeFixerRecord, showAdditionalContent: this.showAdditionalContent, translations: chatTranslations, ref: (el) => (__classPrivateFieldSet(this, _GxIdeScChatContainer_chChatRef, el, "f")), markdownTheme: "components/markdown-viewer" }, h("gx-ide-chat-welcome", { ref: el => (__classPrivateFieldSet(this, _GxIdeScChatContainer_chatWelcomeRef, el, "f")), slot: "empty-chat", suggestedPrompRequestedCallback: __classPrivateFieldGet(this, _GxIdeScChatContainer_suggestedPrompRequestedCallbackHandler, "f"), suggestedPrompts: [
409
- "I need to represente a product entity",
410
- "I want to create a Customer Tracking application. Can you help me with the architecture?",
411
- "I need to create a REST API for my application"
412
- ] }), h("div", { slot: "additional-content" }, "Custom content that is rendered when the chat renders content")))));
408
+ 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")), class: "elevation-1" }, h("ch-chat", { callbacks: __classPrivateFieldGet(this, _GxIdeScChatContainer_chatCallbacks, "f"), class: "chat-lit", generatingResponse: this.generatingResponse, loadingState: this.loadingState, renderItem: renderItemMercury, items: this.chatItems, showAdditionalContent: this.showAdditionalContent, translations: chatTranslations, ref: (el) => (__classPrivateFieldSet(this, _GxIdeScChatContainer_chChatRef, el, "f")), markdownTheme: "components/markdown-viewer" }, h("gx-ide-chat-welcome", { ref: el => (__classPrivateFieldSet(this, _GxIdeScChatContainer_chatWelcomeRef, el, "f")), slot: "empty-chat", suggestedPrompRequestedCallback: __classPrivateFieldGet(this, _GxIdeScChatContainer_suggestedPrompRequestedCallbackHandler, "f") }), h("div", { slot: "additional-content" }, "Custom content that is rendered when the chat renders content")))));
413
409
  }
414
410
  static get style() { return chatShowcaseCss; }
415
411
  }, [1, "gx-ide-sc-chat-container", {
@@ -1 +1 @@
1
- {"file":"gx-ide-sc-chat-container.js","mappings":"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","names":["GxIdeScChatContainer"],"sources":["src/showcase/chat-container/models.ts","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 type {\n ChatMessage,\n ChatTranslations\n} from \"@genexus/chameleon-controls-library\";\n\nimport { MercuryChatMessageMetadata } from \"../../components/chat/lit-custom-render/types\";\n\nexport const 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\nexport const ASSISTANT_NAME = \"Nexa\";\n\n// - - - - - - - - - - - - - -\n// Types of messages\n// - - - - - - - - - - - - - -\n\nexport const userMessageChatModel: ChatMessage[] = [\n {\n id: \"1\",\n role: \"user\",\n content:\n \"Generate a web form for customer registration with fields for name, email, phone, and address. Include validation, save the data to the database, and show a confirmation message after submission.\",\n metadata: null\n }\n];\n\nexport const assistantMessageChatModel: ChatMessage[] = [\n {\n id: \"1\",\n role: \"assistant\",\n status: \"complete\",\n content:\n \"I’ve created the basic structure for the registration form, but I need a bit more info: Should the address include city, state, and ZIP? Do you want a separate confirmation page or just a message on the same screen? Any specific format or validation for the phone number?\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n }\n];\n\nexport const assistantMessageWarningChatModel: ChatMessage[] = [\n {\n id: \"1\",\n role: \"assistant\",\n status: \"complete\",\n content:\n \"The CustomerRegistration panel was created with warnings: The “Phone” field uses a generic character format—consider a phone mask. No address validation rules applied.The data is still saved correctly, and the panel works as expected.\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata,\n parts: \"warning\"\n }\n];\n\nexport const assistantMessageSuccessChatModel: ChatMessage[] = [\n {\n id: \"1\",\n role: \"assistant\",\n status: \"complete\",\n content:\n \"The CustomerRegistration web panel was created successfully. Fields: Name, Email, Phone, Address. Validations applied (required, email format). Data saved to “Customer” transaction. Confirmation message shown after submit. Let me know if you'd like to add styles or link it to another object.\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata,\n parts: \"success\"\n }\n];\n\nexport const errorMessageChatModel: ChatMessage[] = [\n {\n id: \"1\",\n role: \"error\",\n content:\n \"Sorry, I couldn't generate the requested form. Reason: The “Customer” transaction does not exist in the current Knowledge Base. Please create the “Customer” object or check if it’s named differently.\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n }\n];\n\nexport const assistantWaitingChatModel: ChatMessage[] = [\n {\n id: \"1\",\n role: \"assistant\",\n status: \"waiting\",\n content: \"Creating CustomerRegistration panel\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n }\n];\n\nexport const chatTranslations: ChatTranslations = {\n accessibleName: {\n clearChat: \"Clear chat\",\n copyMessageContent: \"Copy assistant content\",\n downloadCodeButton: \"Download code\",\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 copyMessageContent: \"Copy\",\n downloadCodeButton: \"Download\",\n processing: `Processing...`,\n sourceFiles: \"Source files:\",\n stopGeneratingAnswerButton: \"Stop generating answer\"\n }\n};\n\n// All messages\n\nexport const allMessagesModel: ChatMessage[] = [\n {\n id: \"1\",\n role: \"user\",\n content:\n \"Generate a web form for customer registration with fields for name, email, phone, and address. Include validation, save the data to the database, and show a confirmation message after submission.\",\n metadata: null\n },\n {\n id: \"1\",\n role: \"assistant\",\n status: \"complete\",\n content:\n \"I’ve created the basic structure for the registration form, but I need a bit more info: Should the address include city, state, and ZIP? Do you want a separate confirmation page or just a message on the same screen? Any specific format or validation for the phone number?\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n },\n {\n id: \"1\",\n role: \"assistant\",\n status: \"complete\",\n content:\n \"The CustomerRegistration panel was created with warnings: The “Phone” field uses a generic character format—consider a phone mask. No address validation rules applied.The data is still saved correctly, and the panel works as expected.\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata,\n parts: \"warning\"\n },\n {\n id: \"1\",\n role: \"error\",\n content:\n \"Sorry, I couldn't generate the requested form. Reason: The “Customer” transaction does not exist in the current Knowledge Base. Please create the “Customer” object or check if it’s named differently.\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n },\n {\n id: \"5\",\n role: \"assistant\",\n status: \"complete\",\n content:\n \"Your information has been saved successfully, and all changes are now reflected in your account. You can continue with the next steps or return to the dashboard at any time.\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"15:00\"\n } satisfies MercuryChatMessageMetadata,\n parts: \"success\"\n }\n];\n\n// - - - - - - - - - - - - - -\n// Other messages\n// - - - - - - - - - - - - - -\n\nexport const ASSISTANT_RESPONSE_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\\`\\`\\`\n{\n \"firstName\": \"John\",\n \"lastName\": \"Smith\",\n \"age\": 25\n}\n\\`\\`\\`\n\nAnother 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}\nThis feature allows you to add color highlighting for whatever language your code was written in.\nTo 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\nimport React from 'react'\nimport ReactDOM from 'react-dom'\nimport Markdown from 'react-markdown'\nimport rehypeHighlight from 'rehype-highlight'\n\nconst markdown = \\`\n# Your markdown here\n\\`\n\nReactDOM.render(\n <Markdown rehypePlugins={[rehypeHighlight]}>{markdown}</Markdown>,\n document.querySelector('#content')\n)\n\\`\\`\\`\n\n###### Horizontal Rules {#horizontal-rules}\nTo create a horizontal rule, use three or more asterisks (\\`***\\`), dashes (\\`---\\`), or underscores (\\`___\\`) on a line by themselves.\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: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n },\n {\n id: \"3\",\n role: \"assistant\",\n status: \"complete\",\n content:\n \"Some fields contain missing or invalid data, which may prevent the process from completing correctly. Review your input carefully and make any necessary corrections before continuing.\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata,\n parts: \"warning\"\n },\n {\n id: \"4\",\n role: \"error\",\n content:\n \"An unexpected error occurred while processing your request, and the operation couldn’t be completed.Please check your internet connection or try again later. If the problem persists, contact support.\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n },\n {\n id: \"5\",\n role: \"assistant\",\n status: \"complete\",\n content:\n \"Your information has been saved successfully, and all changes are now reflected in your account. You can continue with the next steps or return to the dashboard at any time.\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata,\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: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n },\n {\n id: \"8\",\n role: \"assistant\",\n status: \"waiting\",\n content: \"You can provide further details or updates\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n },\n {\n id: \"9\",\n role: \"assistant\",\n status: \"complete\",\n content: ASSISTANT_RESPONSE_SHORT_MARKDOWN,\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n }\n];\n","import {\n ChatCallbacks,\n ChatTranslations\n} from \"@genexus/chameleon-controls-library\";\nimport { ChatMessageFile } from \"@genexus/chameleon-controls-library/dist/types/components/chat/types\";\n\nimport { ASSISTANT_RESPONSE_MARKDOWN } from \"./models\";\n\nimport { ASSISTANT_NAME } from \"./models\";\nimport { MercuryChatMessageMetadata } from \"../../components/chat/lit-custom-render/types\";\n\nconst PROCESSING_PLACEHOLDER = \"{{ASSISTANT_NAME}}\";\n\nconst sendChatMessages = (chatRef: HTMLChChatElement) => () => {\n chatRef.generatingResponse = true;\n\n chatRef.addNewMessage({\n id: `${new Date().getTime()}`,\n role: \"assistant\",\n content: \"Analyzing\",\n status: \"waiting\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n });\n\n setTimeout(() => {\n chatRef.updateLastMessage(\n {\n role: \"assistant\",\n content: \"Processing with Chat with LLMs\",\n status: \"waiting\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n },\n \"replace\"\n );\n\n setTimeout(() => {\n dummyStreaming(chatRef, 20, ASSISTANT_RESPONSE_MARKDOWN, \"replace\");\n }, 2000);\n }, 2000);\n};\n\nconst stopGeneratingAnswer = (): Promise<void> => {\n console.log(\"stop generating answer\");\n return new Promise<void>(resolve => {\n // Lógica asincrónica aquí si es necesario\n resolve();\n });\n};\n\nexport const chatCallbacksWithChatRef = (\n chChatRef: HTMLChChatElement\n): ChatCallbacks => {\n return {\n sendChatMessages: sendChatMessages(chChatRef),\n uploadFile: (file: File) =>\n new Promise<ChatMessageFile>(() => {\n console.log(\"file\", file);\n\n return Promise.resolve({\n url: \"Error\",\n mimeType: \"application/javascript\"\n } satisfies ChatMessageFile);\n }),\n stopGeneratingAnswer: stopGeneratingAnswer\n };\n};\n\nfunction dummyStreaming(\n chatRef: HTMLChChatElement,\n counter: number,\n stringToDisplay: string,\n mode: \"concat\" | \"replace\"\n) {\n setTimeout(\n () => {\n const streamingCompleted = counter >= stringToDisplay.length;\n\n chatRef.updateLastMessage(\n {\n role: \"assistant\",\n content: stringToDisplay.substring(counter - 20, counter),\n\n // {\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 metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n },\n mode\n );\n\n if (!streamingCompleted) {\n dummyStreaming(chatRef, counter + 20, stringToDisplay, \"concat\");\n } else {\n chatRef.generatingResponse = false;\n }\n },\n counter % 200 === 0 ? 50 : 40\n );\n}\n\nexport const chatTranslations: ChatTranslations = {\n accessibleName: {\n clearChat: \"Clear chat\",\n copyMessageContent: \"Copy message\",\n downloadCodeButton: \"Download code\",\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 copyMessageContent: \"Copy message content\",\n downloadCodeButton: \"Download code\",\n processing: `Processing with ${PROCESSING_PLACEHOLDER}`,\n sourceFiles: \"Source files:\",\n stopGeneratingAnswerButton: \"Stop generating answer\"\n }\n};\n",":host {\n block-size: 100%;\n display: grid;\n}\n","import { Component, Host, h, State, Prop, Method } from \"@stencil/core\";\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { renderItemMercury } from \"../../components/chat/lit-custom-render/render-item.lit\";\nimport { codeFixerRecord } from \"./models\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/elevation\",\n \"components/chat-lit\",\n \"components/markdown-viewer\"\n];\n\nimport { chatCallbacksWithChatRef, chatTranslations } from \"./callbacks\";\nimport {\n ChatMessage,\n ChatCallbacks\n} from \"@genexus/chameleon-controls-library\";\nimport { ChatMessageUser } from \"@genexus/chameleon-controls-library/dist/types/components/chat/types\";\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 #chatWelcomeRef!: HTMLGxIdeChatWelcomeElement;\n #chChatRef!: HTMLChChatElement;\n #chatCallbacks: ChatCallbacks;\n\n /**\n * If true, the chat items length will be 0, since this is a requirement for dipslaying the ch-chat\n * \"empty-chat\" slot that welcome screen uses to display.\n */\n @Prop() readonly mode: \"welcome\" | \"messages-sample\" | \"empty\" =\n \"messages-sample\";\n\n @State() generatingResponse: boolean = false;\n @State() loadingState:\n | \"all-records-loaded\"\n | \"initial\"\n | \"loading\"\n | \"more-data-to-fetch\" = \"all-records-loaded\";\n @State() showAdditionalContent: boolean = false;\n @State() conversationCopied: boolean = false;\n @State() assistantStatus: string = \"Getting Data\";\n @State() chatItems: ChatMessage[] = [];\n\n /**\n * It will exit the wellcome screen and remove it from the dom.\n */\n @Method()\n async exitWelcome() {\n // hand exitWelcome to gx-ide-chat-welcome\n this.#chatWelcomeRef.exitWelcome();\n }\n\n #copyConversationCallbackHandler = () => {\n this.#chatContainerRef.showCopyConversationMessage();\n };\n\n #deleteConversationCallbackHandler = () => {};\n\n componentDidLoad() {\n setTimeout(() => {\n this.assistantStatus = \"Creating Data Base..\";\n }, 1000);\n }\n\n componentDidRender() {\n if (!this.#chatCallbacks && this.#chChatRef) {\n this.#chatCallbacks = chatCallbacksWithChatRef(this.#chChatRef);\n }\n }\n\n async componentWillLoad() {\n if (this.mode === \"messages-sample\") {\n this.chatItems = codeFixerRecord;\n } else if (this.mode === \"welcome\") {\n this.chatItems = [];\n } else if (this.mode === \"empty\") {\n this.chatItems = [\n {\n id: \"1\",\n role: \"assistant\",\n status: \"complete\",\n content: \"Hello! I am your assistant.\",\n metadata: \"14:56\"\n }\n ];\n }\n }\n #suggestedPrompRequestedCallbackHandler = async (\n prompt: string\n ): Promise<void> => {\n let assistantFinalResponse: string;\n if (prompt.toLowerCase().includes(\"transaction\")) {\n assistantFinalResponse =\n 'To create a transaction in GeneXus, start by opening your KB (Knowledge Base) and selecting \"Transaction\" from the \"New Object\" options. Give it a name and define its attributes, starting with a primary key followed by the related data fields. GeneXus will automatically infer the data structure and relationships based on how you define the attributes and their nesting. Once saved, it generates the necessary database tables and forms for inserting, updating, and deleting records. You can then run the application to test the transaction directly in your browser.';\n } else if (prompt.toLowerCase().includes(\"entity\")) {\n assistantFinalResponse =\n 'In GeneXus, creating an entity usually means defining a Transaction object that represents a real-world concept like \"Customer\" or \"Product.\" To do this, create a new Transaction, name it after the entity, and define its attributes—starting with a unique identifier (like CustomerId) and then adding other fields (like CustomerName, CustomerEmail). GeneXus treats this Transaction as an entity and uses it to generate the corresponding table and interface automatically.';\n } else {\n assistantFinalResponse =\n \"Sorry, I didn’t catch that—mind rephrasing it? 😅\";\n }\n\n const userPrompt: ChatMessageUser = {\n id: \"1\",\n role: \"user\",\n content: prompt\n };\n this.#chChatRef.addNewMessage(userPrompt);\n setTimeout(() => {\n this.#chChatRef.addNewMessage({\n id: `${new Date().getTime()}`,\n role: \"assistant\",\n content: \"Analyzing\",\n status: \"waiting\"\n });\n setTimeout(() => {\n this.#chChatRef.updateLastMessage(\n {\n role: \"assistant\",\n content: \"Processing with Chat with LLMs\",\n status: \"waiting\"\n },\n \"replace\"\n );\n setTimeout(() => {\n this.#chChatRef.updateLastMessage(\n {\n role: \"assistant\",\n content: \"Getting information\",\n status: \"waiting\"\n },\n \"replace\"\n );\n this.#chChatRef.updateLastMessage(\n {\n role: \"assistant\",\n content: assistantFinalResponse,\n status: \"complete\"\n },\n \"replace\"\n );\n }, 1500);\n }, 1500);\n }, 100);\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 class=\"elevation-1\"\n >\n <ch-chat\n callbacks={this.#chatCallbacks}\n class=\"chat-lit\"\n generatingResponse={this.generatingResponse}\n loadingState={this.loadingState} // \"all-records-loaded\" to display the welcome screen\n renderItem={renderItemMercury}\n items={codeFixerRecord} // length 0 to display the welcome screen\n showAdditionalContent={this.showAdditionalContent}\n translations={chatTranslations}\n ref={(el: HTMLChChatElement) =>\n (this.#chChatRef = el as HTMLChChatElement)\n }\n markdownTheme=\"components/markdown-viewer\"\n >\n <gx-ide-chat-welcome\n ref={el =>\n (this.#chatWelcomeRef = el as HTMLGxIdeChatWelcomeElement)\n }\n slot=\"empty-chat\"\n suggestedPrompRequestedCallback={\n this.#suggestedPrompRequestedCallbackHandler\n }\n suggestedPrompts={[\n \"I need to represente a product entity\",\n \"I want to create a Customer Tracking application. Can you help me with the architecture?\",\n \"I need to create a REST API for my application\"\n ]}\n ></gx-ide-chat-welcome>\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"],"version":3}
1
+ {"file":"gx-ide-sc-chat-container.js","mappings":"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","names":["GxIdeScChatContainer"],"sources":["src/showcase/chat-container/models.ts","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 type {\n ChatMessage,\n ChatTranslations\n} from \"@genexus/chameleon-controls-library\";\n\nimport { MercuryChatMessageMetadata } from \"../../components/chat/lit-custom-render/types\";\n\nexport const 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\nexport const ASSISTANT_NAME = \"Nexa\";\n\n// - - - - - - - - - - - - - -\n// Types of messages\n// - - - - - - - - - - - - - -\n\nexport const userMessageChatModel: ChatMessage[] = [\n {\n id: \"1\",\n role: \"user\",\n content:\n \"Generate a web form for customer registration with fields for name, email, phone, and address. Include validation, save the data to the database, and show a confirmation message after submission.\",\n metadata: null\n }\n];\n\nexport const assistantMessageChatModel: ChatMessage[] = [\n {\n id: \"1\",\n role: \"assistant\",\n status: \"complete\",\n content:\n \"I’ve created the basic structure for the registration form, but I need a bit more info: Should the address include city, state, and ZIP? Do you want a separate confirmation page or just a message on the same screen? Any specific format or validation for the phone number?\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n }\n];\n\nexport const assistantMessageWarningChatModel: ChatMessage[] = [\n {\n id: \"1\",\n role: \"assistant\",\n status: \"complete\",\n content:\n \"The CustomerRegistration panel was created with warnings: The “Phone” field uses a generic character format—consider a phone mask. No address validation rules applied.The data is still saved correctly, and the panel works as expected.\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata,\n parts: \"warning\"\n }\n];\n\nexport const assistantMessageSuccessChatModel: ChatMessage[] = [\n {\n id: \"1\",\n role: \"assistant\",\n status: \"complete\",\n content:\n \"The CustomerRegistration web panel was created successfully. Fields: Name, Email, Phone, Address. Validations applied (required, email format). Data saved to “Customer” transaction. Confirmation message shown after submit. Let me know if you'd like to add styles or link it to another object.\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata,\n parts: \"success\"\n }\n];\n\nexport const errorMessageChatModel: ChatMessage[] = [\n {\n id: \"1\",\n role: \"error\",\n content:\n \"Sorry, I couldn't generate the requested form. Reason: The “Customer” transaction does not exist in the current Knowledge Base. Please create the “Customer” object or check if it’s named differently.\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n }\n];\n\nexport const assistantWaitingChatModel: ChatMessage[] = [\n {\n id: \"1\",\n role: \"assistant\",\n status: \"waiting\",\n content: \"Creating CustomerRegistration panel\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n }\n];\n\nexport const chatTranslations: ChatTranslations = {\n accessibleName: {\n clearChat: \"Clear chat\",\n copyMessageContent: \"Copy assistant content\",\n downloadCodeButton: \"Download code\",\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 copyMessageContent: \"Copy\",\n downloadCodeButton: \"Download\",\n processing: `Processing...`,\n sourceFiles: \"Source files:\",\n stopGeneratingAnswerButton: \"Stop generating answer\"\n }\n};\n\n// All messages\n\nexport const allMessagesModel: ChatMessage[] = [\n {\n id: \"1\",\n role: \"user\",\n content:\n \"Generate a web form for customer registration with fields for name, email, phone, and address. Include validation, save the data to the database, and show a confirmation message after submission.\",\n metadata: null\n },\n {\n id: \"1\",\n role: \"assistant\",\n status: \"complete\",\n content:\n \"I’ve created the basic structure for the registration form, but I need a bit more info: Should the address include city, state, and ZIP? Do you want a separate confirmation page or just a message on the same screen? Any specific format or validation for the phone number?\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n },\n {\n id: \"1\",\n role: \"assistant\",\n status: \"complete\",\n content:\n \"The CustomerRegistration panel was created with warnings: The “Phone” field uses a generic character format—consider a phone mask. No address validation rules applied.The data is still saved correctly, and the panel works as expected.\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata,\n parts: \"warning\"\n },\n {\n id: \"1\",\n role: \"error\",\n content:\n \"Sorry, I couldn't generate the requested form. Reason: The “Customer” transaction does not exist in the current Knowledge Base. Please create the “Customer” object or check if it’s named differently.\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n },\n {\n id: \"5\",\n role: \"assistant\",\n status: \"complete\",\n content:\n \"Your information has been saved successfully, and all changes are now reflected in your account. You can continue with the next steps or return to the dashboard at any time.\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"15:00\"\n } satisfies MercuryChatMessageMetadata,\n parts: \"success\"\n }\n];\n\n// - - - - - - - - - - - - - -\n// Other messages\n// - - - - - - - - - - - - - -\n\nexport const ASSISTANT_RESPONSE_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\\`\\`\\`\n{\n \"firstName\": \"John\",\n \"lastName\": \"Smith\",\n \"age\": 25\n}\n\\`\\`\\`\n\nAnother 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}\nThis feature allows you to add color highlighting for whatever language your code was written in.\nTo 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\nimport React from 'react'\nimport ReactDOM from 'react-dom'\nimport Markdown from 'react-markdown'\nimport rehypeHighlight from 'rehype-highlight'\n\nconst markdown = \\`\n# Your markdown here\n\\`\n\nReactDOM.render(\n <Markdown rehypePlugins={[rehypeHighlight]}>{markdown}</Markdown>,\n document.querySelector('#content')\n)\n\\`\\`\\`\n\n###### Horizontal Rules {#horizontal-rules}\nTo create a horizontal rule, use three or more asterisks (\\`***\\`), dashes (\\`---\\`), or underscores (\\`___\\`) on a line by themselves.\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: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n },\n {\n id: \"3\",\n role: \"assistant\",\n status: \"complete\",\n content:\n \"Some fields contain missing or invalid data, which may prevent the process from completing correctly. Review your input carefully and make any necessary corrections before continuing.\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata,\n parts: \"warning\"\n },\n {\n id: \"4\",\n role: \"error\",\n content:\n \"An unexpected error occurred while processing your request, and the operation couldn’t be completed.Please check your internet connection or try again later. If the problem persists, contact support.\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n },\n {\n id: \"5\",\n role: \"assistant\",\n status: \"complete\",\n content:\n \"Your information has been saved successfully, and all changes are now reflected in your account. You can continue with the next steps or return to the dashboard at any time.\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata,\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: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n },\n {\n id: \"8\",\n role: \"assistant\",\n status: \"waiting\",\n content: \"You can provide further details or updates\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n },\n {\n id: \"9\",\n role: \"assistant\",\n status: \"complete\",\n content: ASSISTANT_RESPONSE_SHORT_MARKDOWN,\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n }\n];\n","import {\n ChatCallbacks,\n ChatTranslations\n} from \"@genexus/chameleon-controls-library\";\nimport { ChatMessageFile } from \"@genexus/chameleon-controls-library/dist/types/components/chat/types\";\n\nimport { ASSISTANT_RESPONSE_MARKDOWN } from \"./models\";\n\nimport { ASSISTANT_NAME } from \"./models\";\nimport { MercuryChatMessageMetadata } from \"../../components/chat/lit-custom-render/types\";\n\nconst PROCESSING_PLACEHOLDER = \"{{ASSISTANT_NAME}}\";\n\nconst sendChatMessages = (chatRef: HTMLChChatElement) => () => {\n chatRef.generatingResponse = true;\n\n chatRef.addNewMessage({\n id: `${new Date().getTime()}`,\n role: \"assistant\",\n content: \"Analyzing\",\n status: \"waiting\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n });\n\n setTimeout(() => {\n chatRef.updateLastMessage(\n {\n role: \"assistant\",\n content: \"Processing with Chat with LLMs\",\n status: \"waiting\",\n metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n },\n \"replace\"\n );\n\n setTimeout(() => {\n dummyStreaming(chatRef, 20, ASSISTANT_RESPONSE_MARKDOWN, \"replace\");\n }, 2000);\n }, 2000);\n};\n\nconst stopGeneratingAnswer = (): Promise<void> => {\n console.log(\"stop generating answer\");\n return new Promise<void>(resolve => {\n // Lógica asincrónica aquí si es necesario\n resolve();\n });\n};\n\nexport const chatCallbacksWithChatRef = (\n chChatRef: HTMLChChatElement\n): ChatCallbacks => {\n return {\n sendChatMessages: sendChatMessages(chChatRef),\n uploadFile: (file: File) =>\n new Promise<ChatMessageFile>(() => {\n console.log(\"file\", file);\n\n return Promise.resolve({\n url: \"Error\",\n mimeType: \"application/javascript\"\n } satisfies ChatMessageFile);\n }),\n stopGeneratingAnswer: stopGeneratingAnswer\n };\n};\n\nfunction dummyStreaming(\n chatRef: HTMLChChatElement,\n counter: number,\n stringToDisplay: string,\n mode: \"concat\" | \"replace\"\n) {\n setTimeout(\n () => {\n const streamingCompleted = counter >= stringToDisplay.length;\n\n chatRef.updateLastMessage(\n {\n role: \"assistant\",\n content: stringToDisplay.substring(counter - 20, counter),\n\n // {\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 metadata: {\n assistantName: ASSISTANT_NAME,\n time: \"14:25\"\n } satisfies MercuryChatMessageMetadata\n },\n mode\n );\n\n if (!streamingCompleted) {\n dummyStreaming(chatRef, counter + 20, stringToDisplay, \"concat\");\n } else {\n chatRef.generatingResponse = false;\n }\n },\n counter % 200 === 0 ? 50 : 40\n );\n}\n\nexport const chatTranslations: ChatTranslations = {\n accessibleName: {\n clearChat: \"Clear chat\",\n copyMessageContent: \"Copy message\",\n downloadCodeButton: \"Download code\",\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 copyMessageContent: \"Copy message content\",\n downloadCodeButton: \"Download code\",\n processing: `Processing with ${PROCESSING_PLACEHOLDER}`,\n sourceFiles: \"Source files:\",\n stopGeneratingAnswerButton: \"Stop generating answer\"\n }\n};\n",":host {\n block-size: 100%;\n display: grid;\n}\n","import { Component, Host, h, State, Prop, Method } from \"@stencil/core\";\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { renderItemMercury } from \"../../components/chat/lit-custom-render/render-item.lit\";\nimport { codeFixerRecord } from \"./models\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/elevation\",\n \"components/chat-lit\",\n \"components/markdown-viewer\"\n];\n\nimport { chatCallbacksWithChatRef, chatTranslations } from \"./callbacks\";\nimport {\n ChatMessage,\n ChatCallbacks\n} from \"@genexus/chameleon-controls-library\";\nimport { ChatMessageUser } from \"@genexus/chameleon-controls-library/dist/types/components/chat/types\";\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 #chatWelcomeRef!: HTMLGxIdeChatWelcomeElement;\n #chChatRef!: HTMLChChatElement;\n #chatCallbacks: ChatCallbacks;\n\n /**\n * If true, the chat items length will be 0, since this is a requirement for dipslaying the ch-chat\n * \"empty-chat\" slot that welcome screen uses to display.\n */\n @Prop() readonly mode: \"welcome\" | \"messages-sample\" | \"empty\" =\n \"messages-sample\";\n\n @State() generatingResponse: boolean = false;\n @State() loadingState:\n | \"all-records-loaded\"\n | \"initial\"\n | \"loading\"\n | \"more-data-to-fetch\" = \"all-records-loaded\";\n @State() showAdditionalContent: boolean = false;\n @State() conversationCopied: boolean = false;\n @State() assistantStatus: string = \"Getting Data\";\n @State() chatItems: ChatMessage[] = [];\n\n /**\n * It will exit the wellcome screen and remove it from the dom.\n */\n @Method()\n async exitWelcome() {\n // hand exitWelcome to gx-ide-chat-welcome\n this.#chatWelcomeRef.exitWelcome();\n }\n\n #copyConversationCallbackHandler = () => {\n this.#chatContainerRef.showCopyConversationMessage();\n };\n\n #deleteConversationCallbackHandler = () => {};\n\n componentDidLoad() {\n setTimeout(() => {\n this.assistantStatus = \"Creating Data Base..\";\n }, 1000);\n }\n\n componentDidRender() {\n if (!this.#chatCallbacks && this.#chChatRef) {\n this.#chatCallbacks = chatCallbacksWithChatRef(this.#chChatRef);\n }\n }\n\n async componentWillLoad() {\n if (this.mode === \"messages-sample\") {\n this.chatItems = codeFixerRecord;\n } else if (this.mode === \"welcome\") {\n this.chatItems = [];\n } else if (this.mode === \"empty\") {\n this.chatItems = [\n {\n id: \"1\",\n role: \"assistant\",\n status: \"complete\",\n content: \"Hello! I am your assistant.\",\n metadata: \"14:56\"\n }\n ];\n }\n }\n #suggestedPrompRequestedCallbackHandler = async (\n prompt: string\n ): Promise<void> => {\n let assistantFinalResponse: string;\n if (prompt.toLowerCase().includes(\"transaction\")) {\n assistantFinalResponse =\n 'To create a transaction in GeneXus, start by opening your KB (Knowledge Base) and selecting \"Transaction\" from the \"New Object\" options. Give it a name and define its attributes, starting with a primary key followed by the related data fields. GeneXus will automatically infer the data structure and relationships based on how you define the attributes and their nesting. Once saved, it generates the necessary database tables and forms for inserting, updating, and deleting records. You can then run the application to test the transaction directly in your browser.';\n } else if (prompt.toLowerCase().includes(\"entity\")) {\n assistantFinalResponse =\n 'In GeneXus, creating an entity usually means defining a Transaction object that represents a real-world concept like \"Customer\" or \"Product.\" To do this, create a new Transaction, name it after the entity, and define its attributes—starting with a unique identifier (like CustomerId) and then adding other fields (like CustomerName, CustomerEmail). GeneXus treats this Transaction as an entity and uses it to generate the corresponding table and interface automatically.';\n } else {\n assistantFinalResponse =\n \"Sorry, I didn’t catch that—mind rephrasing it? 😅\";\n }\n\n const userPrompt: ChatMessageUser = {\n id: \"1\",\n role: \"user\",\n content: prompt\n };\n this.#chChatRef.addNewMessage(userPrompt);\n setTimeout(() => {\n this.#chChatRef.addNewMessage({\n id: `${new Date().getTime()}`,\n role: \"assistant\",\n content: \"Analyzing\",\n status: \"waiting\"\n });\n setTimeout(() => {\n this.#chChatRef.updateLastMessage(\n {\n role: \"assistant\",\n content: \"Processing with Chat with LLMs\",\n status: \"waiting\"\n },\n \"replace\"\n );\n setTimeout(() => {\n this.#chChatRef.updateLastMessage(\n {\n role: \"assistant\",\n content: \"Getting information\",\n status: \"waiting\"\n },\n \"replace\"\n );\n this.#chChatRef.updateLastMessage(\n {\n role: \"assistant\",\n content: assistantFinalResponse,\n status: \"complete\"\n },\n \"replace\"\n );\n }, 1500);\n }, 1500);\n }, 100);\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 class=\"elevation-1\"\n >\n <ch-chat\n callbacks={this.#chatCallbacks}\n class=\"chat-lit\"\n generatingResponse={this.generatingResponse}\n loadingState={this.loadingState} // \"all-records-loaded\" to display the welcome screen\n renderItem={renderItemMercury}\n items={this.chatItems} // length 0 to display the welcome screen\n showAdditionalContent={this.showAdditionalContent}\n translations={chatTranslations}\n ref={(el: HTMLChChatElement) =>\n (this.#chChatRef = el as HTMLChChatElement)\n }\n markdownTheme=\"components/markdown-viewer\"\n >\n <gx-ide-chat-welcome\n ref={el =>\n (this.#chatWelcomeRef = el as HTMLGxIdeChatWelcomeElement)\n }\n slot=\"empty-chat\"\n suggestedPrompRequestedCallback={\n this.#suggestedPrompRequestedCallbackHandler\n }\n ></gx-ide-chat-welcome>\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"],"version":3}
@@ -1,7 +1,7 @@
1
1
  import { getAssetPath, proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
2
  import { L as Locale } from './locale.js';
3
3
 
4
- const signInCss = ":host{display:grid;block-size:100%;inline-size:100%;align-items:center;justify-content:center;padding:var(--mer-spacing--xl)}.slide{display:grid;max-inline-size:1100px;grid-template-columns:1fr 550px;background-color:var(--mer-surface__elevation--01);border-radius:var(--mer-spacing--md);overflow:hidden}.slide__illustration{overflow:hidden;max-block-size:700px}.slide__sign-in{display:grid;block-size:100%;inline-size:100%;padding:var(--mer-spacing--3xl)}.slide__sign-in-container{display:grid;gap:var(--mer-spacing--lg);max-inline-size:480px;place-self:center}.slide__sign-in-header{display:grid;gap:var(--mer-spacing--lg)}.slide__sign-in-title{font-size:var(--mer-font__size--xl);color:var(--mer-text__on-surface);letter-spacing:0.02em;font-weight:var(--mer-font__weight--semi-bold)}.slide__sign-in-description{display:grid;color:var(--mer-text__complementary);gap:var(--mer-spacing--2xl);font-size:var(--mer-font__size--sm);font-weight:var(--mer-font__weight--light);line-height:var(--mer-line-height--spaced)}.terms-conditions{text-decoration:underline}.sign-in-btn{padding-inline-start:var(--mer-spacing--3xl) !important;padding-inline-end:var(--mer-spacing--3xl) !important}";
4
+ const signInCss = ":host{display:grid;block-size:100%;inline-size:100%;align-items:center;justify-content:center}.slide{display:grid;max-inline-size:1100px;grid-template-columns:1fr 550px;background-color:var(--mer-surface__elevation--01);border-radius:var(--mer-spacing--md);overflow:hidden}.slide__illustration{overflow:hidden;max-block-size:700px}.slide__sign-in{display:grid;block-size:100%;inline-size:100%;padding:var(--mer-spacing--3xl)}.slide__sign-in-container{display:grid;gap:var(--mer-spacing--lg);max-inline-size:480px;place-self:center}.slide__sign-in-header{display:grid;gap:var(--mer-spacing--lg)}.slide__sign-in-title{font-size:var(--mer-font__size--xl);color:var(--mer-text__on-surface);letter-spacing:0.02em;font-weight:var(--mer-font__weight--semi-bold)}.slide__sign-in-description{display:grid;color:var(--mer-text__complementary);gap:var(--mer-spacing--2xl);font-size:var(--mer-font__size--sm);font-weight:var(--mer-font__weight--light);line-height:var(--mer-line-height--spaced)}.terms-conditions{text-decoration:underline}.sign-in-btn{padding-inline-start:var(--mer-spacing--3xl) !important;padding-inline-end:var(--mer-spacing--3xl) !important}";
5
5
 
6
6
  var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
7
7
  if (kind === "m")
@@ -1 +1 @@
1
- {"file":"gx-ide-sign-in.js","mappings":";;;AAAA,MAAM,SAAS,GAAG,+pCAA+pC;;;;;;;;;;;;;;;;;;;ACOjrC,MAAM,uBAAuB,GAAG,YAAY,CAC1C,iEAAiE,CAClE,CAAC;AACF,MAAM,SAAS,GAAG,YAAY,CAC5B,mDAAmD,CACpD,CAAC;AACF,MAAM,WAAW,GAAmB;IAClC,mBAAmB;IACnB,kBAAkB;IAClB,mBAAmB;CACpB,CAAC;MAQW,aAAa;;;;;;;;;QAKxB,iDAAsB;;;;IActB,MAAM,iBAAiB;QACrB,uBAAA,IAAI,kCAAoB,MAAM,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,MAAA,CAAC;KACnE;IAED,MAAM;QACJ,QACE,EAAC,IAAI,QACH,gBAAU,KAAK,EAAE,WAAW,GAAa,EACzC,eAAS,KAAK,EAAC,OAAO,IACpB,WACE,KAAK,EAAC,qBAAqB,EAC3B,IAAI,EAAC,KAAK,gBACE,uBAAA,IAAI,sCAAiB,CAAC,qBAAqB,IAEvD;;YAEE,GAAG,EAAE,uBAAuB,EAC5B,KAAK,EAAC,qBAAqB,EAC3B,GAAG,EAAE,uBAAA,IAAI,sCAAiB,CAAC,2BAA2B;UACtD,CACE,EAEN,WAAK,KAAK,EAAC,gBAAgB,IACzB,WAAK,KAAK,EAAC,0BAA0B,IACnC,cAAQ,KAAK,EAAC,uBAAuB,IACnC,WACE,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,uBAAA,IAAI,sCAAiB,CAAC,2BAA2B,GACtD,EACF,UAAI,KAAK,EAAC,sBAAsB,IAC7B,uBAAA,IAAI,sCAAiB,CAAC,KAAK,CACzB,CACE,EACT,WAAK,KAAK,EAAC,4BAA4B,IACrC,aACE,gBAAO,uBAAA,IAAI,sCAAiB,CAAC,eAAe,CAAQ,CAClD,EACJ,gBACG,uBAAA,IAAI,sCAAiB,CAAC,yBAAyB,EAChD,SAAG,KAAK,EAAC,kBAAkB,EAAC,OAAO,EAAE,IAAI,CAAC,aAAa,IACpD,uBAAA,IAAI,sCAAiB,CAAC,wBAAwB,CAC7C,CACC,CACH,EACN,eACE,cACE,KAAK,EAAC,4BAA4B,EAClC,OAAO,EAAE,IAAI,CAAC,cAAc,IAE3B,uBAAA,IAAI,sCAAiB,CAAC,mBAAmB,CACnC,CACL,CACF,CACF,CACE,CACL,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/sign-in/sign-in.scss?tag=gx-ide-sign-in&encapsulation=shadow","src/components/sign-in/sign-in.tsx"],"sourcesContent":[":host {\n display: grid;\n block-size: 100%;\n inline-size: 100%;\n align-items: center;\n justify-content: center;\n padding: var(--mer-spacing--xl);\n}\n\n.slide {\n display: grid;\n max-inline-size: 1100px;\n grid-template-columns: 1fr 550px;\n background-color: var(--mer-surface__elevation--01);\n border-radius: var(--mer-spacing--md);\n overflow: hidden;\n\n &__illustration {\n overflow: hidden;\n max-block-size: 700px;\n }\n\n &__sign-in {\n display: grid;\n block-size: 100%;\n inline-size: 100%;\n padding: var(--mer-spacing--3xl);\n }\n\n &__sign-in-container {\n display: grid;\n gap: var(--mer-spacing--lg);\n max-inline-size: 480px;\n place-self: center;\n }\n\n &__sign-in-header {\n display: grid;\n gap: var(--mer-spacing--lg);\n }\n\n &__sign-in-title {\n font-size: var(--mer-font__size--xl);\n color: var(--mer-text__on-surface);\n letter-spacing: 0.02em;\n font-weight: var(--mer-font__weight--semi-bold);\n }\n\n &__sign-in-description {\n display: grid;\n color: var(--mer-text__complementary);\n gap: var(--mer-spacing--2xl);\n font-size: var(--mer-font__size--sm);\n font-weight: var(--mer-font__weight--light);\n line-height: var(--mer-line-height--spaced);\n }\n}\n\n.terms-conditions {\n text-decoration: underline;\n}\n.sign-in-btn {\n padding-inline-start: var(--mer-spacing--3xl) !important;\n padding-inline-end: var(--mer-spacing--3xl) !important;\n}\n","// Stencil\nimport { Component, Host, h, Prop, Element, getAssetPath } from \"@stencil/core\";\n// Other Libraries\nimport { MercuryBundles } from \"@genexus/mercury\";\n// Custom Imports\nimport { Locale } from \"../../common/locale\";\n\nconst COPYRIGHTS_ILLUSTRATION = getAssetPath(\n `./gx-ide-assets/welcome-page/images/copyrights-illustration.png`\n);\nconst ICON_NEXT = getAssetPath(\n `./gx-ide-assets/welcome-page/images/icon-next.svg`\n);\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"components/button\"\n];\n\n@Component({\n tag: \"gx-ide-sign-in\",\n styleUrl: \"sign-in.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/sign-in\"]\n})\nexport class GxIdeUiSplash {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n\n @Element() el: HTMLGxIdeSignInElement;\n\n /**\n * Callback executed when the user click on the \"term and conditions\" link\n */\n @Prop() readonly termsCallback: () => Promise<void>;\n\n /**\n * Callback executed when the user click the Sign In button\n */\n @Prop() readonly signInCallback: () => Promise<void>;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n render() {\n return (\n <Host>\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"slide\">\n <div\n class=\"slide__illustration\"\n role=\"img\"\n aria-label={this.#componentLocale.illustrationAriaLabel}\n >\n <img\n // base image (acts like a background)\n src={COPYRIGHTS_ILLUSTRATION}\n class=\"slide__illustration\"\n alt={this.#componentLocale.illustrationFigureAriaLabel}\n />\n </div>\n\n <div class=\"slide__sign-in\">\n <div class=\"slide__sign-in-container\">\n <header class=\"slide__sign-in-header\">\n <img\n src={ICON_NEXT}\n alt={this.#componentLocale.illustrationAlternativeText}\n />\n <h2 class=\"slide__sign-in-title\">\n {this.#componentLocale.title}\n </h2>\n </header>\n <div class=\"slide__sign-in-description\">\n <p>\n <span>{this.#componentLocale.descriptionText}</span>\n </p>\n <span>\n {this.#componentLocale.byContinuingTextFirstPart}\n <a class=\"terms-conditions\" onClick={this.termsCallback}>\n {this.#componentLocale.byContinuingCallBackText}\n </a>\n </span>\n </div>\n <div>\n <button\n class=\"button-primary sign-in-btn\"\n onClick={this.signInCallback}\n >\n {this.#componentLocale.signInButtonCaption}\n </button>\n </div>\n </div>\n </div>\n </section>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"gx-ide-sign-in.js","mappings":";;;AAAA,MAAM,SAAS,GAAG,goCAAgoC;;;;;;;;;;;;;;;;;;;ACOlpC,MAAM,uBAAuB,GAAG,YAAY,CAC1C,iEAAiE,CAClE,CAAC;AACF,MAAM,SAAS,GAAG,YAAY,CAC5B,mDAAmD,CACpD,CAAC;AACF,MAAM,WAAW,GAAmB;IAClC,mBAAmB;IACnB,kBAAkB;IAClB,mBAAmB;CACpB,CAAC;MAQW,aAAa;;;;;;;;;QAKxB,iDAAsB;;;;IActB,MAAM,iBAAiB;QACrB,uBAAA,IAAI,kCAAoB,MAAM,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,MAAA,CAAC;KACnE;IAED,MAAM;QACJ,QACE,EAAC,IAAI,QACH,gBAAU,KAAK,EAAE,WAAW,GAAa,EACzC,eAAS,KAAK,EAAC,OAAO,IACpB,WACE,KAAK,EAAC,qBAAqB,EAC3B,IAAI,EAAC,KAAK,gBACE,uBAAA,IAAI,sCAAiB,CAAC,qBAAqB,IAEvD;;YAEE,GAAG,EAAE,uBAAuB,EAC5B,KAAK,EAAC,qBAAqB,EAC3B,GAAG,EAAE,uBAAA,IAAI,sCAAiB,CAAC,2BAA2B;UACtD,CACE,EAEN,WAAK,KAAK,EAAC,gBAAgB,IACzB,WAAK,KAAK,EAAC,0BAA0B,IACnC,cAAQ,KAAK,EAAC,uBAAuB,IACnC,WACE,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,uBAAA,IAAI,sCAAiB,CAAC,2BAA2B,GACtD,EACF,UAAI,KAAK,EAAC,sBAAsB,IAC7B,uBAAA,IAAI,sCAAiB,CAAC,KAAK,CACzB,CACE,EACT,WAAK,KAAK,EAAC,4BAA4B,IACrC,aACE,gBAAO,uBAAA,IAAI,sCAAiB,CAAC,eAAe,CAAQ,CAClD,EACJ,gBACG,uBAAA,IAAI,sCAAiB,CAAC,yBAAyB,EAChD,SAAG,KAAK,EAAC,kBAAkB,EAAC,OAAO,EAAE,IAAI,CAAC,aAAa,IACpD,uBAAA,IAAI,sCAAiB,CAAC,wBAAwB,CAC7C,CACC,CACH,EACN,eACE,cACE,KAAK,EAAC,4BAA4B,EAClC,OAAO,EAAE,IAAI,CAAC,cAAc,IAE3B,uBAAA,IAAI,sCAAiB,CAAC,mBAAmB,CACnC,CACL,CACF,CACF,CACE,CACL,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/sign-in/sign-in.scss?tag=gx-ide-sign-in&encapsulation=shadow","src/components/sign-in/sign-in.tsx"],"sourcesContent":[":host {\n display: grid;\n block-size: 100%;\n inline-size: 100%;\n align-items: center;\n justify-content: center;\n}\n\n.slide {\n display: grid;\n max-inline-size: 1100px;\n grid-template-columns: 1fr 550px;\n background-color: var(--mer-surface__elevation--01);\n border-radius: var(--mer-spacing--md);\n overflow: hidden;\n\n &__illustration {\n overflow: hidden;\n max-block-size: 700px;\n }\n\n &__sign-in {\n display: grid;\n block-size: 100%;\n inline-size: 100%;\n padding: var(--mer-spacing--3xl);\n }\n\n &__sign-in-container {\n display: grid;\n gap: var(--mer-spacing--lg);\n max-inline-size: 480px;\n place-self: center;\n }\n\n &__sign-in-header {\n display: grid;\n gap: var(--mer-spacing--lg);\n }\n\n &__sign-in-title {\n font-size: var(--mer-font__size--xl);\n color: var(--mer-text__on-surface);\n letter-spacing: 0.02em;\n font-weight: var(--mer-font__weight--semi-bold);\n }\n\n &__sign-in-description {\n display: grid;\n color: var(--mer-text__complementary);\n gap: var(--mer-spacing--2xl);\n font-size: var(--mer-font__size--sm);\n font-weight: var(--mer-font__weight--light);\n line-height: var(--mer-line-height--spaced);\n }\n}\n\n.terms-conditions {\n text-decoration: underline;\n}\n.sign-in-btn {\n padding-inline-start: var(--mer-spacing--3xl) !important;\n padding-inline-end: var(--mer-spacing--3xl) !important;\n}\n","// Stencil\nimport { Component, Host, h, Prop, Element, getAssetPath } from \"@stencil/core\";\n// Other Libraries\nimport { MercuryBundles } from \"@genexus/mercury\";\n// Custom Imports\nimport { Locale } from \"../../common/locale\";\n\nconst COPYRIGHTS_ILLUSTRATION = getAssetPath(\n `./gx-ide-assets/welcome-page/images/copyrights-illustration.png`\n);\nconst ICON_NEXT = getAssetPath(\n `./gx-ide-assets/welcome-page/images/icon-next.svg`\n);\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"components/button\"\n];\n\n@Component({\n tag: \"gx-ide-sign-in\",\n styleUrl: \"sign-in.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/sign-in\"]\n})\nexport class GxIdeUiSplash {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n\n @Element() el: HTMLGxIdeSignInElement;\n\n /**\n * Callback executed when the user click on the \"term and conditions\" link\n */\n @Prop() readonly termsCallback: () => Promise<void>;\n\n /**\n * Callback executed when the user click the Sign In button\n */\n @Prop() readonly signInCallback: () => Promise<void>;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n render() {\n return (\n <Host>\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"slide\">\n <div\n class=\"slide__illustration\"\n role=\"img\"\n aria-label={this.#componentLocale.illustrationAriaLabel}\n >\n <img\n // base image (acts like a background)\n src={COPYRIGHTS_ILLUSTRATION}\n class=\"slide__illustration\"\n alt={this.#componentLocale.illustrationFigureAriaLabel}\n />\n </div>\n\n <div class=\"slide__sign-in\">\n <div class=\"slide__sign-in-container\">\n <header class=\"slide__sign-in-header\">\n <img\n src={ICON_NEXT}\n alt={this.#componentLocale.illustrationAlternativeText}\n />\n <h2 class=\"slide__sign-in-title\">\n {this.#componentLocale.title}\n </h2>\n </header>\n <div class=\"slide__sign-in-description\">\n <p>\n <span>{this.#componentLocale.descriptionText}</span>\n </p>\n <span>\n {this.#componentLocale.byContinuingTextFirstPart}\n <a class=\"terms-conditions\" onClick={this.termsCallback}>\n {this.#componentLocale.byContinuingCallBackText}\n </a>\n </span>\n </div>\n <div>\n <button\n class=\"button-primary sign-in-btn\"\n onClick={this.signInCallback}\n >\n {this.#componentLocale.signInButtonCaption}\n </button>\n </div>\n </div>\n </div>\n </section>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -2595,10 +2595,10 @@ const GxIdeStartPage$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeStartPage e
2595
2595
  }
2596
2596
  return (h("section", { class: "section-kbs" }, h("header", { class: {
2597
2597
  "section-kbs__header": true
2598
- } }, h("h2", { class: "subtitle-regular-s section-kbs__title" }, __classPrivateFieldGet(this, _GxIdeStartPage_componentLocale, "f").recentKBs.title), h("ch-edit", {
2598
+ } }, h("label", { class: "subtitle-regular-s section-kbs__title", htmlFor: "filter-kbs" }, __classPrivateFieldGet(this, _GxIdeStartPage_componentLocale, "f").recentKBs.title), h("ch-edit", {
2599
2599
  // Render always, and display or hide, ro prevent FOUC, and also prevent
2600
2600
  // the header block-size from growing a little bit when the input renders.
2601
- value: this.kbFilterValue, class: {
2601
+ id: "filter-kbs", value: this.kbFilterValue, class: {
2602
2602
  "input": true,
2603
2603
  "section-kbs__filter--hidden": hideKbsFilter
2604
2604
  }, startImgSrc: SEARCH_ICON, placeholder: __classPrivateFieldGet(this, _GxIdeStartPage_componentLocale, "f").recentKBs.filterKbsPlaceholder, onInput: !hideKbsFilter && __classPrivateFieldGet(this, _GxIdeStartPage_filterKbs, "f"), disabled: hideKbsFilter