@genexus/genexus-ide-ui 1.1.4 → 1.1.6

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 (398) 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-55d37767.js +86 -0
  4. package/dist/cjs/code-render-55d37767.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/genexus-ide-ui.cjs.js +1 -1
  8. package/dist/cjs/gx-ide-ai-message.cjs.entry.js +2 -3
  9. package/dist/cjs/gx-ide-ai-message.cjs.entry.js.map +1 -1
  10. package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js +5 -6
  11. package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js.map +1 -1
  12. package/dist/cjs/gx-ide-bpm-task-documents.cjs.entry.js +4 -5
  13. package/dist/cjs/gx-ide-bpm-task-documents.cjs.entry.js.map +1 -1
  14. package/dist/cjs/gx-ide-chat-container_2.cjs.entry.js +239 -0
  15. package/dist/cjs/gx-ide-chat-container_2.cjs.entry.js.map +1 -0
  16. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +3 -4
  17. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js.map +1 -1
  18. package/dist/cjs/gx-ide-current-user-info.cjs.entry.js +2 -3
  19. package/dist/cjs/gx-ide-current-user-info.cjs.entry.js.map +1 -1
  20. package/dist/cjs/gx-ide-dashboard-home.cjs.entry.js +2 -3
  21. package/dist/cjs/gx-ide-dashboard-home.cjs.entry.js.map +1 -1
  22. package/dist/cjs/gx-ide-data-selector.cjs.entry.js +3 -4
  23. package/dist/cjs/gx-ide-data-selector.cjs.entry.js.map +1 -1
  24. package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js +2 -3
  25. package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js.map +1 -1
  26. package/dist/cjs/gx-ide-design-import.cjs.entry.js +7 -8
  27. package/dist/cjs/gx-ide-design-import.cjs.entry.js.map +1 -1
  28. package/dist/cjs/gx-ide-entity-selector.cjs.entry.js +3 -4
  29. package/dist/cjs/gx-ide-entity-selector.cjs.entry.js.map +1 -1
  30. package/dist/cjs/gx-ide-file-item.cjs.entry.js +5 -6
  31. package/dist/cjs/gx-ide-file-item.cjs.entry.js.map +1 -1
  32. package/dist/cjs/gx-ide-file-uploader.cjs.entry.js +2 -3
  33. package/dist/cjs/gx-ide-file-uploader.cjs.entry.js.map +1 -1
  34. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +6 -7
  35. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js.map +1 -1
  36. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +5 -6
  37. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js.map +1 -1
  38. package/dist/cjs/gx-ide-manage-module-references-v2.cjs.entry.js +4 -5
  39. package/dist/cjs/gx-ide-manage-module-references-v2.cjs.entry.js.map +1 -1
  40. package/dist/cjs/gx-ide-manage-module-references.cjs.entry.js +4 -5
  41. package/dist/cjs/gx-ide-manage-module-references.cjs.entry.js.map +1 -1
  42. package/dist/cjs/gx-ide-new-environment.cjs.entry.js +1 -1
  43. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +3 -4
  44. package/dist/cjs/gx-ide-new-kb.cjs.entry.js.map +1 -1
  45. package/dist/cjs/gx-ide-object-selector.cjs.entry.js +4 -5
  46. package/dist/cjs/gx-ide-object-selector.cjs.entry.js.map +1 -1
  47. package/dist/cjs/gx-ide-open-api-import.cjs.entry.js +3 -4
  48. package/dist/cjs/gx-ide-open-api-import.cjs.entry.js.map +1 -1
  49. package/dist/cjs/gx-ide-references.cjs.entry.js +3 -4
  50. package/dist/cjs/gx-ide-references.cjs.entry.js.map +1 -1
  51. package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js +202 -98
  52. package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js.map +1 -1
  53. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js +3 -4
  54. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js.map +1 -1
  55. package/dist/cjs/gx-ide-share-kb.cjs.entry.js +2 -3
  56. package/dist/cjs/gx-ide-share-kb.cjs.entry.js.map +1 -1
  57. package/dist/cjs/gx-ide-splash.cjs.entry.js +3 -4
  58. package/dist/cjs/gx-ide-splash.cjs.entry.js.map +1 -1
  59. package/dist/cjs/gx-ide-start-page.cjs.entry.js +5 -6
  60. package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
  61. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +1 -1
  62. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js.map +1 -1
  63. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +1 -1
  64. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js.map +1 -1
  65. package/dist/cjs/gx-ide-welcome-page.cjs.entry.js +2 -3
  66. package/dist/cjs/gx-ide-welcome-page.cjs.entry.js.map +1 -1
  67. package/dist/cjs/gx-ide-ww-attributes.cjs.entry.js +3 -4
  68. package/dist/cjs/gx-ide-ww-attributes.cjs.entry.js.map +1 -1
  69. package/dist/cjs/gx-ide-ww-files.cjs.entry.js +1 -1
  70. package/dist/cjs/gx-ide-ww-files.cjs.entry.js.map +1 -1
  71. package/dist/cjs/gx-ide-ww-images.cjs.entry.js +2 -2
  72. package/dist/cjs/gx-ide-ww-images.cjs.entry.js.map +1 -1
  73. package/dist/cjs/index.cjs.js +8 -2
  74. package/dist/cjs/index.cjs.js.map +1 -1
  75. package/dist/cjs/loader.cjs.js +1 -1
  76. package/dist/collection/collection-manifest.json +2 -1
  77. package/dist/collection/common/common.js +19 -6
  78. package/dist/collection/common/common.js.map +1 -1
  79. package/dist/collection/common/images/ai-avatar.svg +11 -0
  80. package/dist/collection/components/bpm/application-declaration/bpm-app-declaration.css +1 -0
  81. package/dist/collection/components/chat/chat-container/chat-container.css +118 -0
  82. package/dist/collection/components/chat/chat-container/chat-container.js +218 -0
  83. package/dist/collection/components/chat/chat-container/chat-container.js.map +1 -0
  84. package/dist/collection/components/chat/chat-container/gx-ide-assets/chat-container/langs/chat-container.lang.en.json +9 -0
  85. package/dist/collection/components/chat/chat-container/gx-ide-assets/chat-container/langs/chat-container.lang.ja.json +9 -0
  86. package/dist/collection/components/chat/chat-container/gx-ide-assets/chat-container/langs/chat-container.lang.zh.json +9 -0
  87. package/dist/collection/components/chat/chat-welcome/chat-welcome.css +109 -0
  88. package/dist/collection/components/chat/chat-welcome/chat-welcome.js +228 -0
  89. package/dist/collection/components/chat/chat-welcome/chat-welcome.js.map +1 -0
  90. package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/helpers.js +3 -0
  91. package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/helpers.js.map +1 -0
  92. package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/helpers.tsx +31 -0
  93. package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/images/ai-avatar-welcome.svg +21 -0
  94. package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/images/ai-avatar.svg +11 -0
  95. package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/images/header-illustration.svg +24 -0
  96. package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.en.json +10 -0
  97. package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.ja.json +10 -0
  98. package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.zh.json +10 -0
  99. package/dist/collection/components/chat/code-render.js +65 -0
  100. package/dist/collection/components/chat/code-render.js.map +1 -0
  101. package/dist/collection/components/data-selector/data-selector.css +1 -0
  102. package/dist/collection/components/object-selector/object-selector.css +1 -0
  103. package/dist/collection/components/team-dev/commit/commit.css +1 -0
  104. package/dist/collection/components/team-dev/update/update.css +2 -0
  105. package/dist/collection/components/ww-attributes/ww-attributes.css +1 -0
  106. package/dist/collection/components/ww-files/ww-files.css +1 -0
  107. package/dist/collection/components/ww-images/ww-images.css +1 -0
  108. package/dist/collection/index.js +5 -1
  109. package/dist/collection/index.js.map +1 -1
  110. package/dist/collection/showcase/chat-container/callbacks.js +105 -90
  111. package/dist/collection/showcase/chat-container/callbacks.js.map +1 -1
  112. package/dist/collection/showcase/chat-container/chat.showcase.js +145 -10
  113. package/dist/collection/showcase/chat-container/chat.showcase.js.map +1 -1
  114. package/dist/collection/testing/locale.e2e.js +1 -0
  115. package/dist/collection/testing/locale.e2e.js.map +1 -1
  116. package/dist/components/MERCURY_ASSETS.js +5 -1
  117. package/dist/components/MERCURY_ASSETS.js.map +1 -1
  118. package/dist/components/ai-message.js +1 -2
  119. package/dist/components/ai-message.js.map +1 -1
  120. package/dist/components/chat-container.js +70 -7
  121. package/dist/components/chat-container.js.map +1 -1
  122. package/dist/components/chat-welcome.js +146 -0
  123. package/dist/components/chat-welcome.js.map +1 -0
  124. package/dist/components/code-render.js +68 -41
  125. package/dist/components/code-render.js.map +1 -1
  126. package/dist/components/common.js +27 -11
  127. package/dist/components/common.js.map +1 -1
  128. package/dist/components/entity-selector.js +1 -2
  129. package/dist/components/entity-selector.js.map +1 -1
  130. package/dist/components/file-item.js +1 -2
  131. package/dist/components/file-item.js.map +1 -1
  132. package/dist/components/gx-ide-bpm-app-declaration.js +2 -3
  133. package/dist/components/gx-ide-bpm-app-declaration.js.map +1 -1
  134. package/dist/components/gx-ide-bpm-task-documents.js +1 -2
  135. package/dist/components/gx-ide-bpm-task-documents.js.map +1 -1
  136. package/dist/components/gx-ide-chat-welcome.d.ts +11 -0
  137. package/dist/components/gx-ide-chat-welcome.js +8 -0
  138. package/dist/components/gx-ide-chat-welcome.js.map +1 -0
  139. package/dist/components/gx-ide-create-kb-from-server.js +1 -2
  140. package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
  141. package/dist/components/gx-ide-current-user-info.js +1 -2
  142. package/dist/components/gx-ide-current-user-info.js.map +1 -1
  143. package/dist/components/gx-ide-dashboard-home.js +1 -2
  144. package/dist/components/gx-ide-dashboard-home.js.map +1 -1
  145. package/dist/components/gx-ide-data-selector.js +2 -3
  146. package/dist/components/gx-ide-data-selector.js.map +1 -1
  147. package/dist/components/gx-ide-data-type-selector.js +1 -2
  148. package/dist/components/gx-ide-data-type-selector.js.map +1 -1
  149. package/dist/components/gx-ide-design-import.js +1 -2
  150. package/dist/components/gx-ide-design-import.js.map +1 -1
  151. package/dist/components/gx-ide-file-uploader.js +1 -2
  152. package/dist/components/gx-ide-file-uploader.js.map +1 -1
  153. package/dist/components/gx-ide-kb-manager-export.js +1 -2
  154. package/dist/components/gx-ide-kb-manager-export.js.map +1 -1
  155. package/dist/components/gx-ide-kb-manager-import.js +1 -2
  156. package/dist/components/gx-ide-kb-manager-import.js.map +1 -1
  157. package/dist/components/gx-ide-manage-module-references-v2.js +1 -2
  158. package/dist/components/gx-ide-manage-module-references-v2.js.map +1 -1
  159. package/dist/components/gx-ide-manage-module-references.js +1 -2
  160. package/dist/components/gx-ide-manage-module-references.js.map +1 -1
  161. package/dist/components/gx-ide-new-kb.js +1 -2
  162. package/dist/components/gx-ide-new-kb.js.map +1 -1
  163. package/dist/components/gx-ide-object-selector.js +2 -3
  164. package/dist/components/gx-ide-object-selector.js.map +1 -1
  165. package/dist/components/gx-ide-open-api-import.js +1 -2
  166. package/dist/components/gx-ide-open-api-import.js.map +1 -1
  167. package/dist/components/gx-ide-references.js +1 -2
  168. package/dist/components/gx-ide-references.js.map +1 -1
  169. package/dist/components/gx-ide-sc-chat-container.js +215 -100
  170. package/dist/components/gx-ide-sc-chat-container.js.map +1 -1
  171. package/dist/components/gx-ide-select-kb-items.js +1 -2
  172. package/dist/components/gx-ide-select-kb-items.js.map +1 -1
  173. package/dist/components/gx-ide-share-kb.js +1 -2
  174. package/dist/components/gx-ide-share-kb.js.map +1 -1
  175. package/dist/components/gx-ide-splash.js +1 -2
  176. package/dist/components/gx-ide-splash.js.map +1 -1
  177. package/dist/components/gx-ide-start-page.js +1 -2
  178. package/dist/components/gx-ide-start-page.js.map +1 -1
  179. package/dist/components/gx-ide-team-dev-commit.js +1 -1
  180. package/dist/components/gx-ide-team-dev-commit.js.map +1 -1
  181. package/dist/components/gx-ide-team-dev-update.js +1 -1
  182. package/dist/components/gx-ide-team-dev-update.js.map +1 -1
  183. package/dist/components/gx-ide-welcome-page.js +1 -2
  184. package/dist/components/gx-ide-welcome-page.js.map +1 -1
  185. package/dist/components/gx-ide-ww-attributes.js +2 -3
  186. package/dist/components/gx-ide-ww-attributes.js.map +1 -1
  187. package/dist/components/gx-ide-ww-files.js +1 -1
  188. package/dist/components/gx-ide-ww-files.js.map +1 -1
  189. package/dist/components/gx-ide-ww-images.js +1 -1
  190. package/dist/components/gx-ide-ww-images.js.map +1 -1
  191. package/dist/components/index.js +6 -0
  192. package/dist/components/index.js.map +1 -1
  193. package/dist/esm/MERCURY_ASSETS-039222dd.js +7 -0
  194. package/dist/esm/MERCURY_ASSETS-039222dd.js.map +1 -0
  195. package/dist/esm/code-render-53b3b0bd.js +83 -0
  196. package/dist/esm/code-render-53b3b0bd.js.map +1 -0
  197. package/dist/esm/{common-ccb4504a.js → common-719c4daf.js} +28 -12
  198. package/dist/esm/common-719c4daf.js.map +1 -0
  199. package/dist/esm/genexus-ide-ui.js +1 -1
  200. package/dist/esm/gx-ide-ai-message.entry.js +1 -2
  201. package/dist/esm/gx-ide-ai-message.entry.js.map +1 -1
  202. package/dist/esm/gx-ide-bpm-app-declaration.entry.js +2 -3
  203. package/dist/esm/gx-ide-bpm-app-declaration.entry.js.map +1 -1
  204. package/dist/esm/gx-ide-bpm-task-documents.entry.js +1 -2
  205. package/dist/esm/gx-ide-bpm-task-documents.entry.js.map +1 -1
  206. package/dist/esm/gx-ide-chat-container_2.entry.js +234 -0
  207. package/dist/esm/gx-ide-chat-container_2.entry.js.map +1 -0
  208. package/dist/esm/gx-ide-create-kb-from-server.entry.js +1 -2
  209. package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
  210. package/dist/esm/gx-ide-current-user-info.entry.js +1 -2
  211. package/dist/esm/gx-ide-current-user-info.entry.js.map +1 -1
  212. package/dist/esm/gx-ide-dashboard-home.entry.js +1 -2
  213. package/dist/esm/gx-ide-dashboard-home.entry.js.map +1 -1
  214. package/dist/esm/gx-ide-data-selector.entry.js +2 -3
  215. package/dist/esm/gx-ide-data-selector.entry.js.map +1 -1
  216. package/dist/esm/gx-ide-data-type-selector.entry.js +1 -2
  217. package/dist/esm/gx-ide-data-type-selector.entry.js.map +1 -1
  218. package/dist/esm/gx-ide-design-import.entry.js +1 -2
  219. package/dist/esm/gx-ide-design-import.entry.js.map +1 -1
  220. package/dist/esm/gx-ide-entity-selector.entry.js +1 -2
  221. package/dist/esm/gx-ide-entity-selector.entry.js.map +1 -1
  222. package/dist/esm/gx-ide-file-item.entry.js +1 -2
  223. package/dist/esm/gx-ide-file-item.entry.js.map +1 -1
  224. package/dist/esm/gx-ide-file-uploader.entry.js +1 -2
  225. package/dist/esm/gx-ide-file-uploader.entry.js.map +1 -1
  226. package/dist/esm/gx-ide-kb-manager-export.entry.js +1 -2
  227. package/dist/esm/gx-ide-kb-manager-export.entry.js.map +1 -1
  228. package/dist/esm/gx-ide-kb-manager-import.entry.js +1 -2
  229. package/dist/esm/gx-ide-kb-manager-import.entry.js.map +1 -1
  230. package/dist/esm/gx-ide-manage-module-references-v2.entry.js +2 -3
  231. package/dist/esm/gx-ide-manage-module-references-v2.entry.js.map +1 -1
  232. package/dist/esm/gx-ide-manage-module-references.entry.js +2 -3
  233. package/dist/esm/gx-ide-manage-module-references.entry.js.map +1 -1
  234. package/dist/esm/gx-ide-new-environment.entry.js +1 -1
  235. package/dist/esm/gx-ide-new-kb.entry.js +2 -3
  236. package/dist/esm/gx-ide-new-kb.entry.js.map +1 -1
  237. package/dist/esm/gx-ide-object-selector.entry.js +2 -3
  238. package/dist/esm/gx-ide-object-selector.entry.js.map +1 -1
  239. package/dist/esm/gx-ide-open-api-import.entry.js +1 -2
  240. package/dist/esm/gx-ide-open-api-import.entry.js.map +1 -1
  241. package/dist/esm/gx-ide-references.entry.js +1 -2
  242. package/dist/esm/gx-ide-references.entry.js.map +1 -1
  243. package/dist/esm/gx-ide-sc-chat-container.entry.js +203 -99
  244. package/dist/esm/gx-ide-sc-chat-container.entry.js.map +1 -1
  245. package/dist/esm/gx-ide-select-kb-items.entry.js +1 -2
  246. package/dist/esm/gx-ide-select-kb-items.entry.js.map +1 -1
  247. package/dist/esm/gx-ide-share-kb.entry.js +1 -2
  248. package/dist/esm/gx-ide-share-kb.entry.js.map +1 -1
  249. package/dist/esm/gx-ide-splash.entry.js +2 -3
  250. package/dist/esm/gx-ide-splash.entry.js.map +1 -1
  251. package/dist/esm/gx-ide-start-page.entry.js +1 -2
  252. package/dist/esm/gx-ide-start-page.entry.js.map +1 -1
  253. package/dist/esm/gx-ide-team-dev-commit.entry.js +1 -1
  254. package/dist/esm/gx-ide-team-dev-commit.entry.js.map +1 -1
  255. package/dist/esm/gx-ide-team-dev-update.entry.js +1 -1
  256. package/dist/esm/gx-ide-team-dev-update.entry.js.map +1 -1
  257. package/dist/esm/gx-ide-welcome-page.entry.js +1 -2
  258. package/dist/esm/gx-ide-welcome-page.entry.js.map +1 -1
  259. package/dist/esm/gx-ide-ww-attributes.entry.js +2 -3
  260. package/dist/esm/gx-ide-ww-attributes.entry.js.map +1 -1
  261. package/dist/esm/gx-ide-ww-files.entry.js +1 -1
  262. package/dist/esm/gx-ide-ww-files.entry.js.map +1 -1
  263. package/dist/esm/gx-ide-ww-images.entry.js +2 -2
  264. package/dist/esm/gx-ide-ww-images.entry.js.map +1 -1
  265. package/dist/esm/index.js +8 -2
  266. package/dist/esm/index.js.map +1 -1
  267. package/dist/esm/loader.js +1 -1
  268. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  269. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  270. package/dist/genexus-ide-ui/gx-ide-assets/chat-container/langs/chat-container.lang.en.json +9 -0
  271. package/dist/genexus-ide-ui/gx-ide-assets/chat-container/langs/chat-container.lang.ja.json +9 -0
  272. package/dist/genexus-ide-ui/gx-ide-assets/chat-container/langs/chat-container.lang.zh.json +9 -0
  273. package/dist/genexus-ide-ui/gx-ide-assets/chat-welcome/helpers.tsx +31 -0
  274. package/dist/genexus-ide-ui/gx-ide-assets/chat-welcome/images/ai-avatar-welcome.svg +21 -0
  275. package/dist/genexus-ide-ui/gx-ide-assets/chat-welcome/images/ai-avatar.svg +11 -0
  276. package/dist/genexus-ide-ui/gx-ide-assets/chat-welcome/images/header-illustration.svg +24 -0
  277. package/dist/genexus-ide-ui/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.en.json +10 -0
  278. package/dist/genexus-ide-ui/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.ja.json +10 -0
  279. package/dist/genexus-ide-ui/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.zh.json +10 -0
  280. package/dist/genexus-ide-ui/index.esm.js +8 -2
  281. package/dist/genexus-ide-ui/index.esm.js.map +1 -1
  282. package/dist/genexus-ide-ui/{p-a1d73ca3.entry.js → p-01d96378.entry.js} +3 -5
  283. package/dist/genexus-ide-ui/{p-a1d73ca3.entry.js.map → p-01d96378.entry.js.map} +1 -1
  284. package/dist/genexus-ide-ui/{p-f51adb3d.entry.js → p-036d005d.entry.js} +2 -2
  285. package/dist/genexus-ide-ui/{p-f3f35e5c.entry.js → p-04205aa4.entry.js} +2 -4
  286. package/dist/genexus-ide-ui/{p-f3f35e5c.entry.js.map → p-04205aa4.entry.js.map} +1 -1
  287. package/dist/genexus-ide-ui/{p-961bb2cc.entry.js → p-0bdf34f2.entry.js} +3 -5
  288. package/dist/genexus-ide-ui/{p-961bb2cc.entry.js.map → p-0bdf34f2.entry.js.map} +1 -1
  289. package/dist/genexus-ide-ui/{p-fa18a70c.entry.js → p-1c7ea1cb.entry.js} +8 -10
  290. package/dist/genexus-ide-ui/{p-fa18a70c.entry.js.map → p-1c7ea1cb.entry.js.map} +1 -1
  291. package/dist/genexus-ide-ui/{p-530c32aa.entry.js → p-29c69938.entry.js} +8 -10
  292. package/dist/genexus-ide-ui/{p-530c32aa.entry.js.map → p-29c69938.entry.js.map} +1 -1
  293. package/dist/genexus-ide-ui/{p-67762237.entry.js → p-385c9544.entry.js} +2 -2
  294. package/dist/genexus-ide-ui/{p-4b79c3ab.entry.js → p-3da8db15.entry.js} +2 -4
  295. package/dist/genexus-ide-ui/{p-4b79c3ab.entry.js.map → p-3da8db15.entry.js.map} +1 -1
  296. package/dist/genexus-ide-ui/{p-ef5dfd35.entry.js → p-41a4364d.entry.js} +2 -4
  297. package/dist/genexus-ide-ui/{p-ef5dfd35.entry.js.map → p-41a4364d.entry.js.map} +1 -1
  298. package/dist/genexus-ide-ui/{p-56331289.entry.js → p-4538dea5.entry.js} +13 -15
  299. package/dist/genexus-ide-ui/{p-56331289.entry.js.map → p-4538dea5.entry.js.map} +1 -1
  300. package/dist/genexus-ide-ui/{p-4c717aa7.entry.js → p-48062d23.entry.js} +2 -4
  301. package/dist/genexus-ide-ui/{p-4c717aa7.entry.js.map → p-48062d23.entry.js.map} +1 -1
  302. package/dist/genexus-ide-ui/{p-9a609b51.js → p-48f5911b.js} +50 -33
  303. package/dist/genexus-ide-ui/p-48f5911b.js.map +1 -0
  304. package/dist/genexus-ide-ui/{p-6d2174ed.entry.js → p-4d0ba4f6.entry.js} +3 -5
  305. package/dist/genexus-ide-ui/{p-6d2174ed.entry.js.map → p-4d0ba4f6.entry.js.map} +1 -1
  306. package/dist/genexus-ide-ui/{p-76c3fc51.entry.js → p-4e943649.entry.js} +2 -4
  307. package/dist/genexus-ide-ui/{p-76c3fc51.entry.js.map → p-4e943649.entry.js.map} +1 -1
  308. package/dist/genexus-ide-ui/{p-29a026bb.entry.js → p-67e0b419.entry.js} +10 -12
  309. package/dist/genexus-ide-ui/{p-29a026bb.entry.js.map → p-67e0b419.entry.js.map} +1 -1
  310. package/dist/genexus-ide-ui/{p-bbf88f43.entry.js → p-690942cb.entry.js} +2 -4
  311. package/dist/genexus-ide-ui/{p-bbf88f43.entry.js.map → p-690942cb.entry.js.map} +1 -1
  312. package/dist/genexus-ide-ui/{p-84618917.entry.js → p-6f898249.entry.js} +3 -5
  313. package/dist/genexus-ide-ui/{p-84618917.entry.js.map → p-6f898249.entry.js.map} +1 -1
  314. package/dist/genexus-ide-ui/{p-fecc50e4.entry.js → p-704499e5.entry.js} +40 -42
  315. package/dist/genexus-ide-ui/{p-fecc50e4.entry.js.map → p-704499e5.entry.js.map} +1 -1
  316. package/dist/genexus-ide-ui/{p-fe490103.entry.js → p-7abe2214.entry.js} +8 -10
  317. package/dist/genexus-ide-ui/{p-fe490103.entry.js.map → p-7abe2214.entry.js.map} +1 -1
  318. package/dist/genexus-ide-ui/{p-c747afac.entry.js → p-7d8812b0.entry.js} +17 -19
  319. package/dist/genexus-ide-ui/{p-c747afac.entry.js.map → p-7d8812b0.entry.js.map} +1 -1
  320. package/dist/genexus-ide-ui/{p-edf889d2.entry.js → p-88c81f18.entry.js} +2 -4
  321. package/dist/genexus-ide-ui/{p-edf889d2.entry.js.map → p-88c81f18.entry.js.map} +1 -1
  322. package/dist/genexus-ide-ui/{p-1072bf33.entry.js → p-8cb937b7.entry.js} +2 -4
  323. package/dist/genexus-ide-ui/{p-1072bf33.entry.js.map → p-8cb937b7.entry.js.map} +1 -1
  324. package/dist/genexus-ide-ui/{p-fdf41406.entry.js → p-9fa1200f.entry.js} +12 -14
  325. package/dist/genexus-ide-ui/{p-fdf41406.entry.js.map → p-9fa1200f.entry.js.map} +1 -1
  326. package/dist/genexus-ide-ui/{p-fcecdafa.entry.js → p-a1415a9c.entry.js} +3 -3
  327. package/dist/genexus-ide-ui/{p-50f304fe.entry.js → p-aab809c4.entry.js} +11 -13
  328. package/dist/genexus-ide-ui/{p-50f304fe.entry.js.map → p-aab809c4.entry.js.map} +1 -1
  329. package/dist/genexus-ide-ui/{p-833c3585.entry.js → p-c38ce0bf.entry.js} +2 -4
  330. package/dist/genexus-ide-ui/{p-833c3585.entry.js.map → p-c38ce0bf.entry.js.map} +1 -1
  331. package/dist/genexus-ide-ui/p-c5178973.js +109 -0
  332. package/dist/genexus-ide-ui/p-c5178973.js.map +1 -0
  333. package/dist/genexus-ide-ui/{p-eea944d4.entry.js → p-c7badbf1.entry.js} +2 -4
  334. package/dist/genexus-ide-ui/{p-eea944d4.entry.js.map → p-c7badbf1.entry.js.map} +1 -1
  335. package/dist/genexus-ide-ui/{p-2b3938b4.entry.js → p-d2107cb2.entry.js} +2 -2
  336. package/dist/genexus-ide-ui/{p-ba7d1472.entry.js → p-d3767a7d.entry.js} +2 -2
  337. package/dist/genexus-ide-ui/p-da473001.entry.js +338 -0
  338. package/dist/genexus-ide-ui/p-da473001.entry.js.map +1 -0
  339. package/dist/genexus-ide-ui/{p-007173ef.entry.js → p-e28e6bc4.entry.js} +3 -5
  340. package/dist/genexus-ide-ui/{p-007173ef.entry.js.map → p-e28e6bc4.entry.js.map} +1 -1
  341. package/dist/genexus-ide-ui/{p-4cbc8a8b.entry.js → p-eb9e760d.entry.js} +10 -12
  342. package/dist/genexus-ide-ui/{p-4cbc8a8b.entry.js.map → p-eb9e760d.entry.js.map} +1 -1
  343. package/dist/genexus-ide-ui/p-ec0809a7.entry.js +317 -0
  344. package/dist/genexus-ide-ui/p-ec0809a7.entry.js.map +1 -0
  345. package/dist/genexus-ide-ui/{p-5687fdb7.entry.js → p-ecba870e.entry.js} +9 -11
  346. package/dist/genexus-ide-ui/{p-5687fdb7.entry.js.map → p-ecba870e.entry.js.map} +1 -1
  347. package/dist/genexus-ide-ui/{p-5ac47c69.js → p-ede7bd20.js} +6885 -6346
  348. package/dist/genexus-ide-ui/p-ede7bd20.js.map +1 -0
  349. package/dist/types/common/common.d.ts +1 -1
  350. package/dist/types/components/{_helpers → chat}/chat-container/chat-container.d.ts +13 -2
  351. package/dist/types/components/chat/chat-welcome/chat-welcome.d.ts +39 -0
  352. package/dist/types/components/chat/chat-welcome/gx-ide-assets/chat-welcome/helpers.d.ts +1 -0
  353. package/dist/types/components/{_helpers/chat-container → chat}/code-render.d.ts +1 -1
  354. package/dist/types/components.d.ts +73 -0
  355. package/dist/types/index.d.ts +5 -1
  356. package/dist/types/showcase/chat-container/callbacks.d.ts +1 -1
  357. package/dist/types/showcase/chat-container/chat.showcase.d.ts +15 -0
  358. package/package.json +5 -5
  359. package/dist/cjs/MERCURY_ASSETS-6bbcc011.js +0 -5
  360. package/dist/cjs/MERCURY_ASSETS-6bbcc011.js.map +0 -1
  361. package/dist/cjs/assets-manager-7227a74b.js +0 -7
  362. package/dist/cjs/assets-manager-7227a74b.js.map +0 -1
  363. package/dist/cjs/code-render-db7cb770.js +0 -59
  364. package/dist/cjs/code-render-db7cb770.js.map +0 -1
  365. package/dist/cjs/common-72f91a78.js.map +0 -1
  366. package/dist/cjs/gx-ide-chat-container.cjs.entry.js +0 -62
  367. package/dist/cjs/gx-ide-chat-container.cjs.entry.js.map +0 -1
  368. package/dist/collection/components/_helpers/chat-container/chat-container.css +0 -204
  369. package/dist/collection/components/_helpers/chat-container/chat-container.js +0 -137
  370. package/dist/collection/components/_helpers/chat-container/chat-container.js.map +0 -1
  371. package/dist/collection/components/_helpers/chat-container/code-render.js +0 -46
  372. package/dist/collection/components/_helpers/chat-container/code-render.js.map +0 -1
  373. package/dist/components/assets-manager.js +0 -5
  374. package/dist/components/assets-manager.js.map +0 -1
  375. package/dist/esm/MERCURY_ASSETS-bbdf7018.js +0 -3
  376. package/dist/esm/MERCURY_ASSETS-bbdf7018.js.map +0 -1
  377. package/dist/esm/assets-manager-0d129105.js +0 -5
  378. package/dist/esm/assets-manager-0d129105.js.map +0 -1
  379. package/dist/esm/code-render-6cbb0e63.js +0 -56
  380. package/dist/esm/code-render-6cbb0e63.js.map +0 -1
  381. package/dist/esm/common-ccb4504a.js.map +0 -1
  382. package/dist/esm/gx-ide-chat-container.entry.js +0 -58
  383. package/dist/esm/gx-ide-chat-container.entry.js.map +0 -1
  384. package/dist/genexus-ide-ui/p-1a74d49a.entry.js +0 -231
  385. package/dist/genexus-ide-ui/p-1a74d49a.entry.js.map +0 -1
  386. package/dist/genexus-ide-ui/p-5ac47c69.js.map +0 -1
  387. package/dist/genexus-ide-ui/p-6e4208d8.js +0 -9
  388. package/dist/genexus-ide-ui/p-6e4208d8.js.map +0 -1
  389. package/dist/genexus-ide-ui/p-9a609b51.js.map +0 -1
  390. package/dist/genexus-ide-ui/p-be8a59fd.js +0 -107
  391. package/dist/genexus-ide-ui/p-be8a59fd.js.map +0 -1
  392. package/dist/genexus-ide-ui/p-db9c3b37.entry.js +0 -85
  393. package/dist/genexus-ide-ui/p-db9c3b37.entry.js.map +0 -1
  394. /package/dist/genexus-ide-ui/{p-f51adb3d.entry.js.map → p-036d005d.entry.js.map} +0 -0
  395. /package/dist/genexus-ide-ui/{p-67762237.entry.js.map → p-385c9544.entry.js.map} +0 -0
  396. /package/dist/genexus-ide-ui/{p-fcecdafa.entry.js.map → p-a1415a9c.entry.js.map} +0 -0
  397. /package/dist/genexus-ide-ui/{p-2b3938b4.entry.js.map → p-d2107cb2.entry.js.map} +0 -0
  398. /package/dist/genexus-ide-ui/{p-ba7d1472.entry.js.map → p-d3767a7d.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["manageModuleReferencesCss","CSS_BUNDLES","GxManageModuleReferences","this","renderedFirstTime","_GxManageModuleReferences_filterIcon","set","getIconPath","category","name","colorType","_GxManageModuleReferences_moduleIcon","updateModulesSelectedVersion","modulesAll","selectedServerId","selectedServerIdOnModulesAllUpdate","modulesSelectedVersion","clear","forEach","module","id","versions","length","newModule","get","undefined","getActionFromCurrentModuleVersion","action","getModuleData","selectedModule","onProgress","message","progress","state","data","selectedModuleAction","Object","assign","progressValue","progressState","handleModuleChange","event","selectedModuleId","detail","rowsId","foundModule","find","item","serverSelectedCallbackHandler","async","reload","serverSelectedCallback","loadingServer","resolvedObjects","filterModulesByType","filteredModules","handleFilterChange","value","trim","toLowerCase","filter","selectedVersionName","includes","handleFilterChangeHandler","e","executeActionCallbackHandler","executeActionCallback","moduleSelectedVersionId","actionCompleted","type","currentVersion","version","showModuleMenu","serverContextMenuCallback","buttonBoundingClientRect","target","getBoundingClientRect","selection","clientX","x","clientY","y","dataType","selectedVersionId","selectedVersion","selectedVersionData","moduleActionHandler","closeProgressBar","renderModulesGrid","h","rowSelectionMode","part","class","onSelectionChanged","settingable","size","map","rowid","key","selected","moduleVersionIconColor","color","disabled","fit","onClick","renderEmptyStateModules","stateIconSrc","__classPrivateFieldGet","stateTitle","_componentLocale","modules","noModulesFilter","moduleAction","moduleCurrentVersion","renderVersionName","renderVersionWarningMessage","warningMessage","renderInstalledVersion","caption","cssClass","modulesInformation","moduleProperties","installed","notInstalled","moduleVersionsValueChangedHandler","versionId","updateSelectedModuleVersion","moduleVersionsItemChangedHandler","reRenderCounter","renderModuleVersions","label","availableVersions","labelPosition","centerLabel","onValueChanged","onItemSelected","selectedButtonChangedHandler","replace","serverItemSelectedHandler","serverId","serverValueChangedHandler","progressBarCloseHandler","setTimeout","reloadServer","Map","modulesAllWatcher","loadingServerHandler","loading","loaderEl","show","componentDidRender","componentDidRenderFirstTime","emit","componentName","componentWillLoad","Locale","getComponentStrings","el","componentDidLoad","servers","onPropValueChange","newModulesData","validate","render","Host","model","noContentPadding","noAboveFooterPadding","noBorderAboveFooter","containerTitle","displayTitle","selectServer","disableFilter","showServerCommands","icon","searchModules","reduced","fullWidth","onSelectedButtonChanged","buttonsContainer","browse","updates","ref","serversDetail","renderModuleDataProperties","emptyState","title","stateDescription","description","slot","stateType","noBorder","progressBar","defaultCaption","active","closeType","closedCallback","loaderTitle","container","borderRadius"],"sources":["src/components/modules/manage-module-references/manage-module-references.scss?tag=gx-ide-manage-module-references&encapsulation=shadow","src/components/modules/manage-module-references/manage-module-references.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 }\n &__name,\n &__description {\n line-height: 1.55em;\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 Method,\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 ModulePropertyData,\n ModuleVersionData\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\",\n styleUrl: \"manage-module-references.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/manage-module-references\"]\n})\nexport class GxManageModuleReferences {\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 /* selectedServerIdOnModulesAllUpdate is updated every time modulesAll is modified, in order to determine if the server is the same or not.*/\n private selectedServerIdOnModulesAllUpdate: string;\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 // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeManageModuleReferencesElement;\n private loaderEl!: HTMLGxgIdeLoaderElement;\n private serversDetail!: HTMLDivElement;\n\n // 3.STATE() VARIABLES //\n\n @State() modulesAll: ModuleData[] = [];\n @Watch(\"modulesAll\")\n modulesAllWatcher(modulesAll: ModuleData[]) {\n this.updateModulesSelectedVersion(modulesAll);\n }\n @State() filteredModules: ModuleData[] = [];\n @State() selectedModule: ModuleData;\n @State() selectedServerId: string;\n @State() selectedModuleAction: ActionInfo = {\n message: \"\",\n progress: 0,\n state: \"in-progress\"\n };\n @State() modulesSelectedVersion: 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 @State() reRenderCounter: number = 0;\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 Add button is clicked\n */\n @Prop() readonly addServerCallback: AddServerCallback;\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 @Watch(\"modulesAll\")\n onPropValueChange(newModulesData: ModuleData[]) {\n this.filteredModules = [...newModulesData];\n }\n\n // 8.PUBLIC METHODS API //\n\n /**\n * validate\n */\n @Method()\n async validate(): Promise<boolean> {\n return true;\n }\n\n // 9.LOCAL METHODS //\n\n private updateModulesSelectedVersion = (modulesAll: ModuleData[]) => {\n if (this.selectedServerId !== this.selectedServerIdOnModulesAllUpdate) {\n // the server has changed. clear the updateModulesSelectedVersion\n this.modulesSelectedVersion.clear();\n modulesAll.forEach(module => {\n // this.modulesSelectedVersion.set(module.id, module.versions[0].id);\n this.modulesSelectedVersion.set(\n module.id,\n module.versions[module.versions.length - 1].id\n );\n });\n } else {\n // the server has't changed. only add the module to the map, if it is a new module.\n modulesAll.forEach(module => {\n const newModule =\n this.modulesSelectedVersion.get(module.id) === undefined;\n if (newModule) {\n this.modulesSelectedVersion.set(module.id, module.versions[0].id);\n }\n });\n }\n this.selectedServerIdOnModulesAllUpdate = this.selectedServerId;\n };\n\n private getActionFromCurrentModuleVersion = (): ModuleActionType => {\n const action = this.getModuleData(\n this.selectedModule,\n \"action\"\n ) as ModuleActionType;\n return action || \"install\";\n };\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 // 10.LOCAL METHODS //\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 const foundModule = this.modulesAll.find(\n item => item.id === selectedModuleId\n );\n if (foundModule) {\n this.selectedModule = foundModule;\n }\n };\n\n /**\n * Change the server selected value in response to callbackServerSelected callback\n */\n private serverSelectedCallbackHandler = async (id: any, reload: boolean) => {\n if (this.serverSelectedCallback) {\n this.loadingServer = true;\n const resolvedObjects = await this.serverSelectedCallback(id, reload);\n this.selectedServerId = id;\n this.modulesAll = [...resolvedObjects];\n this.filterModulesByType(\"browse\");\n this.selectedModule = this.filteredModules[0];\n this.loadingServer = false;\n }\n };\n\n private handleFilterChange = (value: string) => {\n value = value.trim().toLowerCase();\n if (value) {\n this.filteredModules = this.modulesAll.filter(module => {\n const selectedVersionName = this.getModuleData(\n module,\n \"name\"\n ) as string;\n return selectedVersionName?.toLowerCase().includes(value);\n });\n } else {\n this.filteredModules = this.modulesAll;\n }\n };\n\n private handleFilterChangeHandler = (e: CustomEvent<string>) => {\n const value = e.detail;\n return this.handleFilterChange(value);\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 const moduleSelectedVersionId = this.modulesSelectedVersion.get(\n module.id\n );\n const actionCompleted = await this.executeActionCallback(\n this.selectedServerId,\n module.id,\n moduleSelectedVersionId,\n this.getActionFromCurrentModuleVersion(),\n this.onProgress\n );\n if (actionCompleted) {\n this.serverSelectedCallbackHandler(this.selectedServerId, false);\n }\n this.actionCompleted = actionCompleted;\n }\n };\n\n private filterModulesByType = (type: ModuleFilterType) => {\n // browse\n if (type === \"browse\") {\n this.filteredModules = this.modulesAll;\n }\n // installed\n else if (type === \"installed\") {\n this.filteredModules = this.modulesAll.filter((module: ModuleData) => {\n // if the module has a currentVersion (not undefined) it means it is installed\n return module.currentVersion;\n });\n } else if (type === \"updates\") {\n this.filteredModules = this.modulesAll.filter((module: ModuleData) => {\n return module.versions.find(version => version.action === \"update\");\n });\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 getModuleData = (\n module: ModuleData,\n dataType: keyof ModuleVersionData\n ): string | ModulePropertyData[] | undefined => {\n const selectedVersionId = this.modulesSelectedVersion.get(module.id);\n let selectedVersion;\n let selectedVersionData;\n if (selectedVersionId) {\n selectedVersion = module.versions.find(\n version => version.id === selectedVersionId\n );\n }\n if (selectedVersion) {\n selectedVersionData = selectedVersion[dataType];\n }\n return selectedVersionData;\n };\n\n private moduleActionHandler = (module: ModuleData) => () => {\n this.actionCompleted = false;\n this.closeProgressBar = false;\n this.executeActionCallbackHandler(module);\n };\n\n private renderModulesGrid = (): Element => {\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 class=\"tabular-grid-column\"\n settingable={false}\n size=\"min-content\"\n ></ch-tabular-grid-column>\n\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n settingable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n settingable={false}\n size=\"min-content\"\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n\n {this.filteredModules.map((module: ModuleData) => (\n <ch-tabular-grid-row\n class=\"tabular-grid-row\"\n rowid={module.id}\n key={module.id}\n selected={\n this.selectedModule && this.selectedModule.id === module.id\n }\n >\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <gxg-icon\n type=\"objects/module\"\n data-action={this.moduleVersionIconColor(module)}\n color={this.moduleVersionIconColor(module)}\n size=\"small\"\n ></gxg-icon>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell grid-cell-module__info\">\n <span class=\"grid-cell-module__name\">\n {this.getModuleData(module, \"name\")}\n </span>\n <span class=\"grid-cell-module__description\">\n {this.getModuleData(module, \"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 this.getModuleData(module, \"action\") === \"incompatible\" ||\n this.getModuleData(module, \"action\") === \"not-installable\"\n }\n fit\n part=\"module-action\"\n onClick={this.moduleActionHandler(module)}\n >\n {this.getActionFromCurrentModuleVersion()}\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 = (module: ModuleData): Color => {\n const moduleAction = this.getModuleData(module, \"action\");\n const moduleCurrentVersion = module.currentVersion;\n if (moduleAction === \"not-installable\" || moduleAction === \"incompatible\") {\n return \"warning\";\n } else if (!moduleCurrentVersion) {\n return \"mercury-primary-disabled\";\n } else {\n return \"mercury-primary\";\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 {/* <gxg-icon\n type=\"objects/module\"\n color={this.moduleVersionIconColor(this.selectedModule)}\n ></gxg-icon> */}\n {this.getModuleData(this.selectedModule, \"name\")}\n </div>\n </gxg-title>\n );\n };\n\n private renderVersionWarningMessage = () => {\n const warningMessage = this.getModuleData(\n this.selectedModule,\n \"warningMessage\"\n );\n if (warningMessage) {\n return <p class=\"module-info__alert-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 private moduleVersionsValueChangedHandler = (e: CustomEvent<any>) => {\n const versionId = e.detail;\n this.updateSelectedModuleVersion(versionId);\n };\n private moduleVersionsItemChangedHandler = (e: CustomEvent<any>) => {\n const versionId = e.detail.value;\n this.updateSelectedModuleVersion(versionId);\n };\n private updateSelectedModuleVersion = (versionId: string) => {\n if (versionId) {\n this.modulesSelectedVersion.set(this.selectedModule.id, versionId);\n this.reRenderCounter++;\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={this.getModuleData(this.selectedModule, \"id\")}\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}\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 const type = e.detail.replace(\"btn-\", \"\") as ModuleFilterType;\n this.filterModulesByType(type);\n };\n\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\n private serverValueChangedHandler = (e: CustomEvent<any>) => {\n const serverId = e.detail;\n this.serverSelectedCallbackHandler(serverId, false);\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 private reloadServer = () => {\n this.serverSelectedCallbackHandler(this.selectedServerId, true);\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 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.handleFilterChangeHandler}\n disabled={this.loadingServer}\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=\"btn-browse\"\n selected\n disabled={this.loadingServer}\n >\n {this._componentLocale.modules.buttonsContainer.browse}\n </gxg-button>\n <gxg-button\n id=\"btn-installed\"\n disabled={this.loadingServer}\n >\n {\n this._componentLocale.modules.buttonsContainer\n .installed\n }\n </gxg-button>\n <gxg-button\n id=\"btn-updates\"\n disabled={this.loadingServer}\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.filteredModules.length > 0\n ? this.renderModulesGrid()\n : this.renderEmptyStateModules()}\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 {this.renderVersionName()}\n {this.renderInstalledVersion()}\n {this.renderModuleVersions()}\n {/* {this.renderNotInstallable()} */}\n {this.renderVersionWarningMessage()}\n </header>\n <div class=\"module-info__properties gxg-scrollbar\">\n {renderModuleDataProperties(\n this.getModuleData(\n this.selectedModule,\n \"properties\"\n ) as ModulePropertyData[]\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 ></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 AddServerCallback = () => Promise<void>;\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
+ {"version":3,"names":["manageModuleReferencesCss","CSS_BUNDLES","GxManageModuleReferences","this","renderedFirstTime","_GxManageModuleReferences_filterIcon","set","getIconPath","category","name","colorType","_GxManageModuleReferences_moduleIcon","updateModulesSelectedVersion","modulesAll","selectedServerId","selectedServerIdOnModulesAllUpdate","modulesSelectedVersion","clear","forEach","module","id","versions","length","newModule","get","undefined","getActionFromCurrentModuleVersion","action","getModuleData","selectedModule","onProgress","message","progress","state","data","selectedModuleAction","Object","assign","progressValue","progressState","handleModuleChange","event","selectedModuleId","detail","rowsId","foundModule","find","item","serverSelectedCallbackHandler","async","reload","serverSelectedCallback","loadingServer","resolvedObjects","filterModulesByType","filteredModules","handleFilterChange","value","trim","toLowerCase","filter","selectedVersionName","includes","handleFilterChangeHandler","e","executeActionCallbackHandler","executeActionCallback","moduleSelectedVersionId","actionCompleted","type","currentVersion","version","showModuleMenu","serverContextMenuCallback","buttonBoundingClientRect","target","getBoundingClientRect","selection","clientX","x","clientY","y","dataType","selectedVersionId","selectedVersion","selectedVersionData","moduleActionHandler","closeProgressBar","renderModulesGrid","h","rowSelectionMode","part","class","onSelectionChanged","settingable","size","map","rowid","key","selected","moduleVersionIconColor","color","disabled","fit","onClick","renderEmptyStateModules","stateIconSrc","__classPrivateFieldGet","stateTitle","_componentLocale","modules","noModulesFilter","moduleAction","moduleCurrentVersion","renderVersionName","renderVersionWarningMessage","warningMessage","renderInstalledVersion","caption","cssClass","modulesInformation","moduleProperties","installed","notInstalled","moduleVersionsValueChangedHandler","versionId","updateSelectedModuleVersion","moduleVersionsItemChangedHandler","reRenderCounter","renderModuleVersions","label","availableVersions","labelPosition","centerLabel","onValueChanged","onItemSelected","selectedButtonChangedHandler","replace","serverItemSelectedHandler","serverId","serverValueChangedHandler","progressBarCloseHandler","setTimeout","reloadServer","Map","modulesAllWatcher","loadingServerHandler","loading","loaderEl","show","componentDidRender","componentDidRenderFirstTime","emit","componentName","componentWillLoad","Locale","getComponentStrings","el","componentDidLoad","servers","onPropValueChange","newModulesData","validate","render","Host","model","noContentPadding","noAboveFooterPadding","noBorderAboveFooter","containerTitle","displayTitle","selectServer","disableFilter","showServerCommands","icon","searchModules","reduced","fullWidth","onSelectedButtonChanged","buttonsContainer","browse","updates","ref","serversDetail","renderModuleDataProperties","emptyState","title","stateDescription","description","slot","stateType","noBorder","progressBar","defaultCaption","active","closeType","closedCallback","loaderTitle","container","borderRadius"],"sources":["src/components/modules/manage-module-references/manage-module-references.scss?tag=gx-ide-manage-module-references&encapsulation=shadow","src/components/modules/manage-module-references/manage-module-references.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 }\n &__name,\n &__description {\n line-height: 1.55em;\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 Method,\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 ModulePropertyData,\n ModuleVersionData\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\",\n styleUrl: \"manage-module-references.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/manage-module-references\"]\n})\nexport class GxManageModuleReferences {\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 /* selectedServerIdOnModulesAllUpdate is updated every time modulesAll is modified, in order to determine if the server is the same or not.*/\n private selectedServerIdOnModulesAllUpdate: string;\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 // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeManageModuleReferencesElement;\n private loaderEl!: HTMLGxgIdeLoaderElement;\n private serversDetail!: HTMLDivElement;\n\n // 3.STATE() VARIABLES //\n\n @State() modulesAll: ModuleData[] = [];\n @Watch(\"modulesAll\")\n modulesAllWatcher(modulesAll: ModuleData[]) {\n this.updateModulesSelectedVersion(modulesAll);\n }\n @State() filteredModules: ModuleData[] = [];\n @State() selectedModule: ModuleData;\n @State() selectedServerId: string;\n @State() selectedModuleAction: ActionInfo = {\n message: \"\",\n progress: 0,\n state: \"in-progress\"\n };\n @State() modulesSelectedVersion: 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 @State() reRenderCounter: number = 0;\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 Add button is clicked\n */\n @Prop() readonly addServerCallback: AddServerCallback;\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 @Watch(\"modulesAll\")\n onPropValueChange(newModulesData: ModuleData[]) {\n this.filteredModules = [...newModulesData];\n }\n\n // 8.PUBLIC METHODS API //\n\n /**\n * validate\n */\n @Method()\n async validate(): Promise<boolean> {\n return true;\n }\n\n // 9.LOCAL METHODS //\n\n private updateModulesSelectedVersion = (modulesAll: ModuleData[]) => {\n if (this.selectedServerId !== this.selectedServerIdOnModulesAllUpdate) {\n // the server has changed. clear the updateModulesSelectedVersion\n this.modulesSelectedVersion.clear();\n modulesAll.forEach(module => {\n // this.modulesSelectedVersion.set(module.id, module.versions[0].id);\n this.modulesSelectedVersion.set(\n module.id,\n module.versions[module.versions.length - 1].id\n );\n });\n } else {\n // the server has't changed. only add the module to the map, if it is a new module.\n modulesAll.forEach(module => {\n const newModule =\n this.modulesSelectedVersion.get(module.id) === undefined;\n if (newModule) {\n this.modulesSelectedVersion.set(module.id, module.versions[0].id);\n }\n });\n }\n this.selectedServerIdOnModulesAllUpdate = this.selectedServerId;\n };\n\n private getActionFromCurrentModuleVersion = (): ModuleActionType => {\n const action = this.getModuleData(\n this.selectedModule,\n \"action\"\n ) as ModuleActionType;\n return action || \"install\";\n };\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 // 10.LOCAL METHODS //\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 const foundModule = this.modulesAll.find(\n item => item.id === selectedModuleId\n );\n if (foundModule) {\n this.selectedModule = foundModule;\n }\n };\n\n /**\n * Change the server selected value in response to callbackServerSelected callback\n */\n private serverSelectedCallbackHandler = async (id: any, reload: boolean) => {\n if (this.serverSelectedCallback) {\n this.loadingServer = true;\n const resolvedObjects = await this.serverSelectedCallback(id, reload);\n this.selectedServerId = id;\n this.modulesAll = [...resolvedObjects];\n this.filterModulesByType(\"browse\");\n this.selectedModule = this.filteredModules[0];\n this.loadingServer = false;\n }\n };\n\n private handleFilterChange = (value: string) => {\n value = value.trim().toLowerCase();\n if (value) {\n this.filteredModules = this.modulesAll.filter(module => {\n const selectedVersionName = this.getModuleData(\n module,\n \"name\"\n ) as string;\n return selectedVersionName?.toLowerCase().includes(value);\n });\n } else {\n this.filteredModules = this.modulesAll;\n }\n };\n\n private handleFilterChangeHandler = (e: CustomEvent<string>) => {\n const value = e.detail;\n return this.handleFilterChange(value);\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 const moduleSelectedVersionId = this.modulesSelectedVersion.get(\n module.id\n );\n const actionCompleted = await this.executeActionCallback(\n this.selectedServerId,\n module.id,\n moduleSelectedVersionId,\n this.getActionFromCurrentModuleVersion(),\n this.onProgress\n );\n if (actionCompleted) {\n this.serverSelectedCallbackHandler(this.selectedServerId, false);\n }\n this.actionCompleted = actionCompleted;\n }\n };\n\n private filterModulesByType = (type: ModuleFilterType) => {\n // browse\n if (type === \"browse\") {\n this.filteredModules = this.modulesAll;\n }\n // installed\n else if (type === \"installed\") {\n this.filteredModules = this.modulesAll.filter((module: ModuleData) => {\n // if the module has a currentVersion (not undefined) it means it is installed\n return module.currentVersion;\n });\n } else if (type === \"updates\") {\n this.filteredModules = this.modulesAll.filter((module: ModuleData) => {\n return module.versions.find(version => version.action === \"update\");\n });\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 getModuleData = (\n module: ModuleData,\n dataType: keyof ModuleVersionData\n ): string | ModulePropertyData[] | undefined => {\n const selectedVersionId = this.modulesSelectedVersion.get(module.id);\n let selectedVersion;\n let selectedVersionData;\n if (selectedVersionId) {\n selectedVersion = module.versions.find(\n version => version.id === selectedVersionId\n );\n }\n if (selectedVersion) {\n selectedVersionData = selectedVersion[dataType];\n }\n return selectedVersionData;\n };\n\n private moduleActionHandler = (module: ModuleData) => () => {\n this.actionCompleted = false;\n this.closeProgressBar = false;\n this.executeActionCallbackHandler(module);\n };\n\n private renderModulesGrid = (): Element => {\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 class=\"tabular-grid-column\"\n settingable={false}\n size=\"min-content\"\n ></ch-tabular-grid-column>\n\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n settingable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n settingable={false}\n size=\"min-content\"\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n\n {this.filteredModules.map((module: ModuleData) => (\n <ch-tabular-grid-row\n class=\"tabular-grid-row\"\n rowid={module.id}\n key={module.id}\n selected={\n this.selectedModule && this.selectedModule.id === module.id\n }\n >\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <gxg-icon\n type=\"objects/module\"\n data-action={this.moduleVersionIconColor(module)}\n color={this.moduleVersionIconColor(module)}\n size=\"small\"\n ></gxg-icon>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell grid-cell-module__info\">\n <span class=\"grid-cell-module__name\">\n {this.getModuleData(module, \"name\")}\n </span>\n <span class=\"grid-cell-module__description\">\n {this.getModuleData(module, \"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 this.getModuleData(module, \"action\") === \"incompatible\" ||\n this.getModuleData(module, \"action\") === \"not-installable\"\n }\n fit\n part=\"module-action\"\n onClick={this.moduleActionHandler(module)}\n >\n {this.getActionFromCurrentModuleVersion()}\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 = (module: ModuleData): Color => {\n const moduleAction = this.getModuleData(module, \"action\");\n const moduleCurrentVersion = module.currentVersion;\n if (moduleAction === \"not-installable\" || moduleAction === \"incompatible\") {\n return \"warning\";\n } else if (!moduleCurrentVersion) {\n return \"mercury-primary-disabled\";\n } else {\n return \"mercury-primary\";\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 {/* <gxg-icon\n type=\"objects/module\"\n color={this.moduleVersionIconColor(this.selectedModule)}\n ></gxg-icon> */}\n {this.getModuleData(this.selectedModule, \"name\")}\n </div>\n </gxg-title>\n );\n };\n\n private renderVersionWarningMessage = () => {\n const warningMessage = this.getModuleData(\n this.selectedModule,\n \"warningMessage\"\n );\n if (warningMessage) {\n return <p class=\"module-info__alert-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 private moduleVersionsValueChangedHandler = (e: CustomEvent<any>) => {\n const versionId = e.detail;\n this.updateSelectedModuleVersion(versionId);\n };\n private moduleVersionsItemChangedHandler = (e: CustomEvent<any>) => {\n const versionId = e.detail.value;\n this.updateSelectedModuleVersion(versionId);\n };\n private updateSelectedModuleVersion = (versionId: string) => {\n if (versionId) {\n this.modulesSelectedVersion.set(this.selectedModule.id, versionId);\n this.reRenderCounter++;\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={this.getModuleData(this.selectedModule, \"id\")}\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}\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 const type = e.detail.replace(\"btn-\", \"\") as ModuleFilterType;\n this.filterModulesByType(type);\n };\n\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\n private serverValueChangedHandler = (e: CustomEvent<any>) => {\n const serverId = e.detail;\n this.serverSelectedCallbackHandler(serverId, false);\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 private reloadServer = () => {\n this.serverSelectedCallbackHandler(this.selectedServerId, true);\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 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.handleFilterChangeHandler}\n disabled={this.loadingServer}\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=\"btn-browse\"\n selected\n disabled={this.loadingServer}\n >\n {this._componentLocale.modules.buttonsContainer.browse}\n </gxg-button>\n <gxg-button\n id=\"btn-installed\"\n disabled={this.loadingServer}\n >\n {\n this._componentLocale.modules.buttonsContainer\n .installed\n }\n </gxg-button>\n <gxg-button\n id=\"btn-updates\"\n disabled={this.loadingServer}\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.filteredModules.length > 0\n ? this.renderModulesGrid()\n : this.renderEmptyStateModules()}\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 {this.renderVersionName()}\n {this.renderInstalledVersion()}\n {this.renderModuleVersions()}\n {/* {this.renderNotInstallable()} */}\n {this.renderVersionWarningMessage()}\n </header>\n <div class=\"module-info__properties gxg-scrollbar\">\n {renderModuleDataProperties(\n this.getModuleData(\n this.selectedModule,\n \"properties\"\n ) as ModulePropertyData[]\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 ></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 AddServerCallback = () => Promise<void>;\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,8 +1,6 @@
1
1
  import { r as e, h as t, H as n, a as i } from "./p-25a9f1d7.js";
2
2
 
3
- import { g as o } from "./p-6e4208d8.js";
4
-
5
- import "./p-5ac47c69.js";
3
+ import { g as o } from "./p-ede7bd20.js";
6
4
 
7
5
  import { L as r } from "./p-311eedf3.js";
8
6
 
@@ -67,9 +65,9 @@ var l = undefined && undefined.__classPrivateFieldGet || function(e, t, n, i) {
67
65
  return n === "m" ? i : n === "a" ? i.call(e) : i ? i.value : t.get(e);
68
66
  };
69
67
 
70
- var c, d, u, f, p;
68
+ var c, d, u, f, m;
71
69
 
72
- const m = [
70
+ const p = [
73
71
  // TODO: review if "utils/form--full" is required.
74
72
  "resets/box-sizing", "components/tooltip", "components/switch", "components/icon", "components/dropdown", "utils/layout", "utils/typography", "utils/spacing", "chameleon/scrollbar" ];
75
73
 
@@ -101,7 +99,7 @@ const y = class {
101
99
  // this.changeModeCallback(this.#mode);
102
100
  // }
103
101
  // };
104
- p.set(this, (e => {
102
+ m.set(this, (e => {
105
103
  const t = e.detail.id;
106
104
  if (t === h) ; else if (t === _) {
107
105
  this.changeTeamCallback();
@@ -150,13 +148,13 @@ const y = class {
150
148
  return t(n, {
151
149
  class: "widget"
152
150
  }, t("ch-theme", {
153
- model: m
151
+ model: p
154
152
  }), t("ch-action-menu-render", {
155
153
  class: "dropdown user-login__button",
156
154
  model: l(this, u, "f"),
157
155
  inlineAlign: "inside-end",
158
156
  blockAlign: "outside-end",
159
- onButtonClick: l(this, p, "f")
157
+ onButtonClick: l(this, m, "f")
160
158
  }, t("div", {
161
159
  class: "user-login__details"
162
160
  }, o ? t("span", {
@@ -188,9 +186,9 @@ const y = class {
188
186
  }
189
187
  };
190
188
 
191
- c = new WeakMap, d = new WeakMap, u = new WeakMap, f = new WeakMap, p = new WeakMap;
189
+ c = new WeakMap, d = new WeakMap, u = new WeakMap, f = new WeakMap, m = new WeakMap;
192
190
 
193
191
  y.style = s;
194
192
 
195
193
  export { y as gx_ide_current_user_info };
196
- //# sourceMappingURL=p-fa18a70c.entry.js.map
194
+ //# sourceMappingURL=p-1c7ea1cb.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["getInitialsFromName","name","trim","nameData","split","filter","Boolean","length","toUpperCase","limitFullName","fullName","fullNameData","currentUserInfoCss","CSS_BUNDLES","CHEVRON_DOWN_ICON","getIconPath","category","colorType","MY_ACCOUNT_ID","CHANGE_TEAM_ID","SIGN_OUT_ID","LANGUAGE_ID","GxIdeNewEnvironment","_GxIdeNewEnvironment_componentLocale","set","this","_GxIdeNewEnvironment_initials","_GxIdeNewEnvironment_menuDropdownModel","_GxIdeNewEnvironment_userLoginButton","_GxIdeNewEnvironment_dropDownitemClickHandler","event","id","detail","changeTeamCallback","signOutCallback","changeLanguageCallback","componentWillLoad","__classPrivateFieldSet","Locale","getComponentStrings","el","userInfo","caption","__classPrivateFieldGet","changeTeamLabel","signOutLabel","type","render","userName","_a","h","Host","class","model","inlineAlign","blockAlign","onButtonClick","_b","team","src","containerRef","slot","onClick","termsCallback","termsAndConditionsCaption","privacyCallback","privacyPolicyCaption"],"sources":["src/components/current-user-info/helpers.tsx","src/components/current-user-info/current-user-info.scss?tag=gx-ide-current-user-info&encapsulation=shadow","src/components/current-user-info/current-user-info.tsx"],"sourcesContent":["/**\n * Returns initials from the first two words of a name. Returns \"X\" for invalid input.\n *\n * @param name - The full name string.\n * @returns Initials of the first two words, or \"X\" if invalid.\n *\n * Example:\n * getInitialsFromName(\"John Doe\") -> \"JD\"\n * getInitialsFromName(\"Jane\") -> \"J\"\n * getInitialsFromName(\"\") -> \"X\"\n */\nexport const getInitialsFromName = (name: string): string | null => {\n if (typeof name !== \"string\" || name.trim() === \"\") {\n return \"X\";\n }\n\n const nameData = name.split(\" \").filter(Boolean); // Remove any empty strings from splitting\n if (nameData.length === 1) {\n return nameData[0][0].toUpperCase();\n } else {\n return `${nameData[0][0].toUpperCase()}${nameData[1][0].toUpperCase()}`;\n }\n};\n\n/**\n * Limits the full name to the first two words. Returns null for invalid input.\n *\n * @param fullName - The full name string to be limited.\n * @returns The first two words of the full name, or null if invalid.\n *\n * Example:\n * limitFullName(\"John Doe Smith\") -> \"John Doe\"\n * limitFullName(\"Jane\") -> \"Jane\"\n * limitFullName(\"\") -> null\n */\nexport const limitFullName = (fullName: string): string | null => {\n if (typeof fullName !== \"string\" || fullName.trim() === \"\") {\n return null;\n }\n\n const fullNameData = fullName.split(\" \").filter(Boolean); // Remove any empty strings from splitting\n if (fullNameData.length === 1) {\n return fullNameData[0];\n } else {\n return `${fullNameData[0]} ${fullNameData[1]}`;\n }\n};\n","@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: inline-grid;\n justify-items: end;\n block-size: 100%;\n}\n\n.dropdown::part(expandable-button) {\n display: grid;\n grid-template-columns: max-content max-content max-content;\n align-items: center;\n gap: var(--mer-spacing--sm);\n block-size: auto;\n cursor: pointer;\n}\n.user-login {\n &__details {\n display: grid;\n grid-template-rows: max-content max-content;\n gap: var(--mer-spacing--3xs);\n justify-items: end;\n }\n &__name {\n font-weight: var(--mer-font__weight--medium);\n font-size: var(--mer-font__size--3xs);\n color: var(--mer-text__on-elevation);\n }\n &__organization {\n font-weight: var(--mer-font__weight--light);\n font-size: var(--mer-font__size--4xs);\n color: var(--mer-text__neutral);\n }\n &__name,\n &__organization {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-inline-size: 120px;\n display: inline-block;\n }\n &__avatar {\n font-size: 9px;\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n justify-content: center;\n block-size: var(--mer-spacing--lg);\n inline-size: var(--mer-spacing--lg);\n color: var(--mer-text__on-elevation);\n border-radius: 50%;\n background-color: var(--mer-color__tinted-primary--10);\n border: var(--mer-border__width--sm) solid var(--mer-color__primary--200);\n }\n\n &__footer {\n display: flex;\n flex-direction: column;\n gap: var(--mer-spacing--xs);\n @include button-reset();\n\n .agreement-link {\n text-decoration: underline;\n cursor: pointer; /* Ensure it still looks clickable */\n }\n }\n}\n","/* STENCIL IMPORTS */\nimport { Component, Element, Host, Prop, State, h } from \"@stencil/core\";\n\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\nimport { getInitialsFromName, limitFullName } from \"./helpers\";\nimport {\n ActionMenuItemActionableModel,\n ActionMenuModel,\n ChActionMenuRenderCustomEvent,\n ChPopoverAlign\n} from \"@genexus/chameleon-controls-library\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n // TODO: review if \"utils/form--full\" is required.\n \"resets/box-sizing\",\n \"components/tooltip\",\n \"components/switch\",\n \"components/icon\",\n \"components/dropdown\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst CHEVRON_DOWN_ICON = getIconPath({\n category: \"navigation\",\n name: \"chevron-down\",\n colorType: \"neutral\"\n});\n\nconst MY_ACCOUNT_ID = \"my-account\";\nconst CHANGE_TEAM_ID = \"change-team\";\nconst SIGN_OUT_ID = \"sign-out\";\nconst LANGUAGE_ID = \"language\";\n\n@Component({\n tag: \"gx-ide-current-user-info\",\n styleUrl: \"current-user-info.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/current-user-info\"]\n})\nexport class GxIdeNewEnvironment {\n #componentLocale: any;\n #initials: string = \"\";\n // #mode: Mode;\n #menuDropdownModel: ActionMenuModel;\n\n @Element() el: HTMLGxIdeCurrentUserInfoElement;\n #userLoginButton: HTMLButtonElement;\n\n @State() showMenu: boolean = false;\n\n /**\n * User data\n */\n @Prop() readonly userInfo: UserInfo;\n\n /**\n * Callback executed when the user click \"My Account\" link\n */\n @Prop() readonly myAccountCallback!: () => Promise<void>;\n\n /**\n * Callback executed when the user click \"change team\" link\n */\n @Prop() readonly changeTeamCallback!: () => Promise<void>;\n\n /**\n * Callback executed when the user click \"Language\" link\n */\n @Prop() readonly changeLanguageCallback!: () => Promise<void>;\n\n /**\n * Callback executed when the user switch the \"Mode\" status\n */\n @Prop() readonly changeModeCallback!: (mode: Mode) => Promise<void>;\n\n /**\n * Defines the menu block and inline alignment\n */\n @Prop() readonly menuAlign: MenuAlign;\n\n /**\n * Callback executed when the user click \"Sign Out\" link\n */\n @Prop() readonly signOutCallback!: () => Promise<void>;\n\n /**\n * Callback executed when the user clicks on the \"term and conditions\" link\n */\n @Prop() readonly termsCallback: () => Promise<void>;\n\n /**\n * Callback executed when the user clicks on the \"privacy policy\" link\n */\n @Prop() readonly privacyCallback: () => Promise<void>;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.#initials = getInitialsFromName(this.userInfo.name);\n this.#menuDropdownModel = [\n // {\n // id: MY_ACCOUNT_ID,\n // caption: this.#componentLocale.myAccountLabel,\n // showSeparator: false\n // },\n {\n id: CHANGE_TEAM_ID,\n caption: this.#componentLocale.changeTeamLabel\n },\n {\n id: SIGN_OUT_ID,\n caption: this.#componentLocale.signOutLabel\n },\n {\n type: \"separator\"\n },\n {\n type: \"slot\",\n id: \"agreement\"\n }\n ];\n }\n\n // #handleModeSwitch = () => {\n // this.#mode = this.#mode === \"dark\" ? \"light\" : \"dark\";\n // if (this.changeModeCallback) {\n // this.changeModeCallback(this.#mode);\n // }\n // };\n\n #dropDownitemClickHandler = (\n event: ChActionMenuRenderCustomEvent<ActionMenuItemActionableModel>\n ): void => {\n const id = event.detail.id;\n if (id === MY_ACCOUNT_ID) {\n // this.myAccountCallback();\n } else if (id === CHANGE_TEAM_ID) {\n this.changeTeamCallback();\n } else if (id === SIGN_OUT_ID) {\n this.signOutCallback();\n } else if (id === LANGUAGE_ID) {\n this.changeLanguageCallback();\n }\n };\n\n render() {\n const userName = limitFullName(this.userInfo?.name);\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-action-menu-render\n class=\"dropdown user-login__button\"\n model={this.#menuDropdownModel}\n inlineAlign=\"inside-end\"\n blockAlign=\"outside-end\"\n onButtonClick={this.#dropDownitemClickHandler}\n >\n <div class=\"user-login__details\">\n {userName ? <span class=\"user-login__name\">{userName}</span> : null}\n {this.userInfo?.team ? (\n <span class=\"user-login__organization\">{this.userInfo.team}</span>\n ) : null}\n </div>\n <div class=\"user-login__avatar\">{this.#initials}</div>\n <ch-image\n src={CHEVRON_DOWN_ICON}\n class=\"icon-md\"\n containerRef={this.#userLoginButton}\n ></ch-image>\n <div class=\"user-login__footer footer-slot\" slot=\"agreement\">\n <button\n class=\"body-regular-s agreement-link\"\n onClick={this.termsCallback}\n >\n {this.#componentLocale.termsAndConditionsCaption}\n </button>\n <button\n class=\"body-regular-s\tagreement-link\"\n onClick={this.privacyCallback}\n >\n {this.#componentLocale.privacyPolicyCaption}\n </button>\n </div>\n </ch-action-menu-render>\n </Host>\n );\n }\n}\n\nexport type MenuAlign = {\n blockAlign: ChPopoverAlign;\n inlineAlign: ChPopoverAlign;\n};\n\nexport type UserInfo = {\n name: string;\n team: string;\n};\n\nexport type Mode = \"dark\" | \"light\";\n"],"mappings":";;;;;;;;;;;;;;;;;;GAWO,OAAMA,sBAAuBC;EAClC,WAAWA,MAAS,YAAYA,EAAKC,WAAW,IAAI;IAClD,OAAO;;EAGT,MAAMC,IAAWF,EAAKG,MAAM,KAAKC,OAAOC;;IACxC,IAAIH,EAASI,WAAW,GAAG;IACzB,OAAOJ,EAAS,GAAG,GAAGK;SACjB;IACL,OAAO,GAAGL,EAAS,GAAG,GAAGK,gBAAgBL,EAAS,GAAG,GAAGK;;;;;;;;;;;;;;GAerD,OAAMC,gBAAiBC;EAC5B,WAAWA,MAAa,YAAYA,EAASR,WAAW,IAAI;IAC1D,OAAO;;EAGT,MAAMS,IAAeD,EAASN,MAAM,KAAKC,OAAOC;;IAChD,IAAIK,EAAaJ,WAAW,GAAG;IAC7B,OAAOI,EAAa;SACf;IACL,OAAO,GAAGA,EAAa,MAAMA,EAAa;;;;AC5C9C,MAAMC,IAAqB;;;;;;;;;;;;;;;;;ACc3B,MAAMC,IAA8B;;AAElC,qBACA,sBACA,qBACA,mBACA,uBACA,gBACA,oBACA,iBACA;;AAGF,MAAMC,IAAoBC,EAAY;EACpCC,UAAU;EACVf,MAAM;EACNgB,WAAW;;;AAGb,MAAMC,IAAgB;;AACtB,MAAMC,IAAiB;;AACvB,MAAMC,IAAc;;AACpB,MAAMC,IAAc;;MAQPC,IAAmB;;;IAC9BC,EAAAC,IAAAC,WAAA;IACAC,EAAAF,IAAAC,MAAoB;;QAEpBE,EAAAH,IAAAC,WAAA;IAGAG,EAAAJ,IAAAC,WAAA;;;;;;;QAmFAI,EAAAL,IAAAC,OACEK;MAEA,MAAMC,IAAKD,EAAME,OAAOD;MACxB,IAAIA,MAAOb,UAEJ,IAAIa,MAAOZ,GAAgB;QAChCM,KAAKQ;aACA,IAAIF,MAAOX,GAAa;QAC7BK,KAAKS;aACA,IAAIH,MAAOV,GAAa;QAC7BI,KAAKU;;;oBA5FoB;;;;;;;;;;;EA+C7B,uBAAMC;IACJC,EAAAZ,MAAIF,SAA0Be,EAAOC,oBAAoBd,KAAKe,KAAG;IACjEH,EAAAZ,MAAIC,GAAa1B,oBAAoByB,KAAKgB,SAASxC,OAAK;IACxDoC,EAAAZ,MAAIE,GAAsB;;;;;;IAMxB;MACEI,IAAIZ;MACJuB,SAASC,EAAAlB,MAAIF,GAAA,KAAkBqB;OAEjC;MACEb,IAAIX;MACJsB,SAASC,EAAAlB,MAAIF,GAAA,KAAkBsB;OAEjC;MACEC,MAAM;OAER;MACEA,MAAM;MACNf,IAAI;SAEP;;EAyBH,MAAAgB;;IACE,MAAMC,IAAWvC,eAAcwC,IAAAxB,KAAKgB,cAAQ,QAAAQ,WAAA,aAAAA,EAAEhD;IAC9C,OACEiD,EAACC,GAAI;MAACC,OAAM;OACVF,EAAA;MAAUG,OAAOxC;QACjBqC,EAAA;MACEE,OAAM;MACNC,OAAOV,EAAAlB,MAAIE,GAAA;MACX2B,aAAY;MACZC,YAAW;MACXC,eAAeb,EAAAlB,MAAII,GAAA;OAEnBqB,EAAA;MAAKE,OAAM;OACRJ,IAAWE,EAAA;MAAME,OAAM;OAAoBJ,KAAmB,QAC9DS,IAAAhC,KAAKgB,cAAQ,QAAAgB,WAAA,aAAAA,EAAEC,QACdR,EAAA;MAAME,OAAM;OAA4B3B,KAAKgB,SAASiB,QACpD,OAENR,EAAA;MAAKE,OAAM;OAAsBT,EAAAlB,MAAIC,GAAA,OACrCwB,EAAA;MACES,KAAK7C;MACLsC,OAAM;MACNQ,cAAcjB,EAAAlB,MAAIG,GAAA;QAEpBsB,EAAA;MAAKE,OAAM;MAAiCS,MAAK;OAC/CX,EAAA;MACEE,OAAM;MACNU,SAASrC,KAAKsC;OAEbpB,EAAAlB,MAAIF,GAAA,KAAkByC,4BAEzBd,EAAA;MACEE,OAAM;MACNU,SAASrC,KAAKwC;OAEbtB,EAAAlB,MAAIF,GAAA,KAAkB2C"}
1
+ {"version":3,"names":["getInitialsFromName","name","trim","nameData","split","filter","Boolean","length","toUpperCase","limitFullName","fullName","fullNameData","currentUserInfoCss","CSS_BUNDLES","CHEVRON_DOWN_ICON","getIconPath","category","colorType","MY_ACCOUNT_ID","CHANGE_TEAM_ID","SIGN_OUT_ID","LANGUAGE_ID","GxIdeNewEnvironment","_GxIdeNewEnvironment_componentLocale","set","this","_GxIdeNewEnvironment_initials","_GxIdeNewEnvironment_menuDropdownModel","_GxIdeNewEnvironment_userLoginButton","_GxIdeNewEnvironment_dropDownitemClickHandler","event","id","detail","changeTeamCallback","signOutCallback","changeLanguageCallback","componentWillLoad","__classPrivateFieldSet","Locale","getComponentStrings","el","userInfo","caption","__classPrivateFieldGet","changeTeamLabel","signOutLabel","type","render","userName","_a","h","Host","class","model","inlineAlign","blockAlign","onButtonClick","_b","team","src","containerRef","slot","onClick","termsCallback","termsAndConditionsCaption","privacyCallback","privacyPolicyCaption"],"sources":["src/components/current-user-info/helpers.tsx","src/components/current-user-info/current-user-info.scss?tag=gx-ide-current-user-info&encapsulation=shadow","src/components/current-user-info/current-user-info.tsx"],"sourcesContent":["/**\n * Returns initials from the first two words of a name. Returns \"X\" for invalid input.\n *\n * @param name - The full name string.\n * @returns Initials of the first two words, or \"X\" if invalid.\n *\n * Example:\n * getInitialsFromName(\"John Doe\") -> \"JD\"\n * getInitialsFromName(\"Jane\") -> \"J\"\n * getInitialsFromName(\"\") -> \"X\"\n */\nexport const getInitialsFromName = (name: string): string | null => {\n if (typeof name !== \"string\" || name.trim() === \"\") {\n return \"X\";\n }\n\n const nameData = name.split(\" \").filter(Boolean); // Remove any empty strings from splitting\n if (nameData.length === 1) {\n return nameData[0][0].toUpperCase();\n } else {\n return `${nameData[0][0].toUpperCase()}${nameData[1][0].toUpperCase()}`;\n }\n};\n\n/**\n * Limits the full name to the first two words. Returns null for invalid input.\n *\n * @param fullName - The full name string to be limited.\n * @returns The first two words of the full name, or null if invalid.\n *\n * Example:\n * limitFullName(\"John Doe Smith\") -> \"John Doe\"\n * limitFullName(\"Jane\") -> \"Jane\"\n * limitFullName(\"\") -> null\n */\nexport const limitFullName = (fullName: string): string | null => {\n if (typeof fullName !== \"string\" || fullName.trim() === \"\") {\n return null;\n }\n\n const fullNameData = fullName.split(\" \").filter(Boolean); // Remove any empty strings from splitting\n if (fullNameData.length === 1) {\n return fullNameData[0];\n } else {\n return `${fullNameData[0]} ${fullNameData[1]}`;\n }\n};\n","@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: inline-grid;\n justify-items: end;\n block-size: 100%;\n}\n\n.dropdown::part(expandable-button) {\n display: grid;\n grid-template-columns: max-content max-content max-content;\n align-items: center;\n gap: var(--mer-spacing--sm);\n block-size: auto;\n cursor: pointer;\n}\n.user-login {\n &__details {\n display: grid;\n grid-template-rows: max-content max-content;\n gap: var(--mer-spacing--3xs);\n justify-items: end;\n }\n &__name {\n font-weight: var(--mer-font__weight--medium);\n font-size: var(--mer-font__size--3xs);\n color: var(--mer-text__on-elevation);\n }\n &__organization {\n font-weight: var(--mer-font__weight--light);\n font-size: var(--mer-font__size--4xs);\n color: var(--mer-text__neutral);\n }\n &__name,\n &__organization {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-inline-size: 120px;\n display: inline-block;\n }\n &__avatar {\n font-size: 9px;\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n justify-content: center;\n block-size: var(--mer-spacing--lg);\n inline-size: var(--mer-spacing--lg);\n color: var(--mer-text__on-elevation);\n border-radius: 50%;\n background-color: var(--mer-color__tinted-primary--10);\n border: var(--mer-border__width--sm) solid var(--mer-color__primary--200);\n }\n\n &__footer {\n display: flex;\n flex-direction: column;\n gap: var(--mer-spacing--xs);\n @include button-reset();\n\n .agreement-link {\n text-decoration: underline;\n cursor: pointer; /* Ensure it still looks clickable */\n }\n }\n}\n","/* STENCIL IMPORTS */\nimport { Component, Element, Host, Prop, State, h } from \"@stencil/core\";\n\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\nimport { getInitialsFromName, limitFullName } from \"./helpers\";\nimport {\n ActionMenuItemActionableModel,\n ActionMenuModel,\n ChActionMenuRenderCustomEvent,\n ChPopoverAlign\n} from \"@genexus/chameleon-controls-library\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n // TODO: review if \"utils/form--full\" is required.\n \"resets/box-sizing\",\n \"components/tooltip\",\n \"components/switch\",\n \"components/icon\",\n \"components/dropdown\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst CHEVRON_DOWN_ICON = getIconPath({\n category: \"navigation\",\n name: \"chevron-down\",\n colorType: \"neutral\"\n});\n\nconst MY_ACCOUNT_ID = \"my-account\";\nconst CHANGE_TEAM_ID = \"change-team\";\nconst SIGN_OUT_ID = \"sign-out\";\nconst LANGUAGE_ID = \"language\";\n\n@Component({\n tag: \"gx-ide-current-user-info\",\n styleUrl: \"current-user-info.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/current-user-info\"]\n})\nexport class GxIdeNewEnvironment {\n #componentLocale: any;\n #initials: string = \"\";\n // #mode: Mode;\n #menuDropdownModel: ActionMenuModel;\n\n @Element() el: HTMLGxIdeCurrentUserInfoElement;\n #userLoginButton: HTMLButtonElement;\n\n @State() showMenu: boolean = false;\n\n /**\n * User data\n */\n @Prop() readonly userInfo: UserInfo;\n\n /**\n * Callback executed when the user click \"My Account\" link\n */\n @Prop() readonly myAccountCallback!: () => Promise<void>;\n\n /**\n * Callback executed when the user click \"change team\" link\n */\n @Prop() readonly changeTeamCallback!: () => Promise<void>;\n\n /**\n * Callback executed when the user click \"Language\" link\n */\n @Prop() readonly changeLanguageCallback!: () => Promise<void>;\n\n /**\n * Callback executed when the user switch the \"Mode\" status\n */\n @Prop() readonly changeModeCallback!: (mode: Mode) => Promise<void>;\n\n /**\n * Defines the menu block and inline alignment\n */\n @Prop() readonly menuAlign: MenuAlign;\n\n /**\n * Callback executed when the user click \"Sign Out\" link\n */\n @Prop() readonly signOutCallback!: () => Promise<void>;\n\n /**\n * Callback executed when the user clicks on the \"term and conditions\" link\n */\n @Prop() readonly termsCallback: () => Promise<void>;\n\n /**\n * Callback executed when the user clicks on the \"privacy policy\" link\n */\n @Prop() readonly privacyCallback: () => Promise<void>;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.#initials = getInitialsFromName(this.userInfo.name);\n this.#menuDropdownModel = [\n // {\n // id: MY_ACCOUNT_ID,\n // caption: this.#componentLocale.myAccountLabel,\n // showSeparator: false\n // },\n {\n id: CHANGE_TEAM_ID,\n caption: this.#componentLocale.changeTeamLabel\n },\n {\n id: SIGN_OUT_ID,\n caption: this.#componentLocale.signOutLabel\n },\n {\n type: \"separator\"\n },\n {\n type: \"slot\",\n id: \"agreement\"\n }\n ];\n }\n\n // #handleModeSwitch = () => {\n // this.#mode = this.#mode === \"dark\" ? \"light\" : \"dark\";\n // if (this.changeModeCallback) {\n // this.changeModeCallback(this.#mode);\n // }\n // };\n\n #dropDownitemClickHandler = (\n event: ChActionMenuRenderCustomEvent<ActionMenuItemActionableModel>\n ): void => {\n const id = event.detail.id;\n if (id === MY_ACCOUNT_ID) {\n // this.myAccountCallback();\n } else if (id === CHANGE_TEAM_ID) {\n this.changeTeamCallback();\n } else if (id === SIGN_OUT_ID) {\n this.signOutCallback();\n } else if (id === LANGUAGE_ID) {\n this.changeLanguageCallback();\n }\n };\n\n render() {\n const userName = limitFullName(this.userInfo?.name);\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-action-menu-render\n class=\"dropdown user-login__button\"\n model={this.#menuDropdownModel}\n inlineAlign=\"inside-end\"\n blockAlign=\"outside-end\"\n onButtonClick={this.#dropDownitemClickHandler}\n >\n <div class=\"user-login__details\">\n {userName ? <span class=\"user-login__name\">{userName}</span> : null}\n {this.userInfo?.team ? (\n <span class=\"user-login__organization\">{this.userInfo.team}</span>\n ) : null}\n </div>\n <div class=\"user-login__avatar\">{this.#initials}</div>\n <ch-image\n src={CHEVRON_DOWN_ICON}\n class=\"icon-md\"\n containerRef={this.#userLoginButton}\n ></ch-image>\n <div class=\"user-login__footer footer-slot\" slot=\"agreement\">\n <button\n class=\"body-regular-s agreement-link\"\n onClick={this.termsCallback}\n >\n {this.#componentLocale.termsAndConditionsCaption}\n </button>\n <button\n class=\"body-regular-s\tagreement-link\"\n onClick={this.privacyCallback}\n >\n {this.#componentLocale.privacyPolicyCaption}\n </button>\n </div>\n </ch-action-menu-render>\n </Host>\n );\n }\n}\n\nexport type MenuAlign = {\n blockAlign: ChPopoverAlign;\n inlineAlign: ChPopoverAlign;\n};\n\nexport type UserInfo = {\n name: string;\n team: string;\n};\n\nexport type Mode = \"dark\" | \"light\";\n"],"mappings":"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"}
@@ -1,8 +1,6 @@
1
1
  import { r as t, c as e, g as s, h as i, H as n, a } from "./p-25a9f1d7.js";
2
2
 
3
- import { g as o } from "./p-6e4208d8.js";
4
-
5
- import "./p-5ac47c69.js";
3
+ import { g as o } from "./p-ede7bd20.js";
6
4
 
7
5
  import { c as r } from "./p-13738332.js";
8
6
 
@@ -25,7 +23,7 @@ var f = undefined && undefined.__classPrivateFieldSet || function(t, e, s, i, n)
25
23
  return i === "a" ? n.call(t, s) : n ? n.value = s : e.set(t, s), s;
26
24
  };
27
25
 
28
- var p, u, m, b, g, v, w, y, k, x, M, W, j, T, _;
26
+ var p, u, m, b, g, v, w, y, k, x, M, W, T, j, _;
29
27
 
30
28
  const E = [ "resets/box-sizing", "utils/form--full", "utils/layout", "utils/typography", "utils/spacing", "components/list-box", "components/tooltip", "chameleon/scrollbar" ];
31
29
 
@@ -101,7 +99,7 @@ const C = class {
101
99
  }
102
100
  }));
103
101
  }));
104
- j.set(this, (t => {
102
+ T.set(this, (t => {
105
103
  this.kbName = t.detail;
106
104
  }));
107
105
  // #selectedVersionHandler = async () => {
@@ -118,7 +116,7 @@ const C = class {
118
116
  // });
119
117
  // }
120
118
  // };
121
- T.set(this, (t => {
119
+ j.set(this, (t => {
122
120
  this.versionSelectedType = t.detail;
123
121
  }));
124
122
  _.set(this, (() => {
@@ -199,7 +197,7 @@ const C = class {
199
197
  class: "input",
200
198
  id: "kb-name",
201
199
  value: this.kbName,
202
- onInput: d(this, j, "f"),
200
+ onInput: d(this, T, "f"),
203
201
  placeholder: d(this, m, "f").kb.localKbNamePlaceholder,
204
202
  ref: t => f(this, w, t, "f")
205
203
  }), d(this, M, "f").call(this, d(this, w, "f"))), i("div", {
@@ -207,7 +205,7 @@ const C = class {
207
205
  }, i("ch-radio-group-render", {
208
206
  class: "radio-group",
209
207
  model: d(this, u, "f"),
210
- onChange: d(this, T, "f"),
208
+ onChange: d(this, j, "f"),
211
209
  value: d(this, u, "f")[0].value,
212
210
  ref: t => f(this, v, t, "f")
213
211
  }), this.versionSelectedType === "Select" && i("div", {
@@ -243,9 +241,9 @@ const C = class {
243
241
 
244
242
  p = new WeakMap, u = new WeakMap, m = new WeakMap, b = new WeakMap, g = new WeakMap,
245
243
  v = new WeakMap, w = new WeakMap, y = new WeakMap, k = new WeakMap, x = new WeakMap,
246
- M = new WeakMap, W = new WeakMap, j = new WeakMap, T = new WeakMap, _ = new WeakMap;
244
+ M = new WeakMap, W = new WeakMap, T = new WeakMap, j = new WeakMap, _ = new WeakMap;
247
245
 
248
246
  C.style = h;
249
247
 
250
248
  export { C as gx_ide_share_kb };
251
- //# sourceMappingURL=p-530c32aa.entry.js.map
249
+ //# sourceMappingURL=p-29c69938.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["shareKbCss","CSS_BUNDLES","GxIdeShareKb","_GxIdeShareKb_showMoreIcon","set","this","getIconPath","category","name","colorType","_GxIdeShareKb_versionsSelect","value","caption","_GxIdeShareKb__componentLocale","_GxIdeShareKb_renderedFirstTime","_GxIdeShareKb_shortcutsSrc","getAssetPath","_GxIdeShareKb_versionSelectedTypeEl","_GxIdeShareKb_KBNameEl","_GxIdeShareKb_cancelHandler","cancelCallback","_GxIdeShareKb_changeConnectionHandler","async","changeConnectionCallback","authenticationType","connectionData","serverUrl","userName","userPassword","_GxIdeShareKb_shareKBHandler","shareKBCallback","kbName","then","formSubmitResult","validatableControls","validateControls","_GxIdeShareKb_evaluateTooltipRender","controlReference","_b","_a","get","id","hasError","_c","message","h","class","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","_GxIdeShareKb_initializeValidatableControls","__classPrivateFieldGet","forEach","validatableControl","reference","undefined","_GxIdeShareKb_kbNameInputHandler","event","detail","_GxIdeShareKb_versionsChangedHandler","versionSelectedType","_GxIdeShareKb_renderFooter","disableShareKbButton","length","onClick","part","footer","cancel","disabled","shareKB","Map","componentDidLoad","call","componentDidRender","componentDidRenderFirstTime","emit","componentName","__classPrivateFieldSet","componentWillLoad","Locale","getComponentStrings","el","render","Host","model","src","ref","chShortcutsEl","header","user","change","htmlFor","kb","aliasLabel","onInput","placeholder","localKbNamePlaceholder","onChange","versionsLabel","readonly","enableSelectVersionsButton","versionsPlaceholder","versionsPlaceholderDisabled","versionsValueInput"],"sources":["src/components/team-dev/share-kb/share-kb.scss?tag=gx-ide-share-kb&encapsulation=shadow","src/components/team-dev/share-kb/share-kb.tsx"],"sourcesContent":[":host {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n display: contents;\n}\n\n// - - - - - - - - - - -\n// Header\n// - - - - - - - - - - -\n\nheader {\n display: grid;\n grid-template-rows: max-content;\n grid-template-columns: 1fr 1fr max-content;\n}\n\n.button-change {\n align-self: center;\n justify-self: end;\n}\n\n// - - - - - - - - - - -\n// Main\n// - - - - - - - - - - -\n\n.main {\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: max-content 1fr max-content max-content;\n}\n\n.search-kbs {\n inline-size: 50%;\n}\n\n.versions-container {\n grid-auto-rows: max-content;\n\n &__input {\n display: grid;\n grid-template-columns: 1fr max-content;\n gap: var(--mer-spacing--xs);\n }\n}\n","// Stencil\nimport {\n Component,\n Host,\n h,\n Prop,\n Event,\n EventEmitter,\n Element,\n State,\n getAssetPath\n} from \"@stencil/core\";\n\n// Other Libraries\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\n// Custom Imports\nimport { config } from \"../../../common/config\";\nimport { GXServerConnectionData } from \"../connect-gx-server/connect-gx-server\";\nimport { FormSubmitResult } from \"../../../common/types\";\nimport {\n ControlValidation,\n validateControls\n} from \"../../../common/form-validation\";\nimport { Locale } from \"../../../common/locale\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\nimport { ChEditCustomEvent } from \"@genexus/chameleon-controls-library\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"components/list-box\",\n \"components/tooltip\",\n \"chameleon/scrollbar\"\n];\n\n@Component({\n tag: \"gx-ide-share-kb\",\n styleUrl: \"share-kb.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/share-kb\"]\n})\nexport class GxIdeShareKb {\n #showMoreIcon = getIconPath({\n category: \"gemini-tools\",\n name: \"show-more-horizontal\",\n colorType: \"on-elevation\"\n });\n\n #versionsSelect: RadioGroupItemModel[] = [\n { value: \"Trunk\", caption: \"Trunk Version\" },\n { value: \"All\", caption: \"All Versions\" }\n // { value: \"Select\", caption: \"Select Version\" } TODO: display once \"gx-ide-select-kb-versions\" is ready.\n ];\n\n [key: string]: any;\n\n #_componentLocale: any;\n // uncomment #kbVersionsIds when versions selector is available\n // #kbVersionsIds: string[] = [];\n #renderedFirstTime = false;\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/create-kb-from-server/shortcuts.json`\n );\n // #selectedKbId: string;\n\n #versionSelectedTypeEl: HTMLChRadioGroupRenderElement;\n\n @Element() el: HTMLGxIdeShareKbElement;\n\n #KBNameEl!: HTMLChEditElement;\n\n /**\n * State to enable/disable the select versions button\n */\n @State() enableSelectVersionsButton: boolean = false;\n\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * The version selected type\n */\n @State() versionSelectedType: VersionOption;\n\n /**\n * String value to show the number of versions selected (\"N versions selected\")\n */\n @State() versionsValueInput: string = \"\";\n\n /**\n * Set of data required when executing any of the callbacks that require a connection to the server.\n */\n @Prop() readonly connectionData: GXServerConnectionData;\n\n /**\n * Callback that is invoked when the dialog is closed\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * The host reopens the gx-ide-connect-server login modal with the previous data, and closes the current modal\n */\n @Prop() readonly changeConnectionCallback: (\n data: GXServerConnectionData\n ) => Promise<void>;\n\n /**\n * The name of the KB.\n */\n @Prop({ mutable: true }) kbName: string;\n\n /**\n * Callback that must be invoked when the Share button is pressed.\n */\n @Prop() readonly shareKBCallback: (\n data: ShareKBData\n ) => Promise<FormSubmitResult>;\n\n /**\n * Callback invoked by pressing the ellipsis in the version selector. Receives the KB selected by the user, and displays the version selector dialog. Returns a list of versions chosen by the user.\n */\n @Prop() readonly selectKBVersionsCallback: (\n selectedKB: string\n ) => Promise<KBVersion[]>;\n\n /**\n * Emitted once just after the component is fully loaded and the first render() occurs\n */\n @Event() componentDidRenderFirstTime: EventEmitter<boolean>;\n\n componentDidLoad() {\n this.versionSelectedType = this.#versionSelectedTypeEl\n .value as VersionOption;\n\n this.#initializeValidatableControls();\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 async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n #cancelHandler = (): void => {\n this.cancelCallback();\n };\n\n #changeConnectionHandler = async (): Promise<void> => {\n this.changeConnectionCallback({\n authenticationType: this.connectionData.authenticationType,\n serverUrl: this.connectionData.serverUrl,\n userName: this.connectionData.userName,\n userPassword: this.connectionData.userPassword\n });\n };\n\n #shareKBHandler = async (): Promise<void> => {\n // uncomment the following lines when versions selector is available\n // if (this.versionSelectedType !== \"Select\") {\n // this.#kbVersionsIds = [];\n // }\n this.shareKBCallback({\n name: this.kbName,\n serverUrl: this.connectionData.serverUrl\n }).then((formSubmitResult: FormSubmitResult) => {\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\n });\n };\n\n // TODO: evaluate if this should be a global helper function.\n // It is used on other dialogs as well.\n #evaluateTooltipRender = (\n controlReference: HTMLElement\n ): HTMLChTooltipElement =>\n this.validatableControls?.get(controlReference?.id)?.hasError &&\n this.validatableControls.get(controlReference.id)?.message && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={controlReference as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.validatableControls.get(controlReference.id).message}\n </ch-tooltip>\n );\n\n #initializeValidatableControls = () => {\n // populate validatableControls with the controls that could have errors.\n const validatableControls: HTMLElement[] = [this.#KBNameEl];\n validatableControls.forEach(validatableControl => {\n if (validatableControl.id) {\n this.validatableControls.set(validatableControl.id, {\n reference: validatableControl,\n hasError: false,\n message: undefined\n });\n }\n });\n };\n\n #kbNameInputHandler = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.kbName = event.detail as string;\n };\n\n // #selectedVersionHandler = async () => {\n // if (this.selectKBVersionsCallback) {\n // await this.selectKBVersionsCallback(this.#selectedKbId).then(result => {\n // if (result?.length) {\n // this.versionsValueInput = result.length\n // .toString()\n // .concat(this.#_componentLocale.kb.versionSelectedFieldValue);\n // this.#kbVersionsIds = result.map(kbVersion =>\n // kbVersion.id.toString()\n // );\n // }\n // });\n // }\n // };\n\n #versionsChangedHandler = (event: CustomEvent<string>) => {\n this.versionSelectedType = event.detail as VersionOption;\n };\n\n #renderFooter = () => {\n const disableShareKbButton = !this.kbName.length;\n return (\n <footer class=\"footer control-footer-with-border spacing-body-inline spacing-body-block-end\">\n <div class=\"buttons-spacer\">\n <button\n // cancel button\n class=\"button-secondary\"\n onClick={this.#cancelHandler}\n part=\"button button-cancel\"\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n\n <button\n // share kb button\n class=\"button-primary\"\n onClick={!disableShareKbButton && this.#shareKBHandler}\n disabled={disableShareKbButton}\n part=\"button button-create-kb\"\n >\n {this.#_componentLocale.footer.shareKB}\n </button>\n </div>\n </footer>\n );\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n\n <section class=\"section\">\n <header class=\"header control-header-with-border space-body spacing-body-inline spacing-body-block-start\">\n <div class=\"field field-block\">\n <label class=\"label\">\n {this.#_componentLocale.header.serverUrl}\n </label>\n <p>{this.connectionData.serverUrl}</p>\n </div>\n\n <div class=\"field field-block\">\n <label class=\"label\">{this.#_componentLocale.header.user}</label>\n <p>{this.connectionData.userName}</p>\n </div>\n\n <button\n class=\"button-tertiary button-change\"\n onClick={this.#changeConnectionHandler}\n >\n {this.#_componentLocale.header.change}\n </button>\n </header>\n\n <section class=\"main field-group spacing-body\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"alias\">\n {this.#_componentLocale.kb.aliasLabel}\n </label>\n <ch-edit\n // alias\n class=\"input\"\n id=\"kb-name\"\n value={this.kbName}\n onInput={this.#kbNameInputHandler}\n placeholder={this.#_componentLocale.kb.localKbNamePlaceholder}\n ref={(el: HTMLChEditElement) =>\n (this.#KBNameEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#KBNameEl)}\n </div>\n\n <div class=\"versions-container field-group\">\n <ch-radio-group-render\n class=\"radio-group\"\n model={this.#versionsSelect}\n onChange={this.#versionsChangedHandler}\n value={this.#versionsSelect[0].value}\n ref={el =>\n (this.#versionSelectedTypeEl =\n el as HTMLChRadioGroupRenderElement)\n }\n ></ch-radio-group-render>\n\n {this.versionSelectedType === \"Select\" && (\n <div class=\"versions-container__item field-group\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"control-id-1\">\n {this.#_componentLocale.kb.versionsLabel}\n </label>\n <div class=\"versions-container__input\">\n <ch-edit\n class=\"input\"\n readonly\n placeholder={\n this.enableSelectVersionsButton\n ? this.#_componentLocale.kb.versionsPlaceholder\n : this.#_componentLocale.kb\n .versionsPlaceholderDisabled\n }\n value={this.versionsValueInput}\n ></ch-edit>\n <button\n class=\"button-tertiary button-icon-only\"\n // onClick={this.#selectedVersionHandler}\n disabled={!this.enableSelectVersionsButton}\n >\n <ch-image\n src={this.#showMoreIcon}\n class=\"icon-sm\"\n ></ch-image>\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n </section>\n\n {this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n\nexport type KBData = {\n id: string;\n name: string;\n};\n\nexport type KBVersion = {\n id: number;\n name: string;\n type: VersionType;\n};\n\nexport type ConnectionResultData = {\n formResult: FormSubmitResult;\n kbs: KBData[];\n};\n\nexport type ShareKBData = {\n name: string;\n serverUrl: string;\n};\n\nexport type VersionOption = \"Trunk\" | \"All\" | \"Select\";\n\nexport type VersionType = \"Branch\" | \"Frozen\";\n"],"mappings":"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"}
1
+ {"version":3,"names":["shareKbCss","CSS_BUNDLES","GxIdeShareKb","_GxIdeShareKb_showMoreIcon","set","this","getIconPath","category","name","colorType","_GxIdeShareKb_versionsSelect","value","caption","_GxIdeShareKb__componentLocale","_GxIdeShareKb_renderedFirstTime","_GxIdeShareKb_shortcutsSrc","getAssetPath","_GxIdeShareKb_versionSelectedTypeEl","_GxIdeShareKb_KBNameEl","_GxIdeShareKb_cancelHandler","cancelCallback","_GxIdeShareKb_changeConnectionHandler","async","changeConnectionCallback","authenticationType","connectionData","serverUrl","userName","userPassword","_GxIdeShareKb_shareKBHandler","shareKBCallback","kbName","then","formSubmitResult","validatableControls","validateControls","_GxIdeShareKb_evaluateTooltipRender","controlReference","_b","_a","get","id","hasError","_c","message","h","class","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","_GxIdeShareKb_initializeValidatableControls","__classPrivateFieldGet","forEach","validatableControl","reference","undefined","_GxIdeShareKb_kbNameInputHandler","event","detail","_GxIdeShareKb_versionsChangedHandler","versionSelectedType","_GxIdeShareKb_renderFooter","disableShareKbButton","length","onClick","part","footer","cancel","disabled","shareKB","Map","componentDidLoad","call","componentDidRender","componentDidRenderFirstTime","emit","componentName","__classPrivateFieldSet","componentWillLoad","Locale","getComponentStrings","el","render","Host","model","src","ref","chShortcutsEl","header","user","change","htmlFor","kb","aliasLabel","onInput","placeholder","localKbNamePlaceholder","onChange","versionsLabel","readonly","enableSelectVersionsButton","versionsPlaceholder","versionsPlaceholderDisabled","versionsValueInput"],"sources":["src/components/team-dev/share-kb/share-kb.scss?tag=gx-ide-share-kb&encapsulation=shadow","src/components/team-dev/share-kb/share-kb.tsx"],"sourcesContent":[":host {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n display: contents;\n}\n\n// - - - - - - - - - - -\n// Header\n// - - - - - - - - - - -\n\nheader {\n display: grid;\n grid-template-rows: max-content;\n grid-template-columns: 1fr 1fr max-content;\n}\n\n.button-change {\n align-self: center;\n justify-self: end;\n}\n\n// - - - - - - - - - - -\n// Main\n// - - - - - - - - - - -\n\n.main {\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: max-content 1fr max-content max-content;\n}\n\n.search-kbs {\n inline-size: 50%;\n}\n\n.versions-container {\n grid-auto-rows: max-content;\n\n &__input {\n display: grid;\n grid-template-columns: 1fr max-content;\n gap: var(--mer-spacing--xs);\n }\n}\n","// Stencil\nimport {\n Component,\n Host,\n h,\n Prop,\n Event,\n EventEmitter,\n Element,\n State,\n getAssetPath\n} from \"@stencil/core\";\n\n// Other Libraries\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\n// Custom Imports\nimport { config } from \"../../../common/config\";\nimport { GXServerConnectionData } from \"../connect-gx-server/connect-gx-server\";\nimport { FormSubmitResult } from \"../../../common/types\";\nimport {\n ControlValidation,\n validateControls\n} from \"../../../common/form-validation\";\nimport { Locale } from \"../../../common/locale\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\nimport { ChEditCustomEvent } from \"@genexus/chameleon-controls-library\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"components/list-box\",\n \"components/tooltip\",\n \"chameleon/scrollbar\"\n];\n\n@Component({\n tag: \"gx-ide-share-kb\",\n styleUrl: \"share-kb.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/share-kb\"]\n})\nexport class GxIdeShareKb {\n #showMoreIcon = getIconPath({\n category: \"gemini-tools\",\n name: \"show-more-horizontal\",\n colorType: \"on-elevation\"\n });\n\n #versionsSelect: RadioGroupItemModel[] = [\n { value: \"Trunk\", caption: \"Trunk Version\" },\n { value: \"All\", caption: \"All Versions\" }\n // { value: \"Select\", caption: \"Select Version\" } TODO: display once \"gx-ide-select-kb-versions\" is ready.\n ];\n\n [key: string]: any;\n\n #_componentLocale: any;\n // uncomment #kbVersionsIds when versions selector is available\n // #kbVersionsIds: string[] = [];\n #renderedFirstTime = false;\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/create-kb-from-server/shortcuts.json`\n );\n // #selectedKbId: string;\n\n #versionSelectedTypeEl: HTMLChRadioGroupRenderElement;\n\n @Element() el: HTMLGxIdeShareKbElement;\n\n #KBNameEl!: HTMLChEditElement;\n\n /**\n * State to enable/disable the select versions button\n */\n @State() enableSelectVersionsButton: boolean = false;\n\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * The version selected type\n */\n @State() versionSelectedType: VersionOption;\n\n /**\n * String value to show the number of versions selected (\"N versions selected\")\n */\n @State() versionsValueInput: string = \"\";\n\n /**\n * Set of data required when executing any of the callbacks that require a connection to the server.\n */\n @Prop() readonly connectionData: GXServerConnectionData;\n\n /**\n * Callback that is invoked when the dialog is closed\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * The host reopens the gx-ide-connect-server login modal with the previous data, and closes the current modal\n */\n @Prop() readonly changeConnectionCallback: (\n data: GXServerConnectionData\n ) => Promise<void>;\n\n /**\n * The name of the KB.\n */\n @Prop({ mutable: true }) kbName: string;\n\n /**\n * Callback that must be invoked when the Share button is pressed.\n */\n @Prop() readonly shareKBCallback: (\n data: ShareKBData\n ) => Promise<FormSubmitResult>;\n\n /**\n * Callback invoked by pressing the ellipsis in the version selector. Receives the KB selected by the user, and displays the version selector dialog. Returns a list of versions chosen by the user.\n */\n @Prop() readonly selectKBVersionsCallback: (\n selectedKB: string\n ) => Promise<KBVersion[]>;\n\n /**\n * Emitted once just after the component is fully loaded and the first render() occurs\n */\n @Event() componentDidRenderFirstTime: EventEmitter<boolean>;\n\n componentDidLoad() {\n this.versionSelectedType = this.#versionSelectedTypeEl\n .value as VersionOption;\n\n this.#initializeValidatableControls();\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 async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n #cancelHandler = (): void => {\n this.cancelCallback();\n };\n\n #changeConnectionHandler = async (): Promise<void> => {\n this.changeConnectionCallback({\n authenticationType: this.connectionData.authenticationType,\n serverUrl: this.connectionData.serverUrl,\n userName: this.connectionData.userName,\n userPassword: this.connectionData.userPassword\n });\n };\n\n #shareKBHandler = async (): Promise<void> => {\n // uncomment the following lines when versions selector is available\n // if (this.versionSelectedType !== \"Select\") {\n // this.#kbVersionsIds = [];\n // }\n this.shareKBCallback({\n name: this.kbName,\n serverUrl: this.connectionData.serverUrl\n }).then((formSubmitResult: FormSubmitResult) => {\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\n });\n };\n\n // TODO: evaluate if this should be a global helper function.\n // It is used on other dialogs as well.\n #evaluateTooltipRender = (\n controlReference: HTMLElement\n ): HTMLChTooltipElement =>\n this.validatableControls?.get(controlReference?.id)?.hasError &&\n this.validatableControls.get(controlReference.id)?.message && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={controlReference as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.validatableControls.get(controlReference.id).message}\n </ch-tooltip>\n );\n\n #initializeValidatableControls = () => {\n // populate validatableControls with the controls that could have errors.\n const validatableControls: HTMLElement[] = [this.#KBNameEl];\n validatableControls.forEach(validatableControl => {\n if (validatableControl.id) {\n this.validatableControls.set(validatableControl.id, {\n reference: validatableControl,\n hasError: false,\n message: undefined\n });\n }\n });\n };\n\n #kbNameInputHandler = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.kbName = event.detail as string;\n };\n\n // #selectedVersionHandler = async () => {\n // if (this.selectKBVersionsCallback) {\n // await this.selectKBVersionsCallback(this.#selectedKbId).then(result => {\n // if (result?.length) {\n // this.versionsValueInput = result.length\n // .toString()\n // .concat(this.#_componentLocale.kb.versionSelectedFieldValue);\n // this.#kbVersionsIds = result.map(kbVersion =>\n // kbVersion.id.toString()\n // );\n // }\n // });\n // }\n // };\n\n #versionsChangedHandler = (event: CustomEvent<string>) => {\n this.versionSelectedType = event.detail as VersionOption;\n };\n\n #renderFooter = () => {\n const disableShareKbButton = !this.kbName.length;\n return (\n <footer class=\"footer control-footer-with-border spacing-body-inline spacing-body-block-end\">\n <div class=\"buttons-spacer\">\n <button\n // cancel button\n class=\"button-secondary\"\n onClick={this.#cancelHandler}\n part=\"button button-cancel\"\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n\n <button\n // share kb button\n class=\"button-primary\"\n onClick={!disableShareKbButton && this.#shareKBHandler}\n disabled={disableShareKbButton}\n part=\"button button-create-kb\"\n >\n {this.#_componentLocale.footer.shareKB}\n </button>\n </div>\n </footer>\n );\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n\n <section class=\"section\">\n <header class=\"header control-header-with-border space-body spacing-body-inline spacing-body-block-start\">\n <div class=\"field field-block\">\n <label class=\"label\">\n {this.#_componentLocale.header.serverUrl}\n </label>\n <p>{this.connectionData.serverUrl}</p>\n </div>\n\n <div class=\"field field-block\">\n <label class=\"label\">{this.#_componentLocale.header.user}</label>\n <p>{this.connectionData.userName}</p>\n </div>\n\n <button\n class=\"button-tertiary button-change\"\n onClick={this.#changeConnectionHandler}\n >\n {this.#_componentLocale.header.change}\n </button>\n </header>\n\n <section class=\"main field-group spacing-body\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"alias\">\n {this.#_componentLocale.kb.aliasLabel}\n </label>\n <ch-edit\n // alias\n class=\"input\"\n id=\"kb-name\"\n value={this.kbName}\n onInput={this.#kbNameInputHandler}\n placeholder={this.#_componentLocale.kb.localKbNamePlaceholder}\n ref={(el: HTMLChEditElement) =>\n (this.#KBNameEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#KBNameEl)}\n </div>\n\n <div class=\"versions-container field-group\">\n <ch-radio-group-render\n class=\"radio-group\"\n model={this.#versionsSelect}\n onChange={this.#versionsChangedHandler}\n value={this.#versionsSelect[0].value}\n ref={el =>\n (this.#versionSelectedTypeEl =\n el as HTMLChRadioGroupRenderElement)\n }\n ></ch-radio-group-render>\n\n {this.versionSelectedType === \"Select\" && (\n <div class=\"versions-container__item field-group\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"control-id-1\">\n {this.#_componentLocale.kb.versionsLabel}\n </label>\n <div class=\"versions-container__input\">\n <ch-edit\n class=\"input\"\n readonly\n placeholder={\n this.enableSelectVersionsButton\n ? this.#_componentLocale.kb.versionsPlaceholder\n : this.#_componentLocale.kb\n .versionsPlaceholderDisabled\n }\n value={this.versionsValueInput}\n ></ch-edit>\n <button\n class=\"button-tertiary button-icon-only\"\n // onClick={this.#selectedVersionHandler}\n disabled={!this.enableSelectVersionsButton}\n >\n <ch-image\n src={this.#showMoreIcon}\n class=\"icon-sm\"\n ></ch-image>\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n </section>\n\n {this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n\nexport type KBData = {\n id: string;\n name: string;\n};\n\nexport type KBVersion = {\n id: number;\n name: string;\n type: VersionType;\n};\n\nexport type ConnectionResultData = {\n formResult: FormSubmitResult;\n kbs: KBData[];\n};\n\nexport type ShareKBData = {\n name: string;\n serverUrl: string;\n};\n\nexport type VersionOption = \"Trunk\" | \"All\" | \"Select\";\n\nexport type VersionType = \"Branch\" | \"Frozen\";\n"],"mappings":"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"}
@@ -13,7 +13,7 @@ const mapOptionsToComboBoxItemModel = i => i.map((i => {
13
13
  };
14
14
  }));
15
15
 
16
- const r = '/*Gx Ide*/\n/*@container queries*/\n/* hiChar styles\nFound on /common/helpers.tsx hiChar function is used to add a span/class to every character that matches a search value. It is used to help the user see why the filter results are filtered. The span/class on the characters are useless without proper styling.\n*/\n:host {\n container-type: inline-size;\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.hide {\n display: none !important;\n}\n\n.section {\n display: contents;\n}\n\n.header {\n grid-template-areas: "name module-folder" "advanced-filter-accordion advanced-filter-accordion";\n grid-template-columns: 1fr 1fr;\n grid-auto-rows: max-content max-content;\n}\n\n.name {\n grid-area: name;\n}\n\n.module-folder {\n grid-area: module-folder;\n}\n\n.advanced-filter-accordion {\n grid-area: advanced-filter-accordion;\n}\n\n.main {\n display: grid;\n grid-template-columns: 1fr auto;\n gap: var(--mer-spacing--md);\n overflow: auto;\n padding-block-start: var(--mer-spacing--md);\n}\n\n.main__grid {\n display: grid;\n grid-template-rows: max-content 1fr;\n gap: var(--mer-spacing--md);\n overflow: auto;\n}\n\n.main__filter {\n display: grid;\n grid-auto-rows: max-content;\n gap: var(--mer-spacing--sm);\n overflow: auto;\n}\n\n.search-content {\n inline-size: 100%;\n}\n\n.filter-row {\n display: grid;\n grid-template-columns: 1fr 2fr;\n gap: var(--mer-spacing--md);\n}\n\n.category-column {\n grid-column: 1;\n}\n\n.checkboxes-column {\n grid-column: 2;\n display: flex;\n flex-direction: row;\n gap: var(--mer-spacing--md);\n align-items: center;\n min-block-size: 100%;\n justify-content: flex-start;\n padding-block-start: 1.75rem;\n}\n\n.modified-inputs {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: var(--mer-spacing--md);\n margin-block-start: var(--mer-spacing--sm);\n}\n.modified-inputs .field {\n display: flex;\n flex-direction: column;\n gap: var(--mer-spacing--sm);\n}\n.modified-inputs .field.hide {\n display: none;\n}\n.modified-inputs .field .input,\n.modified-inputs .field .combo-box {\n width: 100%;\n}\n\n.tabular-grid-ww-files {\n overflow: auto;\n inline-size: 100%;\n border-inline-end: var(--section-common-border);\n}\n\n.main__files-container {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: var(--mer-spacing--xs);\n position: relative;\n z-index: 1;\n}\n\n.hiChar {\n color: var(--mer-color__primary--200);\n filter: brightness(1.3);\n}\n\n.tabular-grid-ww-files ch-tabular-grid-cell:is(:nth-child(4)) {\n padding-block: var(--grid-cell__padding-block);\n padding-inline: var(--grid-cell__padding-inline);\n align-items: start;\n justify-content: start;\n display: inline-block;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n@container (max-width: 992px) {\n .main__files-container {\n grid-template-columns: repeat(3, 1fr);\n }\n}';
16
+ const r = '/*Gx Ide*/\n/*@container queries*/\n/* hiChar styles\nFound on /common/helpers.tsx hiChar function is used to add a span/class to every character that matches a search value. It is used to help the user see why the filter results are filtered. The span/class on the characters are useless without proper styling.\n*/\n:host {\n container-type: inline-size;\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.hide {\n display: none !important;\n}\n\n.section {\n display: contents;\n}\n\n.header {\n grid-template-areas: "name module-folder" "advanced-filter-accordion advanced-filter-accordion";\n grid-template-columns: 1fr 1fr;\n grid-auto-rows: max-content max-content;\n}\n\n.name {\n grid-area: name;\n}\n\n.module-folder {\n grid-area: module-folder;\n}\n\n.advanced-filter-accordion {\n grid-area: advanced-filter-accordion;\n}\n\n.main {\n display: grid;\n grid-template-columns: 1fr auto;\n gap: var(--mer-spacing--md);\n overflow: auto;\n padding-block-start: var(--mer-spacing--md);\n}\n\n.main__grid {\n display: grid;\n grid-template-rows: max-content 1fr;\n gap: var(--mer-spacing--md);\n overflow: auto;\n}\n\n.main__filter {\n display: grid;\n grid-auto-rows: max-content;\n gap: var(--mer-spacing--sm);\n overflow: auto;\n}\n\n.search-content {\n inline-size: 100%;\n}\n\n.filter-row {\n display: grid;\n grid-template-columns: 1fr 2fr;\n gap: var(--mer-spacing--md);\n}\n\n.category-column {\n grid-column: 1;\n}\n\n.checkboxes-column {\n grid-column: 2;\n display: flex;\n flex-direction: row;\n gap: var(--mer-spacing--md);\n align-items: center;\n min-block-size: 100%;\n justify-content: flex-start;\n padding-block-start: 1.75rem;\n}\n\n.modified-inputs {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: var(--mer-spacing--md);\n margin-block-start: var(--mer-spacing--sm);\n}\n.modified-inputs .field {\n display: flex;\n flex-direction: column;\n gap: var(--mer-spacing--sm);\n}\n.modified-inputs .field.hide {\n display: none;\n}\n.modified-inputs .field .input,\n.modified-inputs .field .combo-box {\n width: 100%;\n}\n\n.tabular-grid-ww-files {\n overflow: auto;\n inline-size: 100%;\n border-inline-end: var(--section-common-border);\n}\n\n.main__files-container {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: var(--mer-spacing--xs);\n position: relative;\n z-index: 1;\n}\n\n.hiChar {\n color: var(--mer-color__primary--200);\n filter: brightness(1.3);\n}\n\n.tabular-grid-ww-files ch-tabular-grid-cell:is(:nth-child(4)) {\n padding-block: var(--grid-cell__padding-block);\n padding-inline: var(--grid-cell__padding-inline);\n align-items: start;\n justify-content: start;\n display: inline-block;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n min-inline-size: 0;\n}\n@container (max-width: 992px) {\n .main__files-container {\n grid-template-columns: repeat(3, 1fr);\n }\n}';
17
17
 
18
18
  var o = undefined && undefined.__classPrivateFieldGet || function(i, t, e, s) {
19
19
  if (e === "a" && !s) throw new TypeError("Private accessor was defined without a getter");
@@ -561,4 +561,4 @@ T = new WeakMap, L = new WeakMap, P = new WeakMap, V = new WeakMap, $ = new Weak
561
561
  G.style = r;
562
562
 
563
563
  export { G as gx_ide_ww_files };
564
- //# sourceMappingURL=p-67762237.entry.js.map
564
+ //# sourceMappingURL=p-385c9544.entry.js.map
@@ -1,8 +1,6 @@
1
1
  import { r as t, h as e, H as s, a as i } from "./p-25a9f1d7.js";
2
2
 
3
- import { g as o } from "./p-6e4208d8.js";
4
-
5
- import "./p-5ac47c69.js";
3
+ import { g as o } from "./p-ede7bd20.js";
6
4
 
7
5
  import { L as n } from "./p-311eedf3.js";
8
6
 
@@ -254,4 +252,4 @@ u = new WeakMap, m = new WeakMap, b = new WeakMap;
254
252
  k.style = r;
255
253
 
256
254
  export { k as gx_ide_data_type_selector };
257
- //# sourceMappingURL=p-4b79c3ab.entry.js.map
255
+ //# sourceMappingURL=p-3da8db15.entry.js.map