@genexus/genexus-ide-ui 1.1.3 → 1.1.5

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 (850) hide show
  1. package/dist/cjs/MERCURY_ASSETS-972bf7f4.js +9 -0
  2. package/dist/cjs/MERCURY_ASSETS-972bf7f4.js.map +1 -0
  3. package/dist/cjs/code-render-0e9837c4.js +86 -0
  4. package/dist/cjs/code-render-0e9837c4.js.map +1 -0
  5. package/dist/cjs/{common-72f91a78.js → common-090e6d3a.js} +28 -12
  6. package/dist/cjs/common-090e6d3a.js.map +1 -0
  7. package/dist/cjs/{form-validation-178cf461.js → form-validation-ffe2b957.js} +7 -3
  8. package/dist/cjs/form-validation-ffe2b957.js.map +1 -0
  9. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  10. package/dist/cjs/gx-ide-about.cjs.entry.js +1 -1
  11. package/dist/cjs/gx-ide-ai-assistant.cjs.entry.js +10 -16
  12. package/dist/cjs/gx-ide-ai-assistant.cjs.entry.js.map +1 -1
  13. package/dist/cjs/gx-ide-ai-message.cjs.entry.js +4 -5
  14. package/dist/cjs/gx-ide-ai-message.cjs.entry.js.map +1 -1
  15. package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js +180 -168
  16. package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js.map +1 -1
  17. package/dist/cjs/gx-ide-bpm-assign-roles.cjs.entry.js +2 -2
  18. package/dist/cjs/gx-ide-bpm-assign-roles.cjs.entry.js.map +1 -1
  19. package/dist/cjs/gx-ide-bpm-export-xpdl.cjs.entry.js +4 -6
  20. package/dist/cjs/gx-ide-bpm-export-xpdl.cjs.entry.js.map +1 -1
  21. package/dist/cjs/gx-ide-bpm-import-files.cjs.entry.js +3 -4
  22. package/dist/cjs/gx-ide-bpm-import-files.cjs.entry.js.map +1 -1
  23. package/dist/cjs/gx-ide-bpm-import-gxpm.cjs.entry.js +2 -2
  24. package/dist/cjs/gx-ide-bpm-import-gxpm.cjs.entry.js.map +1 -1
  25. package/dist/cjs/gx-ide-bpm-objects-selector.cjs.entry.js +2 -2
  26. package/dist/cjs/gx-ide-bpm-objects-selector.cjs.entry.js.map +1 -1
  27. package/dist/cjs/gx-ide-bpm-sync-gam-roles.cjs.entry.js +2 -3
  28. package/dist/cjs/gx-ide-bpm-sync-gam-roles.cjs.entry.js.map +1 -1
  29. package/dist/cjs/gx-ide-bpm-task-documents.cjs.entry.js +13 -16
  30. package/dist/cjs/gx-ide-bpm-task-documents.cjs.entry.js.map +1 -1
  31. package/dist/cjs/gx-ide-bpm-timer-duration.cjs.entry.js +3 -4
  32. package/dist/cjs/gx-ide-bpm-timer-duration.cjs.entry.js.map +1 -1
  33. package/dist/cjs/gx-ide-card.cjs.entry.js +2 -2
  34. package/dist/cjs/gx-ide-card.cjs.entry.js.map +1 -1
  35. package/dist/cjs/gx-ide-chat-container_2.cjs.entry.js +239 -0
  36. package/dist/cjs/gx-ide-chat-container_2.cjs.entry.js.map +1 -0
  37. package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js +18 -23
  38. package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js.map +1 -1
  39. package/dist/cjs/gx-ide-container_2.cjs.entry.js +1 -2
  40. package/dist/cjs/gx-ide-container_2.cjs.entry.js.map +1 -1
  41. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +9 -14
  42. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js.map +1 -1
  43. package/dist/cjs/gx-ide-current-user-info.cjs.entry.js +5 -7
  44. package/dist/cjs/gx-ide-current-user-info.cjs.entry.js.map +1 -1
  45. package/dist/cjs/gx-ide-dashboard-home.cjs.entry.js +7 -9
  46. package/dist/cjs/gx-ide-dashboard-home.cjs.entry.js.map +1 -1
  47. package/dist/cjs/gx-ide-data-selector.cjs.entry.js +6 -8
  48. package/dist/cjs/gx-ide-data-selector.cjs.entry.js.map +1 -1
  49. package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js +6 -8
  50. package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js.map +1 -1
  51. package/dist/cjs/gx-ide-deployment-tool.cjs.entry.js +17 -21
  52. package/dist/cjs/gx-ide-deployment-tool.cjs.entry.js.map +1 -1
  53. package/dist/cjs/gx-ide-design-import.cjs.entry.js +27 -36
  54. package/dist/cjs/gx-ide-design-import.cjs.entry.js.map +1 -1
  55. package/dist/cjs/gx-ide-directory-selector.cjs.entry.js +1 -2
  56. package/dist/cjs/gx-ide-directory-selector.cjs.entry.js.map +1 -1
  57. package/dist/cjs/gx-ide-edit-module-server.cjs.entry.js +3 -4
  58. package/dist/cjs/gx-ide-edit-module-server.cjs.entry.js.map +1 -1
  59. package/dist/cjs/gx-ide-empty-state.cjs.entry.js +1 -1
  60. package/dist/cjs/gx-ide-empty-state.cjs.entry.js.map +1 -1
  61. package/dist/cjs/gx-ide-entity-selector.cjs.entry.js +6 -9
  62. package/dist/cjs/gx-ide-entity-selector.cjs.entry.js.map +1 -1
  63. package/dist/cjs/gx-ide-file-item.cjs.entry.js +5 -6
  64. package/dist/cjs/gx-ide-file-item.cjs.entry.js.map +1 -1
  65. package/dist/cjs/gx-ide-file-uploader.cjs.entry.js +63 -49
  66. package/dist/cjs/gx-ide-file-uploader.cjs.entry.js.map +1 -1
  67. package/dist/cjs/gx-ide-gam-installation-settings.cjs.entry.js +3 -4
  68. package/dist/cjs/gx-ide-gam-installation-settings.cjs.entry.js.map +1 -1
  69. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +7 -8
  70. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js.map +1 -1
  71. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +10 -14
  72. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js.map +1 -1
  73. package/dist/cjs/gx-ide-list-selector_2.cjs.entry.js +2 -2
  74. package/dist/cjs/gx-ide-list-selector_2.cjs.entry.js.map +1 -1
  75. package/dist/cjs/gx-ide-manage-module-references-v2.cjs.entry.js +19 -11
  76. package/dist/cjs/gx-ide-manage-module-references-v2.cjs.entry.js.map +1 -1
  77. package/dist/cjs/gx-ide-manage-module-references.cjs.entry.js +8 -9
  78. package/dist/cjs/gx-ide-manage-module-references.cjs.entry.js.map +1 -1
  79. package/dist/cjs/gx-ide-navigation-report.cjs.entry.js +4 -7
  80. package/dist/cjs/gx-ide-navigation-report.cjs.entry.js.map +1 -1
  81. package/dist/cjs/gx-ide-new-environment.cjs.entry.js +14 -19
  82. package/dist/cjs/gx-ide-new-environment.cjs.entry.js.map +1 -1
  83. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +34 -39
  84. package/dist/cjs/gx-ide-new-kb.cjs.entry.js.map +1 -1
  85. package/dist/cjs/gx-ide-new-object.cjs.entry.js +6 -9
  86. package/dist/cjs/gx-ide-new-object.cjs.entry.js.map +1 -1
  87. package/dist/cjs/gx-ide-new-version.cjs.entry.js +3 -3
  88. package/dist/cjs/gx-ide-new-version.cjs.entry.js.map +1 -1
  89. package/dist/cjs/gx-ide-object-selector.cjs.entry.js +10 -12
  90. package/dist/cjs/gx-ide-object-selector.cjs.entry.js.map +1 -1
  91. package/dist/cjs/gx-ide-open-api-import.cjs.entry.js +8 -13
  92. package/dist/cjs/gx-ide-open-api-import.cjs.entry.js.map +1 -1
  93. package/dist/cjs/gx-ide-references.cjs.entry.js +22 -28
  94. package/dist/cjs/gx-ide-references.cjs.entry.js.map +1 -1
  95. package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js +202 -98
  96. package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js.map +1 -1
  97. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js +10 -17
  98. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js.map +1 -1
  99. package/dist/cjs/gx-ide-select-user-team.cjs.entry.js +3 -4
  100. package/dist/cjs/gx-ide-select-user-team.cjs.entry.js.map +1 -1
  101. package/dist/cjs/gx-ide-share-kb.cjs.entry.js +6 -10
  102. package/dist/cjs/gx-ide-share-kb.cjs.entry.js.map +1 -1
  103. package/dist/cjs/gx-ide-sign-in-team.cjs.entry.js +2 -3
  104. package/dist/cjs/gx-ide-sign-in-team.cjs.entry.js.map +1 -1
  105. package/dist/cjs/gx-ide-sign-in.cjs.entry.js +1 -1
  106. package/dist/cjs/gx-ide-splash.cjs.entry.js +6 -8
  107. package/dist/cjs/gx-ide-splash.cjs.entry.js.map +1 -1
  108. package/dist/cjs/gx-ide-start-page.cjs.entry.js +9 -13
  109. package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
  110. package/dist/cjs/gx-ide-status-buttons.cjs.entry.js +1 -1
  111. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +3 -3
  112. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js.map +1 -1
  113. package/dist/cjs/gx-ide-team-dev-select-recent-comment.cjs.entry.js +2 -2
  114. package/dist/cjs/gx-ide-team-dev-select-recent-comment.cjs.entry.js.map +1 -1
  115. package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js +3 -3
  116. package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js.map +1 -1
  117. package/dist/cjs/gx-ide-team-dev-update-to-revision.cjs.entry.js +2 -2
  118. package/dist/cjs/gx-ide-team-dev-update-to-revision.cjs.entry.js.map +1 -1
  119. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +4 -5
  120. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js.map +1 -1
  121. package/dist/cjs/gx-ide-template.cjs.entry.js +2 -2
  122. package/dist/cjs/gx-ide-template.cjs.entry.js.map +1 -1
  123. package/dist/cjs/gx-ide-welcome-page.cjs.entry.js +8 -11
  124. package/dist/cjs/gx-ide-welcome-page.cjs.entry.js.map +1 -1
  125. package/dist/cjs/gx-ide-wf-settings.cjs.entry.js +2 -2
  126. package/dist/cjs/gx-ide-wf-settings.cjs.entry.js.map +1 -1
  127. package/dist/cjs/gx-ide-ww-attributes.cjs.entry.js +11 -18
  128. package/dist/cjs/gx-ide-ww-attributes.cjs.entry.js.map +1 -1
  129. package/dist/cjs/gx-ide-ww-files.cjs.entry.js +19 -22
  130. package/dist/cjs/gx-ide-ww-files.cjs.entry.js.map +1 -1
  131. package/dist/cjs/gx-ide-ww-images.cjs.entry.js +20 -9
  132. package/dist/cjs/gx-ide-ww-images.cjs.entry.js.map +1 -1
  133. package/dist/cjs/{helpers-30f109a4.js → helpers-e5a13fa5.js} +6 -6
  134. package/dist/cjs/helpers-e5a13fa5.js.map +1 -0
  135. package/dist/cjs/index.cjs.js +2 -2
  136. package/dist/cjs/index.cjs.js.map +1 -1
  137. package/dist/cjs/loader.cjs.js +1 -1
  138. package/dist/cjs/{locale-ff30a5f3.js → locale-36b93b1b.js} +4 -4
  139. package/dist/cjs/locale-36b93b1b.js.map +1 -0
  140. package/dist/collection/collection-manifest.json +2 -1
  141. package/dist/collection/common/common.js +23 -13
  142. package/dist/collection/common/common.js.map +1 -1
  143. package/dist/collection/common/form-validation.js +7 -4
  144. package/dist/collection/common/form-validation.js.map +1 -1
  145. package/dist/collection/common/helpers.js +9 -10
  146. package/dist/collection/common/helpers.js.map +1 -1
  147. package/dist/collection/common/locale.js +3 -3
  148. package/dist/collection/common/locale.js.map +1 -1
  149. package/dist/collection/common/render-suggest.js +1 -1
  150. package/dist/collection/common/render-suggest.js.map +1 -1
  151. package/dist/collection/components/_helpers/card/card.css +9 -0
  152. package/dist/collection/components/_helpers/container/container.js +1 -2
  153. package/dist/collection/components/_helpers/container/container.js.map +1 -1
  154. package/dist/collection/components/_helpers/directory-selector/directory-selector.js +1 -2
  155. package/dist/collection/components/_helpers/directory-selector/directory-selector.js.map +1 -1
  156. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.css +9 -0
  157. package/dist/collection/components/_helpers/entity-selector/entity-selector.js +2 -4
  158. package/dist/collection/components/_helpers/entity-selector/entity-selector.js.map +1 -1
  159. package/dist/collection/components/_helpers/list-selector/list-selector-item/list-selector-item.js +1 -1
  160. package/dist/collection/components/_helpers/list-selector/list-selector-item/list-selector-item.js.map +1 -1
  161. package/dist/collection/components/_helpers/list-selector/list-selector.css +9 -0
  162. package/dist/collection/components/_starting-template/template.css +9 -0
  163. package/dist/collection/components/ai-assistant/ai-assistant.css +9 -0
  164. package/dist/collection/components/ai-assistant/ai-assistant.js +8 -14
  165. package/dist/collection/components/ai-assistant/ai-assistant.js.map +1 -1
  166. package/dist/collection/components/bpm/application-declaration/bpm-app-declaration.css +37 -27
  167. package/dist/collection/components/bpm/application-declaration/bpm-app-declaration.js +217 -182
  168. package/dist/collection/components/bpm/application-declaration/bpm-app-declaration.js.map +1 -1
  169. package/dist/collection/components/bpm/application-declaration/gx-ide-assets/bpm-app-declaration/langs/bpm-app-declaration.lang.en.json +14 -2
  170. package/dist/collection/components/bpm/application-declaration/gx-ide-assets/bpm-app-declaration/langs/bpm-app-declaration.lang.ja.json +15 -3
  171. package/dist/collection/components/bpm/application-declaration/gx-ide-assets/bpm-app-declaration/langs/bpm-app-declaration.lang.zh.json +14 -2
  172. package/dist/collection/components/bpm/assign-roles/bpm-assign-roles.css +9 -0
  173. package/dist/collection/components/bpm/export-xpdl/bpm-export-xpdl.css +9 -0
  174. package/dist/collection/components/bpm/export-xpdl/bpm-export-xpdl.js +2 -4
  175. package/dist/collection/components/bpm/export-xpdl/bpm-export-xpdl.js.map +1 -1
  176. package/dist/collection/components/bpm/import-files/bpm-import-files.css +9 -0
  177. package/dist/collection/components/bpm/import-files/bpm-import-files.js +1 -2
  178. package/dist/collection/components/bpm/import-files/bpm-import-files.js.map +1 -1
  179. package/dist/collection/components/bpm/import-gxpm/bpm-import-gxpm.css +9 -0
  180. package/dist/collection/components/bpm/objects-selector/bpm-objects-selector.css +9 -0
  181. package/dist/collection/components/bpm/sync-gam-roles/bpm-sync-gam-roles.js +1 -2
  182. package/dist/collection/components/bpm/sync-gam-roles/bpm-sync-gam-roles.js.map +1 -1
  183. package/dist/collection/components/bpm/task-documents/helpers.js +1 -1
  184. package/dist/collection/components/bpm/task-documents/helpers.js.map +1 -1
  185. package/dist/collection/components/bpm/task-documents/task-documents.js +7 -9
  186. package/dist/collection/components/bpm/task-documents/task-documents.js.map +1 -1
  187. package/dist/collection/components/bpm/timer-duration/bpm-timer-duration.css +9 -0
  188. package/dist/collection/components/bpm/timer-duration/bpm-timer-duration.js +1 -2
  189. package/dist/collection/components/bpm/timer-duration/bpm-timer-duration.js.map +1 -1
  190. package/dist/collection/components/chat/chat-container/chat-container.css +118 -0
  191. package/dist/collection/components/chat/chat-container/chat-container.js +218 -0
  192. package/dist/collection/components/chat/chat-container/chat-container.js.map +1 -0
  193. package/dist/collection/components/chat/chat-container/gx-ide-assets/chat-container/langs/chat-container.lang.en.json +9 -0
  194. package/dist/collection/components/chat/chat-container/gx-ide-assets/chat-container/langs/chat-container.lang.ja.json +9 -0
  195. package/dist/collection/components/chat/chat-container/gx-ide-assets/chat-container/langs/chat-container.lang.zh.json +9 -0
  196. package/dist/collection/components/chat/chat-welcome/chat-welcome.css +109 -0
  197. package/dist/collection/components/chat/chat-welcome/chat-welcome.js +228 -0
  198. package/dist/collection/components/chat/chat-welcome/chat-welcome.js.map +1 -0
  199. package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/helpers.js +3 -0
  200. package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/helpers.js.map +1 -0
  201. package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/helpers.tsx +31 -0
  202. package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/images/ai-avatar-welcome.svg +21 -0
  203. package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/images/ai-avatar.svg +11 -0
  204. package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/images/header-illustration.svg +24 -0
  205. package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.en.json +10 -0
  206. package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.ja.json +10 -0
  207. package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.zh.json +10 -0
  208. package/dist/collection/components/chat/code-render.js +65 -0
  209. package/dist/collection/components/chat/code-render.js.map +1 -0
  210. package/dist/collection/components/current-user-info/current-user-info.js +2 -3
  211. package/dist/collection/components/current-user-info/current-user-info.js.map +1 -1
  212. package/dist/collection/components/dashboard-home/dashboard-home.css +9 -0
  213. package/dist/collection/components/dashboard-home/dashboard-home.js +2 -3
  214. package/dist/collection/components/dashboard-home/dashboard-home.js.map +1 -1
  215. package/dist/collection/components/data-selector/data-selector.css +1 -0
  216. package/dist/collection/components/data-selector/data-selector.js +2 -3
  217. package/dist/collection/components/data-selector/data-selector.js.map +1 -1
  218. package/dist/collection/components/data-type-selector/data-type-selector.js +3 -4
  219. package/dist/collection/components/data-type-selector/data-type-selector.js.map +1 -1
  220. package/dist/collection/components/deployment-tool/deployment-tool.css +9 -0
  221. package/dist/collection/components/deployment-tool/deployment-tool.js +11 -18
  222. package/dist/collection/components/deployment-tool/deployment-tool.js.map +1 -1
  223. package/dist/collection/components/deployment-tool/helpers.js +4 -1
  224. package/dist/collection/components/deployment-tool/helpers.js.map +1 -1
  225. package/dist/collection/components/design-import/design-import.js +18 -26
  226. package/dist/collection/components/design-import/design-import.js.map +1 -1
  227. package/dist/collection/components/design-import/helpers.js +1 -1
  228. package/dist/collection/components/design-import/helpers.js.map +1 -1
  229. package/dist/collection/components/file-uploader/file-uploader.css +9 -0
  230. package/dist/collection/components/file-uploader/file-uploader.js +59 -44
  231. package/dist/collection/components/file-uploader/file-uploader.js.map +1 -1
  232. package/dist/collection/components/gam-installation-settings/gam-installation-settings.css +9 -0
  233. package/dist/collection/components/gam-installation-settings/gam-installation-settings.js +1 -2
  234. package/dist/collection/components/gam-installation-settings/gam-installation-settings.js.map +1 -1
  235. package/dist/collection/components/kb-manager-import/kb-manager-import.js +4 -7
  236. package/dist/collection/components/kb-manager-import/kb-manager-import.js.map +1 -1
  237. package/dist/collection/components/modules/edit-module-server/edit-module-server.css +9 -0
  238. package/dist/collection/components/modules/edit-module-server/edit-module-server.js +1 -2
  239. package/dist/collection/components/modules/edit-module-server/edit-module-server.js.map +1 -1
  240. package/dist/collection/components/modules/manage-module-references/manage-module-references.css +9 -0
  241. package/dist/collection/components/modules/manage-module-references/manage-module-references.js +2 -2
  242. package/dist/collection/components/modules/manage-module-references/manage-module-references.js.map +1 -1
  243. package/dist/collection/components/modules/manage-module-references-v2/manage-module-references-v2.js +13 -4
  244. package/dist/collection/components/modules/manage-module-references-v2/manage-module-references-v2.js.map +1 -1
  245. package/dist/collection/components/modules/manage-module-references-v2/manage-module-references.css +9 -0
  246. package/dist/collection/components/navigation-report/navigation-report.js +3 -6
  247. package/dist/collection/components/navigation-report/navigation-report.js.map +1 -1
  248. package/dist/collection/components/new-environment/new-environment.js +10 -15
  249. package/dist/collection/components/new-environment/new-environment.js.map +1 -1
  250. package/dist/collection/components/new-kb/new-kb.js +28 -32
  251. package/dist/collection/components/new-kb/new-kb.js.map +1 -1
  252. package/dist/collection/components/new-object/new-object.js +5 -8
  253. package/dist/collection/components/new-object/new-object.js.map +1 -1
  254. package/dist/collection/components/new-version/new-version.js +2 -2
  255. package/dist/collection/components/new-version/new-version.js.map +1 -1
  256. package/dist/collection/components/object-selector/object-selector.css +1 -0
  257. package/dist/collection/components/object-selector/object-selector.js +4 -5
  258. package/dist/collection/components/object-selector/object-selector.js.map +1 -1
  259. package/dist/collection/components/open-api-import/open-api-import.js +4 -8
  260. package/dist/collection/components/open-api-import/open-api-import.js.map +1 -1
  261. package/dist/collection/components/references/helpers.js +9 -13
  262. package/dist/collection/components/references/helpers.js.map +1 -1
  263. package/dist/collection/components/references/references.css +9 -0
  264. package/dist/collection/components/references/references.js +9 -11
  265. package/dist/collection/components/references/references.js.map +1 -1
  266. package/dist/collection/components/select-kb-items/helpers.js +5 -10
  267. package/dist/collection/components/select-kb-items/helpers.js.map +1 -1
  268. package/dist/collection/components/select-kb-items/select-kb-items.js +1 -2
  269. package/dist/collection/components/select-kb-items/select-kb-items.js.map +1 -1
  270. package/dist/collection/components/select-user-team/helpers.js +1 -1
  271. package/dist/collection/components/select-user-team/helpers.js.map +1 -1
  272. package/dist/collection/components/select-user-team/select-user-team.js +1 -2
  273. package/dist/collection/components/select-user-team/select-user-team.js.map +1 -1
  274. package/dist/collection/components/sign-in-team/sign-in-team.js +1 -2
  275. package/dist/collection/components/sign-in-team/sign-in-team.js.map +1 -1
  276. package/dist/collection/components/splash/splash.js +2 -3
  277. package/dist/collection/components/splash/splash.js.map +1 -1
  278. package/dist/collection/components/start-page/start-page.js +3 -6
  279. package/dist/collection/components/start-page/start-page.js.map +1 -1
  280. package/dist/collection/components/team-dev/commit/commit.css +10 -0
  281. package/dist/collection/components/team-dev/connect-gx-server/connect-gx-server.js +16 -21
  282. package/dist/collection/components/team-dev/connect-gx-server/connect-gx-server.js.map +1 -1
  283. package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js +4 -8
  284. package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js.map +1 -1
  285. package/dist/collection/components/team-dev/select-recent-comment/select-recent-comment.css +9 -0
  286. package/dist/collection/components/team-dev/share-kb/share-kb.js +2 -5
  287. package/dist/collection/components/team-dev/share-kb/share-kb.js.map +1 -1
  288. package/dist/collection/components/team-dev/update/update.css +11 -0
  289. package/dist/collection/components/team-dev/update/update.js +1 -2
  290. package/dist/collection/components/team-dev/update/update.js.map +1 -1
  291. package/dist/collection/components/team-dev/update-partial-selection/update-partial-selection.css +9 -0
  292. package/dist/collection/components/team-dev/update-partial-selection/update-partial-selection.js +1 -1
  293. package/dist/collection/components/team-dev/update-partial-selection/update-partial-selection.js.map +1 -1
  294. package/dist/collection/components/team-dev/update-to-revision/update-to-revision.css +9 -0
  295. package/dist/collection/components/welcome-page/welcome-page.js +5 -7
  296. package/dist/collection/components/welcome-page/welcome-page.js.map +1 -1
  297. package/dist/collection/components/wf-settings/wf-settings.css +9 -0
  298. package/dist/collection/components/ww-attributes/helpers.js +1 -2
  299. package/dist/collection/components/ww-attributes/helpers.js.map +1 -1
  300. package/dist/collection/components/ww-attributes/ww-attributes.css +1 -0
  301. package/dist/collection/components/ww-attributes/ww-attributes.js +6 -11
  302. package/dist/collection/components/ww-attributes/ww-attributes.js.map +1 -1
  303. package/dist/collection/components/ww-files/helpers.js +1 -2
  304. package/dist/collection/components/ww-files/helpers.js.map +1 -1
  305. package/dist/collection/components/ww-files/ww-files.css +1 -0
  306. package/dist/collection/components/ww-files/ww-files.js +16 -18
  307. package/dist/collection/components/ww-files/ww-files.js.map +1 -1
  308. package/dist/collection/components/ww-images/ww-images.css +10 -0
  309. package/dist/collection/components/ww-images/ww-images.js +16 -5
  310. package/dist/collection/components/ww-images/ww-images.js.map +1 -1
  311. package/dist/collection/index.js +1 -1
  312. package/dist/collection/index.js.map +1 -1
  313. package/dist/collection/showcase/chat-container/callbacks.js +105 -90
  314. package/dist/collection/showcase/chat-container/callbacks.js.map +1 -1
  315. package/dist/collection/showcase/chat-container/chat.showcase.js +145 -10
  316. package/dist/collection/showcase/chat-container/chat.showcase.js.map +1 -1
  317. package/dist/collection/testing/locale.e2e.js +4 -3
  318. package/dist/collection/testing/locale.e2e.js.map +1 -1
  319. package/dist/components/MERCURY_ASSETS.js +5 -1
  320. package/dist/components/MERCURY_ASSETS.js.map +1 -1
  321. package/dist/components/ai-message.js +1 -2
  322. package/dist/components/ai-message.js.map +1 -1
  323. package/dist/components/bpm-objects-selector.js +1 -1
  324. package/dist/components/bpm-objects-selector.js.map +1 -1
  325. package/dist/components/chat-container.js +70 -7
  326. package/dist/components/chat-container.js.map +1 -1
  327. package/dist/components/chat-welcome.js +146 -0
  328. package/dist/components/chat-welcome.js.map +1 -0
  329. package/dist/components/code-render.js +68 -41
  330. package/dist/components/code-render.js.map +1 -1
  331. package/dist/components/common.js +27 -11
  332. package/dist/components/common.js.map +1 -1
  333. package/dist/components/container.js +1 -2
  334. package/dist/components/container.js.map +1 -1
  335. package/dist/components/entity-selector.js +3 -6
  336. package/dist/components/entity-selector.js.map +1 -1
  337. package/dist/components/file-item.js +1 -2
  338. package/dist/components/file-item.js.map +1 -1
  339. package/dist/components/form-validation.js +6 -2
  340. package/dist/components/form-validation.js.map +1 -1
  341. package/dist/components/gx-ide-ai-assistant.js +9 -15
  342. package/dist/components/gx-ide-ai-assistant.js.map +1 -1
  343. package/dist/components/gx-ide-bpm-app-declaration.js +188 -185
  344. package/dist/components/gx-ide-bpm-app-declaration.js.map +1 -1
  345. package/dist/components/gx-ide-bpm-assign-roles.js +1 -1
  346. package/dist/components/gx-ide-bpm-assign-roles.js.map +1 -1
  347. package/dist/components/gx-ide-bpm-export-xpdl.js +3 -5
  348. package/dist/components/gx-ide-bpm-export-xpdl.js.map +1 -1
  349. package/dist/components/gx-ide-bpm-import-files.js +2 -3
  350. package/dist/components/gx-ide-bpm-import-files.js.map +1 -1
  351. package/dist/components/gx-ide-bpm-import-gxpm.js +1 -1
  352. package/dist/components/gx-ide-bpm-import-gxpm.js.map +1 -1
  353. package/dist/components/gx-ide-bpm-sync-gam-roles.js +1 -2
  354. package/dist/components/gx-ide-bpm-sync-gam-roles.js.map +1 -1
  355. package/dist/components/gx-ide-bpm-task-documents.js +9 -12
  356. package/dist/components/gx-ide-bpm-task-documents.js.map +1 -1
  357. package/dist/components/gx-ide-bpm-timer-duration.js +2 -3
  358. package/dist/components/gx-ide-bpm-timer-duration.js.map +1 -1
  359. package/dist/components/gx-ide-card.js +1 -1
  360. package/dist/components/gx-ide-card.js.map +1 -1
  361. package/dist/components/gx-ide-chat-welcome.d.ts +11 -0
  362. package/dist/components/gx-ide-chat-welcome.js +8 -0
  363. package/dist/components/gx-ide-chat-welcome.js.map +1 -0
  364. package/dist/components/gx-ide-connect-gx-server.js +16 -21
  365. package/dist/components/gx-ide-connect-gx-server.js.map +1 -1
  366. package/dist/components/gx-ide-create-kb-from-server.js +5 -10
  367. package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
  368. package/dist/components/gx-ide-current-user-info.js +3 -5
  369. package/dist/components/gx-ide-current-user-info.js.map +1 -1
  370. package/dist/components/gx-ide-dashboard-home.js +4 -6
  371. package/dist/components/gx-ide-dashboard-home.js.map +1 -1
  372. package/dist/components/gx-ide-data-selector.js +4 -6
  373. package/dist/components/gx-ide-data-selector.js.map +1 -1
  374. package/dist/components/gx-ide-data-type-selector.js +4 -6
  375. package/dist/components/gx-ide-data-type-selector.js.map +1 -1
  376. package/dist/components/gx-ide-deployment-tool.js +16 -20
  377. package/dist/components/gx-ide-deployment-tool.js.map +1 -1
  378. package/dist/components/gx-ide-design-import.js +20 -29
  379. package/dist/components/gx-ide-design-import.js.map +1 -1
  380. package/dist/components/gx-ide-directory-selector.js +1 -2
  381. package/dist/components/gx-ide-directory-selector.js.map +1 -1
  382. package/dist/components/gx-ide-edit-module-server.js +2 -3
  383. package/dist/components/gx-ide-edit-module-server.js.map +1 -1
  384. package/dist/components/gx-ide-empty-state2.js +1 -1
  385. package/dist/components/gx-ide-empty-state2.js.map +1 -1
  386. package/dist/components/gx-ide-file-uploader.js +61 -47
  387. package/dist/components/gx-ide-file-uploader.js.map +1 -1
  388. package/dist/components/gx-ide-gam-installation-settings.js +2 -3
  389. package/dist/components/gx-ide-gam-installation-settings.js.map +1 -1
  390. package/dist/components/gx-ide-kb-manager-export.js +1 -2
  391. package/dist/components/gx-ide-kb-manager-export.js.map +1 -1
  392. package/dist/components/gx-ide-kb-manager-import.js +5 -9
  393. package/dist/components/gx-ide-kb-manager-import.js.map +1 -1
  394. package/dist/components/gx-ide-manage-module-references-v2.js +15 -7
  395. package/dist/components/gx-ide-manage-module-references-v2.js.map +1 -1
  396. package/dist/components/gx-ide-manage-module-references.js +4 -5
  397. package/dist/components/gx-ide-manage-module-references.js.map +1 -1
  398. package/dist/components/gx-ide-navigation-report.js +3 -6
  399. package/dist/components/gx-ide-navigation-report.js.map +1 -1
  400. package/dist/components/gx-ide-new-environment.js +10 -15
  401. package/dist/components/gx-ide-new-environment.js.map +1 -1
  402. package/dist/components/gx-ide-new-kb.js +29 -34
  403. package/dist/components/gx-ide-new-kb.js.map +1 -1
  404. package/dist/components/gx-ide-new-object.js +5 -8
  405. package/dist/components/gx-ide-new-object.js.map +1 -1
  406. package/dist/components/gx-ide-new-version.js +2 -2
  407. package/dist/components/gx-ide-new-version.js.map +1 -1
  408. package/dist/components/gx-ide-object-selector.js +6 -8
  409. package/dist/components/gx-ide-object-selector.js.map +1 -1
  410. package/dist/components/gx-ide-open-api-import.js +5 -10
  411. package/dist/components/gx-ide-open-api-import.js.map +1 -1
  412. package/dist/components/gx-ide-references.js +19 -25
  413. package/dist/components/gx-ide-references.js.map +1 -1
  414. package/dist/components/gx-ide-sc-chat-container.js +215 -100
  415. package/dist/components/gx-ide-sc-chat-container.js.map +1 -1
  416. package/dist/components/gx-ide-select-kb-items.js +7 -14
  417. package/dist/components/gx-ide-select-kb-items.js.map +1 -1
  418. package/dist/components/gx-ide-select-user-team.js +2 -3
  419. package/dist/components/gx-ide-select-user-team.js.map +1 -1
  420. package/dist/components/gx-ide-share-kb.js +3 -7
  421. package/dist/components/gx-ide-share-kb.js.map +1 -1
  422. package/dist/components/gx-ide-sign-in-team.js +1 -2
  423. package/dist/components/gx-ide-sign-in-team.js.map +1 -1
  424. package/dist/components/gx-ide-splash.js +3 -5
  425. package/dist/components/gx-ide-splash.js.map +1 -1
  426. package/dist/components/gx-ide-start-page.js +4 -8
  427. package/dist/components/gx-ide-start-page.js.map +1 -1
  428. package/dist/components/gx-ide-team-dev-commit.js +1 -1
  429. package/dist/components/gx-ide-team-dev-commit.js.map +1 -1
  430. package/dist/components/gx-ide-team-dev-select-recent-comment.js +1 -1
  431. package/dist/components/gx-ide-team-dev-select-recent-comment.js.map +1 -1
  432. package/dist/components/gx-ide-team-dev-update-partial-selection.js +2 -2
  433. package/dist/components/gx-ide-team-dev-update-partial-selection.js.map +1 -1
  434. package/dist/components/gx-ide-team-dev-update-to-revision.js +1 -1
  435. package/dist/components/gx-ide-team-dev-update-to-revision.js.map +1 -1
  436. package/dist/components/gx-ide-team-dev-update.js +2 -3
  437. package/dist/components/gx-ide-team-dev-update.js.map +1 -1
  438. package/dist/components/gx-ide-template.js +1 -1
  439. package/dist/components/gx-ide-template.js.map +1 -1
  440. package/dist/components/gx-ide-welcome-page.js +6 -9
  441. package/dist/components/gx-ide-welcome-page.js.map +1 -1
  442. package/dist/components/gx-ide-wf-settings.js +1 -1
  443. package/dist/components/gx-ide-wf-settings.js.map +1 -1
  444. package/dist/components/gx-ide-ww-attributes.js +9 -16
  445. package/dist/components/gx-ide-ww-attributes.js.map +1 -1
  446. package/dist/components/gx-ide-ww-files.js +18 -21
  447. package/dist/components/gx-ide-ww-files.js.map +1 -1
  448. package/dist/components/gx-ide-ww-images.js +17 -6
  449. package/dist/components/gx-ide-ww-images.js.map +1 -1
  450. package/dist/components/helpers.js +5 -5
  451. package/dist/components/helpers.js.map +1 -1
  452. package/dist/components/index.js.map +1 -1
  453. package/dist/components/list-selector-item.js +1 -1
  454. package/dist/components/list-selector-item.js.map +1 -1
  455. package/dist/components/list-selector.js +1 -1
  456. package/dist/components/list-selector.js.map +1 -1
  457. package/dist/components/locale.js +3 -3
  458. package/dist/components/locale.js.map +1 -1
  459. package/dist/esm/MERCURY_ASSETS-039222dd.js +7 -0
  460. package/dist/esm/MERCURY_ASSETS-039222dd.js.map +1 -0
  461. package/dist/esm/code-render-f3afd300.js +83 -0
  462. package/dist/esm/code-render-f3afd300.js.map +1 -0
  463. package/dist/esm/{common-ccb4504a.js → common-719c4daf.js} +28 -12
  464. package/dist/esm/common-719c4daf.js.map +1 -0
  465. package/dist/esm/{form-validation-cd0215c6.js → form-validation-71dca8c6.js} +7 -3
  466. package/dist/esm/form-validation-71dca8c6.js.map +1 -0
  467. package/dist/esm/genexus-ide-ui.js +1 -1
  468. package/dist/esm/gx-ide-about.entry.js +1 -1
  469. package/dist/esm/gx-ide-ai-assistant.entry.js +10 -16
  470. package/dist/esm/gx-ide-ai-assistant.entry.js.map +1 -1
  471. package/dist/esm/gx-ide-ai-message.entry.js +3 -4
  472. package/dist/esm/gx-ide-ai-message.entry.js.map +1 -1
  473. package/dist/esm/gx-ide-bpm-app-declaration.entry.js +181 -169
  474. package/dist/esm/gx-ide-bpm-app-declaration.entry.js.map +1 -1
  475. package/dist/esm/gx-ide-bpm-assign-roles.entry.js +2 -2
  476. package/dist/esm/gx-ide-bpm-assign-roles.entry.js.map +1 -1
  477. package/dist/esm/gx-ide-bpm-export-xpdl.entry.js +4 -6
  478. package/dist/esm/gx-ide-bpm-export-xpdl.entry.js.map +1 -1
  479. package/dist/esm/gx-ide-bpm-import-files.entry.js +3 -4
  480. package/dist/esm/gx-ide-bpm-import-files.entry.js.map +1 -1
  481. package/dist/esm/gx-ide-bpm-import-gxpm.entry.js +2 -2
  482. package/dist/esm/gx-ide-bpm-import-gxpm.entry.js.map +1 -1
  483. package/dist/esm/gx-ide-bpm-objects-selector.entry.js +2 -2
  484. package/dist/esm/gx-ide-bpm-objects-selector.entry.js.map +1 -1
  485. package/dist/esm/gx-ide-bpm-sync-gam-roles.entry.js +2 -3
  486. package/dist/esm/gx-ide-bpm-sync-gam-roles.entry.js.map +1 -1
  487. package/dist/esm/gx-ide-bpm-task-documents.entry.js +10 -13
  488. package/dist/esm/gx-ide-bpm-task-documents.entry.js.map +1 -1
  489. package/dist/esm/gx-ide-bpm-timer-duration.entry.js +3 -4
  490. package/dist/esm/gx-ide-bpm-timer-duration.entry.js.map +1 -1
  491. package/dist/esm/gx-ide-card.entry.js +2 -2
  492. package/dist/esm/gx-ide-card.entry.js.map +1 -1
  493. package/dist/esm/gx-ide-chat-container_2.entry.js +234 -0
  494. package/dist/esm/gx-ide-chat-container_2.entry.js.map +1 -0
  495. package/dist/esm/gx-ide-connect-gx-server.entry.js +18 -23
  496. package/dist/esm/gx-ide-connect-gx-server.entry.js.map +1 -1
  497. package/dist/esm/gx-ide-container_2.entry.js +1 -2
  498. package/dist/esm/gx-ide-container_2.entry.js.map +1 -1
  499. package/dist/esm/gx-ide-create-kb-from-server.entry.js +7 -12
  500. package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
  501. package/dist/esm/gx-ide-current-user-info.entry.js +4 -6
  502. package/dist/esm/gx-ide-current-user-info.entry.js.map +1 -1
  503. package/dist/esm/gx-ide-dashboard-home.entry.js +6 -8
  504. package/dist/esm/gx-ide-dashboard-home.entry.js.map +1 -1
  505. package/dist/esm/gx-ide-data-selector.entry.js +5 -7
  506. package/dist/esm/gx-ide-data-selector.entry.js.map +1 -1
  507. package/dist/esm/gx-ide-data-type-selector.entry.js +5 -7
  508. package/dist/esm/gx-ide-data-type-selector.entry.js.map +1 -1
  509. package/dist/esm/gx-ide-deployment-tool.entry.js +17 -21
  510. package/dist/esm/gx-ide-deployment-tool.entry.js.map +1 -1
  511. package/dist/esm/gx-ide-design-import.entry.js +21 -30
  512. package/dist/esm/gx-ide-design-import.entry.js.map +1 -1
  513. package/dist/esm/gx-ide-directory-selector.entry.js +1 -2
  514. package/dist/esm/gx-ide-directory-selector.entry.js.map +1 -1
  515. package/dist/esm/gx-ide-edit-module-server.entry.js +3 -4
  516. package/dist/esm/gx-ide-edit-module-server.entry.js.map +1 -1
  517. package/dist/esm/gx-ide-empty-state.entry.js +1 -1
  518. package/dist/esm/gx-ide-empty-state.entry.js.map +1 -1
  519. package/dist/esm/gx-ide-entity-selector.entry.js +4 -7
  520. package/dist/esm/gx-ide-entity-selector.entry.js.map +1 -1
  521. package/dist/esm/gx-ide-file-item.entry.js +1 -2
  522. package/dist/esm/gx-ide-file-item.entry.js.map +1 -1
  523. package/dist/esm/gx-ide-file-uploader.entry.js +62 -48
  524. package/dist/esm/gx-ide-file-uploader.entry.js.map +1 -1
  525. package/dist/esm/gx-ide-gam-installation-settings.entry.js +3 -4
  526. package/dist/esm/gx-ide-gam-installation-settings.entry.js.map +1 -1
  527. package/dist/esm/gx-ide-kb-manager-export.entry.js +2 -3
  528. package/dist/esm/gx-ide-kb-manager-export.entry.js.map +1 -1
  529. package/dist/esm/gx-ide-kb-manager-import.entry.js +6 -10
  530. package/dist/esm/gx-ide-kb-manager-import.entry.js.map +1 -1
  531. package/dist/esm/gx-ide-list-selector_2.entry.js +2 -2
  532. package/dist/esm/gx-ide-list-selector_2.entry.js.map +1 -1
  533. package/dist/esm/gx-ide-manage-module-references-v2.entry.js +17 -9
  534. package/dist/esm/gx-ide-manage-module-references-v2.entry.js.map +1 -1
  535. package/dist/esm/gx-ide-manage-module-references.entry.js +6 -7
  536. package/dist/esm/gx-ide-manage-module-references.entry.js.map +1 -1
  537. package/dist/esm/gx-ide-navigation-report.entry.js +4 -7
  538. package/dist/esm/gx-ide-navigation-report.entry.js.map +1 -1
  539. package/dist/esm/gx-ide-new-environment.entry.js +14 -19
  540. package/dist/esm/gx-ide-new-environment.entry.js.map +1 -1
  541. package/dist/esm/gx-ide-new-kb.entry.js +33 -38
  542. package/dist/esm/gx-ide-new-kb.entry.js.map +1 -1
  543. package/dist/esm/gx-ide-new-object.entry.js +6 -9
  544. package/dist/esm/gx-ide-new-object.entry.js.map +1 -1
  545. package/dist/esm/gx-ide-new-version.entry.js +3 -3
  546. package/dist/esm/gx-ide-new-version.entry.js.map +1 -1
  547. package/dist/esm/gx-ide-object-selector.entry.js +8 -10
  548. package/dist/esm/gx-ide-object-selector.entry.js.map +1 -1
  549. package/dist/esm/gx-ide-open-api-import.entry.js +6 -11
  550. package/dist/esm/gx-ide-open-api-import.entry.js.map +1 -1
  551. package/dist/esm/gx-ide-references.entry.js +20 -26
  552. package/dist/esm/gx-ide-references.entry.js.map +1 -1
  553. package/dist/esm/gx-ide-sc-chat-container.entry.js +203 -99
  554. package/dist/esm/gx-ide-sc-chat-container.entry.js.map +1 -1
  555. package/dist/esm/gx-ide-select-kb-items.entry.js +8 -15
  556. package/dist/esm/gx-ide-select-kb-items.entry.js.map +1 -1
  557. package/dist/esm/gx-ide-select-user-team.entry.js +3 -4
  558. package/dist/esm/gx-ide-select-user-team.entry.js.map +1 -1
  559. package/dist/esm/gx-ide-share-kb.entry.js +5 -9
  560. package/dist/esm/gx-ide-share-kb.entry.js.map +1 -1
  561. package/dist/esm/gx-ide-sign-in-team.entry.js +2 -3
  562. package/dist/esm/gx-ide-sign-in-team.entry.js.map +1 -1
  563. package/dist/esm/gx-ide-sign-in.entry.js +1 -1
  564. package/dist/esm/gx-ide-splash.entry.js +5 -7
  565. package/dist/esm/gx-ide-splash.entry.js.map +1 -1
  566. package/dist/esm/gx-ide-start-page.entry.js +5 -9
  567. package/dist/esm/gx-ide-start-page.entry.js.map +1 -1
  568. package/dist/esm/gx-ide-status-buttons.entry.js +1 -1
  569. package/dist/esm/gx-ide-team-dev-commit.entry.js +3 -3
  570. package/dist/esm/gx-ide-team-dev-commit.entry.js.map +1 -1
  571. package/dist/esm/gx-ide-team-dev-select-recent-comment.entry.js +2 -2
  572. package/dist/esm/gx-ide-team-dev-select-recent-comment.entry.js.map +1 -1
  573. package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js +3 -3
  574. package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js.map +1 -1
  575. package/dist/esm/gx-ide-team-dev-update-to-revision.entry.js +2 -2
  576. package/dist/esm/gx-ide-team-dev-update-to-revision.entry.js.map +1 -1
  577. package/dist/esm/gx-ide-team-dev-update.entry.js +4 -5
  578. package/dist/esm/gx-ide-team-dev-update.entry.js.map +1 -1
  579. package/dist/esm/gx-ide-template.entry.js +2 -2
  580. package/dist/esm/gx-ide-template.entry.js.map +1 -1
  581. package/dist/esm/gx-ide-welcome-page.entry.js +7 -10
  582. package/dist/esm/gx-ide-welcome-page.entry.js.map +1 -1
  583. package/dist/esm/gx-ide-wf-settings.entry.js +2 -2
  584. package/dist/esm/gx-ide-wf-settings.entry.js.map +1 -1
  585. package/dist/esm/gx-ide-ww-attributes.entry.js +10 -17
  586. package/dist/esm/gx-ide-ww-attributes.entry.js.map +1 -1
  587. package/dist/esm/gx-ide-ww-files.entry.js +19 -22
  588. package/dist/esm/gx-ide-ww-files.entry.js.map +1 -1
  589. package/dist/esm/gx-ide-ww-images.entry.js +20 -9
  590. package/dist/esm/gx-ide-ww-images.entry.js.map +1 -1
  591. package/dist/esm/{helpers-10479d69.js → helpers-5f1c9a32.js} +6 -6
  592. package/dist/esm/helpers-5f1c9a32.js.map +1 -0
  593. package/dist/esm/index.js +2 -2
  594. package/dist/esm/index.js.map +1 -1
  595. package/dist/esm/loader.js +1 -1
  596. package/dist/esm/{locale-e5107fad.js → locale-643afe17.js} +4 -4
  597. package/dist/esm/locale-643afe17.js.map +1 -0
  598. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  599. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  600. package/dist/genexus-ide-ui/gx-ide-assets/bpm-app-declaration/langs/bpm-app-declaration.lang.en.json +14 -2
  601. package/dist/genexus-ide-ui/gx-ide-assets/bpm-app-declaration/langs/bpm-app-declaration.lang.ja.json +15 -3
  602. package/dist/genexus-ide-ui/gx-ide-assets/bpm-app-declaration/langs/bpm-app-declaration.lang.zh.json +14 -2
  603. package/dist/genexus-ide-ui/gx-ide-assets/chat-container/langs/chat-container.lang.en.json +9 -0
  604. package/dist/genexus-ide-ui/gx-ide-assets/chat-container/langs/chat-container.lang.ja.json +9 -0
  605. package/dist/genexus-ide-ui/gx-ide-assets/chat-container/langs/chat-container.lang.zh.json +9 -0
  606. package/dist/genexus-ide-ui/gx-ide-assets/chat-welcome/helpers.tsx +31 -0
  607. package/dist/genexus-ide-ui/gx-ide-assets/chat-welcome/images/ai-avatar-welcome.svg +21 -0
  608. package/dist/genexus-ide-ui/gx-ide-assets/chat-welcome/images/ai-avatar.svg +11 -0
  609. package/dist/genexus-ide-ui/gx-ide-assets/chat-welcome/images/header-illustration.svg +24 -0
  610. package/dist/genexus-ide-ui/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.en.json +10 -0
  611. package/dist/genexus-ide-ui/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.ja.json +10 -0
  612. package/dist/genexus-ide-ui/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.zh.json +10 -0
  613. package/dist/genexus-ide-ui/index.esm.js +2 -2
  614. package/dist/genexus-ide-ui/index.esm.js.map +1 -1
  615. package/dist/genexus-ide-ui/{p-59ed3f39.entry.js → p-02fc47cd.entry.js} +3 -3
  616. package/dist/genexus-ide-ui/{p-530c32aa.entry.js → p-032b4a81.entry.js} +25 -30
  617. package/dist/genexus-ide-ui/p-032b4a81.entry.js.map +1 -0
  618. package/dist/genexus-ide-ui/{p-eea944d4.entry.js → p-0d83a34d.entry.js} +63 -69
  619. package/dist/genexus-ide-ui/p-0d83a34d.entry.js.map +1 -0
  620. package/dist/genexus-ide-ui/{p-22b8bdb1.entry.js → p-0e53f1ef.entry.js} +161 -163
  621. package/dist/genexus-ide-ui/p-0e53f1ef.entry.js.map +1 -0
  622. package/dist/genexus-ide-ui/p-11dccb8f.entry.js +309 -0
  623. package/dist/genexus-ide-ui/p-11dccb8f.entry.js.map +1 -0
  624. package/dist/genexus-ide-ui/{p-fecc50e4.entry.js → p-29575656.entry.js} +85 -96
  625. package/dist/genexus-ide-ui/p-29575656.entry.js.map +1 -0
  626. package/dist/genexus-ide-ui/{p-683cb15e.entry.js → p-2be58a7a.entry.js} +3 -3
  627. package/dist/genexus-ide-ui/{p-fdf41406.entry.js → p-2dbf722d.entry.js} +77 -85
  628. package/dist/genexus-ide-ui/p-2dbf722d.entry.js.map +1 -0
  629. package/dist/genexus-ide-ui/{p-31beae9e.entry.js → p-2e90a13a.entry.js} +2 -3
  630. package/dist/genexus-ide-ui/p-2e90a13a.entry.js.map +1 -0
  631. package/dist/genexus-ide-ui/{p-ba7d1472.entry.js → p-353810b8.entry.js} +99 -104
  632. package/dist/genexus-ide-ui/p-353810b8.entry.js.map +1 -0
  633. package/dist/genexus-ide-ui/{p-3b8db39e.entry.js → p-39c527ff.entry.js} +3 -3
  634. package/dist/genexus-ide-ui/p-3edbf07d.js +109 -0
  635. package/dist/genexus-ide-ui/p-3edbf07d.js.map +1 -0
  636. package/dist/genexus-ide-ui/{p-ef5dfd35.entry.js → p-41a4364d.entry.js} +2 -4
  637. package/dist/genexus-ide-ui/{p-ef5dfd35.entry.js.map → p-41a4364d.entry.js.map} +1 -1
  638. package/dist/genexus-ide-ui/{p-68969051.entry.js → p-45d2fa91.entry.js} +11 -12
  639. package/dist/genexus-ide-ui/p-45d2fa91.entry.js.map +1 -0
  640. package/dist/genexus-ide-ui/{p-5687fdb7.entry.js → p-460db3ff.entry.js} +11 -13
  641. package/dist/genexus-ide-ui/{p-5687fdb7.entry.js.map → p-460db3ff.entry.js.map} +1 -1
  642. package/dist/genexus-ide-ui/{p-9a609b51.js → p-48f5911b.js} +50 -33
  643. package/dist/genexus-ide-ui/p-48f5911b.js.map +1 -0
  644. package/dist/genexus-ide-ui/{p-50b22f23.entry.js → p-4d929210.entry.js} +3 -3
  645. package/dist/genexus-ide-ui/{p-de7f0c1f.entry.js → p-501c7b1f.entry.js} +19 -22
  646. package/dist/genexus-ide-ui/p-501c7b1f.entry.js.map +1 -0
  647. package/dist/genexus-ide-ui/{p-c747afac.entry.js → p-50eaa96d.entry.js} +99 -111
  648. package/dist/genexus-ide-ui/p-50eaa96d.entry.js.map +1 -0
  649. package/dist/genexus-ide-ui/p-51601b85.js +145 -0
  650. package/dist/genexus-ide-ui/p-51601b85.js.map +1 -0
  651. package/dist/genexus-ide-ui/{p-289c3290.js → p-549b8f0c.js} +16 -15
  652. package/dist/{esm/form-validation-cd0215c6.js.map → genexus-ide-ui/p-549b8f0c.js.map} +1 -1
  653. package/dist/genexus-ide-ui/{p-007173ef.entry.js → p-5a42428d.entry.js} +16 -19
  654. package/dist/genexus-ide-ui/p-5a42428d.entry.js.map +1 -0
  655. package/dist/genexus-ide-ui/{p-ded7444c.entry.js → p-5da3e999.entry.js} +16 -17
  656. package/dist/genexus-ide-ui/p-5da3e999.entry.js.map +1 -0
  657. package/dist/genexus-ide-ui/{p-3ecdb582.entry.js → p-5e05f830.entry.js} +33 -39
  658. package/dist/genexus-ide-ui/p-5e05f830.entry.js.map +1 -0
  659. package/dist/genexus-ide-ui/{p-fe490103.entry.js → p-6168d48c.entry.js} +165 -174
  660. package/dist/genexus-ide-ui/p-6168d48c.entry.js.map +1 -0
  661. package/dist/genexus-ide-ui/{p-76c3fc51.entry.js → p-66d9269a.entry.js} +17 -22
  662. package/dist/genexus-ide-ui/p-66d9269a.entry.js.map +1 -0
  663. package/dist/genexus-ide-ui/{p-038c3f9b.entry.js → p-6dc05a27.entry.js} +4 -5
  664. package/dist/genexus-ide-ui/p-6dc05a27.entry.js.map +1 -0
  665. package/dist/genexus-ide-ui/{p-cd397078.entry.js → p-75e1aa31.entry.js} +5 -6
  666. package/dist/genexus-ide-ui/p-75e1aa31.entry.js.map +1 -0
  667. package/dist/genexus-ide-ui/{p-e502c2fd.entry.js → p-7782e1b8.entry.js} +56 -61
  668. package/dist/genexus-ide-ui/p-7782e1b8.entry.js.map +1 -0
  669. package/dist/genexus-ide-ui/{p-1bc2613e.entry.js → p-7cedb0f0.entry.js} +66 -69
  670. package/dist/genexus-ide-ui/p-7cedb0f0.entry.js.map +1 -0
  671. package/dist/genexus-ide-ui/{p-bac13202.entry.js → p-844b7117.entry.js} +17 -17
  672. package/dist/genexus-ide-ui/{p-311eedf3.js → p-857866f8.js} +8 -9
  673. package/dist/genexus-ide-ui/p-857866f8.js.map +1 -0
  674. package/dist/genexus-ide-ui/{p-74c81ca3.entry.js → p-8636a0bd.entry.js} +3 -3
  675. package/dist/genexus-ide-ui/{p-d095a37c.entry.js → p-8b046b4b.entry.js} +9 -10
  676. package/dist/genexus-ide-ui/p-8b046b4b.entry.js.map +1 -0
  677. package/dist/genexus-ide-ui/{p-4b79c3ab.entry.js → p-8f1f4126.entry.js} +10 -12
  678. package/dist/genexus-ide-ui/p-8f1f4126.entry.js.map +1 -0
  679. package/dist/genexus-ide-ui/{p-c6c955a3.entry.js → p-95f831a8.entry.js} +3 -3
  680. package/dist/genexus-ide-ui/{p-c91af626.entry.js → p-970d16ca.entry.js} +15 -15
  681. package/dist/genexus-ide-ui/{p-c91af626.entry.js.map → p-970d16ca.entry.js.map} +1 -1
  682. package/dist/genexus-ide-ui/{p-e4c2e200.entry.js → p-9a39e49c.entry.js} +6 -6
  683. package/dist/genexus-ide-ui/{p-beea29fa.entry.js → p-9a9ee1ee.entry.js} +3 -3
  684. package/dist/genexus-ide-ui/{p-961cd6c2.entry.js → p-9b238bf7.entry.js} +174 -181
  685. package/dist/genexus-ide-ui/p-9b238bf7.entry.js.map +1 -0
  686. package/dist/genexus-ide-ui/{p-54fbb568.entry.js → p-9c690c36.entry.js} +14 -17
  687. package/dist/genexus-ide-ui/p-9c690c36.entry.js.map +1 -0
  688. package/dist/genexus-ide-ui/{p-4c717aa7.entry.js → p-a6029d9a.entry.js} +117 -131
  689. package/dist/genexus-ide-ui/p-a6029d9a.entry.js.map +1 -0
  690. package/dist/genexus-ide-ui/{p-833c3585.entry.js → p-a86a8692.entry.js} +33 -39
  691. package/dist/genexus-ide-ui/p-a86a8692.entry.js.map +1 -0
  692. package/dist/genexus-ide-ui/{p-2a6683e1.entry.js → p-a8cc41e4.entry.js} +59 -62
  693. package/dist/genexus-ide-ui/p-a8cc41e4.entry.js.map +1 -0
  694. package/dist/genexus-ide-ui/{p-3d4355b4.entry.js → p-ac0438d6.entry.js} +9 -10
  695. package/dist/genexus-ide-ui/p-ac0438d6.entry.js.map +1 -0
  696. package/dist/genexus-ide-ui/{p-56331289.entry.js → p-b1833747.entry.js} +38 -45
  697. package/dist/genexus-ide-ui/p-b1833747.entry.js.map +1 -0
  698. package/dist/genexus-ide-ui/{p-6b957e82.entry.js → p-b211bca8.entry.js} +2 -2
  699. package/dist/genexus-ide-ui/{p-84618917.entry.js → p-be794132.entry.js} +229 -236
  700. package/dist/genexus-ide-ui/p-be794132.entry.js.map +1 -0
  701. package/dist/genexus-ide-ui/{p-a790c4c9.entry.js → p-bfd9066c.entry.js} +9 -9
  702. package/dist/genexus-ide-ui/p-bfd9066c.entry.js.map +1 -0
  703. package/dist/genexus-ide-ui/{p-9b5cb6b9.entry.js → p-c30b2104.entry.js} +7 -9
  704. package/dist/genexus-ide-ui/p-c30b2104.entry.js.map +1 -0
  705. package/dist/genexus-ide-ui/{p-fa18a70c.entry.js → p-c5cca204.entry.js} +17 -20
  706. package/dist/genexus-ide-ui/p-c5cca204.entry.js.map +1 -0
  707. package/dist/genexus-ide-ui/p-cdf8b082.entry.js +338 -0
  708. package/dist/genexus-ide-ui/p-cdf8b082.entry.js.map +1 -0
  709. package/dist/genexus-ide-ui/{p-8f00263d.entry.js → p-d1cc4724.entry.js} +18 -13
  710. package/dist/genexus-ide-ui/p-d1cc4724.entry.js.map +1 -0
  711. package/dist/genexus-ide-ui/{p-1dd7be84.entry.js → p-daa29451.entry.js} +14 -17
  712. package/dist/genexus-ide-ui/p-daa29451.entry.js.map +1 -0
  713. package/dist/genexus-ide-ui/{p-67762237.entry.js → p-db4750ff.entry.js} +139 -148
  714. package/dist/genexus-ide-ui/p-db4750ff.entry.js.map +1 -0
  715. package/dist/genexus-ide-ui/{p-48826a6f.entry.js → p-db4f756a.entry.js} +123 -135
  716. package/dist/genexus-ide-ui/p-db4f756a.entry.js.map +1 -0
  717. package/dist/genexus-ide-ui/{p-3e936f26.entry.js → p-e1d75f00.entry.js} +3 -3
  718. package/dist/genexus-ide-ui/{p-3e936f26.entry.js.map → p-e1d75f00.entry.js.map} +1 -1
  719. package/dist/genexus-ide-ui/{p-a59a07e2.entry.js → p-e26e05c7.entry.js} +13 -19
  720. package/dist/genexus-ide-ui/p-e26e05c7.entry.js.map +1 -0
  721. package/dist/genexus-ide-ui/{p-2027c939.entry.js → p-e37e95e7.entry.js} +4 -4
  722. package/dist/genexus-ide-ui/{p-4cbc8a8b.entry.js → p-e5571f49.entry.js} +26 -28
  723. package/dist/genexus-ide-ui/p-e5571f49.entry.js.map +1 -0
  724. package/dist/genexus-ide-ui/p-eb51429c.entry.js +317 -0
  725. package/dist/genexus-ide-ui/p-eb51429c.entry.js.map +1 -0
  726. package/dist/genexus-ide-ui/{p-29a026bb.entry.js → p-ec01c70c.entry.js} +15 -18
  727. package/dist/genexus-ide-ui/p-ec01c70c.entry.js.map +1 -0
  728. package/dist/genexus-ide-ui/{p-5ac47c69.js → p-ede7bd20.js} +6885 -6346
  729. package/dist/genexus-ide-ui/p-ede7bd20.js.map +1 -0
  730. package/dist/genexus-ide-ui/{p-e7fb3ee3.entry.js → p-f2bd9044.entry.js} +2 -2
  731. package/dist/genexus-ide-ui/{p-50f304fe.entry.js → p-f315c6e0.entry.js} +12 -14
  732. package/dist/genexus-ide-ui/{p-50f304fe.entry.js.map → p-f315c6e0.entry.js.map} +1 -1
  733. package/dist/genexus-ide-ui/{p-0550fd5f.entry.js → p-f52bcdac.entry.js} +2 -2
  734. package/dist/genexus-ide-ui/{p-a05d4963.entry.js → p-f5879a41.entry.js} +10 -10
  735. package/dist/genexus-ide-ui/{p-a05d4963.entry.js.map → p-f5879a41.entry.js.map} +1 -1
  736. package/dist/genexus-ide-ui/{p-f3f35e5c.entry.js → p-f5a48b33.entry.js} +6 -9
  737. package/dist/genexus-ide-ui/p-f5a48b33.entry.js.map +1 -0
  738. package/dist/genexus-ide-ui/{p-1e8f5da5.entry.js → p-f6ceb01a.entry.js} +4 -5
  739. package/dist/genexus-ide-ui/p-f6ceb01a.entry.js.map +1 -0
  740. package/dist/types/common/common.d.ts +1 -1
  741. package/dist/types/components/bpm/application-declaration/bpm-app-declaration.d.ts +22 -44
  742. package/dist/types/components/{_helpers → chat}/chat-container/chat-container.d.ts +13 -2
  743. package/dist/types/components/chat/chat-welcome/chat-welcome.d.ts +39 -0
  744. package/dist/types/components/chat/chat-welcome/gx-ide-assets/chat-welcome/helpers.d.ts +1 -0
  745. package/dist/types/components/{_helpers/chat-container → chat}/code-render.d.ts +1 -1
  746. package/dist/types/components.d.ts +75 -10
  747. package/dist/types/index.d.ts +1 -1
  748. package/dist/types/showcase/chat-container/callbacks.d.ts +1 -1
  749. package/dist/types/showcase/chat-container/chat.showcase.d.ts +15 -0
  750. package/package.json +5 -5
  751. package/dist/cjs/MERCURY_ASSETS-6bbcc011.js +0 -5
  752. package/dist/cjs/MERCURY_ASSETS-6bbcc011.js.map +0 -1
  753. package/dist/cjs/assets-manager-7227a74b.js +0 -7
  754. package/dist/cjs/assets-manager-7227a74b.js.map +0 -1
  755. package/dist/cjs/code-render-db7cb770.js +0 -59
  756. package/dist/cjs/code-render-db7cb770.js.map +0 -1
  757. package/dist/cjs/common-72f91a78.js.map +0 -1
  758. package/dist/cjs/form-validation-178cf461.js.map +0 -1
  759. package/dist/cjs/gx-ide-chat-container.cjs.entry.js +0 -62
  760. package/dist/cjs/gx-ide-chat-container.cjs.entry.js.map +0 -1
  761. package/dist/cjs/helpers-30f109a4.js.map +0 -1
  762. package/dist/cjs/locale-ff30a5f3.js.map +0 -1
  763. package/dist/collection/components/_helpers/chat-container/chat-container.css +0 -204
  764. package/dist/collection/components/_helpers/chat-container/chat-container.js +0 -137
  765. package/dist/collection/components/_helpers/chat-container/chat-container.js.map +0 -1
  766. package/dist/collection/components/_helpers/chat-container/code-render.js +0 -46
  767. package/dist/collection/components/_helpers/chat-container/code-render.js.map +0 -1
  768. package/dist/components/assets-manager.js +0 -5
  769. package/dist/components/assets-manager.js.map +0 -1
  770. package/dist/esm/MERCURY_ASSETS-bbdf7018.js +0 -3
  771. package/dist/esm/MERCURY_ASSETS-bbdf7018.js.map +0 -1
  772. package/dist/esm/assets-manager-0d129105.js +0 -5
  773. package/dist/esm/assets-manager-0d129105.js.map +0 -1
  774. package/dist/esm/code-render-6cbb0e63.js +0 -56
  775. package/dist/esm/code-render-6cbb0e63.js.map +0 -1
  776. package/dist/esm/common-ccb4504a.js.map +0 -1
  777. package/dist/esm/gx-ide-chat-container.entry.js +0 -58
  778. package/dist/esm/gx-ide-chat-container.entry.js.map +0 -1
  779. package/dist/esm/helpers-10479d69.js.map +0 -1
  780. package/dist/esm/locale-e5107fad.js.map +0 -1
  781. package/dist/genexus-ide-ui/p-007173ef.entry.js.map +0 -1
  782. package/dist/genexus-ide-ui/p-038c3f9b.entry.js.map +0 -1
  783. package/dist/genexus-ide-ui/p-1a74d49a.entry.js +0 -231
  784. package/dist/genexus-ide-ui/p-1a74d49a.entry.js.map +0 -1
  785. package/dist/genexus-ide-ui/p-1bc2613e.entry.js.map +0 -1
  786. package/dist/genexus-ide-ui/p-1dd7be84.entry.js.map +0 -1
  787. package/dist/genexus-ide-ui/p-1e8f5da5.entry.js.map +0 -1
  788. package/dist/genexus-ide-ui/p-22b8bdb1.entry.js.map +0 -1
  789. package/dist/genexus-ide-ui/p-289c3290.js.map +0 -1
  790. package/dist/genexus-ide-ui/p-29a026bb.entry.js.map +0 -1
  791. package/dist/genexus-ide-ui/p-2a6683e1.entry.js.map +0 -1
  792. package/dist/genexus-ide-ui/p-311eedf3.js.map +0 -1
  793. package/dist/genexus-ide-ui/p-31beae9e.entry.js.map +0 -1
  794. package/dist/genexus-ide-ui/p-3d4355b4.entry.js.map +0 -1
  795. package/dist/genexus-ide-ui/p-3ecdb582.entry.js.map +0 -1
  796. package/dist/genexus-ide-ui/p-48826a6f.entry.js.map +0 -1
  797. package/dist/genexus-ide-ui/p-4b79c3ab.entry.js.map +0 -1
  798. package/dist/genexus-ide-ui/p-4c717aa7.entry.js.map +0 -1
  799. package/dist/genexus-ide-ui/p-4cbc8a8b.entry.js.map +0 -1
  800. package/dist/genexus-ide-ui/p-530c32aa.entry.js.map +0 -1
  801. package/dist/genexus-ide-ui/p-54fbb568.entry.js.map +0 -1
  802. package/dist/genexus-ide-ui/p-55c87f23.entry.js +0 -287
  803. package/dist/genexus-ide-ui/p-55c87f23.entry.js.map +0 -1
  804. package/dist/genexus-ide-ui/p-56331289.entry.js.map +0 -1
  805. package/dist/genexus-ide-ui/p-5ac47c69.js.map +0 -1
  806. package/dist/genexus-ide-ui/p-67762237.entry.js.map +0 -1
  807. package/dist/genexus-ide-ui/p-68969051.entry.js.map +0 -1
  808. package/dist/genexus-ide-ui/p-6e4208d8.js +0 -9
  809. package/dist/genexus-ide-ui/p-6e4208d8.js.map +0 -1
  810. package/dist/genexus-ide-ui/p-76c3fc51.entry.js.map +0 -1
  811. package/dist/genexus-ide-ui/p-833c3585.entry.js.map +0 -1
  812. package/dist/genexus-ide-ui/p-84618917.entry.js.map +0 -1
  813. package/dist/genexus-ide-ui/p-8f00263d.entry.js.map +0 -1
  814. package/dist/genexus-ide-ui/p-961cd6c2.entry.js.map +0 -1
  815. package/dist/genexus-ide-ui/p-9a609b51.js.map +0 -1
  816. package/dist/genexus-ide-ui/p-9b5cb6b9.entry.js.map +0 -1
  817. package/dist/genexus-ide-ui/p-9ddea83b.js +0 -146
  818. package/dist/genexus-ide-ui/p-9ddea83b.js.map +0 -1
  819. package/dist/genexus-ide-ui/p-a59a07e2.entry.js.map +0 -1
  820. package/dist/genexus-ide-ui/p-a790c4c9.entry.js.map +0 -1
  821. package/dist/genexus-ide-ui/p-ba7d1472.entry.js.map +0 -1
  822. package/dist/genexus-ide-ui/p-be8a59fd.js +0 -107
  823. package/dist/genexus-ide-ui/p-be8a59fd.js.map +0 -1
  824. package/dist/genexus-ide-ui/p-c747afac.entry.js.map +0 -1
  825. package/dist/genexus-ide-ui/p-cd397078.entry.js.map +0 -1
  826. package/dist/genexus-ide-ui/p-d095a37c.entry.js.map +0 -1
  827. package/dist/genexus-ide-ui/p-db9c3b37.entry.js +0 -85
  828. package/dist/genexus-ide-ui/p-db9c3b37.entry.js.map +0 -1
  829. package/dist/genexus-ide-ui/p-de7f0c1f.entry.js.map +0 -1
  830. package/dist/genexus-ide-ui/p-ded7444c.entry.js.map +0 -1
  831. package/dist/genexus-ide-ui/p-e502c2fd.entry.js.map +0 -1
  832. package/dist/genexus-ide-ui/p-eea944d4.entry.js.map +0 -1
  833. package/dist/genexus-ide-ui/p-f3f35e5c.entry.js.map +0 -1
  834. package/dist/genexus-ide-ui/p-fa18a70c.entry.js.map +0 -1
  835. package/dist/genexus-ide-ui/p-fdf41406.entry.js.map +0 -1
  836. package/dist/genexus-ide-ui/p-fe490103.entry.js.map +0 -1
  837. package/dist/genexus-ide-ui/p-fecc50e4.entry.js.map +0 -1
  838. /package/dist/genexus-ide-ui/{p-59ed3f39.entry.js.map → p-02fc47cd.entry.js.map} +0 -0
  839. /package/dist/genexus-ide-ui/{p-683cb15e.entry.js.map → p-2be58a7a.entry.js.map} +0 -0
  840. /package/dist/genexus-ide-ui/{p-3b8db39e.entry.js.map → p-39c527ff.entry.js.map} +0 -0
  841. /package/dist/genexus-ide-ui/{p-50b22f23.entry.js.map → p-4d929210.entry.js.map} +0 -0
  842. /package/dist/genexus-ide-ui/{p-bac13202.entry.js.map → p-844b7117.entry.js.map} +0 -0
  843. /package/dist/genexus-ide-ui/{p-74c81ca3.entry.js.map → p-8636a0bd.entry.js.map} +0 -0
  844. /package/dist/genexus-ide-ui/{p-c6c955a3.entry.js.map → p-95f831a8.entry.js.map} +0 -0
  845. /package/dist/genexus-ide-ui/{p-e4c2e200.entry.js.map → p-9a39e49c.entry.js.map} +0 -0
  846. /package/dist/genexus-ide-ui/{p-beea29fa.entry.js.map → p-9a9ee1ee.entry.js.map} +0 -0
  847. /package/dist/genexus-ide-ui/{p-6b957e82.entry.js.map → p-b211bca8.entry.js.map} +0 -0
  848. /package/dist/genexus-ide-ui/{p-2027c939.entry.js.map → p-e37e95e7.entry.js.map} +0 -0
  849. /package/dist/genexus-ide-ui/{p-e7fb3ee3.entry.js.map → p-f2bd9044.entry.js.map} +0 -0
  850. /package/dist/genexus-ide-ui/{p-0550fd5f.entry.js.map → p-f52bcdac.entry.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["manageModuleReferencesCss","CSS_BUNDLES","GxManageModuleReferencesV2","this","renderedFirstTime","_GxManageModuleReferencesV2_filterIcon","set","getIconPath","category","name","colorType","_GxManageModuleReferencesV2_moduleIcon","onProgress","message","progress","state","data","selectedModuleAction","Object","assign","progressValue","progressState","handleModuleChange","event","selectedModuleId","detail","rowsId","selectedModule","modulesMap","get","moduleActionHandler","module","actionCompleted","closeProgressBar","executeActionCallbackHandler","async","executeActionCallback","moduleSelectedVersionId","id","selectedVersion","moduleSelectedVersionAction","action","selectedServerId","serverSelectedCallbackHandler","showModuleMenu","e","serverContextMenuCallback","buttonBoundingClientRect","target","getBoundingClientRect","selection","clientX","x","clientY","y","searchModulesFilterHandler","searchModulesFilterValue","trim","toLowerCase","getFilteredServerModules","serverModulesExtended","filter","nameMatch","includes","descriptionMatch","description","actionMatch","selectedButtonFilter","filtered","renderGridOrEmptyState","filteredServerModules","length","renderModulesVersionsGrid","renderEmptyStateModules","h","rowSelectionMode","part","class","onSelectionChanged","settingable","size","map","rowid","key","selected","type","color","moduleVersionIconColor","disabled","fit","onClick","stateIconSrc","__classPrivateFieldGet","stateTitle","_componentLocale","modules","noModulesFilter","moduleId","foundModule","find","moduleAction","moduleCurrentVersion","currentVersion","renderVersionIcon","renderVersionName","renderVersionWarningMessage","warningMessage","renderInstalledVersion","caption","cssClass","modulesInformation","moduleProperties","installed","notInstalled","moduleVersionsValueChangedHandler","selectedVersionId","value","updateSelectedModuleVersion","moduleVersionsItemChangedHandler","moduleSelectedVersion","versions","version","updatedSelectedModule","updatedModuleIndex","findIndex","renderModuleVersions","label","availableVersions","labelPosition","centerLabel","onValueChanged","loadingServer","item","onItemSelected","selectedButtonChangedHandler","serverItemSelectedHandler","serverId","serverValueChangedHandler","reloadServer","reload","serverSelectedCallback","serverModules","clear","modulesSelectedVersionMap","forEach","extendedModuleData","push","progressBarCloseHandler","setTimeout","Map","loadingServerHandler","loading","loaderEl","show","componentDidRender","componentDidRenderFirstTime","emit","componentName","componentWillLoad","Locale","getComponentStrings","el","componentDidLoad","servers","render","Host","model","noContentPadding","noAboveFooterPadding","noBorderAboveFooter","containerTitle","displayTitle","selectServer","disableFilter","showServerCommands","icon","searchModules","reduced","fullWidth","onSelectedButtonChanged","buttonsContainer","browse","updates","ref","serversDetail","renderModuleDataProperties","properties","emptyState","title","stateDescription","slot","stateType","noBorder","progressBar","defaultCaption","active","closeType","closedCallback","loaderTitle","container","borderRadius","abortTime"],"sources":["src/components/modules/manage-module-references-v2/manage-module-references.scss?tag=gx-ide-manage-module-references-v2&encapsulation=shadow","src/components/modules/manage-module-references-v2/manage-module-references-v2.tsx"],"sourcesContent":["@import \"../../../global/gx-ide-common.scss\";\n@import \"../../../global/gx-ide-mixins.scss\";\n\n/*--- General ---*/\np,\nul {\n font-size: var(--font-size-lg);\n margin: 0;\n}\np {\n line-height: 1.6em;\n}\n/*--- Header ---*/\n.header {\n align-items: center;\n grid-template-columns: 1fr auto;\n grid-template-rows: 1fr;\n}\n.main {\n display: grid;\n //grid-template-columns: 1fr 2fr 1fr;\n grid-template-columns: 1fr 1fr;\n grid-template-rows: 1fr;\n height: 100%;\n overflow: auto;\n}\nch-grid-columnset {\n display: none;\n}\nch-grid-row[selected] {\n gxg-icon[data-action=\"install\"] {\n //WA to improve visibility\n filter: brightness(2);\n }\n}\n.grid-cell-module {\n &__info {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: var(--mer-spacing--3xs);\n }\n &__name {\n font-weight: var(--mer-font__weight--bold);\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--sm);\n }\n &__name,\n &__description {\n line-height: 1.55em;\n }\n &__description {\n padding-inline-start: 36px;\n }\n}\n\n/*--- Servers Container ---*/\n.grid-container {\n height: 100%;\n overflow: auto;\n gx-ide-empty-state {\n height: 100%;\n }\n}\n.servers-container {\n display: none;\n height: 100%;\n &__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--gxg-list-box-main__padding) var(--gxg-list-box-main__padding)\n 0 var(--gxg-list-box-main__padding);\n\n gxg-button {\n width: 100%;\n }\n }\n}\n\n/*--- Modules (Header) ---*/\n.modules {\n &__header {\n padding: var(--gxg-list-box-main__padding);\n display: flex;\n flex-direction: column;\n gap: var(--mer-spacing--xs);\n }\n &__combo-container {\n display: flex;\n flex-direction: column;\n gap: var(--mer-spacing--xs);\n }\n &__server-commands {\n display: flex;\n gap: var(--mer-spacing--xs);\n }\n &__combo {\n gxg-combo-box {\n flex: 1;\n }\n display: flex;\n flex-direction: row;\n gap: var(--mer-spacing--xs);\n }\n &__container {\n border-inline-end: var(--mer-border__width--sm) solid\n var(--gx-ide-container-border-color);\n display: grid;\n grid-template-rows: auto 1fr;\n height: 100%;\n overflow: auto;\n }\n &__main {\n display: grid;\n grid-template-rows: auto 1fr;\n height: 100%;\n overflow: auto;\n\n &-header {\n display: flex;\n padding: var(--mer-spacing--xs);\n flex-direction: column;\n gap: var(--mer-spacing--xs);\n }\n }\n}\n\n/*--- Module Info ---*/\n.module-info {\n display: grid;\n grid-template-rows: auto 1fr;\n height: 100%;\n overflow: auto;\n\n &__title {\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--xs);\n }\n\n &__name {\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--sm);\n --ds-icon-size-box--regular: 24px;\n --ds-icon-size--regular: 24px;\n font-weight: var(--mer-font__weight--bold);\n }\n\n &__header {\n padding: var(--gx-ide-container__padding);\n display: flex;\n flex-direction: column;\n gap: var(--mer-spacing--xs);\n border-block-end: var(--mer-border__width--sm) solid\n var(--gx-ide-container-border-color);\n }\n\n &__action-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: var(--mer-spacing--xs);\n &:before {\n content: \"\";\n width: var(--mer-spacing--xs);\n height: var(--mer-spacing--xs);\n border-radius: 50%;\n display: block;\n background-color: var(--mer-icon__primary--disabled);\n }\n &--installed:before {\n background-color: var(--mer-icon__primary);\n }\n &--uninstallable:before {\n background-color: var(--mer-icon__warning);\n }\n }\n\n &__warning-message {\n margin-block-start: var(--mer-spacing--2xs);\n background-color: var(--mer-color__tinted-yellow--5);\n color: var(--mer-text__on-elevation);\n border: var(--mer-border__width--sm) solid var(--mer-border-color__warning);\n border-radius: var(--mer-border__radius--sm);\n padding: var(--mer-spacing--xs) var(--mer-spacing--md);\n }\n\n &__divider {\n width: calc(100% - var(--gx-ide-container__padding) * 4);\n padding: 0 var(--gx-ide-container__padding);\n margin: 0 auto;\n border: 0;\n border-block-end: var(--mer-border__width--sm) solid\n var(--gx-ide-container-border-color);\n }\n &__properties {\n display: flex;\n flex-direction: column;\n padding: var(--gx-ide-container__padding);\n gap: var(--mer-spacing--xs);\n overflow: auto;\n }\n}\n\n.md-property {\n display: grid;\n gap: var(--mer-spacing--xs);\n\n &--inline {\n grid-template-columns: auto 1fr;\n }\n &--block {\n }\n &__key {\n font-weight: var(--font-weight-bold);\n max-width: 150px;\n }\n &__value {\n font-size: var(--mer-font__size--2xs);\n }\n &__key,\n &__value {\n > * {\n display: inline-block;\n }\n }\n &__list {\n display: flex;\n flex-direction: column;\n gap: var(--mer-spacing--xs);\n > ul {\n margin: 0;\n padding: 0;\n list-style-type: none;\n display: flex;\n flex-direction: column;\n gap: var(--mer-spacing--2xs);\n margin-inline-start: var(--mer-spacing--xs);\n\n li {\n position: relative;\n padding-inline-start: 12px;\n line-height: var(--ds-base-font-line-height--comfortable);\n &::before {\n content: \"\";\n position: absolute;\n left: 0;\n top: 7px;\n display: inline-block;\n width: var(--mer-spacing--2xs);\n height: var(--mer-spacing--2xs);\n background-color: var(--mer-text__on-surface);\n }\n }\n }\n }\n}\n\n.md-property,\n.md-property__list {\n border-block-end: var(--mer-border__width--sm) solid\n var(--gx-ide-container-border-color);\n padding-block-end: var(--mer-spacing--xs);\n\n &:last-child {\n border-block-end: 0;\n padding-block-end: 0;\n }\n}\n\ngxg-ide-loader {\n border-radius: var(--mer-border__radius--md);\n}\n\n.button-wrapper {\n display: grid;\n align-items: center;\n justify-content: center;\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Event,\n Element,\n EventEmitter,\n State,\n Watch\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport { Color } from \"@genexus/gemini\";\nimport { topStateBarType } from \"@genexus/gemini\";\nimport { TabularGridSelectionChangedEvent } from \"@genexus/chameleon-controls-library\";\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n/* CUSTOM IMPORTS */\nimport {\n ModuleServerData,\n ModuleData,\n ModuleActionType,\n ModuleFilterType,\n ExtendedModuleData\n} from \"../types\";\nimport { renderModuleDataProperties } from \"../../../common/common\";\nimport { Locale } from \"../../../common/locale\";\nimport { ContextMenuInfo } from \"../../../common/types\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n // \"utils/form\",\n // \"utils/layout\",\n // \"utils/typography\",\n // \"components/button\",\n // \"components/checkbox\",\n // \"components/edit\",\n \"components/tabular-grid\"\n];\n\n@Component({\n tag: \"gx-ide-manage-module-references-v2\",\n styleUrl: \"manage-module-references.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/manage-module-references-v2\"]\n})\nexport class GxManageModuleReferencesV2 {\n // 1.OWN PROPERTIES | WATCH'S //\n\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n private renderedFirstTime = false;\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeManageModuleReferencesV2Element;\n private loaderEl!: HTMLGxgIdeLoaderElement;\n private serversDetail!: HTMLDivElement;\n\n #filterIcon = getIconPath({\n category: \"system\",\n name: \"filters\",\n colorType: \"on-elevation\"\n });\n #moduleIcon = getIconPath({\n category: \"objects\",\n name: \"module\"\n });\n\n // 3.STATE() VARIABLES //\n\n // Filtering modules\n @State() searchModulesFilterValue: string = \"\";\n @State() selectedButtonFilter: ModuleFilterType = \"browse\";\n @State() serverModules: ModuleData[] = [];\n @State() serverModulesExtended: ExtendedModuleData[] = [];\n @State() filteredServerModules: ExtendedModuleData[] = [];\n @State() modulesMap: Map<string, ExtendedModuleData> = new Map();\n\n @State() selectedModule: ExtendedModuleData;\n @State() selectedServerId: string;\n @State() selectedModuleAction: ActionInfo = {\n message: \"\",\n progress: 0,\n state: \"in-progress\"\n };\n @State() modulesSelectedVersionMap: Map<string, string> = new Map();\n @State() actionCompleted = true;\n @State() closeProgressBar = true;\n @State() progressValue: number = 0;\n @State() progressState: topStateBarType = \"in-progress\";\n @State() loadingServer = false;\n @Watch(\"loadingServer\")\n loadingServerHandler(loading: boolean) {\n if (loading) {\n this.loaderEl.show = true;\n } else {\n this.loaderEl.show = false;\n }\n }\n\n // 4.PUBLIC PROPERTY API //\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * List of module servers currently cataloged\n */\n @Prop() readonly servers: ModuleServerData[] = [];\n\n /**\n * Callback invoked when a server is selected. Returns the set of modules available on that server.\n */\n @Prop() readonly serverSelectedCallback: ServerSelectedCallback;\n\n /**\n * Callback invoked when the user wants to execute the action corresponding to a selected module. When the action begins to be executed, the component must be able to show the progress of the action. For this, the onProgress parameter is available, which is in turn a callback used by the host to notify the progress by text message and percentage.\n */\n @Prop() readonly executeActionCallback: ExecuteActionCallback;\n\n /**\n * Callback invoked when an element is right clicked on servers list\n */\n @Prop() readonly serverContextMenuCallback: ServerContextMenuCallback;\n\n /**\n * Allows you to hide the button (...) that executes serverContextMenuCallback, if we do not implement the commands in a first version\n */\n @Prop() readonly showServerCommands: boolean = false;\n\n // 5.EVENTS (EMIT) //\n\n /**\n * This event is emitted once just after the component is fully loaded and the first render() occurs\n */\n @Event() componentDidRenderFirstTime: EventEmitter<boolean>;\n\n // 6.COMPONENT LIFECYCLE EVENTS //\n\n componentDidRender() {\n if (!this.renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this._componentLocale.componentName\n );\n this.renderedFirstTime = true;\n }\n }\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n async componentDidLoad() {\n await this.serverSelectedCallbackHandler(this.servers[0].id, false);\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n // 9.LOCAL METHODS //\n\n /**\n * Callback invoked to get the progress when module is performing an action\n */\n private onProgress = (\n message: string,\n progress: number,\n state: topStateBarType\n ): void => {\n const data = { message, progress, state };\n this.selectedModuleAction = { ...data };\n this.progressValue = this.selectedModuleAction.progress;\n this.progressState = this.selectedModuleAction.state;\n };\n\n /**\n * Used for changing the selected module\n */\n private handleModuleChange = (\n event: CustomEvent<TabularGridSelectionChangedEvent>\n ) => {\n const selectedModuleId = event.detail.rowsId[0];\n this.selectedModule = this.modulesMap.get(selectedModuleId);\n };\n\n private moduleActionHandler = (module: ModuleData) => () => {\n this.actionCompleted = false;\n this.closeProgressBar = false;\n this.executeActionCallbackHandler(module);\n };\n\n /**\n * Perform an action relative to a module using callbackExecuteAction callback and receive the state of that action with onProgress callback\n */\n private executeActionCallbackHandler = async (module: ModuleData) => {\n if (this.executeActionCallback) {\n this.actionCompleted = false;\n const moduleSelectedVersionId = this.modulesMap.get(module.id)\n .selectedVersion.id;\n const moduleSelectedVersionAction = this.modulesMap.get(module.id)\n .selectedVersion.action;\n const actionCompleted = await this.executeActionCallback(\n this.selectedServerId,\n module.id,\n moduleSelectedVersionId,\n moduleSelectedVersionAction,\n this.onProgress\n );\n if (actionCompleted) {\n this.serverSelectedCallbackHandler(this.selectedServerId, false);\n }\n this.actionCompleted = true;\n }\n };\n\n private showModuleMenu = async (e: MouseEvent) => {\n if (this.serverContextMenuCallback) {\n const buttonBoundingClientRect = (\n e.target as HTMLElement\n ).getBoundingClientRect();\n await this.serverContextMenuCallback({\n selection: [this.selectedServerId],\n clientX: buttonBoundingClientRect.x,\n clientY: buttonBoundingClientRect.y\n });\n }\n };\n\n private searchModulesFilterHandler = (e: CustomEvent<string>) => {\n this.searchModulesFilterValue = e.detail.trim().toLowerCase();\n };\n\n private getFilteredServerModules = (): ExtendedModuleData[] => {\n return this.serverModulesExtended.filter(module => {\n // Filter conditions\n const nameMatch = module.selectedVersion.name\n .toLowerCase()\n .includes(this.searchModulesFilterValue);\n const descriptionMatch = module.selectedVersion.description\n .toLowerCase()\n .includes(this.searchModulesFilterValue);\n let actionMatch;\n if (this.selectedButtonFilter === \"browse\") {\n // If browse is selected, display all\n actionMatch = true;\n } else if (this.selectedButtonFilter === \"installed\") {\n actionMatch = !!(\n module.selectedVersion.action === \"update\" ||\n module.selectedVersion.action === \"restore\"\n );\n } else if (this.selectedButtonFilter === \"updates\") {\n actionMatch = !!(module.selectedVersion.action === \"update\");\n }\n\n const filtered = (nameMatch || descriptionMatch) && actionMatch;\n return filtered;\n });\n };\n\n // 9.LOCAL METHODS > RENDERS //\n private renderGridOrEmptyState = () => {\n this.filteredServerModules = this.getFilteredServerModules();\n if (this.filteredServerModules.length > 0) {\n return this.renderModulesVersionsGrid();\n } else {\n return this.renderEmptyStateModules();\n }\n };\n\n private renderModulesVersionsGrid = (): HTMLChTabularGridElement => {\n return (\n <ch-tabular-grid\n rowSelectionMode=\"single\"\n part=\"ch-grid-pending-commits\"\n class=\"tabular-grid servers-detail no-border\"\n onSelectionChanged={this.handleModuleChange}\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n settingable={false}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n settingable={false}\n size=\"min-content\"\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n\n {this.filteredServerModules.map((module: ExtendedModuleData) => (\n <ch-tabular-grid-row\n rowid={module.id}\n key={module.id}\n selected={\n this.selectedModule && this.selectedModule.id === module.id\n }\n class=\"tabular-grid-row\"\n >\n <ch-tabular-grid-cell class=\"grid-cell-module__info tabular-grid-cell\">\n <span class=\"grid-cell-module__name\">\n <gxg-icon\n type=\"objects/module\"\n data-action={module.selectedVersion.action}\n color={this.moduleVersionIconColor(module.id)}\n size=\"small\"\n ></gxg-icon>\n {module.selectedVersion.name}\n </span>\n <span class=\"grid-cell-module__description\">\n {module.selectedVersion.description}\n </span>\n </ch-tabular-grid-cell>\n\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.selectedModule && this.selectedModule.id === module.id ? (\n <div class=\"button-wrapper\">\n <gxg-button\n disabled={\n !this.actionCompleted ||\n module.selectedVersion.action === \"incompatible\" ||\n module.selectedVersion.action === \"not-installable\"\n }\n fit\n part=\"module-action\"\n onClick={this.moduleActionHandler(module)}\n >\n {module.selectedVersion.action}\n </gxg-button>\n </div>\n ) : null}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid>\n );\n };\n\n private renderEmptyStateModules = () => {\n return (\n <gx-ide-empty-state\n stateIconSrc={this.#filterIcon}\n stateTitle={this._componentLocale.modules.noModulesFilter}\n ></gx-ide-empty-state>\n );\n };\n\n private moduleVersionIconColor = (moduleId: string): Color => {\n const foundModule = this.serverModulesExtended.find(module => {\n return module.id === moduleId;\n });\n if (foundModule) {\n const moduleAction = foundModule.selectedVersion.action;\n const moduleCurrentVersion = foundModule.currentVersion;\n if (\n moduleAction === \"not-installable\" ||\n moduleAction === \"incompatible\"\n ) {\n return \"warning\";\n } else if (!moduleCurrentVersion) {\n return \"mercury-primary-disabled\";\n } else {\n return \"mercury-primary\";\n }\n }\n\n return \"mercury-primary\";\n };\n\n private renderVersionIcon = () => {\n return (\n <gxg-icon\n type=\"objects/module\"\n color={this.moduleVersionIconColor(this.selectedModule.id)}\n ></gxg-icon>\n );\n };\n\n /* module details/information renders*/\n private renderVersionName = () => {\n return (\n <gxg-title part=\"module-info__name\" type=\"title-05\">\n <div class=\"module-info__name\">\n {this.selectedModule.selectedVersion.name}\n </div>\n </gxg-title>\n );\n };\n\n private renderVersionWarningMessage = () => {\n const warningMessage = this.selectedModule.selectedVersion.warningMessage;\n if (warningMessage) {\n return <p class=\"module-info__warning-message\">{warningMessage}</p>;\n }\n };\n\n private renderInstalledVersion = () => {\n const currentVersion = this.selectedModule.currentVersion;\n let caption;\n let cssClass = \"module-info__action-container\";\n if (currentVersion) {\n caption = `${this._componentLocale.modulesInformation.moduleProperties.installed}: ${currentVersion}`;\n cssClass += ` module-info__action-container--installed`;\n } else {\n caption =\n this._componentLocale.modulesInformation.moduleProperties.notInstalled;\n }\n return (\n <div class={cssClass}>\n <gxg-text part=\"module-info__action\">{caption}</gxg-text>\n </div>\n );\n };\n\n // Update selected version\n private moduleVersionsValueChangedHandler = (e: CustomEvent<any>) => {\n const selectedVersionId = e.detail.value;\n this.updateSelectedModuleVersion(selectedVersionId);\n };\n private moduleVersionsItemChangedHandler = (e: CustomEvent<any>) => {\n const selectedVersionId = e.detail.value;\n this.updateSelectedModuleVersion(selectedVersionId);\n };\n private updateSelectedModuleVersion = (selectedVersionId: string) => {\n const moduleSelectedVersion = this.selectedModule.versions.find(version => {\n return version.id === selectedVersionId;\n });\n if (moduleSelectedVersion) {\n const updatedSelectedModule = {\n ...this.selectedModule,\n selectedVersion: moduleSelectedVersion\n };\n this.selectedModule = updatedSelectedModule;\n\n // update module selected in modules array as well\n const updatedModuleIndex = this.serverModulesExtended.findIndex(\n module => module.id === updatedSelectedModule.id\n );\n if (updatedModuleIndex !== -1) {\n // Update the object with new information\n this.serverModulesExtended[updatedModuleIndex] = {\n ...this.serverModulesExtended[updatedModuleIndex],\n ...updatedSelectedModule\n };\n }\n }\n };\n\n private renderModuleVersions = () => {\n return (\n <div part=\"available-versions\">\n <gxg-combo-box\n id=\"versions-combo-box\"\n disable-filter\n value=\"\"\n part=\"module-versions\"\n display-validation-styles\n display-validation-message\n label={\n this._componentLocale.modulesInformation.moduleProperties\n .availableVersions\n }\n labelPosition=\"start\"\n centerLabel\n onValueChanged={this.moduleVersionsValueChangedHandler}\n disabled={this.loadingServer || !this.actionCompleted}\n >\n {this.selectedModule.versions.map(item => (\n <gxg-combo-box-item\n value={item.id}\n onItemSelected={this.moduleVersionsItemChangedHandler}\n >\n {item.id}\n </gxg-combo-box-item>\n ))}\n </gxg-combo-box>\n </div>\n );\n };\n\n private selectedButtonChangedHandler = (e: CustomEvent<string>) => {\n this.selectedButtonFilter = e.detail as ModuleFilterType;\n };\n\n // Update server selected\n private serverItemSelectedHandler = (\n e: CustomEvent<{\n el: HTMLGxgComboBoxItemElement;\n index: number;\n value: any;\n icon?: string;\n }>\n ) => {\n const serverId = e.detail.value;\n this.serverSelectedCallbackHandler(serverId, false);\n };\n private serverValueChangedHandler = (e: CustomEvent<any>) => {\n const serverId = e.detail;\n this.serverSelectedCallbackHandler(serverId, false);\n };\n\n private reloadServer = () => {\n this.serverSelectedCallbackHandler(this.selectedServerId, true);\n };\n /**\n * Change the server selected value in response to callbackServerSelected callback\n */\n private serverSelectedCallbackHandler = async (\n serverId: any,\n reload: boolean\n ) => {\n if (this.serverSelectedCallback) {\n this.loadingServer = true;\n\n // clear\n this.serverModules = [];\n this.serverModulesExtended = [];\n this.filteredServerModules = [];\n this.modulesMap.clear();\n this.modulesSelectedVersionMap.clear();\n\n this.serverModules = await this.serverSelectedCallback(serverId, reload);\n // Save modules on Map as well to get information about modules faster\n this.serverModules.forEach(module => {\n const extendedModuleData = {\n ...module,\n selectedVersion: module.versions[0]\n };\n // When the server retrieves the modules, the selected module is by default the first one.\n this.serverModulesExtended.push(extendedModuleData);\n // Save modules on a map as well, for faster retrieval.\n this.modulesMap.set(module.id, extendedModuleData);\n });\n this.selectedServerId = serverId;\n this.loadingServer = false;\n }\n };\n\n private progressBarCloseHandler = () => {\n setTimeout(() => {\n this.actionCompleted = true;\n this.closeProgressBar = true;\n // reset\n this.progressValue = 0;\n this.progressState = \"in-progress\";\n }, 400);\n // delay to force the footer line disappear after the top-state-bar has been closed.\n };\n\n // 11.RENDER() FUNCTION //\n\n render(): void {\n return (\n <Host\n class={{\n \"gx-ide-component\": true\n }}\n >\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <div class=\"gx-ide-main-wrapper\">\n <gx-ide-container\n noContentPadding\n noAboveFooterPadding\n noBorderAboveFooter={this.closeProgressBar}\n part=\"servers\"\n containerTitle={\n this.displayTitle ? this._componentLocale.componentName : null\n }\n >\n {/* Servers*/}\n <main class=\"main\">\n <div class=\"modules__container\">\n <header class=\"modules__header\">\n <div class=\"modules__combo-container\">\n <gxg-label>\n {this._componentLocale.modules.selectServer}\n </gxg-label>\n <div class=\"modules__combo\">\n <gxg-combo-box\n disabled={this.loadingServer || !this.actionCompleted}\n disableFilter\n onValueChanged={this.serverValueChangedHandler}\n >\n {this.servers.map(item => (\n <gxg-combo-box-item\n value={item.id}\n onItemSelected={this.serverItemSelectedHandler}\n >\n {item.name}\n </gxg-combo-box-item>\n ))}\n </gxg-combo-box>\n {this.showServerCommands ? (\n <span class=\"modules__server-commands\">\n <gxg-button\n type=\"secondary-icon-only\"\n icon=\"gemini-tools/show-more-horizontal\"\n onClick={this.showModuleMenu}\n ></gxg-button>\n </span>\n ) : null}\n <gxg-button\n type=\"secondary-icon-only\"\n icon=\"gemini-tools/reset\"\n onClick={this.reloadServer}\n ></gxg-button>\n </div>\n </div>\n </header>\n\n <div class=\"modules__main\">\n <div class=\"modules__main-header\">\n <gxg-form-text\n label={this._componentLocale.modules.searchModules}\n labelPosition=\"above\"\n centerLabel={false}\n onValueChanged={this.searchModulesFilterHandler}\n disabled={this.loadingServer || !this.actionCompleted}\n ></gxg-form-text>\n <gxg-buttons-container\n reduced\n fullWidth\n class=\"modules__browser\"\n onSelectedButtonChanged={\n this.selectedButtonChangedHandler\n }\n >\n <gxg-button\n id=\"browse\"\n selected\n disabled={this.loadingServer || !this.actionCompleted}\n >\n {this._componentLocale.modules.buttonsContainer.browse}\n </gxg-button>\n <gxg-button\n id=\"installed\"\n disabled={this.loadingServer || !this.actionCompleted}\n >\n {\n this._componentLocale.modules.buttonsContainer\n .installed\n }\n </gxg-button>\n <gxg-button\n id=\"updates\"\n disabled={this.loadingServer || !this.actionCompleted}\n >\n {this._componentLocale.modules.buttonsContainer.updates}\n </gxg-button>\n </gxg-buttons-container>\n </div>\n {/* modules grid*/}\n <div\n class=\"grid-container\"\n ref={el => (this.serversDetail = el as HTMLDivElement)}\n >\n {this.renderGridOrEmptyState()}\n </div>\n </div>\n </div>\n\n {/* Module version information*/}\n {this.selectedModule ? (\n <div class=\"module-info\">\n <header class=\"module-info__header\">\n <div class=\"module-info__title\">\n {this.renderVersionIcon()}\n {this.renderVersionName()}\n </div>\n {this.renderInstalledVersion()}\n {this.renderModuleVersions()}\n {this.renderVersionWarningMessage()}\n </header>\n <div class=\"module-info__properties gxg-scrollbar\">\n {renderModuleDataProperties(\n this.selectedModule.selectedVersion.properties\n )}\n </div>\n </div>\n ) : (\n <gx-ide-empty-state\n class=\"recent-objects__empty-state\"\n stateIconSrc={this.#moduleIcon}\n stateTitle={\n this._componentLocale.modulesInformation.emptyState.title\n }\n stateDescription={\n this._componentLocale.modulesInformation.emptyState\n .description\n }\n ></gx-ide-empty-state>\n )}\n </main>\n {/* Top State Bar*/}\n <gxg-top-state-bar\n slot=\"footer-above\"\n part=\"progress-bar\"\n stateType={this.progressState}\n noBorder\n caption={\n this.selectedModuleAction.message ||\n this._componentLocale.progressBar.defaultCaption\n }\n progress={this.progressValue}\n active={!this.actionCompleted || !this.closeProgressBar}\n closeType=\"not-progress\"\n closedCallback={this.progressBarCloseHandler}\n ></gxg-top-state-bar>\n </gx-ide-container>\n </div>\n <gxg-ide-loader\n loaderTitle={this._componentLocale.servers.loading}\n ref={el => (this.loaderEl = el as HTMLGxgIdeLoaderElement)}\n container={this.serversDetail}\n borderRadius=\"0 0 0 8px\"\n abortTime={60000}\n ></gxg-ide-loader>\n </Host>\n );\n }\n}\n\nexport type ExecuteActionCallback = (\n serverId: string,\n moduleId: string,\n moduleVersionId: string,\n action: ModuleActionType,\n onProgress: (\n message: string,\n progress: number,\n state: topStateBarType\n ) => void\n) => Promise<boolean>;\n\nexport type ServerSelectedCallback = (\n id: string,\n reload: boolean\n) => Promise<ModuleData[]>;\n\nexport type ServerContextMenuCallback = (\n contextMenuInfo: ContextMenuInfo\n) => Promise<void>;\nexport interface ActionInfo {\n message: string;\n progress: number;\n state: topStateBarType;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["fileUploaderCss","PLUS_ICON","getIconPath","category","name","colorType","CSS_BUNDLES","FileUploader","_FileUploader__componentLocale","set","this","_FileUploader_fileInputEl","_FileUploader_dragCounter","_FileUploader_generateId","Math","random","toString","substr","_FileUploader_handleDragEnter","e","preventDefault","stopPropagation","__classPrivateFieldSet","_a","__classPrivateFieldGet","isDragging","_FileUploader_handleDragLeave","_FileUploader_handleDragOver","_FileUploader_handleDrop","files","dataTransfer","_FileUploader_handleFiles","call","_FileUploader_handleFileSelect","click","_FileUploader_handleFileInput","target","validFiles","_FileUploader_instances","_FileUploader_getValidFiles","forEach","async","file","id","fileState","pending","progress","multiple","fileStates","clear","Map","uploadFunction","uploadPromise","state","get","updatedState","Object","assign","stateWithPromise","result","console","log","success","remoteId","fileUploadedCallback","originalName","error","_b","errors","upload","Error","message","value","_FileUploader_handleNameChange","event","detail","updatedFile","trim","isEditing","fileRenamedCallback","fileId","newName","_FileUploader_handleFileCancel","cancel","cancelUploadFunction","uploadCancelledCallback","delete","fileToDelete","shouldDelete","onBeforeDelete","_c","fileDeletedCallback","_d","fileDeletionErrorCallback","fileName","_FileUploader_handleConfirm","hasPendingUploads","Array","from","values","some","uploadedFiles","filter","isValid","map","length","dialogConfirmedCallback","_FileUploader_handleCancel","entries","dialogCanceledCallback","componentWillLoad","Locale","getComponentStrings","el","render","h","Host","class","model","type","accept","types","startsWith","join","onChange","ref","tabIndex","style","display","size","onDragEnter","onDragLeave","onDragOver","onDrop","onClick","src","header","uploadButtonMultiple","uploadButtonSingle","label","orText","_e","dragAndDrop","_f","acceptedFiles","replace","_g","allFilesAccepted","_h","fileList","attachedFiles","_j","filesCount","_k","_l","key","editable","canEditName","onFileNameChange","onFileDelete","onFileCancel","_m","buttons","disabled","_o","confirm","includes","baseType","split","toLowerCase","endsWith","invalidFileType","validation","_FileUploader_isValidFile","push","fileValidationErrorCallback"],"sources":["src/components/file-uploader/file-uploader.scss?tag=gx-ide-file-uploader&encapsulation=shadow","src/components/file-uploader/file-uploader.tsx"],"sourcesContent":["@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n@import \"../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n\n:host {\n display: block;\n inline-size: 100%;\n block-size: 100%;\n padding-inline-end: 0 !important;\n}\n\n.file-uploader-dialog {\n display: flex;\n flex-direction: column;\n block-size: 100%;\n background-color: var(--mer-surface__background);\n position: relative;\n\n .dialog-content {\n flex: 1;\n min-block-size: 0;\n overflow: auto;\n }\n\n .dialog-footer {\n padding-inline-end: var(--spacing-body-inline-end);\n }\n}\n\n.file-uploader {\n display: flex;\n flex-direction: column;\n inline-size: 100%;\n block-size: 100%;\n\n &__list {\n display: flex;\n flex-direction: column;\n inline-size: 100%;\n block-size: 100%;\n\n &-header {\n position: sticky;\n top: 0;\n z-index: 1;\n background-color: var(--mer-surface__elevation--01);\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-inline-end: var(--spacing-body-inline-end);\n }\n\n &-content {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: var(--mer-spacing--xs);\n padding-inline-end: var(--spacing-body-inline-end);\n padding-block-end: var(--mer-spacing--md);\n }\n }\n\n &__list-title-container {\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--2xs);\n white-space: nowrap;\n }\n\n &__drop-zone {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n inline-size: calc(100% - var(--spacing-body-inline-end));\n block-size: calc(100% - var(--mer-spacing--sm));\n min-block-size: 200px;\n margin-block-end: var(--mer-spacing--sm);\n background: var(--mer-surface__elevation--01);\n border: var(--mer-border__width--md) dashed var(--mer-border-color__dim);\n border-radius: var(--mer-border__radius--md);\n transition: border-color 0.3s ease, background-color 0.3s ease,\n opacity 0.3s ease;\n\n &--dragging {\n border-color: var(--mer-accent__primary);\n background: var(--mer-accent__primary--hover);\n opacity: 0.7;\n }\n\n .text-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--mer-spacing--2xs);\n margin-block-start: var(--mer-spacing--xs);\n }\n }\n}\n\n.hidden-input {\n display: none;\n}\n\n.label-primary-row {\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--xs);\n}\n","/* eslint-disable @stencil-community/own-methods-must-be-private */\n/* eslint-disable @stencil-community/own-props-must-be-private */\n/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Method\n} from \"@stencil/core\";\n\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\nimport { Locale } from \"../../common/locale\";\nimport { UploadedFile, FileUploadState, UploadResult } from \"./types\";\n\nconst PLUS_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"add\",\n colorType: \"primary\"\n});\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/icon\",\n \"components/list-box\",\n \"components/edit\",\n \"utils/typography\",\n \"utils/spacing\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/elevation\",\n \"chameleon/scrollbar\"\n];\n\ntype FileValidationResult = {\n isValid: boolean;\n error?: string;\n};\n\n@Component({\n tag: \"gx-ide-file-uploader\",\n styleUrl: \"file-uploader.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/file-uploader\"]\n})\nexport class FileUploader {\n #_componentLocale: any;\n #fileInputEl!: HTMLInputElement;\n\n @Element() el!: HTMLGxIdeFileUploaderElement;\n\n /** Allowed file types/extensions (e.g. ['.jpg', '.png', 'image/*', 'application/pdf']) */\n @Prop() readonly types?: string[] = [];\n\n /** Whether multiple files can be selected */\n @Prop() readonly multiple: boolean = false;\n\n /** Whether file names can be edited */\n @Prop() readonly canEditName: boolean = false;\n\n /** Label to display in the uploader dialog */\n @Prop() readonly label?: string;\n\n /** Function to handle file upload */\n @Prop() readonly uploadFunction!: (\n file: File,\n progressCallback: (progress: number) => void\n ) => Promise<UploadResult>;\n\n /** Function to cancel file upload */\n @Prop() readonly cancelUploadFunction?: (fileId: string) => Promise<void>;\n\n /** Callback when a file is uploaded successfully */\n @Prop() readonly fileUploadedCallback?: (file: UploadedFile) => Promise<void>;\n\n /** Callback when the dialog is canceled */\n @Prop() readonly dialogCanceledCallback?: () => Promise<void>;\n\n /** Callback when the dialog is confirmed with files */\n @Prop() readonly dialogConfirmedCallback?: (\n files: UploadedFile[]\n ) => Promise<void>;\n\n /** Callback when upload is cancelled */\n @Prop() readonly uploadCancelledCallback?: (fileId: string) => Promise<void>;\n\n /** Callback when file is renamed */\n @Prop() readonly fileRenamedCallback?: (data: {\n fileId: string;\n newName: string;\n }) => Promise<void>;\n\n /** Callback when a file validation error occurs */\n @Prop() readonly fileValidationErrorCallback?: (data: {\n fileName: string;\n error: string;\n }) => Promise<void>;\n\n /** Callback when a file deletion error occurs */\n @Prop() readonly fileDeletionErrorCallback?: (data: {\n fileName: string;\n error: string;\n }) => Promise<void>;\n\n /** Callback when a file is deleted */\n @Prop() readonly fileDeletedCallback?: (file: UploadedFile) => Promise<void>;\n\n /** Callback before deleting a file to get confirmation */\n @Prop() readonly onBeforeDelete?: (file: UploadedFile) => Promise<boolean>;\n\n @State() private fileStates: Map<string, FileUploadState> = new Map();\n @State() private isDragging: boolean = false;\n #dragCounter = 0;\n\n /** Initializes component with locale strings */\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n /** Generates a unique ID for file identification */\n #generateId = (): string => {\n return Math.random().toString(36).substr(2, 9);\n };\n\n /** Validates if a file matches the allowed types */\n #isValidFile(file: File): FileValidationResult {\n // If no types specified, accept any file\n if (!this.types || this.types.length === 0) {\n return { isValid: true };\n }\n\n for (const type of this.types) {\n // Handle wildcards like 'image/*'\n if (type.includes(\"/*\")) {\n const baseType = type.split(\"/\")[0];\n if (file.type.startsWith(baseType)) {\n return { isValid: true };\n }\n }\n // Handle extensions like '.jpg'\n else if (type.startsWith(\".\")) {\n if (file.name.toLowerCase().endsWith(type.toLowerCase())) {\n return { isValid: true };\n }\n }\n // Handle specific MIME types\n else if (file.type === type || file.type === `application/${type}`) {\n return { isValid: true };\n }\n }\n\n return {\n isValid: false,\n error:\n this.#_componentLocale?.errors?.invalidFileType || \"Invalid file type\"\n };\n }\n\n /** Filters valid files from a FileList */\n #getValidFiles(files: FileList): File[] {\n const validFiles: File[] = [];\n\n Array.from(files).forEach(file => {\n const validation = this.#isValidFile(file);\n if (validation.isValid) {\n validFiles.push(file);\n } else {\n this.fileValidationErrorCallback?.({\n fileName: file.name,\n error: validation.error\n });\n }\n });\n\n return validFiles;\n }\n\n /** Handles drag enter event */\n #handleDragEnter = (e: DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n this.#dragCounter++;\n this.isDragging = true;\n };\n\n /** Handles drag leave event */\n #handleDragLeave = (e: DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n this.#dragCounter--;\n if (this.#dragCounter === 0) {\n this.isDragging = false;\n }\n };\n\n /** Handles drag over event */\n #handleDragOver = (e: DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n };\n\n /** Handles drop event */\n #handleDrop = (e: DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n this.isDragging = false;\n this.#dragCounter = 0;\n\n const files = e.dataTransfer?.files;\n if (files) {\n this.#handleFiles(files);\n }\n };\n\n /** Triggers file input click */\n #handleFileSelect = () => {\n this.#fileInputEl?.click();\n };\n\n /** Handles file input change event */\n #handleFileInput = (e: Event) => {\n const files = (e.target as HTMLInputElement).files;\n if (files) {\n this.#handleFiles(files);\n }\n };\n\n /** Processes files and starts upload */\n #handleFiles = (files: FileList) => {\n const validFiles: File[] = this.#getValidFiles(files);\n\n validFiles.forEach(async file => {\n const id = this.#generateId();\n const fileState: FileUploadState = {\n id,\n name: file.name,\n file,\n pending: true,\n progress: 0\n };\n\n if (!this.multiple) {\n this.fileStates.clear();\n }\n\n this.fileStates = new Map(this.fileStates.set(id, fileState));\n\n if (this.uploadFunction) {\n try {\n const uploadPromise = this.uploadFunction(file, progress => {\n const state = this.fileStates.get(id);\n if (state) {\n const updatedState = {\n ...state,\n progress: progress,\n pending: progress < 100\n };\n this.fileStates = new Map(this.fileStates.set(id, updatedState));\n }\n });\n\n // Store the upload promise/object for potential cancellation\n const stateWithPromise = {\n ...this.fileStates.get(id),\n uploadPromise\n };\n this.fileStates = new Map(this.fileStates.set(id, stateWithPromise));\n\n const result = await uploadPromise;\n console.log(\"Upload result:\", { id, result });\n\n const state = this.fileStates.get(id);\n if (state) {\n if (result.success && result.remoteId) {\n const updatedState = {\n ...state,\n remoteId: result.remoteId,\n pending: false,\n progress: 100\n };\n this.fileStates = new Map(this.fileStates.set(id, updatedState));\n console.log(\"File uploaded successfully:\", updatedState);\n await this.fileUploadedCallback?.({\n name: state.name,\n originalName: state.file.name,\n remoteId: result.remoteId\n });\n } else {\n const updatedState = {\n ...state,\n error: result.errors?.upload || \"Upload failed\",\n pending: false\n };\n this.fileStates = new Map(this.fileStates.set(id, updatedState));\n console.log(\"File upload failed:\", updatedState);\n }\n }\n } catch (error) {\n const state = this.fileStates.get(id);\n if (state) {\n const updatedState = {\n ...state,\n error:\n error instanceof Error\n ? error.message\n : \"Unknown error occurred\",\n pending: false\n };\n this.fileStates = new Map(this.fileStates.set(id, updatedState));\n console.log(\"File upload error:\", updatedState);\n }\n }\n }\n });\n\n if (this.#fileInputEl) {\n this.#fileInputEl.value = \"\";\n }\n };\n\n /** Handles file name change */\n #handleNameChange = async (\n event: CustomEvent<{ id: string; name: string }>\n ) => {\n const { id, name } = event.detail;\n const file = this.fileStates.get(id);\n\n if (file) {\n const updatedFile = {\n ...file,\n name: name.trim(),\n isEditing: false\n };\n\n this.fileStates = new Map(this.fileStates.set(id, updatedFile));\n await this.fileRenamedCallback?.({ fileId: id, newName: name.trim() });\n }\n };\n\n /** Handles individual file cancellation or deletion */\n #handleFileCancel = async (event: CustomEvent<string>) => {\n const id = event.detail;\n const state = this.fileStates.get(id);\n if (state) {\n try {\n if (state.pending) {\n // Cancel upload in progress\n if (\n state.uploadPromise &&\n typeof state.uploadPromise.cancel === \"function\"\n ) {\n state.uploadPromise.cancel();\n } else if (this.cancelUploadFunction) {\n await this.cancelUploadFunction(id);\n }\n\n await this.uploadCancelledCallback?.(id);\n\n this.fileStates.delete(id);\n this.fileStates = new Map(this.fileStates);\n } else {\n const fileToDelete: UploadedFile = {\n name: state.name,\n originalName: state.file.name,\n remoteId: state.remoteId\n };\n\n const shouldDelete = await this.onBeforeDelete?.(fileToDelete);\n\n if (shouldDelete) {\n await this.fileDeletedCallback?.(fileToDelete);\n this.fileStates.delete(id);\n this.fileStates = new Map(this.fileStates);\n }\n }\n } catch (error) {\n await this.fileDeletionErrorCallback?.({\n fileName: state.name,\n error:\n error instanceof Error ? error.message : \"Unknown error occurred\"\n });\n }\n }\n };\n\n /** Handles dialog confirmation */\n #handleConfirm = async () => {\n // Verificar si hay subidas en progreso\n const hasPendingUploads = Array.from(this.fileStates.values()).some(\n file => file.pending\n );\n\n if (hasPendingUploads) {\n return; // No permitir confirmar si hay subidas en progreso\n }\n\n // Obtener todos los archivos que están completamente subidos\n const uploadedFiles: UploadedFile[] = Array.from(this.fileStates.values())\n .filter(file => {\n const isValid = !file.pending && file.remoteId && !file.error;\n console.log(\"File validation:\", {\n id: file.id,\n name: file.name,\n pending: file.pending,\n remoteId: file.remoteId,\n error: file.error,\n isValid\n });\n return isValid;\n })\n .map(file => ({\n name: file.name,\n originalName: file.file.name,\n remoteId: file.remoteId as string\n }));\n\n console.log(\"Files to be confirmed:\", uploadedFiles);\n\n if (uploadedFiles.length > 0) {\n await this.dialogConfirmedCallback?.(uploadedFiles);\n }\n\n // Clear file states\n this.fileStates.clear();\n this.fileStates = new Map();\n\n // Reset file input\n if (this.#fileInputEl) {\n this.#fileInputEl.value = \"\";\n }\n };\n\n /** Handles dialog cancellation */\n #handleCancel = async () => {\n try {\n // Cancelamos todas las subidas en progreso\n for (const [id, state] of this.fileStates.entries()) {\n if (state.pending && this.cancelUploadFunction) {\n try {\n await this.cancelUploadFunction(id);\n await this.uploadCancelledCallback?.(id);\n } catch (error) {\n // Error handling for upload cancellation\n }\n }\n }\n\n // Limpiamos todos los estados\n this.fileStates.clear();\n this.fileStates = new Map();\n\n if (this.#fileInputEl) {\n this.#fileInputEl.value = \"\";\n }\n\n await this.dialogCanceledCallback?.();\n } catch (error) {\n this.fileStates.clear();\n this.fileStates = new Map();\n await this.dialogCanceledCallback?.();\n }\n };\n\n /** Clears the current file selection */\n @Method()\n async clear() {\n for (const [id, state] of this.fileStates.entries()) {\n if (state.pending && this.cancelUploadFunction) {\n try {\n await this.cancelUploadFunction(id);\n await this.uploadCancelledCallback?.(id);\n } catch (error) {\n // Error handling for upload cancellation\n }\n }\n }\n this.fileStates.clear();\n }\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <input\n type=\"file\"\n class=\"hidden-input\"\n multiple={this.multiple}\n accept={this.types\n ?.map(type => (type.startsWith(\".\") ? type : `.${type}`))\n .join(\",\")}\n onChange={this.#handleFileInput}\n ref={el => (this.#fileInputEl = el as HTMLInputElement)}\n aria-hidden=\"true\"\n tabIndex={-1}\n style={{ display: \"none\" }}\n />\n <div class=\"file-uploader-dialog\">\n <div class=\"dialog-content\">\n {this.isDragging || this.fileStates.size === 0 ? (\n <div\n class={{\n \"file-uploader__drop-zone\": true,\n \"file-uploader__drop-zone--dragging\": this.isDragging\n }}\n onDragEnter={this.#handleDragEnter}\n onDragLeave={this.#handleDragLeave}\n onDragOver={this.#handleDragOver}\n onDrop={this.#handleDrop}\n >\n <button\n class=\"button-tertiary button-icon-and-text\"\n type=\"button\"\n onClick={this.#handleFileSelect}\n >\n <ch-image class=\"icon-md\" src={PLUS_ICON}></ch-image>\n <label class=\"label\">\n {this.multiple\n ? this.#_componentLocale?.header.uploadButtonMultiple\n : this.#_componentLocale?.header.uploadButtonSingle}\n </label>\n </button>\n <div class=\"text-container\">\n <div class=\"label-primary-row\">\n <label class=\"label\">\n {this.label || this.#_componentLocale?.header.orText}\n </label>\n <label class=\"label\">\n {this.#_componentLocale?.header.dragAndDrop}\n </label>\n </div>\n <span class=\"caption\">\n {this.types && this.types.length > 0\n ? this.#_componentLocale?.header.acceptedFiles.replace(\n \"{0}\",\n this.types.join(\", \")\n )\n : this.#_componentLocale?.header.allFilesAccepted}\n </span>\n </div>\n </div>\n ) : (\n <div class=\"file-uploader__list\">\n <div class=\"file-uploader__list-header spacing-body-block-end\">\n <div class=\"file-uploader__list-title-container\">\n <label class=\"label\">\n {this.label ||\n this.#_componentLocale?.fileList.attachedFiles}\n </label>\n <span class=\"caption\">\n {this.#_componentLocale?.fileList.filesCount.replace(\n \"{0}\",\n this.fileStates.size.toString()\n )}\n </span>\n </div>\n {this.multiple && (\n <button\n class=\"button-tertiary button-icon-and-text\"\n type=\"button\"\n onClick={this.#handleFileSelect}\n >\n <ch-image class=\"icon-md\" src={PLUS_ICON}></ch-image>\n <label class=\"label\">\n {this.multiple\n ? this.#_componentLocale?.header.uploadButtonMultiple\n : this.#_componentLocale?.header.uploadButtonSingle}\n </label>\n </button>\n )}\n </div>\n <div class=\"file-uploader__list-content scrollable\">\n {Array.from(this.fileStates.values()).map(file => (\n <gx-ide-file-item\n key={file.id}\n file={file}\n editable={this.canEditName}\n onFileNameChange={this.#handleNameChange}\n onFileDelete={this.#handleFileCancel}\n onFileCancel={this.#handleFileCancel}\n />\n ))}\n </div>\n </div>\n )}\n </div>\n <div class=\"dialog-footer control-footer control-footer-with-border\">\n <div class=\"buttons-spacer\">\n <button\n class=\"button-secondary\"\n type=\"button\"\n onClick={this.#handleCancel}\n >\n {this.#_componentLocale?.buttons.cancel}\n </button>\n <button\n class=\"button-primary\"\n type=\"button\"\n onClick={this.#handleConfirm}\n disabled={\n this.fileStates.size === 0 ||\n Array.from(this.fileStates.values()).some(\n file => file.pending\n )\n }\n >\n {this.#_componentLocale?.buttons.confirm}\n </button>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["renderFormItems","componentType","options","group","callback","length","items","forEach","option","item","h","checkboxId","id","checked","disabled","label","value","onChange","iconName","part","push","icon","radioId","name","renderModuleDataProperties","Array","isArray","class","map","subItem","inline","getSelectedItem","gxOptions","found","undefined","i","selected","ANIMATION_DOTS","size","color","n","colorVar","width","height","fill","cx","cy","r","opacity","attributeName","values","dur","repeatCount","begin"],"sources":["src/common/common.tsx"],"sourcesContent":["/* STENCIL IMPORTS */\nimport { h } from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { GxgFormItemsArray, GxOption } from \"./types\";\nimport { ModulePropertyData } from \"../components/modules/types\";\nexport const renderFormItems = (\n componentType:\n | \"gxg-combo-box-item\"\n | \"gxg-form-checkbox\"\n | \"gxg-form-radio\" = \"gxg-combo-box-item\",\n options: Array<GxOption>,\n group = \"undefined-group\",\n callback?: any\n): GxgFormItemsArray => {\n if (options.length) {\n const items: GxgFormItemsArray = [];\n options.forEach(option => {\n let item;\n switch (componentType) {\n case \"gxg-form-checkbox\":\n item = (\n <gxg-form-checkbox\n checkboxId={option.id}\n checked={option.checked}\n disabled={option.disabled}\n label={option.label}\n value={option.value}\n onChange={callback ? callback : null}\n iconName={option.iconName}\n part={`${group}-${option.id}`}\n ></gxg-form-checkbox>\n );\n items.push(item);\n break;\n case \"gxg-combo-box-item\":\n item = (\n <gxg-combo-box-item\n value={option.id}\n icon={option.iconName}\n part={`${group}-${option.id}`}\n >\n {option.label}\n </gxg-combo-box-item>\n );\n items.push(item);\n break;\n case \"gxg-form-radio\":\n item = (\n <gxg-form-radio\n radioId={option.id}\n checked={option.checked}\n disabled={option.disabled}\n label={option.label}\n value={option.value}\n name={group}\n part={`${group}-${option.id}`}\n ></gxg-form-radio>\n );\n items.push(item);\n break;\n default:\n break;\n }\n });\n return items;\n }\n return null;\n};\n\nexport const renderModuleDataProperties = (\n options: Array<ModulePropertyData>\n): ModulePropertyData[] => {\n if (options.length) {\n const items: ModulePropertyData[] = [];\n\n options.forEach(option => {\n if (Array.isArray(option.value)) {\n const item = (\n <div class=\"md-property__list\">\n <p class=\"md-property__key\">{option.name} :</p>\n <ul>\n {option.value.map(subItem => {\n return <li>{subItem}</li>;\n })}\n </ul>\n </div>\n );\n items.push(item);\n } else {\n const item = (\n <div\n class={\n option.inline\n ? \"md-property md-property--inline\"\n : \"md-property--block\"\n }\n >\n <p class=\"md-property__key\">{option.name} :</p>\n <p class=\"md-property__value\">{option.value}</p>\n </div>\n );\n items.push(item);\n }\n });\n\n return items;\n }\n return null;\n};\n\n/**\n * @param gxOptions An array of GxOptions's\n * @returns The first option in the array that is 'selected'. If no one found it returns null.\n */\nexport const getSelectedGxOption = (\n gxOptions: GxOption[],\n onlyId = true\n): GxOption | string | void => {\n if (gxOptions?.length > 0) {\n let found = null;\n for (let i = 0; i < gxOptions.length; i++) {\n if (gxOptions[i].selected) {\n found = gxOptions[i];\n break;\n }\n }\n if (found && onlyId) {\n return found.id;\n } else if (!found && onlyId) {\n return gxOptions[0].id;\n }\n return found;\n }\n};\n\n/**\n * @param gxOptions An array of GxOptions's\n * @returns The value of the selected item, or the first item, if no one is selected.\n */\nexport const getSelectedItem = (gxOptions: GxOption[]): string => {\n let found = undefined;\n for (let i = 0; i < gxOptions.length; i++) {\n if (gxOptions[i].selected) {\n found = gxOptions[i];\n break;\n }\n }\n if (found) {\n return found.id;\n } else {\n return gxOptions[0].id;\n }\n};\n\nexport const getSelectedItem2 = (\n gxOptions: GxOption[] | undefined\n): string | undefined =>\n gxOptions\n ? (gxOptions.find(item => item.selected) ?? gxOptions[0]).id\n : undefined;\n\n// Dots animation used in ch-chat code-render (or other components)\nexport const ANIMATION_DOTS = (\n size: \"regular\" | \"tiny\" = \"regular\",\n color: \"primary\" | \"on-surface\" = \"primary\"\n): SVGElement => {\n const n = size === \"regular\" ? 1 : 4;\n const colorVar =\n color === \"primary\"\n ? \"var(--mer-color__primary--200)\"\n : \"var(--mer-text__on-surface)\";\n\n return (\n <svg width={36 / n} height={8 / n} fill=\"transparent\">\n <circle cx={4 / n} cy={4 / n} r={4 / n} opacity=\"0\" fill={colorVar}>\n <animate\n attributeName=\"opacity\"\n values=\"0;1;0\"\n dur=\"1s\"\n repeatCount=\"indefinite\"\n />\n </circle>\n <circle cx={18 / n} cy={4 / n} r={4 / n} opacity=\"0\" fill={colorVar}>\n <animate\n attributeName=\"opacity\"\n values=\"0;1;0\"\n dur=\"1s\"\n begin=\"0.15s\"\n repeatCount=\"indefinite\"\n />\n </circle>\n <circle cx={32 / n} cy={4 / n} r={4 / n} opacity=\"0\" fill={colorVar}>\n <animate\n attributeName=\"opacity\"\n values=\"0;1;0\"\n dur=\"1s\"\n begin=\"0.30s\"\n repeatCount=\"indefinite\"\n />\n </circle>\n </svg>\n );\n};\n"],"mappings":";;4BAMaA,kBAAkB,CAC7BC,IAGuB,sBACvBC,GACAC,IAAQ,mBACRC;EAEA,IAAIF,EAAQG,QAAQ;IAClB,MAAMC,IAA2B;IACjCJ,EAAQK,SAAQC;MACd,IAAIC;MACJ,QAAQR;OACN,KAAK;QACHQ,IACEC,EAAA;UACEC,YAAYH,EAAOI;UACnBC,SAASL,EAAOK;UAChBC,UAAUN,EAAOM;UACjBC,OAAOP,EAAOO;UACdC,OAAOR,EAAOQ;UACdC,UAAUb,IAAWA,IAAW;UAChCc,UAAUV,EAAOU;UACjBC,MAAM,GAAGhB,KAASK,EAAOI;;QAG7BN,EAAMc,KAAKX;QACX;;OACF,KAAK;QACHA,IACEC,EAAA;UACEM,OAAOR,EAAOI;UACdS,MAAMb,EAAOU;UACbC,MAAM,GAAGhB,KAASK,EAAOI;WAExBJ,EAAOO;QAGZT,EAAMc,KAAKX;QACX;;OACF,KAAK;QACHA,IACEC,EAAA;UACEY,SAASd,EAAOI;UAChBC,SAASL,EAAOK;UAChBC,UAAUN,EAAOM;UACjBC,OAAOP,EAAOO;UACdC,OAAOR,EAAOQ;UACdO,MAAMpB;UACNgB,MAAM,GAAGhB,KAASK,EAAOI;;QAG7BN,EAAMc,KAAKX;QACX;;;IAKN,OAAOH;;EAET,OAAO;AAAI;;MAGAkB,6BACXtB;EAEA,IAAIA,EAAQG,QAAQ;IAClB,MAAMC,IAA8B;IAEpCJ,EAAQK,SAAQC;MACd,IAAIiB,MAAMC,QAAQlB,EAAOQ,QAAQ;QAC/B,MAAMP,IACJC,EAAA;UAAKiB,OAAM;WACTjB,EAAA;UAAGiB,OAAM;WAAoBnB,EAAOe,M,OACpCb,EAAA,YACGF,EAAOQ,MAAMY,KAAIC,KACTnB,EAAA,YAAKmB;QAKpBvB,EAAMc,KAAKX;aACN;QACL,MAAMA,IACJC,EAAA;UACEiB,OACEnB,EAAOsB,SACH,oCACA;WAGNpB,EAAA;UAAGiB,OAAM;WAAoBnB,EAAOe,M,OACpCb,EAAA;UAAGiB,OAAM;WAAsBnB,EAAOQ;QAG1CV,EAAMc,KAAKX;;;IAIf,OAAOH;;EAET,OAAO;AAAI;;;;;UAgCAyB,kBAAmBC;EAC9B,IAAIC,IAAQC;EACZ,KAAK,IAAIC,IAAI,GAAGA,IAAIH,EAAU3B,QAAQ8B,KAAK;IACzC,IAAIH,EAAUG,GAAGC,UAAU;MACzBH,IAAQD,EAAUG;MAClB;;;EAGJ,IAAIF,GAAO;IACT,OAAOA,EAAMrB;SACR;IACL,OAAOoB,EAAU,GAAGpB;;;;;MAYXyB,iBAAiB,CAC5BC,IAA2B,WAC3BC,IAAkC;EAElC,MAAMC,IAAIF,MAAS,YAAY,IAAI;EACnC,MAAMG,IACJF,MAAU,YACN,mCACA;EAEN,OACE7B,EAAA;IAAKgC,OAAO,KAAKF;IAAGG,QAAQ,IAAIH;IAAGI,MAAK;KACtClC,EAAA;IAAQmC,IAAI,IAAIL;IAAGM,IAAI,IAAIN;IAAGO,GAAG,IAAIP;IAAGQ,SAAQ;IAAIJ,MAAMH;KACxD/B,EAAA;IACEuC,eAAc;IACdC,QAAO;IACPC,KAAI;IACJC,aAAY;OAGhB1C,EAAA;IAAQmC,IAAI,KAAKL;IAAGM,IAAI,IAAIN;IAAGO,GAAG,IAAIP;IAAGQ,SAAQ;IAAIJ,MAAMH;KACzD/B,EAAA;IACEuC,eAAc;IACdC,QAAO;IACPC,KAAI;IACJE,OAAM;IACND,aAAY;OAGhB1C,EAAA;IAAQmC,IAAI,KAAKL;IAAGM,IAAI,IAAIN;IAAGO,GAAG,IAAIP;IAAGQ,SAAQ;IAAIJ,MAAMH;KACzD/B,EAAA;IACEuC,eAAc;IACdC,QAAO;IACPC,KAAI;IACJE,OAAM;IACND,aAAY;;AAGZ"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["bpmExportXpdlCss","GxIdeBpmExportXpdl","this","renderedFirstTime","exportHandler","exportCallback","notExporting","data","directoryName","exportInputEl","value","Objects","_a","bpmObjectSelectorEl","selection","includeAll","objectIds","then","catch","error","console","inputHandle","async","emptyInput","length","handleSelectionChanged","emptyObjects","componentWillLoad","_componentLocale","Locale","getComponentStrings","el","componentDidRender","componentDidRenderFirstTime","emit","componentName","render","h","Host","class","containerTitle","displayTitle","slimmerFooter","config","gxIdeContainer","htmlFor","main","exportInputLabel","type","id","onInput","ref","disabled","onClick","exportButton","cancelCallback","cancelButton","addCallback","referencesCallback","onSelectionChanged"],"sources":["src/components/bpm/export-xpdl/bpm-export-xpdl.scss?tag=gx-ide-bpm-export-xpdl&encapsulation=shadow","src/components/bpm/export-xpdl/bpm-export-xpdl.tsx"],"sourcesContent":["@import \"../../../global/gx-ide-common.scss\";\n@import \"../../../global/gx-ide-mixins.scss\";\n@import \"../../../global/temporary-tokens-chameleon.scss\";\n\n:host {\n display: block;\n}\n\n.header {\n display: grid;\n grid-template-columns: 1fr min-content min-content;\n grid-template-areas:\n \"label label label\"\n \"input cancel export\";\n grid-gap: var(--gx-ide-grid-column-gap);\n\n .label {\n grid-area: label;\n }\n .input {\n grid-area: input;\n }\n .cancel {\n grid-area: cancel;\n }\n .export {\n grid-area: export;\n }\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n State\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { config } from \"../../../common/config\";\nimport { Locale } from \"../../../common/locale\";\nimport { ObjectData } from \"../objects-selector/helpers\";\n\n/* import { renderListItems } from \"../../../common/render-list-item\"; */\n\n@Component({\n tag: \"gx-ide-bpm-export-xpdl\",\n styleUrl: \"bpm-export-xpdl.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/bpm-export-xpdl\"]\n})\nexport class GxIdeBpmExportXpdl {\n // 1.OWN PROPERTIES //\n\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n private renderedFirstTime = false;\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeBpmExportXpdlElement;\n private exportInputEl: HTMLInputElement;\n private bpmObjectSelectorEl: HTMLGxIdeBpmObjectsSelectorElement;\n\n // 3.STATE() VARIABLES //\n\n @State() emptyInput = true;\n @State() emptyObjects = true;\n @State() notExporting = true;\n\n // 4.PUBLIC PROPERTY API | WATCH'S //\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * Callback function invoked when the user presses the 'Create' button.\n * This function is expected to handle the export process based on the provided export data.\n *\n * @param {ExportData} exportData - The data required for the export process.\n * @returns {Promise<boolean>} A promise that resolves to a boolean indicating the success of the export operation.\n * Returns `true` if the export was successful, and `false` otherwise.\n */\n @Prop() readonly exportCallback: ExportCallback;\n\n /**\n * Callback invoked when user press 'Cancel' button\n */\n @Prop() readonly cancelCallback: CancelCallback;\n\n /**\n * Callback invoked when the user presses the 'Add' button. associated with gx-ide-bpm-objects-selector\n * This function is expected to return a list of selected objects' basic information.\n * @returns {Promise<ObjectData[]>} A Promise that resolves to an array of ObjectData. Each ObjectData contains the ID, icon, and name of an object.\n */\n @Prop() readonly addCallback: () => Promise<ObjectData[]>;\n\n /**\n * Callback invoked when the user presses the 'References' button. associated with gx-ide-bpm-objects-selector\n * Receives a parameter which is an array of IDs of the objects currently added to the list.\n * Returns a Promise that resolves to an array of ObjectData, where each ObjectData contains the ID, icon, and name of an object.\n * @param {string[]} ids - An array of IDs of the objects currently added to the list.\n * @returns {Promise<ObjectData[]>} A Promise that resolves to an array of ObjectData. Each ObjectData contains the ID, icon, and name of an object.\n */\n @Prop() readonly referencesCallback: (ids: string[]) => Promise<ObjectData[]>;\n\n // 5.EVENTS (EMIT) //\n\n /**\n * @description Gets fired when the component has rendered for the first time.\n */\n @Event() componentDidRenderFirstTime: EventEmitter<string>;\n\n // 6.COMPONENT LIFECYCLE METHODS //\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidRender() {\n if (!this.renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this._componentLocale.componentName\n );\n this.renderedFirstTime = true;\n }\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n // 9.LOCAL METHODS //\n\n private exportHandler = () => {\n if (this.exportCallback) {\n this.notExporting = false;\n\n const data: ExportData = {\n directoryName: this.exportInputEl.value,\n Objects: this.bpmObjectSelectorEl.selection ?? {\n includeAll: false,\n objectIds: []\n }\n };\n\n this.exportCallback(data)\n .then(() => {\n this.notExporting = true;\n })\n .catch(error => {\n console.error(\"Export callback failed:\", error);\n this.notExporting = true;\n });\n }\n };\n\n private inputHandle = async () => {\n this.emptyInput = !this.exportInputEl.value?.length;\n };\n\n private handleSelectionChanged = () => {\n this.emptyObjects = !this.bpmObjectSelectorEl.selection.objectIds.length;\n };\n\n // 10.RENDER() FUNCTION //\n\n render() {\n return (\n <Host class=\"gx-ide-component\">\n <div class=\"gx-ide-main-wrapper\">\n <gx-ide-container\n containerTitle={\n this.displayTitle ? this._componentLocale.componentName : null\n }\n slimmerFooter={config.gxIdeContainer.slimmerFooter}\n >\n <div class=\"header\">\n <label htmlFor=\"export-directory\" class=\"label\">\n {this._componentLocale.main.exportInputLabel}\n </label>\n <input\n type=\"text\"\n id=\"export-directory\"\n class=\"input-text input\"\n onInput={this.inputHandle}\n ref={el => (this.exportInputEl = el as HTMLInputElement)}\n />\n <button\n class=\"export\"\n disabled={this.emptyInput || this.emptyObjects}\n onClick={this.exportHandler}\n >\n {this._componentLocale.main.exportButton}\n </button>\n <button\n class=\"cancel\"\n disabled={this.notExporting}\n onClick={this.cancelCallback}\n >\n {this._componentLocale.main.cancelButton}\n </button>\n </div>\n\n <gx-ide-bpm-objects-selector\n id=\"gx-ide-bpm-objects-selector\"\n addCallback={this.addCallback}\n referencesCallback={this.referencesCallback}\n ref={el =>\n (this.bpmObjectSelectorEl =\n el as HTMLGxIdeBpmObjectsSelectorElement)\n }\n onSelectionChanged={this.handleSelectionChanged}\n ></gx-ide-bpm-objects-selector>\n </gx-ide-container>\n </div>\n </Host>\n );\n }\n}\n\nexport type ExportCallback = (exportData: ExportData) => Promise<boolean>;\n\nexport type CancelCallback = () => Promise<void>;\n\nexport type ExportData = {\n directoryName: string;\n Objects: SelectionData;\n};\n\nexport type SelectionData = {\n includeAll: boolean;\n objectIds: string[];\n};\n"],"mappings":";;;;;;AAAA,MAAMA,IAAmB;;MCyBZC,IAAkB;;;;IAOrBC,KAAAC,oBAAoB;;;;QAgFpBD,KAAAE,gBAAgB;;MACtB,IAAIF,KAAKG,gBAAgB;QACvBH,KAAKI,eAAe;QAEpB,MAAMC,IAAmB;UACvBC,eAAeN,KAAKO,cAAcC;UAClCC,UAASC,IAAAV,KAAKW,oBAAoBC,eAAS,QAAAF,WAAA,IAAAA,IAAI;YAC7CG,YAAY;YACZC,WAAW;;;QAIfd,KAAKG,eAAeE,GACjBU,MAAK;UACJf,KAAKI,eAAe;AAAI,YAEzBY,OAAMC;UACLC,QAAQD,MAAM,2BAA2BA;UACzCjB,KAAKI,eAAe;AAAI;;;IAKxBJ,KAAAmB,cAAcC;;MACpBpB,KAAKqB,gBAAcX,IAAAV,KAAKO,cAAcC,WAAK,QAAAE,WAAA,aAAAA,EAAEY;AAAM;IAG7CtB,KAAAuB,yBAAyB;MAC/BvB,KAAKwB,gBAAgBxB,KAAKW,oBAAoBC,UAAUE,UAAUQ;AAAM;sBAlGpD;wBACE;wBACA;wBAOQ;;;;;;;EA0ChC,uBAAMG;IACJzB,KAAK0B,yBAAyBC,EAAOC,oBAAoB5B,KAAK6B;;EAGhE,kBAAAC;IACE,KAAK9B,KAAKC,mBAAmB;MAC3BD,KAAK+B,4BAA4BC,KAC/BhC,KAAK0B,iBAAiBO;MAExBjC,KAAKC,oBAAoB;;;;EA2C7B,MAAAiC;IACE,OACEC,EAACC,GAAI;MAACC,OAAM;OACVF,EAAA;MAAKE,OAAM;OACTF,EAAA;MACEG,gBACEtC,KAAKuC,eAAevC,KAAK0B,iBAAiBO,gBAAgB;MAE5DO,eAAeC,EAAOC,eAAeF;OAErCL,EAAA;MAAKE,OAAM;OACTF,EAAA;MAAOQ,SAAQ;MAAmBN,OAAM;OACrCrC,KAAK0B,iBAAiBkB,KAAKC,mBAE9BV,EAAA;MACEW,MAAK;MACLC,IAAG;MACHV,OAAM;MACNW,SAAShD,KAAKmB;MACd8B,KAAKpB,KAAO7B,KAAKO,gBAAgBsB;QAEnCM,EAAA;MACEE,OAAM;MACNa,UAAUlD,KAAKqB,cAAcrB,KAAKwB;MAClC2B,SAASnD,KAAKE;OAEbF,KAAK0B,iBAAiBkB,KAAKQ,eAE9BjB,EAAA;MACEE,OAAM;MACNa,UAAUlD,KAAKI;MACf+C,SAASnD,KAAKqD;OAEbrD,KAAK0B,iBAAiBkB,KAAKU,gBAIhCnB,EAAA;MACEY,IAAG;MACHQ,aAAavD,KAAKuD;MAClBC,oBAAoBxD,KAAKwD;MACzBP,KAAKpB,KACF7B,KAAKW,sBACJkB;MAEJ4B,oBAAoBzD,KAAKuB"}
@@ -1,146 +0,0 @@
1
- import { h as e } from "./p-25a9f1d7.js";
2
-
3
- const n = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ];
4
-
5
- const daysFromToday = e => {
6
- const n = new Date;
7
- // To calculate the time difference of two dates
8
- const t = n.getTime() - e.getTime();
9
- // To calculate the no. of days between two dates
10
- const s = t / (1e3 * 3600 * 24);
11
- return Math.floor(s);
12
- };
13
-
14
- // - - - - - - - - - - - -
15
- // Date Functions
16
- // - - - - - - - - - - - -
17
- const isToday = e => {
18
- const n = new Date;
19
- if (n.toDateString() === e.toDateString()) {
20
- return true;
21
- }
22
- return false;
23
- };
24
-
25
- const isYesterday = e => {
26
- const n = new Date;
27
- n.setDate(n.getDate() - 1);
28
- if (n.toDateString() === e.toDateString()) {
29
- return true;
30
- }
31
- return false;
32
- };
33
-
34
- const formatDate = (e, t = "date-time") => {
35
- var s;
36
- let o;
37
- // validate date
38
- // undefined or null
39
- if (e === undefined || e === null) {
40
- return "";
41
- }
42
- // If the date object is invalid it will return 'NaN' on getTime() and NaN is never equal to itself
43
- const r = e.getTime() === e.getTime();
44
- if (!r) {
45
- return "Invalid date";
46
- }
47
- let a = "en-US";
48
- const c = (s = document.getElementsByTagName("html")[0].getAttribute("lang")) === null || s === void 0 ? void 0 : s.valueOf();
49
- if (c === "es") {
50
- a = "es-ES";
51
- }
52
- o = e.toLocaleDateString(a);
53
- const i = e.getFullYear();
54
- const u = String(e.getMonth() + 1).padStart(2, "0");
55
- const l = String(e.getDate()).padStart(2, "0");
56
- const d = String(e.getHours()).padStart(2, "0");
57
- const $ = String(e.getMinutes()).padStart(2, "0");
58
- const f = `${d}:${$}`;
59
- if (t === "date-time") {
60
- o += ` / ${e.toLocaleTimeString()}`;
61
- } else if (t === "date-time-short") {
62
- // No seconds
63
- if (a === "es-ES") {
64
- o = `${i}-${u}-${l} ${f}`;
65
- } else {
66
- o = `${u}/${l}/${i} ${f}`;
67
- }
68
- } else {
69
- const t = daysFromToday(e);
70
- const s = new Date;
71
- const r = s.getFullYear();
72
- if (isToday(e)) {
73
- return `Today ${f}`;
74
- } else if (isYesterday(e)) {
75
- return `Yesterday ${f}`;
76
- } else if (t <= 7) {
77
- // If one week or less, just show the day of the week, and the time
78
- const t = n[e.getDay()];
79
- return `${t} ${f}`;
80
- } else if (r === i) {
81
- // If current year, show day number and month name. Example: November 17th
82
- if (a === "es-ES") {
83
- o = `${l} de ${e.toLocaleString("es-ES", {
84
- month: "long"
85
- })} ${f}`;
86
- } else {
87
- o = `${e.toLocaleString("en-US", {
88
- month: "long"
89
- })} ${l} ${f}`;
90
- }
91
- } else {
92
- // Display date as usual
93
- o = formatDate(e, "date-time-short");
94
- }
95
- }
96
- return o;
97
- };
98
-
99
- const escapeRegExp = e => e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
100
-
101
- /**
102
- * @description this function highlights the character(s) that match(es) the filter value.
103
- * hiChar comes from (hi)light (Char)acters
104
- * @param text the string to find the filter value on
105
- * @param filterValue the filter value
106
- * @returns a span element
107
- */ const hiChar = function(n, t) {
108
- if (n && t) {
109
- const s = escapeRegExp(t);
110
- const o = new RegExp(s, "gi");
111
- return e("span", {
112
- innerHTML: n.replace(o, '<span class="hiChar">$&</span>')
113
- });
114
- } else {
115
- return n;
116
- }
117
- };
118
-
119
- const closeOnOutsideClickHandler = (e, n) => {
120
- if (!e.composedPath().includes(n)) {
121
- return true;
122
- }
123
- };
124
-
125
- const mapOptionsToComboBoxItemModel = e => e.map((e => ({
126
- value: e.id,
127
- caption: e.label
128
- })));
129
-
130
- const renderChCheckboxItems = (n, t, s) => n === null || n === void 0 ? void 0 : n.map((n => {
131
- const o = s === null || s === void 0 ? void 0 : s.find((e => n.value === e || n.id === e));
132
- return e("ch-checkbox", {
133
- name: n.name,
134
- class: "checkbox",
135
- checkedValue: n.value || n.id,
136
- caption: n.label,
137
- disabled: n.disabled,
138
- value: o,
139
- onInput: t,
140
- startImgSrc: n.iconName,
141
- key: n.value || n.id
142
- });
143
- }));
144
-
145
- export { closeOnOutsideClickHandler as c, formatDate as f, hiChar as h, mapOptionsToComboBoxItemModel as m, renderChCheckboxItems as r };
146
- //# sourceMappingURL=p-9ddea83b.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["daysOfWeek","daysFromToday","date","today","Date","timeDifference","getTime","daysDifference","Math","floor","isToday","toDateString","isYesterday","yesterday","setDate","getDate","formatDate","type","formattedDate","undefined","dateIsValid","locale","lang","_a","document","getElementsByTagName","getAttribute","valueOf","toLocaleDateString","year","getFullYear","month","String","getMonth","padStart","day","hours","getHours","minutes","getMinutes","time","toLocaleTimeString","daysPassedFromToday","currentYear","getDay","toLocaleString","escapeRegExp","str","replace","hiChar","text","filterValue","escapedFilterValue","re","RegExp","h","innerHTML","closeOnOutsideClickHandler","eventInfo","ref","composedPath","includes","mapOptionsToComboBoxItemModel","options","map","option","value","id","caption","label","renderChCheckboxItems","frontEndCheckboxInputHandler","checkedIds","find","name","class","checkedValue","disabled","onInput","startImgSrc","iconName","key"],"sources":["src/common/helpers.tsx"],"sourcesContent":["import { h } from \"@stencil/core\";\n\nimport {\n ChCheckboxCustomEvent,\n ComboBoxModel,\n TreeViewItemModel\n} from \"@genexus/chameleon-controls-library\";\nexport type ChCheckboxArray = HTMLChCheckboxElement[] | null;\n\nimport { GxOption } from \"./types\";\n\nconst daysOfWeek = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n];\n\n/**\n * @param element an HTMLElement\n * @returns an alphabetically ordered array of all the parts and exportparts the element contains.\n */\nexport const getElementSelectorParts = (element: HTMLElement) => {\n const queries: string[] = [];\n const elementParts = element.shadowRoot?.querySelectorAll(`[part]`);\n const elementExportParts =\n element.shadowRoot?.querySelectorAll(`[exportparts]`);\n\n elementParts?.forEach(el => {\n queries.push(\n `${element.tagName.toLowerCase()}::part(${el.getAttribute(\"part\")})`\n );\n });\n elementExportParts?.forEach(el => {\n queries.push(\n ...[\n ...el.getAttribute(\"exportparts\").matchAll(/(?:[\\w-]+:)?([\\w-]+)/g)\n ].map(item => `${element.tagName.toLowerCase()}::part(${item[1]})`)\n );\n });\n\n return queries.sort();\n};\n\n/**\n * @param selector a part selector\n * @returns A reference to the element the part belongs to.\n */\nexport const querySelectorPart = (selector: string) => {\n const querySelectorDeep = (\n element: HTMLElement,\n parts: string\n ): HTMLElement => {\n const shadow = element.shadowRoot;\n const partList = parts.split(\" \");\n\n const partElement: HTMLElement = shadow.querySelector(\n partList.map(partName => `[part~=\"${partName}\"]`).join(\"\")\n );\n if (partElement) {\n return partElement;\n }\n\n const exportPartElement: HTMLElement = shadow.querySelector(\n partList.map(partName => `[exportparts*=\"${partName}\"]`).join(\"\")\n );\n if (exportPartElement) {\n const exportPartList: string[] = [];\n const exportparts = exportPartElement.getAttribute(\"exportparts\");\n\n partList.forEach(partItem => {\n const exportPartName = exportparts.match(\n `(?:([\\\\w-]+):)?(${partItem})`\n )[1];\n if (exportPartName) {\n exportPartList.push(exportPartName);\n }\n });\n\n if (partList.length === exportPartList.length) {\n return querySelectorDeep(exportPartElement, exportPartList.join(\" \"));\n }\n }\n\n return null;\n };\n\n const selectorItems = selector.match(\"(.*)::part\\\\(([^)]+)\\\\)\");\n const entity = selectorItems[1];\n const partName = selectorItems[2];\n\n return querySelectorDeep(document.querySelector(entity), partName);\n};\n\nconst daysFromToday = (date: Date): number => {\n const today = new Date();\n // To calculate the time difference of two dates\n const timeDifference = today.getTime() - date.getTime();\n // To calculate the no. of days between two dates\n const daysDifference = timeDifference / (1000 * 3600 * 24);\n return Math.floor(daysDifference);\n};\n\n// - - - - - - - - - - - -\n// Date Functions\n// - - - - - - - - - - - -\n\nconst isToday = (date: Date): boolean => {\n const today = new Date();\n if (today.toDateString() === date.toDateString()) {\n return true;\n }\n return false;\n};\n\nconst isYesterday = (date: Date): boolean => {\n const yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n if (yesterday.toDateString() === date.toDateString()) {\n return true;\n }\n return false;\n};\n\nexport const formatDate = (\n date: Date,\n type: FormatDateType = \"date-time\"\n): string => {\n let formattedDate;\n // validate date\n // undefined or null\n if (date === undefined || date === null) {\n return \"\";\n }\n // If the date object is invalid it will return 'NaN' on getTime() and NaN is never equal to itself\n const dateIsValid = date.getTime() === date.getTime();\n if (!dateIsValid) {\n return \"Invalid date\";\n }\n let locale = \"en-US\";\n const lang = document\n .getElementsByTagName(\"html\")[0]\n .getAttribute(\"lang\")\n ?.valueOf();\n if (lang === \"es\") {\n locale = \"es-ES\";\n }\n formattedDate = date.toLocaleDateString(locale);\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const day = String(date.getDate()).padStart(2, \"0\");\n const hours = String(date.getHours()).padStart(2, \"0\");\n const minutes = String(date.getMinutes()).padStart(2, \"0\");\n const time = `${hours}:${minutes}`;\n if (type === \"date-time\") {\n formattedDate += ` / ${date.toLocaleTimeString()}`;\n } else if (type === \"date-time-short\") {\n // No seconds\n if (locale === \"es-ES\") {\n formattedDate = `${year}-${month}-${day} ${time}`;\n } else {\n formattedDate = `${month}/${day}/${year} ${time}`;\n }\n } else if (\"pretty\") {\n const daysPassedFromToday = daysFromToday(date);\n const today = new Date();\n const currentYear = today.getFullYear();\n if (isToday(date)) {\n return `Today ${time}`;\n } else if (isYesterday(date)) {\n return `Yesterday ${time}`;\n } else if (daysPassedFromToday <= 7) {\n // If one week or less, just show the day of the week, and the time\n const day = daysOfWeek[date.getDay()];\n return `${day} ${time}`;\n } else if (currentYear === year) {\n // If current year, show day number and month name. Example: November 17th\n if (locale === \"es-ES\") {\n formattedDate = `${day} de ${date.toLocaleString(\"es-ES\", {\n month: \"long\"\n })} ${time}`;\n } else {\n formattedDate = `${date.toLocaleString(\"en-US\", {\n month: \"long\"\n })} ${day} ${time}`;\n }\n } else {\n // Display date as usual\n formattedDate = formatDate(date, \"date-time-short\");\n }\n }\n return formattedDate;\n};\n\nexport type FormatDateType =\n | \"date\"\n | \"date-time\"\n | \"date-time-short\"\n | \"pretty\";\n\n// - - - - - - - - - - - -\n// /End of Date Functions\n// - - - - - - - - - - - -\n\n/* Count the total tree nodes (by default it does not count the first level nodes)*/\nexport const countTreeItems = (\n treeModel: TreeViewItemModel[],\n children = false\n): number => {\n let totalNodes = 0;\n treeModel.forEach(node => {\n children && totalNodes++;\n if (node.items) {\n totalNodes += countTreeItems(node.items, true);\n }\n });\n return totalNodes;\n};\n\n/**\n * @description it evaluates the initial selected combo item\n * @param options an array of GxOption\n * @returns the initial combo value, which in this case is the id\n */\nexport const setInitialComboValue = (options: GxOption[]): string => {\n const selected = options.find(option => option.selected);\n if (selected) {\n return selected.value || selected.id;\n } else {\n return options[0].value || options[0].id;\n }\n};\n\nexport const escapeRegExp = (str: string) => {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n};\n\n/**\n * @description this function highlights the character(s) that match(es) the filter value.\n * hiChar comes from (hi)light (Char)acters\n * @param text the string to find the filter value on\n * @param filterValue the filter value\n * @returns a span element\n */\nexport const hiChar = function (text: string, filterValue: string) {\n if (text && filterValue) {\n const escapedFilterValue = escapeRegExp(filterValue);\n const re = new RegExp(escapedFilterValue, \"gi\");\n return (\n <span\n innerHTML={text.replace(re, '<span class=\"hiChar\">$&</span>')}\n ></span>\n );\n } else {\n return text;\n }\n};\n\nexport const closeOnOutsideClickHandler = (\n eventInfo: PointerEvent,\n ref: HTMLElement\n): true | void => {\n if (!eventInfo.composedPath().includes(ref)) {\n return true;\n }\n};\n\nexport const mapOptionsToComboBoxItemModel = (\n options: GxOption[]\n): ComboBoxModel =>\n options.map(option => ({\n value: option.id,\n caption: option.label\n // startImgSrc: option.iconName\n }));\n\nexport const renderChCheckboxItems = (\n options: GxOption[] | undefined,\n frontEndCheckboxInputHandler: (\n event: ChCheckboxCustomEvent<string> | InputEvent\n ) => void,\n checkedIds: string[]\n): HTMLChCheckboxElement[] => {\n return options?.map(option => {\n const value = checkedIds?.find(\n id => option.value === id || option.id === id\n );\n return (\n <ch-checkbox\n name={option.name}\n class=\"checkbox\"\n checkedValue={option.value || option.id}\n caption={option.label}\n disabled={option.disabled}\n value={value}\n onInput={frontEndCheckboxInputHandler}\n startImgSrc={option.iconName}\n key={option.value || option.id}\n ></ch-checkbox>\n );\n });\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["aiAssistantCss","CSS_BUNDLES","GxIdeTemplate","this","setFocus","scrollToBottomFlag","evaluateAiInProgress","_a","messages","length","type","aIInProgress","evaluateAiStatus","assistantStatus","renderMessage","message","i","text","h","style","messageType","hidden","filterValue","key","toString","translations","_componentLocale","aiMessage","aiAssistantHostRef","el","textAreaInputHandler","userHasTyped","showFilter","filterEl","value","promptEnterHandler","async","prompt","promptTrimmed","detail","replace","textAreaEl","setTimeout","lastUserMessageHeight","offsetHeight","addMessage","userMessageCallback","then","filterMessagesHandler","e","toLowerCase","filteredMessages","forEach","includes","clearMessages","focus","clearCallback","attachShortcuts","focusShortcuts","ctrlFocusIndex","findIndex","toLocaleLowerCase","shiftFocusIndex","cmdKeyIndex","keyFocus","find","document","addEventListener","ctrlKey","shiftKey","metaKey","promptArrowUpHandler","lastUserMessage","textareaShadowPart","height","toggleFilterHandler","promptFocusHandler","promptHasFocus","promptBlurHandler","scrollToBottom","messagesWrapperEl","scrollTo","scrollHeight","scrollTop","clientHeight","_GxIdeTemplate_mouseDownListener","set","removeAttribute","_GxIdeTemplate_mouseUpListener","setAttribute","watchAIInProgressHandler","aiInProgress","watchMessagesHandler","componentWillLoad","Locale","getComponentStrings","componentDidLoad","shadowRoot","querySelector","__classPrivateFieldGet","componentDidRender","handleFocus","event","preventDefault","clear","updateInProgressMessage","pop","push","render","Host","class","tabindex","model","componentName","filter","icon","onClick","disabled","onInput","ref","scrollable","map","ai","promptValue","maxHeight","promptMaxHeight","placeholder","processingQueryPlaceholder","promptPlaceholder","onEnter","onArrowUpPressed","onBlur","onFocus","_b","prompt__shortcuts","shortcut"],"sources":["src/components/ai-assistant/ai-assistant.scss?tag=gx-ide-ai-assistant&encapsulation=shadow","src/components/ai-assistant/ai-assistant.tsx"],"sourcesContent":["@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n@import \"../../../node_modules/@genexus/gemini/dist/gemini/globals/mixins.scss\";\n\n:host {\n font-family: var(--mer-font-family--primary);\n display: block;\n height: 100%;\n flex-basis: 286px;\n flex-shrink: 0;\n height: 100%;\n overflow-y: auto;\n}\n.gx-ide-main-wrapper {\n padding: 0 10px 52px 10px;\n background-color: var(--mer-surface);\n height: 100%;\n display: grid;\n grid-template-rows: auto 1fr auto;\n gap: var(--mer-spacing--sm);\n}\n\n/*--- Header ---*/\n.header {\n padding-block-start: var(--mer-spacing--sm);\n display: flex;\n flex-direction: column;\n\n &__actions-wrapper {\n display: flex;\n gap: var(--ai-assistant-header-actions-gap);\n margin-inline-start: auto;\n }\n &__first-row {\n display: flex;\n gap: var(--mer-spacing--xs);\n align-items: center;\n justify-content: space-between;\n }\n &__filter {\n margin-block-start: var(--mer-spacing--xs);\n }\n &__second-row {\n transition: 100ms grid-template-rows;\n display: grid;\n grid-template-rows: 0fr;\n\n &--visible {\n grid-template-rows: 1fr;\n }\n }\n .filter-inner-wrapper {\n overflow: hidden;\n }\n}\n\n/*--- Messages ---*/\n.messages-wrapper {\n position: relative;\n overflow: auto;\n display: flex;\n flex-direction: column;\n scroll-behavior: smooth;\n @include gxg-scrollbar();\n}\n.messages {\n display: flex;\n flex-direction: column;\n list-style-type: none;\n padding: 0;\n margin: 0;\n}\n\n/*--- Prompt ---*/\n.prompt {\n position: relative;\n margin-top: auto;\n\n &__textarea {\n &::part(textarea-wrapper) {\n border: none;\n }\n &::part(textarea) {\n border: none;\n background-color: var(--mer-color__neutral-gray--800);\n }\n }\n &__shortcuts {\n position: absolute;\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--2xs);\n padding-inline-end: var(--mer-spacing--xs);\n right: 0;\n top: 0;\n height: 100%;\n }\n &__shortcut {\n color: var(--mer-color__neutral-gray--400);\n font-size: var(--mer-font__size--2xs);\n padding: var(--mer-spacing--3xs) var(--mer-spacing--xs);\n background-color: var(--mer-color__neutral-gray--700);\n border-radius: var(--mer-border__radius--xs);\n }\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n Element,\n Method,\n State,\n Watch,\n Listen\n} from \"@stencil/core\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/icon\",\n \"components/button\"\n];\n\nimport { Locale } from \"../../common/locale\";\n\nimport { MercuryBundles } from \"@genexus/mercury\";\n\n@Component({\n tag: \"gx-ide-ai-assistant\",\n styleUrl: \"ai-assistant.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/ai-assistant\"]\n})\nexport class GxIdeTemplate {\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n /* lastUserMessageHeight is used to set the appropriate height on the textarea, if user presses arrowUp (recover last message)*/\n private lastUserMessageHeight: number;\n private setFocus = true;\n private scrollToBottomFlag = true;\n\n @Element() el: HTMLGxIdeAiAssistantElement;\n private textAreaEl!: HTMLGxgFormTextareaElement;\n private textareaShadowPart: HTMLTextAreaElement;\n private filterEl: HTMLGxgFormTextElement;\n private messagesWrapperEl!: HTMLDivElement;\n\n /**\n * Flag used to hide the shortcuts\n */\n @State() userHasTyped = false;\n\n /**\n * This is true if the last message is of type 'assistant-in-progress'\n */\n @State() aIInProgress = false;\n @Watch(\"aIInProgress\")\n watchAIInProgressHandler(aiInProgress: boolean) {\n if (!aiInProgress) {\n this.setFocus = true;\n }\n }\n\n /**\n * This displays or hides the messages filter\n */\n @State() showFilter = false;\n\n /**\n * True if the prompt textbox has focus\n */\n @State() promptHasFocus = false;\n\n /**\n * The filter value\n */\n @State() filterValue: string;\n\n /**\n * List of messages displayed by the component\n */\n @Prop({ mutable: true }) messages: Message[] = [];\n @Watch(\"messages\")\n watchMessagesHandler() {\n this.evaluateAiInProgress();\n this.evaluateAiStatus();\n }\n\n /**\n * The prompt textarea max-height\n */\n @Prop() readonly promptMaxHeight = \"128px\";\n\n /**\n * A temporary property to illustrate the assistant status\n */\n @Prop({ mutable: true }) assistantStatus: AiStatus = \"indeterminate\";\n\n /**\n * List of keys that make up the shortcut to focus on the component's text input\n */\n @Prop() readonly focusShortcuts: string[];\n\n /**\n * List of keys that make up the shortcut to focus on the component's text input\n */\n @Prop() readonly userMessageCallback: UserMessageCallback;\n\n /**\n * Callback that must be invoked when the conversation is cleared, using the header button.\n */\n @Prop() readonly clearCallback: () => Promise<void>;\n\n /**\n * the prompt value\n */\n @Prop() readonly promptValue: string;\n\n /**\n * If tue, it will display a filter.\n */\n @Prop() readonly filter = true;\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n this.evaluateAiInProgress();\n this.evaluateAiStatus();\n this.attachShortcuts();\n }\n\n componentDidLoad() {\n this.textareaShadowPart =\n this.textAreaEl.shadowRoot.querySelector(\"textarea\");\n this.el.addEventListener(\"mousedown\", this.#mouseDownListener);\n this.el.addEventListener(\"mouseup\", this.#mouseUpListener);\n }\n\n componentDidRender() {\n if (this.setFocus) {\n setTimeout(() => {\n /* Doesn't seems to work without the setTimeout */\n this.textAreaEl.focus();\n this.setFocus = false;\n }, 50);\n }\n setTimeout(() => {\n this.scrollToBottom();\n }, 200);\n }\n\n @Listen(\"focus\", { capture: true })\n handleFocus(event: FocusEvent) {\n if (this.textAreaEl) {\n event.preventDefault();\n this.textAreaEl.focus();\n }\n }\n\n /**\n * Clear the list of messages\n */\n @Method()\n async clear() {\n this.messages = [];\n }\n\n /**\n * Add a message. This method will be used by the host to add messages from the assistant\n */\n @Method()\n async addMessage(message: Message) {\n if (message.text?.length > 0) {\n const messages = [...this.messages];\n const updateInProgressMessage =\n messages?.length > 0 &&\n messages[messages.length - 1].type === \"assistant-in-progress\";\n if (updateInProgressMessage) {\n messages.pop();\n }\n messages.push(message);\n this.messages = messages;\n }\n }\n\n private evaluateAiInProgress = () => {\n if (\n this.messages?.length > 0 &&\n this.messages[this.messages.length - 1].type === \"assistant-in-progress\"\n ) {\n this.aIInProgress = true;\n } else {\n this.aIInProgress = false;\n }\n };\n\n private evaluateAiStatus = () => {\n if (this.messages?.length === 0) {\n this.assistantStatus = \"indeterminate\";\n return;\n }\n if (\n this.messages[this.messages.length - 1].type ===\n \"assistant-in-progress\" ||\n this.messages[this.messages.length - 1].type === \"user\"\n ) {\n this.assistantStatus = \"indeterminate\";\n } else if (\n this.messages[this.messages.length - 1].type === \"assistant-error\"\n ) {\n this.assistantStatus = \"error\";\n } else {\n this.assistantStatus = \"success\";\n }\n };\n\n private renderMessage = (\n message: Message,\n i: number\n ): HTMLLIElement | void => {\n if (message.text.length > 0) {\n return (\n <gx-ide-ai-message\n style={{\n \"--primary-color\": \"lightblue\"\n }}\n message={message.text}\n messageType={message.type}\n hidden={message.hidden}\n filterValue={this.filterValue}\n key={`${i.toString()}-${message.type}`}\n translations={this._componentLocale.aiMessage}\n aiAssistantHostRef={this.el}\n ></gx-ide-ai-message>\n );\n }\n };\n\n private textAreaInputHandler = () => {\n this.userHasTyped = true;\n this.showFilter = false;\n this.filterEl.value = \"\";\n this.filterValue = \"\";\n this.scrollToBottomFlag = true;\n };\n\n private promptEnterHandler = async (prompt: CustomEvent<string>) => {\n /* First remove double spaces */\n const promptTrimmed = prompt.detail.replace(/\\s+/g, \" \");\n /* Update textarea value to get the proper height */\n this.textAreaEl.value = promptTrimmed;\n setTimeout(() => {\n /* Then save the actual height (setTimeOut required) */\n this.lastUserMessageHeight = this.textAreaEl.offsetHeight;\n }, 0);\n /* The clear the textarea */\n this.textAreaEl.value = \"\";\n /* Insert the user message */\n this.addMessage({\n type: \"user\",\n text: promptTrimmed\n });\n /* Call the callback */\n if (this.userMessageCallback && !this.aIInProgress) {\n this.aIInProgress = true;\n this.userMessageCallback(promptTrimmed).then(() => {\n this.aIInProgress = false;\n });\n }\n };\n\n private filterMessagesHandler = (e: CustomEvent<string>) => {\n this.scrollToBottomFlag = false;\n this.filterValue = e.detail.toLowerCase();\n const filteredMessages = [...this.messages];\n filteredMessages.forEach(message => {\n if (message.text.toLowerCase().includes(this.filterValue)) {\n message.hidden = false;\n } else {\n message.hidden = true;\n }\n });\n this.messages = filteredMessages;\n };\n\n private clearMessages = () => {\n this.messages = [];\n this.textAreaEl.focus();\n if (this.clearCallback) {\n this.clearCallback();\n }\n };\n\n private attachShortcuts = () => {\n if (this.focusShortcuts?.length > 0) {\n const ctrlFocusIndex = this.focusShortcuts.findIndex(\n key => key.toLocaleLowerCase() === \"ctrl\"\n );\n const shiftFocusIndex = this.focusShortcuts.findIndex(\n key => key.toLocaleLowerCase() === \"shift\"\n );\n const cmdKeyIndex = this.focusShortcuts.findIndex(\n key => key.toLocaleLowerCase() === \"cmd\"\n );\n const keyFocus = this.focusShortcuts\n .find(key => {\n return (\n key.toLocaleLowerCase() !== \"ctrl\" &&\n key.toLocaleLowerCase() !== \"shift\" &&\n key.toLocaleLowerCase() !== \"cmd\"\n );\n })\n .toLowerCase();\n document.addEventListener(\"keydown\", (e: KeyboardEvent) => {\n if (e.key === keyFocus && ctrlFocusIndex !== -1 && e.ctrlKey) {\n this.textAreaEl.focus();\n this.userHasTyped = true;\n } else if (e.key === keyFocus && shiftFocusIndex !== -1 && e.shiftKey) {\n this.textAreaEl.focus();\n this.userHasTyped = true;\n } else if (e.key === keyFocus && cmdKeyIndex !== -1 && e.metaKey) {\n this.textAreaEl.focus();\n this.userHasTyped = true;\n }\n });\n }\n };\n\n private promptArrowUpHandler = () => {\n this.userHasTyped = true;\n const lastUserMessage = this.messages?.find(message => {\n return message.type === \"user\";\n });\n if (lastUserMessage) {\n if (this.lastUserMessageHeight) {\n this.textareaShadowPart.style.height = `${this.lastUserMessageHeight}px`;\n }\n this.textAreaEl.value = lastUserMessage.text;\n }\n };\n\n private toggleFilterHandler = () => {\n this.showFilter = !this.showFilter;\n if (this.showFilter) {\n this.filterEl.focus();\n }\n };\n\n private promptFocusHandler = () => {\n this.promptHasFocus = true;\n };\n\n private promptBlurHandler = () => {\n this.promptHasFocus = false;\n };\n\n private scrollToBottom = () => {\n if (this.scrollToBottomFlag) {\n this.messagesWrapperEl.scrollTo(0, this.messagesWrapperEl.scrollHeight);\n this.messagesWrapperEl.scrollTop =\n this.messagesWrapperEl.scrollHeight -\n this.messagesWrapperEl.clientHeight;\n }\n };\n\n #mouseDownListener = () => {\n this.el.removeAttribute(\"tabindex\");\n };\n\n #mouseUpListener = () => {\n this.el.setAttribute(\"tabindex\", \"0\");\n };\n\n render() {\n return (\n <Host\n class={{\n [`assistant--${this.assistantStatus}`]: true,\n \"assistant--in-progress\": this.aIInProgress\n }}\n tabindex=\"0\"\n >\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <div class=\"gx-ide-main-wrapper\">\n <slot></slot>\n <header class=\"header\">\n <div class=\"header__first-row\">\n <gxg-title type=\"title-02\">\n {this._componentLocale.componentName}\n </gxg-title>\n <div class=\"header__actions-wrapper\">\n {this.filter ? (\n <gxg-button\n class=\"header__filter-button\"\n type=\"tertiary\"\n icon=\"menus/find\"\n onClick={this.toggleFilterHandler}\n disabled={this.messages.length === 0}\n ></gxg-button>\n ) : null}\n\n <gxg-button\n class=\"header__clear-button\"\n type=\"tertiary\"\n icon=\"bpm/delete\"\n onClick={this.clearMessages}\n disabled={this.messages.length === 0}\n ></gxg-button>\n </div>\n </div>\n {this.filter ? (\n <div\n class={{\n \"header__second-row\": true,\n \"header__second-row--visible\": this.showFilter\n }}\n >\n <div class=\"filter-inner-wrapper\">\n <gxg-form-text\n class=\"header__filter\"\n onInput={this.filterMessagesHandler as any}\n ref={el => (this.filterEl = el as HTMLGxgFormTextElement)}\n ></gxg-form-text>\n </div>\n </div>\n ) : null}\n </header>\n\n <div\n class={{\n \"messages-wrapper\": true,\n \"scrollable\": true\n }}\n ref={el => (this.messagesWrapperEl = el as HTMLDivElement)}\n >\n {this.messages?.length ? (\n <ol class={{ messages: true }}>\n {this.messages.map((message, i) => {\n return this.renderMessage(message, i);\n })}\n </ol>\n ) : null}\n </div>\n\n <div\n class={{\n prompt: true\n }}\n >\n <gxg-form-textarea\n ai\n class=\"prompt__textarea\"\n value={this.promptValue}\n maxHeight={this.promptMaxHeight}\n placeholder={\n this.aIInProgress\n ? this._componentLocale.processingQueryPlaceholder\n : this._componentLocale.promptPlaceholder\n }\n onInput={this.textAreaInputHandler}\n onEnter={this.promptEnterHandler}\n onArrowUpPressed={this.promptArrowUpHandler}\n onBlur={this.promptBlurHandler}\n onFocus={this.promptFocusHandler}\n disabled={this.aIInProgress}\n ref={el => (this.textAreaEl = el as HTMLGxgFormTextareaElement)}\n ></gxg-form-textarea>\n {!this.userHasTyped &&\n !this.aIInProgress &&\n !this.promptHasFocus &&\n this.focusShortcuts?.length > 0 ? (\n <div\n class={{\n prompt__shortcuts: true\n }}\n >\n {this.focusShortcuts.map((shortcut, i) => {\n /* Up to three keys allowed*/\n return i <= 2 ? (\n <span class=\"prompt__shortcut\">{shortcut}</span>\n ) : null;\n })}\n </div>\n ) : null}\n </div>\n </div>\n </Host>\n );\n }\n}\n\nexport type AiStatus = \"indeterminate\" | \"success\" | \"error\";\n\nexport type Message = {\n type: MessageType;\n text: string;\n hidden?: boolean;\n filterValue?: string;\n};\n\nexport type MessageType =\n | \"user\"\n | \"assistant-chat\"\n | \"assistant-action\"\n | \"assistant-in-progress\"\n | \"assistant-error\";\n\nexport type UserMessageCallback = (text: string) => Promise<void>;\n"],"mappings":"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"}