@genexus/genexus-ide-ui 1.1.5 → 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 (643) hide show
  1. package/dist/cjs/{code-render-0e9837c4.js → code-render-55d37767.js} +3 -3
  2. package/dist/cjs/code-render-55d37767.js.map +1 -0
  3. package/dist/cjs/{form-validation-ffe2b957.js → form-validation-178cf461.js} +3 -7
  4. package/dist/cjs/form-validation-178cf461.js.map +1 -0
  5. package/dist/cjs/gx-ide-about.cjs.entry.js +1 -1
  6. package/dist/cjs/gx-ide-ai-assistant.cjs.entry.js +15 -9
  7. package/dist/cjs/gx-ide-ai-assistant.cjs.entry.js.map +1 -1
  8. package/dist/cjs/gx-ide-ai-message.cjs.entry.js +2 -2
  9. package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js +4 -3
  10. package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js.map +1 -1
  11. package/dist/cjs/gx-ide-bpm-assign-roles.cjs.entry.js +1 -1
  12. package/dist/cjs/gx-ide-bpm-export-xpdl.cjs.entry.js +5 -3
  13. package/dist/cjs/gx-ide-bpm-export-xpdl.cjs.entry.js.map +1 -1
  14. package/dist/cjs/gx-ide-bpm-import-files.cjs.entry.js +3 -2
  15. package/dist/cjs/gx-ide-bpm-import-files.cjs.entry.js.map +1 -1
  16. package/dist/cjs/gx-ide-bpm-import-gxpm.cjs.entry.js +1 -1
  17. package/dist/cjs/gx-ide-bpm-objects-selector.cjs.entry.js +1 -1
  18. package/dist/cjs/gx-ide-bpm-sync-gam-roles.cjs.entry.js +3 -2
  19. package/dist/cjs/gx-ide-bpm-sync-gam-roles.cjs.entry.js.map +1 -1
  20. package/dist/cjs/gx-ide-bpm-task-documents.cjs.entry.js +11 -9
  21. package/dist/cjs/gx-ide-bpm-task-documents.cjs.entry.js.map +1 -1
  22. package/dist/cjs/gx-ide-bpm-timer-duration.cjs.entry.js +3 -2
  23. package/dist/cjs/gx-ide-bpm-timer-duration.cjs.entry.js.map +1 -1
  24. package/dist/cjs/gx-ide-card.cjs.entry.js +1 -1
  25. package/dist/cjs/gx-ide-chat-container_2.cjs.entry.js +1 -1
  26. package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js +23 -18
  27. package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js.map +1 -1
  28. package/dist/cjs/gx-ide-container_2.cjs.entry.js +2 -1
  29. package/dist/cjs/gx-ide-container_2.cjs.entry.js.map +1 -1
  30. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +10 -6
  31. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js.map +1 -1
  32. package/dist/cjs/gx-ide-current-user-info.cjs.entry.js +4 -3
  33. package/dist/cjs/gx-ide-current-user-info.cjs.entry.js.map +1 -1
  34. package/dist/cjs/gx-ide-dashboard-home.cjs.entry.js +5 -4
  35. package/dist/cjs/gx-ide-dashboard-home.cjs.entry.js.map +1 -1
  36. package/dist/cjs/gx-ide-data-selector.cjs.entry.js +4 -3
  37. package/dist/cjs/gx-ide-data-selector.cjs.entry.js.map +1 -1
  38. package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js +5 -4
  39. package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js.map +1 -1
  40. package/dist/cjs/gx-ide-deployment-tool.cjs.entry.js +20 -16
  41. package/dist/cjs/gx-ide-deployment-tool.cjs.entry.js.map +1 -1
  42. package/dist/cjs/gx-ide-design-import.cjs.entry.js +28 -20
  43. package/dist/cjs/gx-ide-design-import.cjs.entry.js.map +1 -1
  44. package/dist/cjs/gx-ide-directory-selector.cjs.entry.js +2 -1
  45. package/dist/cjs/gx-ide-directory-selector.cjs.entry.js.map +1 -1
  46. package/dist/cjs/gx-ide-edit-module-server.cjs.entry.js +3 -2
  47. package/dist/cjs/gx-ide-edit-module-server.cjs.entry.js.map +1 -1
  48. package/dist/cjs/gx-ide-entity-selector.cjs.entry.js +5 -3
  49. package/dist/cjs/gx-ide-entity-selector.cjs.entry.js.map +1 -1
  50. package/dist/cjs/gx-ide-file-uploader.cjs.entry.js +45 -60
  51. package/dist/cjs/gx-ide-file-uploader.cjs.entry.js.map +1 -1
  52. package/dist/cjs/gx-ide-gam-installation-settings.cjs.entry.js +3 -2
  53. package/dist/cjs/gx-ide-gam-installation-settings.cjs.entry.js.map +1 -1
  54. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +1 -1
  55. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +8 -5
  56. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js.map +1 -1
  57. package/dist/cjs/gx-ide-list-selector_2.cjs.entry.js +1 -1
  58. package/dist/cjs/gx-ide-list-selector_2.cjs.entry.js.map +1 -1
  59. package/dist/cjs/gx-ide-manage-module-references-v2.cjs.entry.js +5 -14
  60. package/dist/cjs/gx-ide-manage-module-references-v2.cjs.entry.js.map +1 -1
  61. package/dist/cjs/gx-ide-manage-module-references.cjs.entry.js +3 -3
  62. package/dist/cjs/gx-ide-manage-module-references.cjs.entry.js.map +1 -1
  63. package/dist/cjs/gx-ide-navigation-report.cjs.entry.js +7 -4
  64. package/dist/cjs/gx-ide-navigation-report.cjs.entry.js.map +1 -1
  65. package/dist/cjs/gx-ide-new-environment.cjs.entry.js +18 -13
  66. package/dist/cjs/gx-ide-new-environment.cjs.entry.js.map +1 -1
  67. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +35 -31
  68. package/dist/cjs/gx-ide-new-kb.cjs.entry.js.map +1 -1
  69. package/dist/cjs/gx-ide-new-object.cjs.entry.js +9 -6
  70. package/dist/cjs/gx-ide-new-object.cjs.entry.js.map +1 -1
  71. package/dist/cjs/gx-ide-new-version.cjs.entry.js +3 -3
  72. package/dist/cjs/gx-ide-new-version.cjs.entry.js.map +1 -1
  73. package/dist/cjs/gx-ide-object-selector.cjs.entry.js +7 -6
  74. package/dist/cjs/gx-ide-object-selector.cjs.entry.js.map +1 -1
  75. package/dist/cjs/gx-ide-open-api-import.cjs.entry.js +9 -5
  76. package/dist/cjs/gx-ide-open-api-import.cjs.entry.js.map +1 -1
  77. package/dist/cjs/gx-ide-references.cjs.entry.js +23 -18
  78. package/dist/cjs/gx-ide-references.cjs.entry.js.map +1 -1
  79. package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js +1 -1
  80. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js +13 -7
  81. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js.map +1 -1
  82. package/dist/cjs/gx-ide-select-user-team.cjs.entry.js +4 -3
  83. package/dist/cjs/gx-ide-select-user-team.cjs.entry.js.map +1 -1
  84. package/dist/cjs/gx-ide-share-kb.cjs.entry.js +7 -4
  85. package/dist/cjs/gx-ide-share-kb.cjs.entry.js.map +1 -1
  86. package/dist/cjs/gx-ide-sign-in-team.cjs.entry.js +3 -2
  87. package/dist/cjs/gx-ide-sign-in-team.cjs.entry.js.map +1 -1
  88. package/dist/cjs/gx-ide-sign-in.cjs.entry.js +1 -1
  89. package/dist/cjs/gx-ide-splash.cjs.entry.js +4 -3
  90. package/dist/cjs/gx-ide-splash.cjs.entry.js.map +1 -1
  91. package/dist/cjs/gx-ide-start-page.cjs.entry.js +7 -4
  92. package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
  93. package/dist/cjs/gx-ide-status-buttons.cjs.entry.js +1 -1
  94. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +2 -2
  95. package/dist/cjs/gx-ide-team-dev-select-recent-comment.cjs.entry.js +1 -1
  96. package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js +2 -2
  97. package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js.map +1 -1
  98. package/dist/cjs/gx-ide-team-dev-update-to-revision.cjs.entry.js +1 -1
  99. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +4 -3
  100. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js.map +1 -1
  101. package/dist/cjs/gx-ide-template.cjs.entry.js +1 -1
  102. package/dist/cjs/gx-ide-welcome-page.cjs.entry.js +8 -6
  103. package/dist/cjs/gx-ide-welcome-page.cjs.entry.js.map +1 -1
  104. package/dist/cjs/gx-ide-wf-settings.cjs.entry.js +1 -1
  105. package/dist/cjs/gx-ide-ww-attributes.cjs.entry.js +14 -8
  106. package/dist/cjs/gx-ide-ww-attributes.cjs.entry.js.map +1 -1
  107. package/dist/cjs/gx-ide-ww-files.cjs.entry.js +21 -18
  108. package/dist/cjs/gx-ide-ww-files.cjs.entry.js.map +1 -1
  109. package/dist/cjs/gx-ide-ww-images.cjs.entry.js +7 -18
  110. package/dist/cjs/gx-ide-ww-images.cjs.entry.js.map +1 -1
  111. package/dist/cjs/{helpers-e5a13fa5.js → helpers-30f109a4.js} +6 -6
  112. package/dist/cjs/helpers-30f109a4.js.map +1 -0
  113. package/dist/cjs/index.cjs.js +7 -1
  114. package/dist/cjs/index.cjs.js.map +1 -1
  115. package/dist/cjs/{locale-36b93b1b.js → locale-ff30a5f3.js} +4 -4
  116. package/dist/cjs/locale-ff30a5f3.js.map +1 -0
  117. package/dist/collection/common/common.js +7 -4
  118. package/dist/collection/common/common.js.map +1 -1
  119. package/dist/collection/common/form-validation.js +4 -7
  120. package/dist/collection/common/form-validation.js.map +1 -1
  121. package/dist/collection/common/helpers.js +10 -9
  122. package/dist/collection/common/helpers.js.map +1 -1
  123. package/dist/collection/common/images/ai-avatar.svg +11 -0
  124. package/dist/collection/common/locale.js +3 -3
  125. package/dist/collection/common/locale.js.map +1 -1
  126. package/dist/collection/common/render-suggest.js +1 -1
  127. package/dist/collection/common/render-suggest.js.map +1 -1
  128. package/dist/collection/components/_helpers/container/container.js +2 -1
  129. package/dist/collection/components/_helpers/container/container.js.map +1 -1
  130. package/dist/collection/components/_helpers/directory-selector/directory-selector.js +2 -1
  131. package/dist/collection/components/_helpers/directory-selector/directory-selector.js.map +1 -1
  132. package/dist/collection/components/_helpers/entity-selector/entity-selector.js +4 -2
  133. package/dist/collection/components/_helpers/entity-selector/entity-selector.js.map +1 -1
  134. package/dist/collection/components/_helpers/list-selector/list-selector-item/list-selector-item.js +1 -1
  135. package/dist/collection/components/_helpers/list-selector/list-selector-item/list-selector-item.js.map +1 -1
  136. package/dist/collection/components/ai-assistant/ai-assistant.js +14 -8
  137. package/dist/collection/components/ai-assistant/ai-assistant.js.map +1 -1
  138. package/dist/collection/components/bpm/application-declaration/bpm-app-declaration.js +3 -2
  139. package/dist/collection/components/bpm/application-declaration/bpm-app-declaration.js.map +1 -1
  140. package/dist/collection/components/bpm/export-xpdl/bpm-export-xpdl.js +4 -2
  141. package/dist/collection/components/bpm/export-xpdl/bpm-export-xpdl.js.map +1 -1
  142. package/dist/collection/components/bpm/import-files/bpm-import-files.js +2 -1
  143. package/dist/collection/components/bpm/import-files/bpm-import-files.js.map +1 -1
  144. package/dist/collection/components/bpm/sync-gam-roles/bpm-sync-gam-roles.js +2 -1
  145. package/dist/collection/components/bpm/sync-gam-roles/bpm-sync-gam-roles.js.map +1 -1
  146. package/dist/collection/components/bpm/task-documents/helpers.js +1 -1
  147. package/dist/collection/components/bpm/task-documents/helpers.js.map +1 -1
  148. package/dist/collection/components/bpm/task-documents/task-documents.js +9 -7
  149. package/dist/collection/components/bpm/task-documents/task-documents.js.map +1 -1
  150. package/dist/collection/components/bpm/timer-duration/bpm-timer-duration.js +2 -1
  151. package/dist/collection/components/bpm/timer-duration/bpm-timer-duration.js.map +1 -1
  152. package/dist/collection/components/chat/code-render.js +2 -2
  153. package/dist/collection/components/chat/code-render.js.map +1 -1
  154. package/dist/collection/components/current-user-info/current-user-info.js +3 -2
  155. package/dist/collection/components/current-user-info/current-user-info.js.map +1 -1
  156. package/dist/collection/components/dashboard-home/dashboard-home.js +3 -2
  157. package/dist/collection/components/dashboard-home/dashboard-home.js.map +1 -1
  158. package/dist/collection/components/data-selector/data-selector.js +3 -2
  159. package/dist/collection/components/data-selector/data-selector.js.map +1 -1
  160. package/dist/collection/components/data-type-selector/data-type-selector.js +4 -3
  161. package/dist/collection/components/data-type-selector/data-type-selector.js.map +1 -1
  162. package/dist/collection/components/deployment-tool/deployment-tool.js +18 -11
  163. package/dist/collection/components/deployment-tool/deployment-tool.js.map +1 -1
  164. package/dist/collection/components/deployment-tool/helpers.js +1 -4
  165. package/dist/collection/components/deployment-tool/helpers.js.map +1 -1
  166. package/dist/collection/components/design-import/design-import.js +26 -18
  167. package/dist/collection/components/design-import/design-import.js.map +1 -1
  168. package/dist/collection/components/design-import/helpers.js +1 -1
  169. package/dist/collection/components/design-import/helpers.js.map +1 -1
  170. package/dist/collection/components/file-uploader/file-uploader.js +44 -59
  171. package/dist/collection/components/file-uploader/file-uploader.js.map +1 -1
  172. package/dist/collection/components/gam-installation-settings/gam-installation-settings.js +2 -1
  173. package/dist/collection/components/gam-installation-settings/gam-installation-settings.js.map +1 -1
  174. package/dist/collection/components/kb-manager-import/kb-manager-import.js +7 -4
  175. package/dist/collection/components/kb-manager-import/kb-manager-import.js.map +1 -1
  176. package/dist/collection/components/modules/edit-module-server/edit-module-server.js +2 -1
  177. package/dist/collection/components/modules/edit-module-server/edit-module-server.js.map +1 -1
  178. package/dist/collection/components/modules/manage-module-references/manage-module-references.js +2 -2
  179. package/dist/collection/components/modules/manage-module-references/manage-module-references.js.map +1 -1
  180. package/dist/collection/components/modules/manage-module-references-v2/manage-module-references-v2.js +4 -13
  181. package/dist/collection/components/modules/manage-module-references-v2/manage-module-references-v2.js.map +1 -1
  182. package/dist/collection/components/navigation-report/navigation-report.js +6 -3
  183. package/dist/collection/components/navigation-report/navigation-report.js.map +1 -1
  184. package/dist/collection/components/new-environment/new-environment.js +15 -10
  185. package/dist/collection/components/new-environment/new-environment.js.map +1 -1
  186. package/dist/collection/components/new-kb/new-kb.js +32 -28
  187. package/dist/collection/components/new-kb/new-kb.js.map +1 -1
  188. package/dist/collection/components/new-object/new-object.js +8 -5
  189. package/dist/collection/components/new-object/new-object.js.map +1 -1
  190. package/dist/collection/components/new-version/new-version.js +2 -2
  191. package/dist/collection/components/new-version/new-version.js.map +1 -1
  192. package/dist/collection/components/object-selector/object-selector.js +5 -4
  193. package/dist/collection/components/object-selector/object-selector.js.map +1 -1
  194. package/dist/collection/components/open-api-import/open-api-import.js +8 -4
  195. package/dist/collection/components/open-api-import/open-api-import.js.map +1 -1
  196. package/dist/collection/components/references/helpers.js +13 -9
  197. package/dist/collection/components/references/helpers.js.map +1 -1
  198. package/dist/collection/components/references/references.js +11 -9
  199. package/dist/collection/components/references/references.js.map +1 -1
  200. package/dist/collection/components/select-kb-items/helpers.js +10 -5
  201. package/dist/collection/components/select-kb-items/helpers.js.map +1 -1
  202. package/dist/collection/components/select-kb-items/select-kb-items.js +2 -1
  203. package/dist/collection/components/select-kb-items/select-kb-items.js.map +1 -1
  204. package/dist/collection/components/select-user-team/helpers.js +1 -1
  205. package/dist/collection/components/select-user-team/helpers.js.map +1 -1
  206. package/dist/collection/components/select-user-team/select-user-team.js +2 -1
  207. package/dist/collection/components/select-user-team/select-user-team.js.map +1 -1
  208. package/dist/collection/components/sign-in-team/sign-in-team.js +2 -1
  209. package/dist/collection/components/sign-in-team/sign-in-team.js.map +1 -1
  210. package/dist/collection/components/splash/splash.js +3 -2
  211. package/dist/collection/components/splash/splash.js.map +1 -1
  212. package/dist/collection/components/start-page/start-page.js +6 -3
  213. package/dist/collection/components/start-page/start-page.js.map +1 -1
  214. package/dist/collection/components/team-dev/connect-gx-server/connect-gx-server.js +21 -16
  215. package/dist/collection/components/team-dev/connect-gx-server/connect-gx-server.js.map +1 -1
  216. package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js +8 -4
  217. package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js.map +1 -1
  218. package/dist/collection/components/team-dev/share-kb/share-kb.js +5 -2
  219. package/dist/collection/components/team-dev/share-kb/share-kb.js.map +1 -1
  220. package/dist/collection/components/team-dev/update/update.js +2 -1
  221. package/dist/collection/components/team-dev/update/update.js.map +1 -1
  222. package/dist/collection/components/team-dev/update-partial-selection/update-partial-selection.js +1 -1
  223. package/dist/collection/components/team-dev/update-partial-selection/update-partial-selection.js.map +1 -1
  224. package/dist/collection/components/welcome-page/welcome-page.js +7 -5
  225. package/dist/collection/components/welcome-page/welcome-page.js.map +1 -1
  226. package/dist/collection/components/ww-attributes/helpers.js +2 -1
  227. package/dist/collection/components/ww-attributes/helpers.js.map +1 -1
  228. package/dist/collection/components/ww-attributes/ww-attributes.js +11 -6
  229. package/dist/collection/components/ww-attributes/ww-attributes.js.map +1 -1
  230. package/dist/collection/components/ww-files/helpers.js +2 -1
  231. package/dist/collection/components/ww-files/helpers.js.map +1 -1
  232. package/dist/collection/components/ww-files/ww-files.js +18 -16
  233. package/dist/collection/components/ww-files/ww-files.js.map +1 -1
  234. package/dist/collection/components/ww-images/ww-images.js +5 -16
  235. package/dist/collection/components/ww-images/ww-images.js.map +1 -1
  236. package/dist/collection/index.js +4 -0
  237. package/dist/collection/index.js.map +1 -1
  238. package/dist/collection/testing/locale.e2e.js +3 -3
  239. package/dist/collection/testing/locale.e2e.js.map +1 -1
  240. package/dist/components/code-render.js +2 -2
  241. package/dist/components/code-render.js.map +1 -1
  242. package/dist/components/container.js +2 -1
  243. package/dist/components/container.js.map +1 -1
  244. package/dist/components/entity-selector.js +4 -2
  245. package/dist/components/entity-selector.js.map +1 -1
  246. package/dist/components/form-validation.js +2 -6
  247. package/dist/components/form-validation.js.map +1 -1
  248. package/dist/components/gx-ide-ai-assistant.js +14 -8
  249. package/dist/components/gx-ide-ai-assistant.js.map +1 -1
  250. package/dist/components/gx-ide-bpm-app-declaration.js +3 -2
  251. package/dist/components/gx-ide-bpm-app-declaration.js.map +1 -1
  252. package/dist/components/gx-ide-bpm-export-xpdl.js +4 -2
  253. package/dist/components/gx-ide-bpm-export-xpdl.js.map +1 -1
  254. package/dist/components/gx-ide-bpm-import-files.js +2 -1
  255. package/dist/components/gx-ide-bpm-import-files.js.map +1 -1
  256. package/dist/components/gx-ide-bpm-sync-gam-roles.js +2 -1
  257. package/dist/components/gx-ide-bpm-sync-gam-roles.js.map +1 -1
  258. package/dist/components/gx-ide-bpm-task-documents.js +10 -8
  259. package/dist/components/gx-ide-bpm-task-documents.js.map +1 -1
  260. package/dist/components/gx-ide-bpm-timer-duration.js +2 -1
  261. package/dist/components/gx-ide-bpm-timer-duration.js.map +1 -1
  262. package/dist/components/gx-ide-connect-gx-server.js +21 -16
  263. package/dist/components/gx-ide-connect-gx-server.js.map +1 -1
  264. package/dist/components/gx-ide-create-kb-from-server.js +8 -4
  265. package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
  266. package/dist/components/gx-ide-current-user-info.js +3 -2
  267. package/dist/components/gx-ide-current-user-info.js.map +1 -1
  268. package/dist/components/gx-ide-dashboard-home.js +3 -2
  269. package/dist/components/gx-ide-dashboard-home.js.map +1 -1
  270. package/dist/components/gx-ide-data-selector.js +3 -2
  271. package/dist/components/gx-ide-data-selector.js.map +1 -1
  272. package/dist/components/gx-ide-data-type-selector.js +4 -3
  273. package/dist/components/gx-ide-data-type-selector.js.map +1 -1
  274. package/dist/components/gx-ide-deployment-tool.js +19 -15
  275. package/dist/components/gx-ide-deployment-tool.js.map +1 -1
  276. package/dist/components/gx-ide-design-import.js +27 -19
  277. package/dist/components/gx-ide-design-import.js.map +1 -1
  278. package/dist/components/gx-ide-directory-selector.js +2 -1
  279. package/dist/components/gx-ide-directory-selector.js.map +1 -1
  280. package/dist/components/gx-ide-edit-module-server.js +2 -1
  281. package/dist/components/gx-ide-edit-module-server.js.map +1 -1
  282. package/dist/components/gx-ide-file-uploader.js +44 -59
  283. package/dist/components/gx-ide-file-uploader.js.map +1 -1
  284. package/dist/components/gx-ide-gam-installation-settings.js +2 -1
  285. package/dist/components/gx-ide-gam-installation-settings.js.map +1 -1
  286. package/dist/components/gx-ide-kb-manager-import.js +7 -4
  287. package/dist/components/gx-ide-kb-manager-import.js.map +1 -1
  288. package/dist/components/gx-ide-manage-module-references-v2.js +4 -13
  289. package/dist/components/gx-ide-manage-module-references-v2.js.map +1 -1
  290. package/dist/components/gx-ide-manage-module-references.js +2 -2
  291. package/dist/components/gx-ide-manage-module-references.js.map +1 -1
  292. package/dist/components/gx-ide-navigation-report.js +6 -3
  293. package/dist/components/gx-ide-navigation-report.js.map +1 -1
  294. package/dist/components/gx-ide-new-environment.js +15 -10
  295. package/dist/components/gx-ide-new-environment.js.map +1 -1
  296. package/dist/components/gx-ide-new-kb.js +32 -28
  297. package/dist/components/gx-ide-new-kb.js.map +1 -1
  298. package/dist/components/gx-ide-new-object.js +8 -5
  299. package/dist/components/gx-ide-new-object.js.map +1 -1
  300. package/dist/components/gx-ide-new-version.js +2 -2
  301. package/dist/components/gx-ide-new-version.js.map +1 -1
  302. package/dist/components/gx-ide-object-selector.js +5 -4
  303. package/dist/components/gx-ide-object-selector.js.map +1 -1
  304. package/dist/components/gx-ide-open-api-import.js +8 -4
  305. package/dist/components/gx-ide-open-api-import.js.map +1 -1
  306. package/dist/components/gx-ide-references.js +22 -17
  307. package/dist/components/gx-ide-references.js.map +1 -1
  308. package/dist/components/gx-ide-select-kb-items.js +12 -6
  309. package/dist/components/gx-ide-select-kb-items.js.map +1 -1
  310. package/dist/components/gx-ide-select-user-team.js +3 -2
  311. package/dist/components/gx-ide-select-user-team.js.map +1 -1
  312. package/dist/components/gx-ide-share-kb.js +5 -2
  313. package/dist/components/gx-ide-share-kb.js.map +1 -1
  314. package/dist/components/gx-ide-sign-in-team.js +2 -1
  315. package/dist/components/gx-ide-sign-in-team.js.map +1 -1
  316. package/dist/components/gx-ide-splash.js +3 -2
  317. package/dist/components/gx-ide-splash.js.map +1 -1
  318. package/dist/components/gx-ide-start-page.js +6 -3
  319. package/dist/components/gx-ide-start-page.js.map +1 -1
  320. package/dist/components/gx-ide-team-dev-update-partial-selection.js +1 -1
  321. package/dist/components/gx-ide-team-dev-update-partial-selection.js.map +1 -1
  322. package/dist/components/gx-ide-team-dev-update.js +2 -1
  323. package/dist/components/gx-ide-team-dev-update.js.map +1 -1
  324. package/dist/components/gx-ide-welcome-page.js +7 -5
  325. package/dist/components/gx-ide-welcome-page.js.map +1 -1
  326. package/dist/components/gx-ide-ww-attributes.js +13 -7
  327. package/dist/components/gx-ide-ww-attributes.js.map +1 -1
  328. package/dist/components/gx-ide-ww-files.js +20 -17
  329. package/dist/components/gx-ide-ww-files.js.map +1 -1
  330. package/dist/components/gx-ide-ww-images.js +5 -16
  331. package/dist/components/gx-ide-ww-images.js.map +1 -1
  332. package/dist/components/helpers.js +5 -5
  333. package/dist/components/helpers.js.map +1 -1
  334. package/dist/components/index.js +6 -0
  335. package/dist/components/index.js.map +1 -1
  336. package/dist/components/list-selector-item.js +1 -1
  337. package/dist/components/list-selector-item.js.map +1 -1
  338. package/dist/components/locale.js +3 -3
  339. package/dist/components/locale.js.map +1 -1
  340. package/dist/esm/{code-render-f3afd300.js → code-render-53b3b0bd.js} +3 -3
  341. package/dist/esm/code-render-53b3b0bd.js.map +1 -0
  342. package/dist/esm/{form-validation-71dca8c6.js → form-validation-cd0215c6.js} +3 -7
  343. package/dist/{genexus-ide-ui/p-549b8f0c.js.map → esm/form-validation-cd0215c6.js.map} +1 -1
  344. package/dist/esm/gx-ide-about.entry.js +1 -1
  345. package/dist/esm/gx-ide-ai-assistant.entry.js +15 -9
  346. package/dist/esm/gx-ide-ai-assistant.entry.js.map +1 -1
  347. package/dist/esm/gx-ide-ai-message.entry.js +2 -2
  348. package/dist/esm/gx-ide-bpm-app-declaration.entry.js +4 -3
  349. package/dist/esm/gx-ide-bpm-app-declaration.entry.js.map +1 -1
  350. package/dist/esm/gx-ide-bpm-assign-roles.entry.js +1 -1
  351. package/dist/esm/gx-ide-bpm-export-xpdl.entry.js +5 -3
  352. package/dist/esm/gx-ide-bpm-export-xpdl.entry.js.map +1 -1
  353. package/dist/esm/gx-ide-bpm-import-files.entry.js +3 -2
  354. package/dist/esm/gx-ide-bpm-import-files.entry.js.map +1 -1
  355. package/dist/esm/gx-ide-bpm-import-gxpm.entry.js +1 -1
  356. package/dist/esm/gx-ide-bpm-objects-selector.entry.js +1 -1
  357. package/dist/esm/gx-ide-bpm-sync-gam-roles.entry.js +3 -2
  358. package/dist/esm/gx-ide-bpm-sync-gam-roles.entry.js.map +1 -1
  359. package/dist/esm/gx-ide-bpm-task-documents.entry.js +11 -9
  360. package/dist/esm/gx-ide-bpm-task-documents.entry.js.map +1 -1
  361. package/dist/esm/gx-ide-bpm-timer-duration.entry.js +3 -2
  362. package/dist/esm/gx-ide-bpm-timer-duration.entry.js.map +1 -1
  363. package/dist/esm/gx-ide-card.entry.js +1 -1
  364. package/dist/esm/gx-ide-chat-container_2.entry.js +1 -1
  365. package/dist/esm/gx-ide-connect-gx-server.entry.js +23 -18
  366. package/dist/esm/gx-ide-connect-gx-server.entry.js.map +1 -1
  367. package/dist/esm/gx-ide-container_2.entry.js +2 -1
  368. package/dist/esm/gx-ide-container_2.entry.js.map +1 -1
  369. package/dist/esm/gx-ide-create-kb-from-server.entry.js +10 -6
  370. package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
  371. package/dist/esm/gx-ide-current-user-info.entry.js +4 -3
  372. package/dist/esm/gx-ide-current-user-info.entry.js.map +1 -1
  373. package/dist/esm/gx-ide-dashboard-home.entry.js +5 -4
  374. package/dist/esm/gx-ide-dashboard-home.entry.js.map +1 -1
  375. package/dist/esm/gx-ide-data-selector.entry.js +4 -3
  376. package/dist/esm/gx-ide-data-selector.entry.js.map +1 -1
  377. package/dist/esm/gx-ide-data-type-selector.entry.js +5 -4
  378. package/dist/esm/gx-ide-data-type-selector.entry.js.map +1 -1
  379. package/dist/esm/gx-ide-deployment-tool.entry.js +20 -16
  380. package/dist/esm/gx-ide-deployment-tool.entry.js.map +1 -1
  381. package/dist/esm/gx-ide-design-import.entry.js +28 -20
  382. package/dist/esm/gx-ide-design-import.entry.js.map +1 -1
  383. package/dist/esm/gx-ide-directory-selector.entry.js +2 -1
  384. package/dist/esm/gx-ide-directory-selector.entry.js.map +1 -1
  385. package/dist/esm/gx-ide-edit-module-server.entry.js +3 -2
  386. package/dist/esm/gx-ide-edit-module-server.entry.js.map +1 -1
  387. package/dist/esm/gx-ide-entity-selector.entry.js +5 -3
  388. package/dist/esm/gx-ide-entity-selector.entry.js.map +1 -1
  389. package/dist/esm/gx-ide-file-uploader.entry.js +45 -60
  390. package/dist/esm/gx-ide-file-uploader.entry.js.map +1 -1
  391. package/dist/esm/gx-ide-gam-installation-settings.entry.js +3 -2
  392. package/dist/esm/gx-ide-gam-installation-settings.entry.js.map +1 -1
  393. package/dist/esm/gx-ide-kb-manager-export.entry.js +1 -1
  394. package/dist/esm/gx-ide-kb-manager-import.entry.js +8 -5
  395. package/dist/esm/gx-ide-kb-manager-import.entry.js.map +1 -1
  396. package/dist/esm/gx-ide-list-selector_2.entry.js +1 -1
  397. package/dist/esm/gx-ide-list-selector_2.entry.js.map +1 -1
  398. package/dist/esm/gx-ide-manage-module-references-v2.entry.js +5 -14
  399. package/dist/esm/gx-ide-manage-module-references-v2.entry.js.map +1 -1
  400. package/dist/esm/gx-ide-manage-module-references.entry.js +3 -3
  401. package/dist/esm/gx-ide-manage-module-references.entry.js.map +1 -1
  402. package/dist/esm/gx-ide-navigation-report.entry.js +7 -4
  403. package/dist/esm/gx-ide-navigation-report.entry.js.map +1 -1
  404. package/dist/esm/gx-ide-new-environment.entry.js +18 -13
  405. package/dist/esm/gx-ide-new-environment.entry.js.map +1 -1
  406. package/dist/esm/gx-ide-new-kb.entry.js +35 -31
  407. package/dist/esm/gx-ide-new-kb.entry.js.map +1 -1
  408. package/dist/esm/gx-ide-new-object.entry.js +9 -6
  409. package/dist/esm/gx-ide-new-object.entry.js.map +1 -1
  410. package/dist/esm/gx-ide-new-version.entry.js +3 -3
  411. package/dist/esm/gx-ide-new-version.entry.js.map +1 -1
  412. package/dist/esm/gx-ide-object-selector.entry.js +7 -6
  413. package/dist/esm/gx-ide-object-selector.entry.js.map +1 -1
  414. package/dist/esm/gx-ide-open-api-import.entry.js +9 -5
  415. package/dist/esm/gx-ide-open-api-import.entry.js.map +1 -1
  416. package/dist/esm/gx-ide-references.entry.js +23 -18
  417. package/dist/esm/gx-ide-references.entry.js.map +1 -1
  418. package/dist/esm/gx-ide-sc-chat-container.entry.js +1 -1
  419. package/dist/esm/gx-ide-select-kb-items.entry.js +13 -7
  420. package/dist/esm/gx-ide-select-kb-items.entry.js.map +1 -1
  421. package/dist/esm/gx-ide-select-user-team.entry.js +4 -3
  422. package/dist/esm/gx-ide-select-user-team.entry.js.map +1 -1
  423. package/dist/esm/gx-ide-share-kb.entry.js +7 -4
  424. package/dist/esm/gx-ide-share-kb.entry.js.map +1 -1
  425. package/dist/esm/gx-ide-sign-in-team.entry.js +3 -2
  426. package/dist/esm/gx-ide-sign-in-team.entry.js.map +1 -1
  427. package/dist/esm/gx-ide-sign-in.entry.js +1 -1
  428. package/dist/esm/gx-ide-splash.entry.js +4 -3
  429. package/dist/esm/gx-ide-splash.entry.js.map +1 -1
  430. package/dist/esm/gx-ide-start-page.entry.js +7 -4
  431. package/dist/esm/gx-ide-start-page.entry.js.map +1 -1
  432. package/dist/esm/gx-ide-status-buttons.entry.js +1 -1
  433. package/dist/esm/gx-ide-team-dev-commit.entry.js +2 -2
  434. package/dist/esm/gx-ide-team-dev-select-recent-comment.entry.js +1 -1
  435. package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js +2 -2
  436. package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js.map +1 -1
  437. package/dist/esm/gx-ide-team-dev-update-to-revision.entry.js +1 -1
  438. package/dist/esm/gx-ide-team-dev-update.entry.js +4 -3
  439. package/dist/esm/gx-ide-team-dev-update.entry.js.map +1 -1
  440. package/dist/esm/gx-ide-template.entry.js +1 -1
  441. package/dist/esm/gx-ide-welcome-page.entry.js +8 -6
  442. package/dist/esm/gx-ide-welcome-page.entry.js.map +1 -1
  443. package/dist/esm/gx-ide-wf-settings.entry.js +1 -1
  444. package/dist/esm/gx-ide-ww-attributes.entry.js +14 -8
  445. package/dist/esm/gx-ide-ww-attributes.entry.js.map +1 -1
  446. package/dist/esm/gx-ide-ww-files.entry.js +21 -18
  447. package/dist/esm/gx-ide-ww-files.entry.js.map +1 -1
  448. package/dist/esm/gx-ide-ww-images.entry.js +7 -18
  449. package/dist/esm/gx-ide-ww-images.entry.js.map +1 -1
  450. package/dist/esm/{helpers-5f1c9a32.js → helpers-10479d69.js} +6 -6
  451. package/dist/esm/helpers-10479d69.js.map +1 -0
  452. package/dist/esm/index.js +7 -1
  453. package/dist/esm/index.js.map +1 -1
  454. package/dist/esm/{locale-643afe17.js → locale-e5107fad.js} +4 -4
  455. package/dist/esm/locale-e5107fad.js.map +1 -0
  456. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  457. package/dist/genexus-ide-ui/index.esm.js +7 -1
  458. package/dist/genexus-ide-ui/index.esm.js.map +1 -1
  459. package/dist/genexus-ide-ui/{p-11dccb8f.entry.js → p-01d96378.entry.js} +16 -17
  460. package/dist/genexus-ide-ui/p-01d96378.entry.js.map +1 -0
  461. package/dist/genexus-ide-ui/{p-75e1aa31.entry.js → p-036d005d.entry.js} +5 -4
  462. package/dist/genexus-ide-ui/p-036d005d.entry.js.map +1 -0
  463. package/dist/genexus-ide-ui/{p-f5a48b33.entry.js → p-04205aa4.entry.js} +6 -5
  464. package/dist/genexus-ide-ui/p-04205aa4.entry.js.map +1 -0
  465. package/dist/genexus-ide-ui/{p-f6ceb01a.entry.js → p-04c6bd23.entry.js} +29 -28
  466. package/dist/genexus-ide-ui/p-04c6bd23.entry.js.map +1 -0
  467. package/dist/genexus-ide-ui/{p-f52bcdac.entry.js → p-0550fd5f.entry.js} +2 -2
  468. package/dist/genexus-ide-ui/{p-e1d75f00.entry.js → p-05b04291.entry.js} +2 -2
  469. package/dist/genexus-ide-ui/{p-e1d75f00.entry.js.map → p-05b04291.entry.js.map} +1 -1
  470. package/dist/genexus-ide-ui/{p-bfd9066c.entry.js → p-0bdf34f2.entry.js} +4 -6
  471. package/dist/genexus-ide-ui/p-0bdf34f2.entry.js.map +1 -0
  472. package/dist/genexus-ide-ui/{p-2be58a7a.entry.js → p-14165308.entry.js} +2 -2
  473. package/dist/genexus-ide-ui/{p-7cedb0f0.entry.js → p-1bc2613e.entry.js} +69 -66
  474. package/dist/genexus-ide-ui/p-1bc2613e.entry.js.map +1 -0
  475. package/dist/genexus-ide-ui/{p-c5cca204.entry.js → p-1c7ea1cb.entry.js} +11 -10
  476. package/dist/genexus-ide-ui/p-1c7ea1cb.entry.js.map +1 -0
  477. package/dist/genexus-ide-ui/{p-daa29451.entry.js → p-1dd7be84.entry.js} +17 -14
  478. package/dist/genexus-ide-ui/p-1dd7be84.entry.js.map +1 -0
  479. package/dist/genexus-ide-ui/{p-549b8f0c.js → p-289c3290.js} +15 -16
  480. package/dist/genexus-ide-ui/p-289c3290.js.map +1 -0
  481. package/dist/genexus-ide-ui/{p-032b4a81.entry.js → p-29c69938.entry.js} +22 -19
  482. package/dist/genexus-ide-ui/p-29c69938.entry.js.map +1 -0
  483. package/dist/genexus-ide-ui/{p-db4f756a.entry.js → p-3085add2.entry.js} +188 -176
  484. package/dist/genexus-ide-ui/p-3085add2.entry.js.map +1 -0
  485. package/dist/genexus-ide-ui/{p-857866f8.js → p-311eedf3.js} +9 -8
  486. package/dist/genexus-ide-ui/p-311eedf3.js.map +1 -0
  487. package/dist/genexus-ide-ui/{p-2e90a13a.entry.js → p-31beae9e.entry.js} +3 -2
  488. package/dist/genexus-ide-ui/p-31beae9e.entry.js.map +1 -0
  489. package/dist/genexus-ide-ui/{p-9a39e49c.entry.js → p-35f9ebbc.entry.js} +2 -2
  490. package/dist/genexus-ide-ui/{p-db4750ff.entry.js → p-385c9544.entry.js} +147 -138
  491. package/dist/genexus-ide-ui/p-385c9544.entry.js.map +1 -0
  492. package/dist/genexus-ide-ui/{p-8f1f4126.entry.js → p-3da8db15.entry.js} +9 -9
  493. package/dist/genexus-ide-ui/p-3da8db15.entry.js.map +1 -0
  494. package/dist/genexus-ide-ui/{p-b1833747.entry.js → p-4538dea5.entry.js} +31 -26
  495. package/dist/genexus-ide-ui/p-4538dea5.entry.js.map +1 -0
  496. package/dist/genexus-ide-ui/{p-6dc05a27.entry.js → p-45996535.entry.js} +4 -3
  497. package/dist/genexus-ide-ui/p-45996535.entry.js.map +1 -0
  498. package/dist/genexus-ide-ui/{p-a6029d9a.entry.js → p-48062d23.entry.js} +128 -116
  499. package/dist/genexus-ide-ui/p-48062d23.entry.js.map +1 -0
  500. package/dist/genexus-ide-ui/{p-4d929210.entry.js → p-4b38fffc.entry.js} +2 -2
  501. package/dist/genexus-ide-ui/{p-d1cc4724.entry.js → p-4d0ba4f6.entry.js} +8 -15
  502. package/dist/genexus-ide-ui/p-4d0ba4f6.entry.js.map +1 -0
  503. package/dist/genexus-ide-ui/{p-66d9269a.entry.js → p-4e943649.entry.js} +19 -16
  504. package/dist/genexus-ide-ui/p-4e943649.entry.js.map +1 -0
  505. package/dist/genexus-ide-ui/{p-ec01c70c.entry.js → p-67e0b419.entry.js} +7 -6
  506. package/dist/genexus-ide-ui/p-67e0b419.entry.js.map +1 -0
  507. package/dist/genexus-ide-ui/{p-45d2fa91.entry.js → p-68969051.entry.js} +12 -11
  508. package/dist/genexus-ide-ui/p-68969051.entry.js.map +1 -0
  509. package/dist/genexus-ide-ui/{p-9b238bf7.entry.js → p-690942cb.entry.js} +178 -173
  510. package/dist/genexus-ide-ui/p-690942cb.entry.js.map +1 -0
  511. package/dist/genexus-ide-ui/{p-b211bca8.entry.js → p-6b957e82.entry.js} +2 -2
  512. package/dist/genexus-ide-ui/{p-be794132.entry.js → p-6f898249.entry.js} +233 -228
  513. package/dist/genexus-ide-ui/p-6f898249.entry.js.map +1 -0
  514. package/dist/genexus-ide-ui/{p-29575656.entry.js → p-704499e5.entry.js} +116 -107
  515. package/dist/genexus-ide-ui/p-704499e5.entry.js.map +1 -0
  516. package/dist/genexus-ide-ui/{p-ac0438d6.entry.js → p-767e0f6d.entry.js} +12 -11
  517. package/dist/genexus-ide-ui/p-767e0f6d.entry.js.map +1 -0
  518. package/dist/genexus-ide-ui/{p-6168d48c.entry.js → p-7abe2214.entry.js} +167 -160
  519. package/dist/genexus-ide-ui/p-7abe2214.entry.js.map +1 -0
  520. package/dist/genexus-ide-ui/{p-50eaa96d.entry.js → p-7d8812b0.entry.js} +99 -89
  521. package/dist/genexus-ide-ui/p-7d8812b0.entry.js.map +1 -0
  522. package/dist/genexus-ide-ui/{p-9c690c36.entry.js → p-88c81f18.entry.js} +13 -12
  523. package/dist/genexus-ide-ui/p-88c81f18.entry.js.map +1 -0
  524. package/dist/genexus-ide-ui/{p-5e05f830.entry.js → p-8cb937b7.entry.js} +35 -31
  525. package/dist/genexus-ide-ui/p-8cb937b7.entry.js.map +1 -0
  526. package/dist/genexus-ide-ui/p-9ddea83b.js +146 -0
  527. package/dist/genexus-ide-ui/p-9ddea83b.js.map +1 -0
  528. package/dist/genexus-ide-ui/{p-2dbf722d.entry.js → p-9fa1200f.entry.js} +75 -69
  529. package/dist/genexus-ide-ui/p-9fa1200f.entry.js.map +1 -0
  530. package/dist/genexus-ide-ui/{p-0e53f1ef.entry.js → p-a1415a9c.entry.js} +161 -159
  531. package/dist/genexus-ide-ui/p-a1415a9c.entry.js.map +1 -0
  532. package/dist/genexus-ide-ui/{p-c30b2104.entry.js → p-a47d71eb.entry.js} +11 -9
  533. package/dist/genexus-ide-ui/p-a47d71eb.entry.js.map +1 -0
  534. package/dist/genexus-ide-ui/{p-f315c6e0.entry.js → p-aab809c4.entry.js} +2 -2
  535. package/dist/genexus-ide-ui/{p-f5879a41.entry.js → p-b1851e6b.entry.js} +3 -3
  536. package/dist/genexus-ide-ui/{p-f5879a41.entry.js.map → p-b1851e6b.entry.js.map} +1 -1
  537. package/dist/genexus-ide-ui/{p-95f831a8.entry.js → p-b2928645.entry.js} +2 -2
  538. package/dist/genexus-ide-ui/{p-39c527ff.entry.js → p-b58fb87b.entry.js} +2 -2
  539. package/dist/genexus-ide-ui/{p-a86a8692.entry.js → p-c38ce0bf.entry.js} +36 -32
  540. package/dist/genexus-ide-ui/p-c38ce0bf.entry.js.map +1 -0
  541. package/dist/genexus-ide-ui/{p-3edbf07d.js → p-c5178973.js} +3 -3
  542. package/dist/genexus-ide-ui/{p-3edbf07d.js.map → p-c5178973.js.map} +1 -1
  543. package/dist/genexus-ide-ui/{p-0d83a34d.entry.js → p-c7badbf1.entry.js} +66 -62
  544. package/dist/genexus-ide-ui/p-c7badbf1.entry.js.map +1 -0
  545. package/dist/genexus-ide-ui/{p-970d16ca.entry.js → p-c91af626.entry.js} +15 -15
  546. package/dist/genexus-ide-ui/{p-970d16ca.entry.js.map → p-c91af626.entry.js.map} +1 -1
  547. package/dist/genexus-ide-ui/{p-8b046b4b.entry.js → p-d095a37c.entry.js} +10 -9
  548. package/dist/genexus-ide-ui/p-d095a37c.entry.js.map +1 -0
  549. package/dist/genexus-ide-ui/{p-e37e95e7.entry.js → p-d2107cb2.entry.js} +3 -3
  550. package/dist/genexus-ide-ui/{p-353810b8.entry.js → p-d3767a7d.entry.js} +104 -99
  551. package/dist/genexus-ide-ui/p-d3767a7d.entry.js.map +1 -0
  552. package/dist/genexus-ide-ui/{p-02fc47cd.entry.js → p-d8379699.entry.js} +2 -2
  553. package/dist/genexus-ide-ui/{p-cdf8b082.entry.js → p-da473001.entry.js} +2 -2
  554. package/dist/genexus-ide-ui/{p-501c7b1f.entry.js → p-de7f0c1f.entry.js} +22 -19
  555. package/dist/genexus-ide-ui/p-de7f0c1f.entry.js.map +1 -0
  556. package/dist/genexus-ide-ui/{p-5da3e999.entry.js → p-ded7444c.entry.js} +17 -16
  557. package/dist/genexus-ide-ui/p-ded7444c.entry.js.map +1 -0
  558. package/dist/genexus-ide-ui/{p-9a9ee1ee.entry.js → p-e24902a0.entry.js} +2 -2
  559. package/dist/genexus-ide-ui/{p-5a42428d.entry.js → p-e28e6bc4.entry.js} +15 -14
  560. package/dist/genexus-ide-ui/p-e28e6bc4.entry.js.map +1 -0
  561. package/dist/genexus-ide-ui/{p-7782e1b8.entry.js → p-e502c2fd.entry.js} +61 -56
  562. package/dist/genexus-ide-ui/p-e502c2fd.entry.js.map +1 -0
  563. package/dist/genexus-ide-ui/{p-f2bd9044.entry.js → p-e7fb3ee3.entry.js} +2 -2
  564. package/dist/genexus-ide-ui/{p-e5571f49.entry.js → p-eb9e760d.entry.js} +18 -18
  565. package/dist/genexus-ide-ui/p-eb9e760d.entry.js.map +1 -0
  566. package/dist/genexus-ide-ui/{p-eb51429c.entry.js → p-ec0809a7.entry.js} +2 -2
  567. package/dist/genexus-ide-ui/{p-460db3ff.entry.js → p-ecba870e.entry.js} +3 -3
  568. package/dist/genexus-ide-ui/{p-e26e05c7.entry.js → p-f49bb305.entry.js} +18 -12
  569. package/dist/genexus-ide-ui/p-f49bb305.entry.js.map +1 -0
  570. package/dist/genexus-ide-ui/{p-8636a0bd.entry.js → p-f722955f.entry.js} +2 -2
  571. package/dist/genexus-ide-ui/{p-a8cc41e4.entry.js → p-f7421997.entry.js} +61 -58
  572. package/dist/genexus-ide-ui/p-f7421997.entry.js.map +1 -0
  573. package/dist/types/index.d.ts +4 -0
  574. package/package.json +3 -3
  575. package/dist/cjs/code-render-0e9837c4.js.map +0 -1
  576. package/dist/cjs/form-validation-ffe2b957.js.map +0 -1
  577. package/dist/cjs/helpers-e5a13fa5.js.map +0 -1
  578. package/dist/cjs/locale-36b93b1b.js.map +0 -1
  579. package/dist/esm/code-render-f3afd300.js.map +0 -1
  580. package/dist/esm/form-validation-71dca8c6.js.map +0 -1
  581. package/dist/esm/helpers-5f1c9a32.js.map +0 -1
  582. package/dist/esm/locale-643afe17.js.map +0 -1
  583. package/dist/genexus-ide-ui/p-032b4a81.entry.js.map +0 -1
  584. package/dist/genexus-ide-ui/p-0d83a34d.entry.js.map +0 -1
  585. package/dist/genexus-ide-ui/p-0e53f1ef.entry.js.map +0 -1
  586. package/dist/genexus-ide-ui/p-11dccb8f.entry.js.map +0 -1
  587. package/dist/genexus-ide-ui/p-29575656.entry.js.map +0 -1
  588. package/dist/genexus-ide-ui/p-2dbf722d.entry.js.map +0 -1
  589. package/dist/genexus-ide-ui/p-2e90a13a.entry.js.map +0 -1
  590. package/dist/genexus-ide-ui/p-353810b8.entry.js.map +0 -1
  591. package/dist/genexus-ide-ui/p-45d2fa91.entry.js.map +0 -1
  592. package/dist/genexus-ide-ui/p-501c7b1f.entry.js.map +0 -1
  593. package/dist/genexus-ide-ui/p-50eaa96d.entry.js.map +0 -1
  594. package/dist/genexus-ide-ui/p-51601b85.js +0 -145
  595. package/dist/genexus-ide-ui/p-51601b85.js.map +0 -1
  596. package/dist/genexus-ide-ui/p-5a42428d.entry.js.map +0 -1
  597. package/dist/genexus-ide-ui/p-5da3e999.entry.js.map +0 -1
  598. package/dist/genexus-ide-ui/p-5e05f830.entry.js.map +0 -1
  599. package/dist/genexus-ide-ui/p-6168d48c.entry.js.map +0 -1
  600. package/dist/genexus-ide-ui/p-66d9269a.entry.js.map +0 -1
  601. package/dist/genexus-ide-ui/p-6dc05a27.entry.js.map +0 -1
  602. package/dist/genexus-ide-ui/p-75e1aa31.entry.js.map +0 -1
  603. package/dist/genexus-ide-ui/p-7782e1b8.entry.js.map +0 -1
  604. package/dist/genexus-ide-ui/p-7cedb0f0.entry.js.map +0 -1
  605. package/dist/genexus-ide-ui/p-857866f8.js.map +0 -1
  606. package/dist/genexus-ide-ui/p-8b046b4b.entry.js.map +0 -1
  607. package/dist/genexus-ide-ui/p-8f1f4126.entry.js.map +0 -1
  608. package/dist/genexus-ide-ui/p-9b238bf7.entry.js.map +0 -1
  609. package/dist/genexus-ide-ui/p-9c690c36.entry.js.map +0 -1
  610. package/dist/genexus-ide-ui/p-a6029d9a.entry.js.map +0 -1
  611. package/dist/genexus-ide-ui/p-a86a8692.entry.js.map +0 -1
  612. package/dist/genexus-ide-ui/p-a8cc41e4.entry.js.map +0 -1
  613. package/dist/genexus-ide-ui/p-ac0438d6.entry.js.map +0 -1
  614. package/dist/genexus-ide-ui/p-b1833747.entry.js.map +0 -1
  615. package/dist/genexus-ide-ui/p-be794132.entry.js.map +0 -1
  616. package/dist/genexus-ide-ui/p-bfd9066c.entry.js.map +0 -1
  617. package/dist/genexus-ide-ui/p-c30b2104.entry.js.map +0 -1
  618. package/dist/genexus-ide-ui/p-c5cca204.entry.js.map +0 -1
  619. package/dist/genexus-ide-ui/p-d1cc4724.entry.js.map +0 -1
  620. package/dist/genexus-ide-ui/p-daa29451.entry.js.map +0 -1
  621. package/dist/genexus-ide-ui/p-db4750ff.entry.js.map +0 -1
  622. package/dist/genexus-ide-ui/p-db4f756a.entry.js.map +0 -1
  623. package/dist/genexus-ide-ui/p-e26e05c7.entry.js.map +0 -1
  624. package/dist/genexus-ide-ui/p-e5571f49.entry.js.map +0 -1
  625. package/dist/genexus-ide-ui/p-ec01c70c.entry.js.map +0 -1
  626. package/dist/genexus-ide-ui/p-f5a48b33.entry.js.map +0 -1
  627. package/dist/genexus-ide-ui/p-f6ceb01a.entry.js.map +0 -1
  628. /package/dist/genexus-ide-ui/{p-f52bcdac.entry.js.map → p-0550fd5f.entry.js.map} +0 -0
  629. /package/dist/genexus-ide-ui/{p-2be58a7a.entry.js.map → p-14165308.entry.js.map} +0 -0
  630. /package/dist/genexus-ide-ui/{p-9a39e49c.entry.js.map → p-35f9ebbc.entry.js.map} +0 -0
  631. /package/dist/genexus-ide-ui/{p-4d929210.entry.js.map → p-4b38fffc.entry.js.map} +0 -0
  632. /package/dist/genexus-ide-ui/{p-b211bca8.entry.js.map → p-6b957e82.entry.js.map} +0 -0
  633. /package/dist/genexus-ide-ui/{p-f315c6e0.entry.js.map → p-aab809c4.entry.js.map} +0 -0
  634. /package/dist/genexus-ide-ui/{p-95f831a8.entry.js.map → p-b2928645.entry.js.map} +0 -0
  635. /package/dist/genexus-ide-ui/{p-39c527ff.entry.js.map → p-b58fb87b.entry.js.map} +0 -0
  636. /package/dist/genexus-ide-ui/{p-e37e95e7.entry.js.map → p-d2107cb2.entry.js.map} +0 -0
  637. /package/dist/genexus-ide-ui/{p-02fc47cd.entry.js.map → p-d8379699.entry.js.map} +0 -0
  638. /package/dist/genexus-ide-ui/{p-cdf8b082.entry.js.map → p-da473001.entry.js.map} +0 -0
  639. /package/dist/genexus-ide-ui/{p-9a9ee1ee.entry.js.map → p-e24902a0.entry.js.map} +0 -0
  640. /package/dist/genexus-ide-ui/{p-f2bd9044.entry.js.map → p-e7fb3ee3.entry.js.map} +0 -0
  641. /package/dist/genexus-ide-ui/{p-eb51429c.entry.js.map → p-ec0809a7.entry.js.map} +0 -0
  642. /package/dist/genexus-ide-ui/{p-460db3ff.entry.js.map → p-ecba870e.entry.js.map} +0 -0
  643. /package/dist/genexus-ide-ui/{p-8636a0bd.entry.js.map → p-f722955f.entry.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["taskDocumentsToActionListItemModel","objects","selectedDocument","actionListDocuments","forEach","object","index","itemId","name","itemValue","push","id","caption","selected","type","convertSuggestedDocumentsToSuggestItems","suggestedDocuments","suggestItems","length","suggestedDocument","suggestItem","value","taskDocumentsCss","CHECKED_VALUE","CSS_BUNDLES","MODULE_ICON","getIconPath","category","MORE_ICON","colorType","DELETE_ICON","NODENAME","GxIdeBpmTaskDocuments","_GxIdeBpmTaskDocuments__componentLocale","set","this","_GxIdeBpmTaskDocuments_renderedFirstTime","_GxIdeBpmTaskDocuments_shortcutsSrc","getAssetPath","_GxIdeBpmTaskDocuments_chShortcutsEl","_GxIdeBpmTaskDocuments_deleteEnabledCheckboxEl","_GxIdeBpmTaskDocuments_deleteRequiredCheckboxEl","_GxIdeBpmTaskDocuments_newEnabledCheckboxEl","_GxIdeBpmTaskDocuments_newRequiredCheckboxEl","_GxIdeBpmTaskDocuments_readEnabledCheckboxEl","_GxIdeBpmTaskDocuments_readRequiredCheckboxEl","_GxIdeBpmTaskDocuments_updateEnabledCheckboxEl","_GxIdeBpmTaskDocuments_updateRequiredCheckboxEl","_GxIdeBpmTaskDocuments_cancelCallbackHandler","cancelCallback","_GxIdeBpmTaskDocuments_confirmCallbackHandler","confirmCallback","documents","_GxIdeBpmTaskDocuments_documentSuggestValueChangedHandler","async","e","detail","suggestDocumentsCallback","then","result","catch","_GxIdeBpmTaskDocuments_handleDeleteButton","filter","doc","__classPrivateFieldGet","_GxIdeBpmTaskDocuments_refreshDocumentsActionListState","call","_GxIdeBpmTaskDocuments_listenDocumentSelected","_GxIdeBpmTaskDocuments_instances","_GxIdeBpmTaskDocuments_addDocument","_GxIdeBpmTaskDocuments_objectSelectionChangedHandler","find","item","sort","a","b","localeCompare","documentsActionListState","_GxIdeBpmTaskDocuments_selectDocumentCallbackHandler","callbackResult","selectDocumentCallback","documentName","_GxIdeBpmTaskDocuments_renderActions","h","class","rowSelectionMode","keyboardNavigationMode","columnResizeMode","columnId","columnName","settingable","actions","enabledCheckbox","requiredCheckbox","rowid","readLabel","checkedValue","readEnabled","toString","ref","el","__classPrivateFieldSet","readRequired","newLabel","newEnabled","newRequired","updateLabel","updateEnabled","updateRequired","deleteLabel","deleteEnabled","deleteRequired","_GxIdeBpmTaskDocuments_renderEmptyState","stateIconSrc","isAnimated","stateTitle","emptyRightPanelInfo","title","onClick","buttonCaption","_GxIdeBpmTaskDocuments_renderFooter","part","footer","cancelButton","confirmButton","_GxIdeBpmTaskDocuments_renderMain","selection","model","onSelectedItemsChange","componentWillLoad","Locale","getComponentStrings","componentDidRender","componentDidRenderFirstTime","emit","componentName","shadowRoot","checkboxes","_GxIdeBpmTaskDocuments_getAllCheckboxes","checkbox","addEventListener","_GxIdeBpmTaskDocuments_handleCheckboxChange","bind","suspendShortcuts","suspend","render","Host","src","placeholder","suggestPlaceholder","suggest","onInput","onChange","suggestOptions","alreadyProcessed","autoExpand","hideMatchesAndShowNonMatches","highlightMatchedItems","matchCase","regularExpression","strict","addDocumentButtonLabel","clearDocumentButtonLabel","node","childNodes","child","nodeName","HTMLElement","documentExists","some","data","map"],"sources":["src/components/bpm/task-documents/helpers.ts","src/components/bpm/task-documents/task-documents.scss?tag=gx-ide-bpm-task-documents&encapsulation=shadow","src/components/bpm/task-documents/task-documents.tsx"],"sourcesContent":["import { TaskDocumentData } from \"./task-documents\";\nimport { ActionListItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/action-list/types\";\nimport { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\n\nexport const taskDocumentsToActionListItemModel = (\n objects: TaskDocumentData[],\n selectedDocument?: TaskDocumentData\n): ActionListItemModel[] => {\n const actionListDocuments: ActionListItemModel[] = [];\n objects?.forEach((object, index) => {\n const itemId = `task-${object.name}`;\n const itemValue = object.name;\n actionListDocuments.push({\n id: itemId,\n caption: itemValue,\n selected: selectedDocument\n ? selectedDocument.name === object.name\n : index === 0,\n type: \"actionable\"\n });\n });\n return actionListDocuments;\n};\n\n/* References Types*/\n\n/**\n * @description This function converts string[] to ComboBoxItemModel[]\n */\nexport const convertSuggestedDocumentsToSuggestItems = (\n suggestedDocuments: string[]\n): ComboBoxItemModel[] => {\n const suggestItems: ComboBoxItemModel[] = [];\n if (suggestedDocuments.length) {\n suggestedDocuments.forEach((suggestedDocument: string) => {\n const suggestItem: ComboBoxItemModel = {\n value: suggestedDocument,\n caption: suggestedDocument\n };\n suggestItems.push(suggestItem);\n });\n }\n return suggestItems;\n};\n",":host {\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: 1fr max-content;\n block-size: 100%;\n overflow: auto;\n}\n.section {\n display: contents;\n}\n.main {\n display: grid;\n grid-template-rows: max-content 1fr max-content;\n block-size: 100%;\n overflow: auto;\n}\n\n.documents__header {\n grid-template-columns: 1fr max-content;\n}\n.documents__suggest {\n flex: 1;\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n State,\n getAssetPath,\n Method\n} from \"@stencil/core\";\nimport { Locale } from \"../../../common/locale\";\nimport {\n convertSuggestedDocumentsToSuggestItems,\n taskDocumentsToActionListItemModel\n} from \"./helpers\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport { ActionListItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/action-list/types\";\nimport { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\nimport { ChComboBoxRenderCustomEvent } from \"@genexus/chameleon-controls-library\";\n\nconst CHECKED_VALUE = \"true\";\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/list-box\",\n \"components/tabular-grid\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\nconst MODULE_ICON = getIconPath({\n category: \"objects\",\n name: \"module\"\n});\nconst MORE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"show-more-horizontal\",\n colorType: \"primary\"\n});\nconst DELETE_ICON = getIconPath({\n category: \"menus\",\n name: \"delete\",\n colorType: \"primary\"\n});\n\nconst NODENAME = \"CH-CHECKBOX\";\n@Component({\n tag: \"gx-ide-bpm-task-documents\",\n styleUrl: \"task-documents.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/bpm-task-documents\"]\n})\nexport class GxIdeBpmTaskDocuments {\n #_componentLocale: any;\n #renderedFirstTime = false;\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/bpm-task-documents/shortcuts.json`\n );\n\n @Element() el: HTMLGxIdeBpmTaskDocumentsElement;\n\n #chShortcutsEl: HTMLChShortcutsElement;\n #deleteEnabledCheckboxEl: HTMLChCheckboxElement;\n #deleteRequiredCheckboxEl: HTMLChCheckboxElement;\n\n #newEnabledCheckboxEl: HTMLChCheckboxElement;\n #newRequiredCheckboxEl: HTMLChCheckboxElement;\n #readEnabledCheckboxEl: HTMLChCheckboxElement;\n #readRequiredCheckboxEl: HTMLChCheckboxElement;\n #updateEnabledCheckboxEl: HTMLChCheckboxElement;\n #updateRequiredCheckboxEl: HTMLChCheckboxElement;\n\n /**\n * Documents state for the action list\n */\n @State() documentsActionListState: ActionListItemModel[] = [];\n\n @State() documentName: string = null;\n\n /**\n * Document selected in the action list\n */\n @State() selectedDocument: TaskDocumentData = null;\n\n /**\n * Possible suggestions for the documents\n */\n @State() suggestedDocuments: ComboBoxItemModel[];\n\n /**\n * @property documents\n * @description The current value of the documents for the task\n */\n\n @Prop({ mutable: true }) documents: TaskDocumentData[];\n\n /**\n * @property cancelCallback\n * @description Callback invoked when the user cancels the application declaration (Cancel button)\n */\n @Prop() readonly cancelCallback: CancelCallback;\n\n /**\n * @property confirmCallback\n * @description Callback invoked when the user confirms the application declaration (Ok button)\n */\n @Prop() readonly confirmCallback: ConfirmCallback;\n\n /**\n * @property selectDocumentCallback\n * @description Callback invoked when the user presses the '...' button to access the WorkflowDocuments selection dialog. Returns the name of the document to be inserted in the input or 'undefined' if it was canceled.\n */\n @Prop() readonly selectDocumentCallback: SelectDocumentCallback;\n\n /**\n * @property suggestDocumentsCallback\n * @description Callback that must be called to obtain options for the document input.\n */\n @Prop() readonly suggestDocumentsCallback: SuggestDocumentsCallback;\n\n /**\n * @description Gets fired when the component has rendered for the first time.\n */\n @Event() componentDidRenderFirstTime: EventEmitter<string>;\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.#refreshDocumentsActionListState();\n }\n\n componentDidRender() {\n if (!this.#renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this.#_componentLocale.componentName\n );\n this.#renderedFirstTime = true;\n }\n const shadowRoot = this.el.shadowRoot;\n const checkboxes = this.#getAllCheckboxes(\n shadowRoot as unknown as HTMLElement\n );\n if (checkboxes) {\n checkboxes.forEach(checkbox => {\n checkbox.addEventListener(\n \"input\",\n this.#handleCheckboxChange.bind(this)\n );\n });\n }\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.#chShortcutsEl.suspend = true;\n } else {\n this.#chShortcutsEl.suspend = false;\n }\n }\n\n #getAllCheckboxes(node: HTMLElement): HTMLChCheckboxElement[] {\n const checkboxes: HTMLChCheckboxElement[] = [];\n\n node.childNodes.forEach(child => {\n if (child.nodeName === NODENAME) {\n checkboxes.push(child as HTMLChCheckboxElement);\n } else if (child instanceof HTMLElement) {\n checkboxes.push(...this.#getAllCheckboxes(child));\n }\n });\n\n return checkboxes;\n }\n #addDocument(documentName: string) {\n const documentExists = this.documents.some(\n doc => doc.name === documentName\n );\n if (!documentExists) {\n this.documents = [\n ...this.documents,\n {\n name: documentName,\n deleteEnabled: false,\n deleteRequired: false,\n newEnabled: false,\n newRequired: false,\n readEnabled: false,\n readRequired: false,\n updateEnabled: false,\n updateRequired: false\n }\n ];\n this.#refreshDocumentsActionListState();\n }\n }\n\n #cancelCallbackHandler = () => {\n this.cancelCallback();\n };\n #confirmCallbackHandler = () => {\n this.confirmCallback(this.documents);\n };\n\n #documentSuggestValueChangedHandler = async (\n e: ChComboBoxRenderCustomEvent<string> & InputEvent\n ) => {\n const value = e.detail;\n this.suggestDocumentsCallback(value)\n .then(result => {\n this.suggestedDocuments =\n convertSuggestedDocumentsToSuggestItems(result);\n })\n .catch(() => {\n // to do\n });\n };\n\n #handleCheckboxChange() {\n const data: TaskDocumentData = {\n name: this.selectedDocument.name,\n readEnabled: this.#readEnabledCheckboxEl.value === CHECKED_VALUE,\n readRequired: this.#readRequiredCheckboxEl.value === CHECKED_VALUE,\n newEnabled: this.#newEnabledCheckboxEl.value === CHECKED_VALUE,\n newRequired: this.#newRequiredCheckboxEl.value === CHECKED_VALUE,\n updateEnabled: this.#updateEnabledCheckboxEl.value === CHECKED_VALUE,\n updateRequired: this.#updateRequiredCheckboxEl.value === CHECKED_VALUE,\n deleteEnabled: this.#deleteEnabledCheckboxEl.value === CHECKED_VALUE,\n deleteRequired: this.#deleteRequiredCheckboxEl.value === CHECKED_VALUE\n };\n\n this.selectedDocument = data;\n\n this.documents = this.documents.map(doc =>\n doc.name === this.selectedDocument.name ? this.selectedDocument : doc\n );\n }\n\n #handleDeleteButton = () => {\n this.documents = this.documents.filter(\n doc => doc.name !== this.selectedDocument.name\n );\n this.selectedDocument = null;\n this.#refreshDocumentsActionListState();\n };\n\n #listenDocumentSelected = async (e: CustomEvent<string>) => {\n if (e.detail) {\n this.#addDocument(e.detail);\n }\n };\n\n #objectSelectionChangedHandler = (e: CustomEvent) => {\n this.selectedDocument = this.documents.find(\n doc => doc.name === e.detail[0]?.item.caption\n );\n };\n\n #refreshDocumentsActionListState = () => {\n this.documents?.sort((a, b) => {\n return a.name.localeCompare(b.name);\n });\n this.documentsActionListState = taskDocumentsToActionListItemModel(\n this.documents,\n this.selectedDocument\n );\n\n this.selectedDocument =\n this.selectedDocument || this.documents?.[0] || null;\n };\n\n #selectDocumentCallbackHandler = async () => {\n const callbackResult = await this.selectDocumentCallback();\n if (callbackResult) {\n this.documentName = callbackResult;\n this.#addDocument(callbackResult);\n }\n };\n\n #renderActions = () => {\n return (\n <ch-tabular-grid\n class=\"tabular-grid scrollable\"\n rowSelectionMode=\"none\"\n keyboardNavigationMode=\"focus\"\n columnResizeMode=\"single\"\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"code\"\n columnName=\"\"\n settingable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"enabled\"\n settingable={false}\n columnName={this.#_componentLocale.actions.enabledCheckbox}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"required\"\n settingable={false}\n columnName={this.#_componentLocale.actions.requiredCheckbox}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n\n <ch-tabular-grid-row\n // read\n class=\"tabular-grid-row\"\n rowid=\"read\"\n >\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#_componentLocale.actions.readLabel}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-checkbox\n class=\"checkbox\"\n checkedValue={CHECKED_VALUE}\n value={this.selectedDocument?.readEnabled.toString()}\n ref={el =>\n (this.#readEnabledCheckboxEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-checkbox\n class=\"checkbox\"\n checkedValue={CHECKED_VALUE}\n value={this.selectedDocument?.readRequired.toString()}\n ref={el =>\n (this.#readRequiredCheckboxEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n\n <ch-tabular-grid-row\n // new\n class=\"tabular-grid-row\"\n rowid=\"read\"\n >\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#_componentLocale.actions.newLabel}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-checkbox\n class=\"checkbox\"\n checkedValue={CHECKED_VALUE}\n value={this.selectedDocument?.newEnabled.toString()}\n ref={el =>\n (this.#newEnabledCheckboxEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-checkbox\n class=\"checkbox\"\n checkedValue={CHECKED_VALUE}\n value={this.selectedDocument?.newRequired.toString()}\n ref={el =>\n (this.#newRequiredCheckboxEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n\n <ch-tabular-grid-row\n // update\n class=\"tabular-grid-row\"\n rowid=\"read\"\n >\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#_componentLocale.actions.updateLabel}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-checkbox\n class=\"checkbox\"\n checkedValue={CHECKED_VALUE}\n value={this.selectedDocument?.updateEnabled.toString()}\n ref={el =>\n (this.#updateEnabledCheckboxEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-checkbox\n class=\"checkbox\"\n checkedValue={CHECKED_VALUE}\n value={this.selectedDocument?.updateRequired.toString()}\n ref={el =>\n (this.#updateRequiredCheckboxEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n\n <ch-tabular-grid-row\n // delete\n class=\"tabular-grid-row\"\n rowid=\"read\"\n >\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#_componentLocale.actions.deleteLabel}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-checkbox\n class=\"checkbox\"\n checkedValue={CHECKED_VALUE}\n value={this.selectedDocument?.deleteEnabled.toString()}\n ref={el =>\n (this.#deleteEnabledCheckboxEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-checkbox\n class=\"checkbox\"\n checkedValue={CHECKED_VALUE}\n value={this.selectedDocument?.deleteRequired.toString()}\n ref={el =>\n (this.#deleteRequiredCheckboxEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n </ch-tabular-grid>\n );\n };\n\n #renderEmptyState = () => {\n return (\n <gx-ide-empty-state\n class=\"recent-objects__empty-state\"\n stateIconSrc={MODULE_ICON}\n isAnimated={this.#renderedFirstTime}\n stateTitle={this.#_componentLocale.emptyRightPanelInfo.title}\n >\n <button\n class=\"button-secondary\"\n onClick={this.#selectDocumentCallbackHandler}\n >\n {this.#_componentLocale.emptyRightPanelInfo.buttonCaption}\n </button>\n </gx-ide-empty-state>\n );\n };\n\n #renderFooter = () => {\n return (\n <footer class=\"footer control-footer control-footer-with-border spacing-body-block-end spacing-body-inline\">\n <div class=\"buttons-spacer\">\n <button\n class=\"button-secondary\"\n id=\"button-cancel\"\n onClick={this.#cancelCallbackHandler}\n part=\"button-cancel\"\n >\n {this.#_componentLocale.footer.cancelButton}\n </button>\n <button\n class=\"button-primary\"\n id=\"button-create\"\n onClick={this.#confirmCallbackHandler}\n part=\"button-create\"\n >\n {this.#_componentLocale.footer.confirmButton}\n </button>\n </div>\n </footer>\n );\n };\n\n #renderMain = () => {\n return [\n <div class=\"documents__list spacing-body-inline\">\n <ch-action-list-render\n selection=\"single\"\n class=\"list-box\"\n model={this.documentsActionListState}\n onSelectedItemsChange={this.#objectSelectionChangedHandler}\n ></ch-action-list-render>\n </div>,\n this.#renderActions()\n ];\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n <section class=\"section\">\n <div class=\"main field-group\">\n <div class=\"documents__header buttons-spacer spacing-body-inline spacing-body-block-start\">\n <ch-combo-box-render\n class=\"combo-box documents__suggest\"\n model={this.suggestedDocuments}\n placeholder={\n this.#_componentLocale.documents.suggestPlaceholder\n }\n suggest={true}\n onInput={this.#documentSuggestValueChangedHandler}\n onChange={this.#listenDocumentSelected}\n suggestOptions={{\n alreadyProcessed: false,\n autoExpand: true,\n hideMatchesAndShowNonMatches: false,\n highlightMatchedItems: false,\n matchCase: false,\n regularExpression: false,\n strict: false\n }}\n ></ch-combo-box-render>\n\n <span>\n <button\n class=\"button-tertiary button-icon-only\"\n aria-label={\n this.#_componentLocale.documents.addDocumentButtonLabel\n }\n title={\n this.#_componentLocale.documents.addDocumentButtonLabel\n }\n onClick={this.#selectDocumentCallbackHandler}\n >\n <ch-image class=\"icon-sm\" src={MORE_ICON}></ch-image>\n </button>\n\n <button\n class=\"button-tertiary button-icon-only\"\n aria-label={\n this.#_componentLocale.documents.clearDocumentButtonLabel\n }\n title={\n this.#_componentLocale.documents.clearDocumentButtonLabel\n }\n onClick={this.#handleDeleteButton}\n >\n <ch-image class=\"icon-sm\" src={DELETE_ICON}></ch-image>\n </button>\n </span>\n </div>\n\n {this.documentsActionListState.length\n ? this.#renderMain()\n : this.#renderEmptyState()}\n </div>\n {this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n\nexport type TaskDocumentData = {\n name: string;\n readEnabled: boolean;\n readRequired: boolean;\n newEnabled: boolean;\n newRequired: boolean;\n updateEnabled: boolean;\n updateRequired: boolean;\n deleteEnabled: boolean;\n deleteRequired: boolean;\n};\n\nexport type SuggestDocumentsCallback = (\n documentName: string\n) => Promise<string[] | undefined>;\nexport type SelectDocumentCallback = () => Promise<string | undefined>;\nexport type ConfirmCallback = (data: TaskDocumentData[]) => Promise<void>;\nexport type CancelCallback = () => Promise<void>;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["KB_OBJECT","KB_CATEGORY","STATUS_REGEXP_KEY","convertImportCategoryItemToTreeItem","importCatIcon","importItems","importTreeItems","forEach","importItem","push","id","caption","name","expanded","leaf","startImgSrc","metadata","convertImportCategoryDataToTreeView","importCategoryData","treeData","importCategory","importCategoryTreeItem","items","length","icon","createImportResultDataMessages","importItemId","messagesArray","status","messages","message","i","JSON","stringify","createImportResultItem","categoryData","importItemResultData","resultItemId","importResultItem","parts","addImportItemResultDataItem","categoryItemMap","objectCategoryItemMap","importTreeActualState","updatedImportTreeModel","objectCategoryId","get","categoryIndex","findIndex","treeItem","category","resultItem","newItemsLength","kbManagerImportCss","CSS_BUNDLES","NOTICE_ICON","getIconPath","colorType","FILE_ICON","GEMINI_TOOLS_SETTINGS","MENU_DELETE","CHECKBOX_ALL_CHECKED_VALUE","CHECKBOX_ALL_UNCHECKED_VALUE","GxIdeKbManagerImport","_GxIdeKbManagerImport_componentLocale","set","this","_GxIdeKbManagerImport_selectedObjectsInFileIds","_GxIdeKbManagerImport_fileInputEl","_GxIdeKbManagerImport_fileInputHiddenEl","_GxIdeKbManagerImport_objectsTreeEl","_GxIdeKbManagerImport_successItemsIds","Set","_GxIdeKbManagerImport_warningItemsIds","_GxIdeKbManagerImport_errorItemsIds","_GxIdeKbManagerImport_categoryItemMap","Map","_GxIdeKbManagerImport_objectCategoryItemMap","_GxIdeKbManagerImport_cancelImportHandler","cancelCallback","_GxIdeKbManagerImport_clearStatusHandler","importTreeState","statusInfo","error","number","warning","success","_GxIdeKbManagerImport_evaluateImport","noImport","_GxIdeKbManagerImport_evaluateImportStatusMessage","someStatusVisible","display","_GxIdeKbManagerImport_importObjectsHandler","async","__classPrivateFieldGet","call","importingIsInProcess","importCallback","checkedObjectsIds","then","_GxIdeKbManagerImport_loadFileHandler","file","importedCategoryData","loadCallback","clear","object","importCategoryTreeData","objectsTreeModel","_GxIdeKbManagerImport_objectsTreeCheckedItemsChangedHandler","event","allItems","detail","checkedItemIds","item","checked","size","selectAllCheckboxValue","selectAllCheckboxIndeterminate","_GxIdeKbManagerImport_objectsTreeContextMenuHandler","objectContextMenuCallback","selection","clientX","contextmenuEvent","screenX","clientY","screenY","_GxIdeKbManagerImport_objectsTreeSelectedItemsChangedHandler","__classPrivateFieldSet","map","_GxIdeKbManagerImport_optionsHandler","optionsCallback","_GxIdeKbManagerImport_removeFileSelection","selectedFile","value","_GxIdeKbManagerImport_selectFileInputHandler","click","_GxIdeKbManagerImport_selectFileInputChangedHandler","target","files","_GxIdeKbManagerImport_statusButtonsSelectionChangedHandler","activeStates","statuses","errorIndex","state","itemId","warningIndex","successIndex","pattern","statusOptions","join","importedTreeFilterRegExp","RegExp","_GxIdeKbManagerImport_toggleSelectionClickHandler","updateAllItemsProperties","_GxIdeKbManagerImport_updateStatusItemsState","child","add","importTreeStateChanged","watchImportTreeStateHandler","importStatusMessage","main","importStatus","noImportedFiles","importedButHidden","watchObjectsTreeModelHandler","newState","noObjects","selectedFileChanged","newFile","componentDidLoad","focus","componentDidRender","componentWillLoad","Locale","getComponentStrings","el","componentDidLoadEvent","emit","addResultItem","render","h","Host","class","model","slot","htmlFor","header","fileNameLabel","autoFocus","part","type","readonly","placeholder","fileNamePlaceholder","ref","hidden","accept","onChange","removeFileSelection","title","onClick","src","disabled","selectFileButton","objectsInFile","showLines","dragDisabled","dropDisabled","toggleCheckboxes","checkbox","onCheckedItemsChange","onSelectedItemsChange","onItemContextmenu","isAnimated","stateTitle","key","selectFile","checkedValue","unCheckedValue","selectUnselect","onInput","importButton","cancelButton","filter","filterType","filterOptions","autoExpand","hideMatchesAndShowNonMatches","stateIconSrc","clearButton","errors","warnings","successes","hideMessage","compact","minimal","statusMinimal","onSelectionChanged"],"sources":["src/components/kb-manager-import/helpers.ts","src/components/kb-manager-import/kb-manager-import.scss?tag=gx-ide-kb-manager-import&encapsulation=shadow","src/components/kb-manager-import/kb-manager-import.tsx"],"sourcesContent":["/* Tree View */\nimport {\n TreeViewItemModel,\n TreeViewModel\n} from \"@genexus/chameleon-controls-library\";\n\n/* Kb Manager Import Types*/\nimport {\n ImportItemData,\n CategoryItemMap,\n CategoryItemMapValue,\n ObjectCategoryItemMap,\n Status\n} from \"./kb-manager-import\";\nimport { ImportCategoryData, ImportItemResultData } from \"../../common/types\";\n\n/* objects in file metadata*/\nexport const KB_OBJECT = \"object\";\nexport const KB_CATEGORY = \"category\";\n\nexport const STATUS_REGEXP_KEY = \"status\";\n\n// - - - - - - - - - - - - - - - - -\n// Objects In File Tree Model\n// - - - - - - - - - - - - - - - - -\n\nconst convertImportCategoryItemToTreeItem = (\n importCatIcon: string,\n importItems: ImportItemData[]\n) => {\n const importTreeItems: TreeViewItemModel[] = [];\n importItems.forEach(importItem => {\n importTreeItems.push({\n id: importItem.id,\n caption: importItem.name,\n expanded: true,\n leaf: true,\n startImgSrc: importCatIcon,\n metadata: KB_OBJECT\n });\n });\n return importTreeItems;\n};\n\nexport const convertImportCategoryDataToTreeView = (\n importCategoryData: ImportCategoryData[]\n): TreeViewModel => {\n const treeData: TreeViewModel = [];\n if (!importCategoryData) {\n return treeData;\n }\n importCategoryData.forEach(importCategory => {\n const importCategoryTreeItem: TreeViewItemModel = {\n id: importCategory.id,\n caption: `${importCategory.name} (${importCategory.items.length})`,\n expanded: true,\n leaf: false,\n startImgSrc: importCategory.icon,\n metadata: KB_CATEGORY,\n items: convertImportCategoryItemToTreeItem(\n importCategory.icon,\n importCategory.items\n )\n };\n treeData.push(importCategoryTreeItem);\n });\n return treeData;\n};\n\n// - - - - - - - - - - - - - - - - -\n// Import Status Tree Model\n// - - - - - - - - - - - - - - - - -\n\nconst createImportResultDataMessages = (\n importItemId: string,\n messagesArray: string[],\n status: Status\n): TreeViewItemModel[] => {\n const messages: TreeViewItemModel[] = [];\n messagesArray.forEach((message, i) => {\n messages.push({\n id: `${importItemId}-message-${i}`,\n caption: message,\n startImgSrc: \"gemini-tools/list-view/on-surface\",\n leaf: true,\n metadata: JSON.stringify({\n [STATUS_REGEXP_KEY]: status\n })\n });\n });\n return messages;\n};\n\nconst createImportResultItem = (\n categoryData: CategoryItemMapValue,\n importItemResultData: ImportItemResultData\n): TreeViewItemModel => {\n const resultItemId = `${importItemResultData.id}-${importItemResultData.name}`;\n const importResultItem: TreeViewItemModel = {\n id: resultItemId,\n startImgSrc: categoryData.icon,\n caption: importItemResultData.name,\n parts: `tree-view-item tree-view-item--status tree-view-item--${importItemResultData.status}`,\n expanded: true,\n leaf: importItemResultData.messages.length === 0,\n metadata: JSON.stringify({\n [STATUS_REGEXP_KEY]: importItemResultData.status\n }),\n items: createImportResultDataMessages(\n resultItemId,\n importItemResultData.messages,\n importItemResultData.status\n )\n };\n return importResultItem;\n};\n\n// This functions updates the \"Import Status\" model, by adding a new result item.\nexport const addImportItemResultDataItem = (\n importItemResultData: ImportItemResultData,\n categoryItemMap: CategoryItemMap,\n objectCategoryItemMap: ObjectCategoryItemMap,\n importTreeActualState: TreeViewItemModel[]\n) => {\n const updatedImportTreeModel: TreeViewModel = [...importTreeActualState];\n\n // Use the resultItem.id to find the corresponding category in the categoryMap\n const objectCategoryId = objectCategoryItemMap.get(importItemResultData.id);\n const categoryData = categoryItemMap.get(objectCategoryId);\n\n const categoryIndex: number = updatedImportTreeModel.findIndex(\n treeItem => treeItem.id === objectCategoryId\n );\n\n if (categoryIndex === -1) {\n // category does not exists yet.\n const category: TreeViewItemModel = {\n id: objectCategoryId,\n caption: `${categoryData.name} (1)`,\n startImgSrc: `${categoryData.icon}`,\n expanded: true,\n items: [createImportResultItem(categoryData, importItemResultData)]\n };\n\n updatedImportTreeModel.push(category);\n return updatedImportTreeModel;\n }\n\n // else category already exists. Just insert the result item in the category.\n const resultItem: TreeViewItemModel = createImportResultItem(\n categoryData,\n importItemResultData\n );\n updatedImportTreeModel[categoryIndex].items = [\n ...updatedImportTreeModel[categoryIndex].items,\n resultItem\n ];\n\n // update category caption length\n const newItemsLength = updatedImportTreeModel[categoryIndex].items.length;\n updatedImportTreeModel[\n categoryIndex\n ].caption = `${categoryData.name} (${newItemsLength})`;\n\n return updatedImportTreeModel;\n};\n","@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n grid-template:\n \"header header\" max-content\n \"objects-in-file import-status\" 1fr\n \"footer footer\" max-content;\n grid-template-columns: 1fr 1fr;\n}\n\n.section {\n display: contents;\n}\n\n// header\n.header {\n grid-template-columns: 1fr max-content;\n grid-area: header;\n}\n\n// objects in file\n.objects-in-file__section {\n grid-area: objects-in-file;\n}\n.objects-in-file__main {\n border-inline-end: var(--section-common-border);\n grid-template-rows: 1fr max-content;\n}\n.objects-in-file__footer {\n display: grid;\n}\n\n// import status\n.import-status__section {\n grid-area: import-status;\n}\n.import-status__main {\n grid-template-rows: 1fr max-content;\n}\n.import-status__footer {\n display: flex;\n}\n.import-clear-status-btn {\n margin-inline-start: auto;\n}\n\n// objects in file & import status\n.objects-in-file__section,\n.import-status__section {\n display: grid;\n grid-template-rows: max-content 1fr;\n}\n.control-header__objects-in-file,\n.control-header__import-status {\n padding-block-start: var(--mer-spacing--md);\n}\n.objects-in-file__main,\n.import-status__main {\n grid-auto-rows: max-content;\n padding-block: var(--content-block-spacing);\n overflow: auto;\n}\n\n// footer\n.footer {\n display: flex;\n grid-area: footer;\n border-block-start: var(--section-common-border);\n}\n\n// WA / TODO: Add a helper class in Mercury to justify text.\n.text-align-center {\n text-align: center; // should be resolved on mercury\n}\n\n.tree-view::part(item__action tree-view-item--status) {\n grid-template: \"first-img left-img text right-img\" / max-content max-content 1fr max-content;\n &::before {\n grid-area: first-img;\n content: \"\";\n width: var(--mer-spacing--xs);\n height: var(--mer-spacing--xs);\n border-radius: 50%;\n background-color: var(--gray-03);\n margin-inline-end: var(--mer-spacing--xxs);\n }\n}\n\n.tree-view::part(item__action tree-view-item--success) {\n @include tree-item-status(\"success\");\n}\n.tree-view::part(item__action tree-view-item--warning) {\n @include tree-item-status(\"warning\");\n}\n.tree-view::part(item__action tree-view-item--error) {\n @include tree-item-status(\"error\");\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n h,\n Method,\n Prop,\n State,\n Watch\n} from \"@stencil/core\";\n\nimport {\n ChCheckboxCustomEvent,\n // ChEditCustomEvent,\n TreeViewItemContextMenu\n} from \"@genexus/chameleon-controls-library\";\nimport { TreeViewItemModel } from \"@genexus/chameleon-controls-library\";\nimport { TreeViewItemModelExtended } from \"@genexus/chameleon-controls-library\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\n\nimport {\n ImportCategoryData,\n ImportItemResultData,\n ContextMenuInfo\n} from \"../../common/types\";\nimport {\n convertImportCategoryDataToTreeView,\n addImportItemResultDataItem\n} from \"./helpers\";\nimport { CheckedItemsInfo } from \"../_helpers/list-selector/list-selector\";\n\nimport { KB_OBJECT, STATUS_REGEXP_KEY } from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/checkbox\",\n \"components/edit\",\n \"components/icon\",\n \"components/tree-view\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\"\n];\n\nconst NOTICE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"notice\",\n colorType: \"on-elevation\"\n});\n\nconst FILE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"file\",\n colorType: \"primary\"\n});\n\nconst GEMINI_TOOLS_SETTINGS = getIconPath({\n category: \"gemini-tools\",\n name: \"settings\",\n colorType: \"primary\"\n});\n\nconst MENU_DELETE = getIconPath({\n category: \"menus\",\n name: \"delete\",\n colorType: \"primary\"\n});\n\nconst CHECKBOX_ALL_CHECKED_VALUE = \"allChecked\";\nconst CHECKBOX_ALL_UNCHECKED_VALUE = \"allUnchecked\";\n\n@Component({\n tag: \"gx-ide-kb-manager-import\",\n styleUrl: \"kb-manager-import.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/kb-manager-import\"]\n})\nexport class GxIdeKbManagerImport {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n\n #selectedObjectsInFileIds: string[] = [];\n\n @Element() el: HTMLGxIdeKbManagerImportElement;\n\n #fileInputEl!: HTMLChEditElement;\n #fileInputHiddenEl!: HTMLInputElement;\n #objectsTreeEl!: HTMLChTreeViewRenderElement;\n #successItemsIds: Set<string> = new Set();\n #warningItemsIds: Set<string> = new Set();\n #errorItemsIds: Set<string> = new Set();\n // #categoryItemMap maps a category id, with the name and icon.\n // required for the \"import status\" tree.\n #categoryItemMap: CategoryItemMap = new Map();\n #objectCategoryItemMap: ObjectCategoryItemMap = new Map();\n\n @State() checkedObjectsIds: string[] = [];\n @State() selectAllCheckboxValue: string;\n @State() selectAllCheckboxIndeterminate: boolean = false;\n @State() importStatusMessage: string;\n @State() importTreeState: TreeViewItemModel[] = [];\n @State() importedTreeFilterRegExp: RegExp;\n @Watch(\"importTreeState\")\n importTreeStateChanged() {\n // this.#filterImportedHandler();\n }\n @State() importingIsInProcess = false;\n @State() importTreeFilterList: string[] = [];\n @State() noImport: boolean;\n @State() noObjects: boolean = true;\n @State() objectsTreeModel: TreeViewItemModel[] = [];\n @State() showHiddenImportsMessage = false;\n @State() someStatusVisible: boolean;\n @State() statusInfo: StatusInfo = {\n error: {\n display: true,\n number: 0\n },\n warning: {\n display: true,\n number: 0\n },\n success: {\n display: true,\n number: 0\n }\n };\n\n @Watch(\"importTreeState\")\n watchImportTreeStateHandler() {\n this.#evaluateImport();\n if (this.noImport) {\n this.importStatusMessage =\n this.#componentLocale.main.importStatus.noImportedFiles;\n } else {\n this.importStatusMessage =\n this.#componentLocale.main.importStatus.importedButHidden;\n }\n }\n @Watch(\"objectsTreeModel\")\n watchObjectsTreeModelHandler(newState: TreeViewItemModel[]) {\n this.noObjects = !newState || newState.length === 0;\n }\n\n /**\n * Callback invoked when user wants to cancel the export process.\n */\n @Prop() readonly cancelCallback!: CancelCallback;\n\n /**\n * Callback invoked when user wants to initiate the import process.\n */\n @Prop() readonly importCallback!: ImportCallback;\n\n /**\n * Callback invoked when user wants to load the xpz information\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n * Displays status buttons (errors, warning, succeeded) with minimal UI (no captions)\n */\n @Prop() readonly objectContextMenuCallback!: ObjectContextMenuCallback;\n\n /**\n * Callback invoked when user wants to access the export options.\n */\n @Prop() readonly optionsCallback!: OptionsCallback;\n\n /**\n * Imported xml or xps file name\n */\n @Prop({ mutable: true }) selectedFile: File;\n @Watch(\"selectedFile\")\n selectedFileChanged(newFile: File) {\n if (newFile) {\n this.#loadFileHandler(newFile);\n }\n }\n\n /**\n * Displays status buttons (error, warning, success) with minimal UI (no captions).\n */\n @Prop() readonly statusMinimal = false;\n\n /**\n * Emitted once just after the component is fully loaded.\n */\n @Event() componentDidLoadEvent: EventEmitter<boolean>;\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.#fileInputEl.focus();\n }\n\n componentDidRender() {}\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.componentDidLoadEvent.emit(true);\n // this.#evaluateObjects();\n this.#evaluateImport();\n this.importStatusMessage =\n this.#componentLocale.main.importStatus.noImportedFiles;\n this.#evaluateImportStatusMessage();\n }\n\n /**\n * Add the result of importing an item\n */\n @Method()\n async addResultItem(item: ImportItemResultData) {\n this.importTreeState = addImportItemResultDataItem(\n item,\n this.#categoryItemMap,\n this.#objectCategoryItemMap,\n this.importTreeState\n );\n this.statusInfo[item.status].number++;\n this.#updateStatusItemsState();\n }\n\n #cancelImportHandler = () => {\n this.cancelCallback();\n };\n\n #clearStatusHandler = () => {\n this.importTreeState = [];\n this.statusInfo.error.number = 0;\n this.statusInfo.warning.number = 0;\n this.statusInfo.success.number = 0;\n };\n\n #evaluateImport = () => {\n this.noImport = !!(\n this.importTreeState?.length === 0 || !this.importTreeState\n );\n };\n\n #evaluateImportStatusMessage = () => {\n this.someStatusVisible =\n this.statusInfo.error.display ||\n this.statusInfo.warning.display ||\n this.statusInfo.success.display;\n };\n\n #importObjectsHandler = async () => {\n /* first clear imported objects (this clears errors/warnings/success counts as well)*/\n this.#clearStatusHandler();\n /* then do the import*/\n this.importingIsInProcess = true;\n this.importCallback(this.checkedObjectsIds).then(() => {\n this.importingIsInProcess = false;\n });\n };\n\n #loadFileHandler = async (file: File) => {\n const importedCategoryData = await this.loadCallback(file);\n this.#categoryItemMap.clear();\n this.#objectCategoryItemMap.clear();\n\n importedCategoryData.forEach(category => {\n this.#categoryItemMap.set(category.id, {\n name: category.name,\n icon: category.icon\n });\n category.items.forEach(object => {\n this.#objectCategoryItemMap.set(object.id, category.id);\n });\n });\n\n const importCategoryTreeData =\n convertImportCategoryDataToTreeView(importedCategoryData);\n this.objectsTreeModel = importCategoryTreeData;\n };\n\n #objectsTreeCheckedItemsChangedHandler = (\n event: CustomEvent<Map<string, TreeViewItemModelExtended>>\n ) => {\n const allItems = event.detail;\n const checkedItemIds: string[] = [];\n const checkedObjectsIds: string[] = [];\n allItems.forEach(item => {\n if (item.item.checked) {\n checkedItemIds.push(item.item.id);\n }\n if (item.item.checked && item.item.metadata === KB_OBJECT) {\n checkedObjectsIds.push(item.item.id);\n }\n });\n this.checkedObjectsIds = checkedObjectsIds;\n\n // Evaluate \"Select All / Unselect All\" checkbox state\n if (allItems.size === checkedItemIds.length) {\n this.selectAllCheckboxValue = CHECKBOX_ALL_CHECKED_VALUE;\n this.selectAllCheckboxIndeterminate = false;\n } else if (checkedItemIds.length === 0) {\n this.selectAllCheckboxValue = CHECKBOX_ALL_UNCHECKED_VALUE;\n this.selectAllCheckboxIndeterminate = false;\n } else {\n this.selectAllCheckboxIndeterminate = true;\n }\n };\n\n #objectsTreeContextMenuHandler = (\n event: CustomEvent<TreeViewItemContextMenu>\n ) => {\n if (event.detail.metadata === KB_OBJECT) {\n this.objectContextMenuCallback(\"imported\", {\n selection: this.#selectedObjectsInFileIds,\n clientX: event.detail.contextmenuEvent.screenX,\n clientY: event.detail.contextmenuEvent.screenY\n });\n }\n };\n\n #objectsTreeSelectedItemsChangedHandler = (\n event: CustomEvent<TreeViewItemModelExtended[]>\n ) => {\n this.#selectedObjectsInFileIds = event.detail.map(item => item.item.id);\n };\n\n #optionsHandler = () => {\n if (this.optionsCallback) {\n this.optionsCallback();\n // returns boolean\n }\n };\n\n #removeFileSelection = () => {\n this.selectedFile = null;\n this.#fileInputHiddenEl.value = null;\n };\n\n #selectFileInputHandler = () => {\n this.#fileInputHiddenEl.click();\n };\n\n #selectFileInputChangedHandler = (event: InputEvent) => {\n const target = event.target as HTMLInputElement;\n if (target.files?.length > 0) {\n this.selectedFile = target.files[0];\n }\n };\n\n #statusButtonsSelectionChangedHandler = (\n event: CustomEvent<CheckedItemsInfo>\n ) => {\n const activeStates = event.detail;\n const statuses: Status[] = [];\n\n const errorIndex = activeStates.findIndex(\n state => state.itemId === \"errors\"\n );\n const warningIndex = activeStates.findIndex(\n state => state.itemId === \"warnings\"\n );\n const successIndex = activeStates.findIndex(\n state => state.itemId === \"successes\"\n );\n\n if (errorIndex !== -1) {\n statuses.push(\"error\");\n }\n if (warningIndex !== -1) {\n statuses.push(\"warning\");\n }\n if (successIndex !== -1) {\n statuses.push(\"success\");\n }\n\n let pattern = `\"${STATUS_REGEXP_KEY}\":\"\"`;\n if (statuses.length) {\n const statusOptions = statuses.join(\"|\");\n pattern = `\"${STATUS_REGEXP_KEY}\":\"(${statusOptions})\"`;\n }\n this.importedTreeFilterRegExp = new RegExp(pattern, \"i\");\n\n // Update statusInfo for the status-buttons\n this.statusInfo = {\n error: {\n display: errorIndex !== -1,\n number: this.statusInfo.error.number\n },\n warning: {\n display: warningIndex !== -1,\n number: this.statusInfo.warning.number\n },\n success: {\n display: successIndex !== -1,\n number: this.statusInfo.success.number\n }\n };\n\n this.#evaluateImportStatusMessage();\n };\n\n #toggleSelectionClickHandler = (\n event: ChCheckboxCustomEvent<any> | InputEvent\n ) => {\n if (this.#objectsTreeEl) {\n const checked = event.detail === CHECKBOX_ALL_CHECKED_VALUE;\n this.#objectsTreeEl.updateAllItemsProperties({ checked: checked });\n }\n };\n\n #updateStatusItemsState = () => {\n this.#errorItemsIds.clear();\n this.#warningItemsIds.clear();\n this.#successItemsIds.clear();\n this.importTreeState.forEach(item => {\n const items = item.items;\n items.forEach(child => {\n if (child.metadata === \"error\") {\n this.#errorItemsIds.add(child.id);\n }\n if (child.metadata === \"warning\") {\n this.#warningItemsIds.add(child.id);\n }\n if (child.metadata === \"success\") {\n this.#successItemsIds.add(child.id);\n }\n });\n });\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <section class=\"section\">\n <header\n // header\n class=\"field-group control-header-with-border header header-two-cols spacing-body-block-start spacing-body-inline\"\n slot=\"header\"\n >\n <div\n // select a file\n class=\"field field-inline\"\n >\n <label class=\"label\" htmlFor=\"file-name\">\n {this.#componentLocale.header.fileNameLabel}\n </label>\n <ch-edit\n autoFocus\n id=\"file-name\"\n class=\"input\"\n part=\"file-name\"\n type=\"text\"\n readonly\n value={this.selectedFile?.name}\n placeholder={this.#componentLocale.header.fileNamePlaceholder}\n startImgSrc={FILE_ICON}\n ref={(el: HTMLChEditElement) =>\n (this.#fileInputEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n <input\n hidden\n type=\"file\"\n accept=\".xpz, .xml\"\n onChange={this.#selectFileInputChangedHandler}\n ref={(el: HTMLInputElement) =>\n (this.#fileInputHiddenEl = el as HTMLInputElement)\n }\n />\n </div>\n\n <div class=\"buttons-spacer\">\n <button\n // remove file selection\n aria-label={this.#componentLocale.header.removeFileSelection}\n title={this.#componentLocale.header.removeFileSelection}\n id=\"reset-all-button\"\n class=\"button-tertiary button-icon-only\"\n part=\"reset-all-button\"\n onClick={this.#removeFileSelection}\n >\n <ch-image class=\"icon-md\" src={MENU_DELETE}></ch-image>\n </button>\n\n <button\n // select file\n id=\"select-file-load-button\"\n class=\"button-primary\"\n part=\"select-file-load-button\"\n onClick={this.#selectFileInputHandler}\n disabled={this.importingIsInProcess}\n >\n {this.#componentLocale.header.selectFileButton}\n </button>\n </div>\n </header>\n\n <section\n // objects in file\n class=\"objects-in-file__section\"\n >\n <h2 class=\"control-header control-header-with-border control-header__objects-in-file subtitle-regular-xs\t text-align-center spacing-body-inline\">\n {this.#componentLocale.main.objectsInFile.title}\n </h2>\n\n <div class=\"field-group objects-in-file__main\">\n {!this.noObjects ? (\n <ch-tree-view-render\n // objects in file tree\n showLines=\"last\"\n class=\"tree-view\"\n model={this.objectsTreeModel}\n dragDisabled={true}\n dropDisabled={true}\n toggleCheckboxes={true}\n checkbox={true}\n checked={true}\n onCheckedItemsChange={\n this.#objectsTreeCheckedItemsChangedHandler\n }\n onSelectedItemsChange={\n this.#objectsTreeSelectedItemsChangedHandler\n }\n onItemContextmenu={this.#objectsTreeContextMenuHandler}\n ref={el =>\n (this.#objectsTreeEl = el as HTMLChTreeViewRenderElement)\n }\n ></ch-tree-view-render>\n ) : (\n <gx-ide-empty-state\n isAnimated={false}\n stateTitle={\n this.#componentLocale.main.objectsInFile.noObjects\n }\n key=\"no-objects-empty-state\"\n >\n <button\n // begin by selecting a file\n class=\"button-secondary\"\n onClick={this.#selectFileInputHandler}\n >\n {this.#componentLocale.main.objectsInFile.selectFile}\n </button>\n </gx-ide-empty-state>\n )}\n\n <footer class=\"field-group objects-in-file__footer spacing-body-inline\">\n <ch-checkbox\n // select all / unselect all checkbox\n id=\"select-all-checkbox\"\n class=\"checkbox create-data-in-kb\"\n checkedValue={CHECKBOX_ALL_CHECKED_VALUE}\n unCheckedValue={CHECKBOX_ALL_UNCHECKED_VALUE}\n caption={\n this.#componentLocale.main.objectsInFile.selectUnselect\n }\n value={this.selectAllCheckboxValue}\n onInput={this.#toggleSelectionClickHandler}\n disabled={\n this.importingIsInProcess ||\n this.objectsTreeModel.length === 0\n }\n part=\"select-all-checkbox\"\n ></ch-checkbox>\n\n <div class=\"buttons-spacer\">\n <button\n // import objects button\n id=\"import-btn\"\n class=\"button-primary \"\n onClick={this.#importObjectsHandler}\n disabled={\n this.objectsTreeModel?.length === 0 ||\n this.importingIsInProcess\n }\n >\n {this.#componentLocale.main.objectsInFile.importButton}\n </button>\n\n <button\n // cancel-import button\n id=\"cancel-import-btn\"\n class=\"button-secondary \"\n onClick={this.#cancelImportHandler}\n disabled={!this.importingIsInProcess}\n part=\"cancel-import-button\"\n >\n {this.#componentLocale.main.objectsInFile.cancelButton}\n </button>\n\n <button\n // settings/options button\n id=\"select-kb-btn\"\n class=\"button-tertiary button-icon-only\"\n part=\"select-kb-btn\"\n onClick={this.#optionsHandler}\n >\n <ch-image\n class=\"icon-md\"\n src={GEMINI_TOOLS_SETTINGS}\n ></ch-image>\n </button>\n </div>\n </footer>\n </div>\n </section>\n\n <section\n // import status\n class=\"import-status__section\"\n >\n <h2 class=\"control-header control-header-with-border control-header__import-status subtitle-regular-xs\t text-align-center spacing-body-inline\">\n {this.#componentLocale.main.importStatus.title}\n </h2>\n\n <div class=\"field-group import-status__main\">\n {!this.noImport && this.someStatusVisible ? (\n <ch-tree-view-render\n // import status tree\n model={this.importTreeState}\n toggleCheckboxes={true}\n showLines=\"last\"\n class=\"tree-view\"\n filter={this.importedTreeFilterRegExp}\n filterType=\"metadata\"\n filterOptions={{\n autoExpand: true,\n hideMatchesAndShowNonMatches: false\n }}\n ></ch-tree-view-render>\n ) : (\n <gx-ide-empty-state\n isAnimated={false}\n stateIconSrc={NOTICE_ICON}\n stateTitle={this.importStatusMessage}\n key=\"no-objects-empty-state\"\n ></gx-ide-empty-state>\n )}\n\n <footer class=\"import-status__footer spacing-body-inline\">\n <button\n // clear status button\n class=\"button-secondary import-clear-status-btn\"\n onClick={this.#clearStatusHandler}\n disabled={this.noImport || this.importingIsInProcess}\n part=\"clear-status-btn\"\n >\n {this.#componentLocale.main.importStatus.clearButton}\n </button>\n </footer>\n </div>\n </section>\n\n <footer\n // footer\n class=\"footer\"\n >\n <gx-ide-status-buttons\n errors={this.statusInfo.error.number}\n warnings={this.statusInfo.warning.number}\n successes={this.statusInfo.success.number}\n hideMessage\n compact\n minimal={this.statusMinimal}\n onSelectionChanged={this.#statusButtonsSelectionChangedHandler}\n ></gx-ide-status-buttons>\n </footer>\n </section>\n </Host>\n );\n }\n}\nexport type CancelCallback = () => Promise<boolean>;\n\nexport type ImportCallback = (itemIds: string[]) => Promise<boolean>;\n\nexport type ImportItemData = {\n id: string;\n name: string;\n};\n\nexport type LoadCallback = (file: File) => Promise<ImportCategoryData[]>;\n\nexport type ObjectContextMenuCallback = (\n tree: ObjectsSourceType,\n contextMenuInfo: ContextMenuInfo\n) => Promise<void>;\n\nexport type ObjectsSourceType = \"in-file\" | \"imported\";\n\nexport type OptionsCallback = () => Promise<void>;\n\nexport interface SelectedObject {\n itemId: string;\n subItemsIds: string[];\n}\n\nexport type StatusItemsState = {\n error: string[];\n warning: string[];\n success: string[];\n};\n\ntype StatusInfo = {\n error: {\n display: boolean;\n number: number;\n };\n warning: {\n display: boolean;\n number: number;\n };\n success: {\n display: boolean;\n number: number;\n };\n};\n\nexport type CategoryItemMap = Map<string, CategoryItemMapValue>;\nexport type CategoryItemMapValue = { name: string; icon: string };\nexport type ObjectCategoryItemMap = Map<string, string>;\nexport type Status = \"success\" | \"error\" | \"warning\";\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["editModuleServerCss","GxIdeEditModuleServer","this","renderedFirstTime","confirmCallbackHandler","async","confirmCallback","selectedTypeId","types","find","type","selectedType","data","id","name","nameEl","value","serverTypeEl","authenticated","source","sourceEl","user","userEl","password","passwordEl","cancelCallbackHandler","cancelCallback","selectSourceCallbackHandle","path","selectSourceCallback","renderServerOptions","h","class","_componentLocale","placeholder","ref","el","part","componentWillLoad","Locale","getComponentStrings","componentDidRender","componentDidRenderFirstTime","emit","componentName","render","Host","slimmerFooter","map","onItemSelected","item","detail","onClick","slot","footer","btnCancel","btnConfirm"],"sources":["src/components/modules/edit-module-server/edit-module-server.scss?tag=gx-ide-edit-module-server&encapsulation=shadow","src/components/modules/edit-module-server/edit-module-server.tsx"],"sourcesContent":["@import \"../../../global/gx-ide-common.scss\";\n@import \"../../../global/gx-ide-mixins.scss\";\n\n:host {\n display: block;\n}\n.module-servers-grid-local {\n gap: var(--spacing-comp-03);\n display: grid;\n grid-template-columns: auto 1fr auto;\n\n *:nth-child(3) {\n align-self: end;\n }\n}\n.module-servers-grid-server {\n gap: var(--spacing-comp-03);\n display: grid;\n grid-template-columns: auto 1fr;\n\n *:nth-child(3) {\n align-self: end;\n }\n}\n.module-servers-grid-column-1 {\n gap: var(--spacing-comp-03);\n display: grid;\n grid-template-rows: repeat(3, 1fr);\n}\n\n.module-servers-grid-column-2 {\n gap: var(--spacing-comp-03);\n display: grid;\n grid-template-rows: repeat(2, 1fr);\n}\n.grid-server-auth-column-1 {\n gap: var(--spacing-comp-03);\n display: grid;\n grid-template-rows: repeat(2, 1fr);\n}\n\n.grid-server-auth-column-2 {\n gap: var(--spacing-comp-03);\n display: grid;\n grid-template-rows: repeat(2, 1fr);\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n State,\n EventEmitter\n} from \"@stencil/core\";\n\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../../common/locale\";\nimport {\n ModuleServerType,\n ModuleServerFullData,\n EditServerModuleResult\n} from \"../types\";\n@Component({\n tag: \"gx-ide-edit-module-server\",\n styleUrl: \"edit-module-server.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/edit-module-server\"]\n})\nexport class GxIdeEditModuleServer {\n // 1.OWN PROPERTIES | WATCH'S //\n\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n private renderedFirstTime = false;\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeEditModuleServerElement;\n private serverTypeEl: HTMLGxgComboBoxElement;\n private nameEl: HTMLGxgFormTextElement;\n private sourceEl: HTMLGxgFormTextElement;\n private userEl: HTMLGxgFormTextElement;\n private passwordEl: HTMLGxgFormTextElement;\n\n // 3.STATE() VARIABLES //\n\n @State() selectedType: \"local\" | \"remote\" = \"local\";\n\n // 4.PUBLIC PROPERTY API //\n\n /**\n * The type of the server\n */\n @Prop() readonly types: ModuleServerType[];\n\n /**\n * The name of the server\n */\n @Prop() readonly name: string;\n\n /**\n * Disk path or server url\n */\n @Prop() readonly source: string;\n\n /**\n * Id of the currently selected server type\n */\n @Prop() readonly type: string;\n\n /**\n * Confirm callback\n */\n @Prop() readonly confirmCallback: ConfirmCallback;\n\n /**\n * Callback invoked when wants to select a local folder that have modules inside\n */\n @Prop() readonly selectSourceCallback: SelectSourceCallback;\n\n /**\n * Cancel callback\n */\n @Prop() readonly cancelCallback: CancelCallback;\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 async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidRender() {\n if (!this.renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this._componentLocale.componentName\n );\n this.renderedFirstTime = true;\n }\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n // 9.LOCAL METHODS //\n\n /**\n * Executed when user click on confirm button\n */\n private confirmCallbackHandler = async () => {\n if (this.confirmCallback) {\n const selectedTypeId = this.types.find(\n ({ type }) => type === this.selectedType\n );\n let data = {} as ModuleServerFullData;\n if (selectedTypeId.type === \"remote\") {\n data = {\n id: selectedTypeId.id,\n name: this.nameEl.value,\n type: this.serverTypeEl.value,\n authenticated: selectedTypeId.authenticated,\n source: this.sourceEl.value,\n user: this.userEl.value,\n password: this.passwordEl.value\n };\n } else {\n data = {\n id: selectedTypeId.id,\n name: this.nameEl.value,\n type: this.serverTypeEl.value,\n authenticated: selectedTypeId.authenticated,\n source: this.sourceEl.value\n };\n }\n const result = await this.confirmCallback(data);\n if (result.success) {\n // display success message\n } else {\n // display error message\n }\n }\n };\n\n /**\n * Executed when user click on cancel button\n */\n private cancelCallbackHandler = async () => {\n await this.cancelCallback();\n };\n private selectSourceCallbackHandle = async () => {\n const path = await this.selectSourceCallback();\n\n if (path) {\n this.sourceEl.value = path;\n }\n };\n\n // 10.LOCAL METHODS //\n\n private renderServerOptions = (): Element[] => {\n return [\n <div class=\"grid-server-auth-column-1\">\n <gxg-label>{this._componentLocale.user}</gxg-label>\n <gxg-label>{this._componentLocale.password}</gxg-label>\n </div>,\n <div class=\"grid-server-auth-column-2\">\n <gxg-form-text\n placeholder={this._componentLocale.user}\n ref={(el: HTMLGxgFormTextElement) =>\n (this.userEl = el as HTMLGxgFormTextElement)\n }\n part=\"user\"\n ></gxg-form-text>\n <gxg-form-text\n password\n placeholder={this._componentLocale.password}\n ref={(el: HTMLGxgFormTextElement) =>\n (this.passwordEl = el as HTMLGxgFormTextElement)\n }\n part=\"password\"\n ></gxg-form-text>\n </div>\n ];\n };\n\n render() {\n return (\n <Host class=\"gx-ide-component\">\n <div class=\"gx-ide-main-wrapper gx-ide-overflow\">\n <gx-ide-container slimmerFooter>\n <div\n class={\n this.selectedType === \"local\"\n ? \"grid module-servers-grid-local\"\n : \"grid module-servers-grid-server\"\n }\n >\n <div class=\"module-servers-grid-column-1\">\n <gxg-label> {this._componentLocale.type}</gxg-label>\n <gxg-label> {this._componentLocale.name}</gxg-label>\n <gxg-label> {this._componentLocale.source}</gxg-label>\n </div>\n <div class=\"module-servers-grid-column-2\">\n <gxg-combo-box\n value={this.type}\n ref={(el: HTMLGxgComboBoxElement) =>\n (this.serverTypeEl = el as HTMLGxgComboBoxElement)\n }\n >\n {this.types?.map(type => (\n <gxg-combo-box-item\n value={type.id}\n onItemSelected={item =>\n (this.selectedType = item.detail.value)\n }\n >\n {type.type}\n </gxg-combo-box-item>\n ))}\n </gxg-combo-box>\n <gxg-form-text\n placeholder={this._componentLocale.name}\n ref={(el: HTMLGxgFormTextElement) =>\n (this.nameEl = el as HTMLGxgFormTextElement)\n }\n value={this.name}\n part=\"name\"\n ></gxg-form-text>\n <gxg-form-text\n placeholder={this._componentLocale.source}\n ref={(el: HTMLGxgFormTextElement) =>\n (this.sourceEl = el as HTMLGxgFormTextElement)\n }\n value={this.source}\n part=\"source\"\n ></gxg-form-text>\n </div>\n {this.selectedType === \"local\" && (\n <gxg-button onClick={this.selectSourceCallbackHandle}>\n ...\n </gxg-button>\n )}\n {this.selectedType === \"remote\" && this.renderServerOptions()}\n </div>\n\n <gxg-button\n slot=\"footer-end\"\n type=\"outlined\"\n onClick={this.cancelCallbackHandler}\n >\n {this._componentLocale.footer.btnCancel}\n </gxg-button>\n <gxg-button\n slot=\"footer-end\"\n type=\"primary-text-only\"\n onClick={this.confirmCallbackHandler}\n >\n {this._componentLocale.footer.btnConfirm}\n </gxg-button>\n </gx-ide-container>\n </div>\n </Host>\n );\n }\n}\nexport type ConfirmCallback = (\n data: ModuleServerFullData\n) => Promise<EditServerModuleResult>;\nexport type CancelCallback = () => Promise<void>;\nexport type SelectSourceCallback = () => Promise<string | undefined>;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["updateCss","CSS_BUNDLES","GxIdeTeamDevUpdate","this","loadDataCalledFirstTime","renderedFirstTime","onRowContextMenuHandler","grid","async","ev","objectsContextMenuCallback","preventDefault","stopPropagation","selection","chGridPendingForUpdateEl","getSelectedRows","chGridIgnoredObjectsEl","chGridResultsEl","clientX","detail","clientY","markAllPendingToUpdateRows","markAllRows","gridOnSelectionChangedCallbackHandler","selectCallback","rowsId","genexusServerUrlHandler","updateFrom","serverUrl","window","open","renderOptions","h","class","part","containerTitle","_componentLocale","options","titleType","contentBorderEnd","noContentPadding","type","listName","readonly","noListBorder","icon","itemId","itemValue","undefined","onClick","knowledgeBase","kbName","version","versionName","lastFullUpdate","formatDate","scope","labelPosition","center","noMargin","objects","bold","objectScopeText","value","scopeData","toLocaleLowerCase","objectsScope","changeBtn","revision","revisionScopeText","latest","revisionScope","label","kbProperties","renderFilter","centerLabel","filter","pattern","ref","el","filterPatternEl","onInput","loadData","disabled","types","filterTypeEl","onValueChanged","id","renderComboItems","renderData","displayBorderTop","slot","displayBorder","tabs","pendingForUpdate","tab","key","isSelected","ignoredObjects","results","gxgTabButtonResultsEl","noPadding","renderPendingForUpdate","renderIgnoredObjects","renderResults","onRowContextMenu","onSelectionChanged","settingable","sortable","richRowSelector","richRowSelectorMode","size","config","tabularGrid","colSize","maxContent","columnName","tableHead","name","description","commonDouble","modifiedOn","status","action","updateData","map","obj","rowid","src","typeIcon","renderIconState","state","notes","updateResultData","renderIconResult","result","messages","msg","msgType","text","color","filters","showFilter","isLoading","loadCallback","update","updateCallback","pendingForUpdateMarked","getMarkedRows","then","tabButtonClick","objectsScopeCallback","objectData","revisionScopeCallback","revisionData","pendingForUpdatesRowMarkingChangedHandler","e","removeEventListener","addedRowsIds","addedRowsId","removedRowsId","pendingItemCheckedResult","pendingItemsCheckedCallback","itemsChecked","itemsUnchecked","revertPendingCommitsCheckboxes","togglePendingCommitsCheckboxes","addEventListener","itemsToToggle","itemsToCheck","itemsToUncheck","rowId","markRow","componentWillLoad","Locale","getComponentStrings","componentDidLoadEvent","emit","componentDidLoad","focus","componentDidRender","componentDidRenderFirstTime","componentName","reload","render","Host","model","slimmerFooter","gxIdeContainer","displayTitle","footer","btnUpdate"],"sources":["src/components/team-dev/update/update.scss?tag=gx-ide-team-dev-update&encapsulation=shadow","src/components/team-dev/update/update.tsx"],"sourcesContent":["@import \"../../../global/gx-ide-common.scss\";\n@import \"../../../global/gx-ide-mixins.scss\";\n@import \"../../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n\n:host {\n display: block;\n}\n\n/*--- Options Wrapper ---*/\n.options-wrapper {\n display: grid;\n grid-template-columns: 2fr 1fr;\n grid-column-gap: 0;\n grid-row-gap: 0;\n border-bottom: 1px solid var(--gx-ide-container-border-color);\n\n .genexus-server {\n cursor: pointer;\n &:hover {\n background-color: var(--ds-item-background-color--hover);\n }\n }\n .scope {\n font-family: inherit;\n display: flex;\n flex-direction: column;\n gap: var(--mer-spacing--2xs);\n .row {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: var(--mer-spacing--xs);\n .value {\n font-style: italic;\n }\n }\n }\n}\n\n/*--- Filter ---*/\n.filter-row {\n padding: 0 var(--gx-ide-container__padding) 0 var(--gx-ide-container__padding);\n display: flex;\n flex-direction: row;\n gap: var(--gx-ide-grid-row-gap);\n .combo {\n flex: 1;\n }\n}\n\n/* Data Grid*/\n.data-grid {\n grid-template-columns: repeat(3, 1fr);\n // max-height: 300px;\n // overflow-y: auto;\n > :nth-child(1) {\n grid-area: 1 / 1 / 2 / 2;\n }\n > :nth-child(2) {\n grid-area: 1 / 2 / 2 / 4;\n }\n}\n.data-panel-grid {\n grid-template-columns: repeat(2, 1fr);\n}\n.data-preview {\n img {\n max-width: 100%;\n }\n}\n.data-max-height {\n max-height: 300px;\n overflow-y: auto;\n}\n\n/* Footer Actions */\n.actions {\n justify-content: flex-end;\n}\n\n.no-border {\n border: 0;\n}\n\n.bold {\n font-weight: bold;\n}\n\n/*--- Results ---*/\nch-grid-rowset-empty {\n padding: var(--mer-spacing--2xs) var(--mer-spacing--xs);\n}\n\ngxg-tab::part(container) {\n line-height: unset;\n}\n.tabular-grid {\n block-size: 100%;\n}\n\ngx-ide-container::part(content) {\n overflow: hidden;\n}\n\n// apply ellipsis on description column\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid-pending-update\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 6\n )\n);\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid-results\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 6\n )\n);\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n State,\n Method\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport { Color as GxgIconColor } from \"@genexus/gemini/dist/types/components/icon/icon\";\nimport {\n TabularGridMarkingChangedEvent,\n TabularGridRowContextMenuEvent,\n TabularGridSelectionChangedEvent\n} from \"@genexus/chameleon-controls-library\";\nimport { MercuryBundles } from \"@genexus/mercury\";\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../../common/locale\";\nimport { config } from \"../../../common/config\";\n\nimport {\n ObjectState,\n ObjectType,\n ContextMenuInfo,\n ItemsCheckedState,\n ItemsCheckedResult,\n ResultState\n} from \"../../../common/types\";\nimport { renderComboItems } from \"../../../common/render-combo-items\";\nimport { formatDate } from \"../../../common/helpers\";\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-team-dev-update\",\n styleUrl: \"update.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-update\"]\n})\nexport class GxIdeTeamDevUpdate {\n // 1.OWN PROPERTIES //\n\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n private loadDataCalledFirstTime = false; // pending for update grid checkboxes, should be checked, after loadData has loaded objects for the first time.\n private renderedFirstTime = false;\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeTeamDevUpdateElement;\n\n /* References needed to collect data */\n // private optionKbPropertiesEl!: HTMLGxgFormCheckboxElement;\n private filterPatternEl!: HTMLGxgFormTextElement;\n private filterTypeEl!: HTMLGxgComboBoxElement;\n private chGridPendingForUpdateEl!: HTMLChGridElement;\n private chGridIgnoredObjectsEl!: HTMLChGridElement;\n private chGridResultsEl!: HTMLChGridElement;\n private gxgTabButtonResultsEl!: HTMLGxgTabButtonElement;\n\n // 3.STATE() VARIABLES //\n\n /**\n * If the design data is loading or not, for disabled actions\n */\n @State() isLoading = false;\n\n /**\n * For show or hide advanced filters\n */\n @State() objectScopeText = \"all\";\n\n /**\n * The tab that is currently open\n */\n @State() openTab: \"pending\" | \"ignored\" | \"results\" = \"pending\";\n\n /**\n * For show or hide advanced filters\n */\n @State() revisionScopeText: string = undefined;\n\n /**\n * For show or hide advanced filters\n */\n @State() showFilter = false;\n\n /**\n * The data loaded for populate the grids\n */\n @State() updateData: UpdateData = {\n pendingForUpdate: [],\n ignoredObjects: []\n };\n\n /**\n * The data receive after user update\n */\n @State() updateResultData: UpdateResultData[] = [];\n\n // 4.PUBLIC PROPERTY API | WATCH'S //\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * This is a function provided by the developer that init the process of import a design.\n */\n @Prop() readonly confirmCallback!: ConfirmCallback;\n\n /**\n * This is a function provided by the developer that return the information of an Image System type of data.\n */\n @Prop() readonly gridContextMenuCallback!: GridContextMenuCallback;\n\n /**\n * This is a function provided by the developer that return the list of types of data loaded from file or url.\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n * This is a function provided by the developer to call when the user makes a partial selection from button Change of Scope group.\n */\n @Prop() readonly objectsScopeCallback!: () => Promise<\"all\" | \"partial\">;\n\n /**\n * This is a function provided by the developer to call when the user clicked in server url of Update From group.\n */\n @Prop() readonly openServerCallback!: () => Promise<void>;\n\n /**\n * This is a function provided by the developer that return the information of a Font type of data.\n */\n @Prop() readonly pendingItemsCheckedCallback!: PendingItemsCheckedCallback;\n\n /**\n * This is a function provided by the developer to call when the user wants to select the revision to work on.\n */\n @Prop() readonly revisionScopeCallback!: () => Promise<string | undefined>;\n\n /**\n * Callback that should be invoked when the user activates the context menu on any of the grids. It receives the internal IDs of the selected elements and in which grid the event occurred. It should prevent the default browser context menu from appearing\n */\n @Prop() readonly objectsContextMenuCallback!: ObjectsContextMenuCallback;\n\n /**\n * Callback that should be invoked when the user selects rows from the grids\n */\n @Prop() readonly selectCallback: UpdateSelectCallback;\n\n /**\n * Possibly values for the filter type\n */\n @Prop() readonly types: ObjectType[];\n\n /**\n * This is a function provided by the developer that return the information of a Design System type of data.\n */\n @Prop() readonly updateCallback!: UpdateCallback;\n\n /**\n * Information to show in the container of group 'Update From'\n */\n @Prop() readonly updateFrom: UpdateFromData;\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() componentDidLoadEvent: EventEmitter<boolean>;\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 async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n this.componentDidLoadEvent.emit(true);\n }\n\n async componentDidLoad() {\n await this.loadData();\n this.filterPatternEl.focus();\n }\n\n async componentDidRender() {\n if (!this.renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this._componentLocale.componentName\n );\n this.renderedFirstTime = true;\n }\n\n if (this.loadDataCalledFirstTime) {\n // call this method only once\n await this.markAllPendingToUpdateRows();\n // attach \"rowMarkingChanged\" after rows have been checked for the first time.\n this.chGridPendingForUpdateEl.addEventListener(\n \"rowMarkingChanged\",\n this.pendingForUpdatesRowMarkingChangedHandler\n );\n this.loadDataCalledFirstTime = false;\n }\n }\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n /**\n * The method used by the host to instruct the component to force a data reload in the grids.\n */\n @Method()\n async reload() {\n this.loadData();\n }\n\n // 9.LOCAL METHODS //\n\n private onRowContextMenuHandler =\n (grid: UpdateSourceType) =>\n async (ev: CustomEvent<TabularGridRowContextMenuEvent>) => {\n if (this.objectsContextMenuCallback) {\n ev.preventDefault();\n ev.stopPropagation();\n let selection: string[] = [];\n if (grid === \"pending\") {\n selection = await this.chGridPendingForUpdateEl.getSelectedRows();\n } else if (grid === \"ignored\") {\n selection = await this.chGridIgnoredObjectsEl.getSelectedRows();\n } else if (grid === \"results\") {\n selection = await this.chGridResultsEl.getSelectedRows();\n }\n await this.objectsContextMenuCallback(grid, {\n selection: selection,\n clientX: ev.detail.clientX,\n clientY: ev.detail.clientY\n });\n }\n };\n\n private markAllPendingToUpdateRows = () => {\n this.chGridPendingForUpdateEl.markAllRows();\n };\n\n private gridOnSelectionChangedCallbackHandler =\n (grid: UpdateSourceType) =>\n async (ev: CustomEvent<TabularGridSelectionChangedEvent>) => {\n if (this.selectCallback) {\n await this.selectCallback(grid, ev.detail.rowsId);\n }\n };\n\n private genexusServerUrlHandler = () => {\n if (this.updateFrom?.serverUrl) {\n window.open(this.updateFrom.serverUrl);\n }\n };\n\n private renderOptions = (): Element => {\n return (\n <div class=\"options-wrapper\">\n {/* genexus server*/}\n <gx-ide-container\n part=\"options-update-from\"\n containerTitle={this._componentLocale.options.updateFrom}\n titleType=\"secondary\"\n contentBorderEnd\n noContentPadding\n >\n <gx-ide-list-selector\n type=\"single-selection\"\n listName=\"commit-recent-messages\"\n readonly\n noListBorder\n >\n {/* genexus server*/}\n <gx-ide-list-selector-item\n icon=\"window-tools/genexus-cloud\"\n itemId=\"genexus-server\"\n itemValue={undefined}\n class=\"genexus-server\"\n onClick={this.genexusServerUrlHandler}\n >\n {`${this._componentLocale.options.updateFrom}:`}\n <gxg-text type=\"text-link\">\n {this.updateFrom ? this.updateFrom.serverUrl : \"\"}\n </gxg-text>\n </gx-ide-list-selector-item>\n\n {/* knowledge base*/}\n <gx-ide-list-selector-item\n icon=\"general/knowledge-base\"\n itemId=\"knowledge-base\"\n itemValue={`${this._componentLocale.options.knowledgeBase}: ${\n this.updateFrom ? this.updateFrom.kbName : \"\"\n }`}\n ></gx-ide-list-selector-item>\n\n {/* version */}\n <gx-ide-list-selector-item\n icon=\"general/version\"\n itemId=\"version\"\n itemValue={`${this._componentLocale.options.version}: ${\n this.updateFrom ? this.updateFrom.versionName : \"\"\n }`}\n ></gx-ide-list-selector-item>\n\n {/* last full update */}\n <gx-ide-list-selector-item\n icon=\"window-tools/last-changes-view\"\n itemId=\"last-full-update\"\n itemValue={`${\n this._componentLocale.options.lastFullUpdate\n }:${formatDate(this.updateFrom.lastFullUpdate)}`}\n ></gx-ide-list-selector-item>\n </gx-ide-list-selector>\n </gx-ide-container>\n\n {/* scope*/}\n <gx-ide-container\n part=\"options-scope\"\n containerTitle={this._componentLocale.options.scope}\n titleType=\"secondary\"\n >\n <div class=\"scope\">\n {/* Objects*/}\n <div class=\"row\">\n <gxg-label labelPosition=\"start\" center noMargin>\n {this._componentLocale.options.objects}:\n </gxg-label>\n <span\n class={{\n bold: this.objectScopeText === \"partial\",\n value: true\n }}\n >\n {\n this._componentLocale.options.scopeData.objects[\n this.objectScopeText.toLocaleLowerCase()\n ]\n }\n </span>\n <gxg-text\n type=\"text-link\"\n onClick={this.objectsScope}\n part=\"gxg-button gxg-button--scope-objects-change\"\n >\n {this._componentLocale.options.changeBtn}\n </gxg-text>\n </div>\n\n {/* Revision */}\n <div class=\"row\">\n <gxg-label labelPosition=\"start\" center noMargin>\n {this._componentLocale.options.revision}:\n </gxg-label>\n <span\n class={{\n bold: this.revisionScopeText !== undefined,\n value: true\n }}\n >\n {this.revisionScopeText === undefined\n ? this._componentLocale.options.scopeData.revision.latest\n : this.revisionScopeText}\n </span>\n <gxg-text\n type=\"text-link\"\n onClick={this.revisionScope}\n part=\"gxg-button gxg-button--scope-revision-change\"\n >\n {this._componentLocale.options.changeBtn}\n </gxg-text>\n </div>\n\n {/* Kb Properties */}\n <div class=\"row\">\n <gxg-form-checkbox\n label={this._componentLocale.options.kbProperties}\n class=\"align-center\"\n part=\"option-kb-properties\"\n ></gxg-form-checkbox>\n </div>\n </div>\n </gx-ide-container>\n </div>\n );\n };\n\n private renderFilter = (): Element => {\n return (\n <div\n class={{\n \"filter-row\": true\n }}\n >\n {/* pattern*/}\n <gxg-form-text\n label-position=\"start\"\n centerLabel\n label={this._componentLocale.filter.pattern}\n ref={(el: HTMLGxgFormTextElement) =>\n (this.filterPatternEl = el as HTMLGxgFormTextElement)\n }\n part=\"filter-pattern\"\n onInput={this.loadData}\n class=\"combo\"\n ></gxg-form-text>\n\n {/* type */}\n <gxg-combo-box\n label-position=\"start\"\n centerLabel\n disable-filter\n label={this._componentLocale.filter.type}\n disabled={!this.types}\n ref={(el: HTMLGxgComboBoxElement) =>\n (this.filterTypeEl = el as HTMLGxgComboBoxElement)\n }\n onValueChanged={this.loadData}\n part=\"filter-type\"\n value={this.types[0].id}\n class=\"combo\"\n >\n {renderComboItems(this.types)}\n </gxg-combo-box>\n\n {/* load data */}\n <gxg-button\n type=\"secondary-icon-only\"\n icon=\"gemini-tools/reset\"\n onClick={this.loadData}\n part=\"gxg-button gxg-button--reload\"\n class=\"button\"\n ></gxg-button>\n </div>\n );\n };\n\n private renderData = (): Element => {\n return (\n <gx-ide-container\n part=\"data-container\"\n noContentPadding\n class=\"gxi-overflow-auto\"\n displayBorderTop\n >\n <gxg-tabs id=\"dataTabs\" part=\"data-tabs\">\n <gxg-tab-bar slot=\"tab-bar-container\" displayBorder>\n <gxg-tab-button\n slot=\"tab-bar\"\n tab-label={this._componentLocale.tabs.pendingForUpdate}\n tab=\"pendingForUpdate\"\n key=\"pendingForUpdate\"\n isSelected={true}\n ></gxg-tab-button>\n <gxg-tab-button\n slot=\"tab-bar\"\n tab-label={this._componentLocale.tabs.ignoredObjects}\n tab=\"ignoredObjects\"\n key=\"ignoredObjects\"\n ></gxg-tab-button>\n <gxg-tab-button\n slot=\"tab-bar\"\n tab-label={this._componentLocale.tabs.results}\n tab=\"results\"\n key=\"results\"\n ref={(el: HTMLGxgTabButtonElement) =>\n (this.gxgTabButtonResultsEl = el)\n }\n ></gxg-tab-button>\n </gxg-tab-bar>\n <gxg-tab\n tab=\"pendingForUpdate\"\n key=\"pendingForUpdate\"\n noPadding\n isSelected={true}\n >\n {this.renderPendingForUpdate()}\n </gxg-tab>\n <gxg-tab tab=\"ignoredObjects\" key=\"ignoredObjects\" noPadding>\n {this.renderIgnoredObjects()}\n </gxg-tab>\n <gxg-tab tab=\"results\" key=\"results\" noPadding>\n {this.renderResults()}\n </gxg-tab>\n </gxg-tabs>\n </gx-ide-container>\n );\n };\n\n private renderPendingForUpdate = (): HTMLChTabularGridElement => {\n return (\n <ch-tabular-grid\n class=\"tabular-grid tabular-grid-pending-update\"\n row-selection-mode=\"multiple\"\n ref={(el: HTMLChTabularGridElement) =>\n (this.chGridPendingForUpdateEl = el)\n }\n part=\"ch-tabular-grid-pending-for-updates\"\n onRowContextMenu={this.onRowContextMenuHandler(\"pending\")}\n onSelectionChanged={this.gridOnSelectionChangedCallbackHandler(\n \"pending\"\n )}\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n settingable={false}\n sortable={false}\n column-type=\"rich\"\n richRowSelector\n richRowSelectorMode=\"mark\"\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this._componentLocale.tableHead.name}\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this._componentLocale.tableHead.type}\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this._componentLocale.tableHead.description}\n settingable={false}\n size={config.tabularGrid.colSize.commonDouble}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this._componentLocale.tableHead.modifiedOn}\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this._componentLocale.tableHead.status}\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this._componentLocale.tableHead.action}\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n {this.updateData.pendingForUpdate.map((obj: ModifiedObject) => (\n <ch-tabular-grid-row rowid={obj.id} class=\"tabular-grid-row\">\n <ch-tabular-grid-cell\n cell-type=\"rich\"\n row-selector\n class=\"tabular-grid-cell\"\n ></ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-image src={obj.typeIcon} class=\"icon-md\"></ch-image>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.renderIconState(obj.state)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.type}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.description}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {`${formatDate(obj.modifiedOn)}`}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.status}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.action}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid>\n );\n };\n\n private renderIgnoredObjects = (): HTMLChTabularGridElement => {\n return (\n <ch-tabular-grid\n class=\"tabular-grid\"\n row-selection-mode=\"multiple\"\n ref={(el: HTMLChTabularGridElement) =>\n (this.chGridIgnoredObjectsEl = el)\n }\n part=\"ch-grid-ignored-objects\"\n onRowContextMenu={this.onRowContextMenuHandler(\"ignored\")}\n onSelectionChanged={this.gridOnSelectionChangedCallbackHandler(\n \"ignored\"\n )}\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n settingable={false}\n sortable={false}\n size=\"min-content\"\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this._componentLocale.tableHead.name}\n settingable={false}\n size=\"1fr\"\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this._componentLocale.tableHead.type}\n settingable={false}\n size=\"1fr\"\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n {this.updateData.ignoredObjects.map((obj: ModifiedObject) => (\n <ch-tabular-grid-row rowid={obj.id} class=\"tabular-grid-row\">\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-image src={obj.typeIcon} class=\"icon-md\"></ch-image>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.type}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid>\n );\n };\n\n private renderResults = (): HTMLChTabularGridElement => {\n return (\n <ch-tabular-grid\n class=\"tabular-grid tabular-grid-results\"\n row-selection-mode=\"multiple\"\n ref={(el: HTMLChTabularGridElement) => (this.chGridResultsEl = el)}\n part=\"ch-tabular-grid-results\"\n onRowContextMenu={this.onRowContextMenuHandler(\"results\")}\n onSelectionChanged={this.gridOnSelectionChangedCallbackHandler(\n \"results\"\n )}\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n settingable={false}\n sortable={false}\n column-type=\"tree\"\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n settingable={false}\n sortable={false}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n settingable={false}\n sortable={false}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this._componentLocale.tableHead.name}\n settingable={false}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this._componentLocale.tableHead.type}\n settingable={false}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this._componentLocale.tableHead.description}\n settingable={false}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this._componentLocale.tableHead.notes}\n settingable={false}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n {this.updateResultData.map((obj: UpdateResultData) => (\n <ch-tabular-grid-row rowid={obj.id} class=\"tabular-grid-row\">\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.renderIconResult(obj.result)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-image src={obj.typeIcon} class=\"icon-md\"></ch-image>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.renderIconState(obj.state)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.type}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.description}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.notes}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-rowset>\n {obj.messages.map(msg => {\n let msgType;\n switch (msg.type) {\n case \"info\":\n msgType = \"text-alert-info\";\n break;\n case \"success\":\n msgType = \"text-alert-success\";\n break;\n case \"warning\":\n msgType = \"text-alert-warning\";\n break;\n case \"error\":\n msgType = \"text-alert-error\";\n break;\n }\n return (\n <ch-tabular-grid-rowset-empty>\n <gxg-text type={msgType as any}>{msg.text}</gxg-text>\n </ch-tabular-grid-rowset-empty>\n );\n })}\n </ch-tabular-grid-rowset>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid>\n );\n };\n\n private renderIconState = (state: ObjectState): Element => {\n let type: string;\n\n switch (state) {\n case \"modified\":\n type = \"gx-server/changes-commit-pending\";\n break;\n case \"inserted\":\n type = \"gx-server/new\";\n break;\n case \"deleted\":\n type = \"gx-server/delete\";\n break;\n case \"conflicted\":\n type = \"gx-server/conflict\";\n break;\n }\n return <ch-image class=\"icon-md\" src={type}></ch-image>;\n };\n\n private renderIconResult = (result: ResultState): Element => {\n let type: string;\n let color: GxgIconColor;\n switch (result) {\n case \"info\":\n type = \"gemini-tools/notice\";\n color = \"primary-active\";\n break;\n case \"success\":\n type = \"gemini-tools/success\";\n color = \"success\";\n break;\n case \"warning\":\n type = \"gemini-tools/warning\";\n color = \"warning\";\n break;\n case \"error\":\n type = \"gemini-tools/error\";\n color = \"error\";\n break;\n }\n return <gxg-icon type={type} color={color}></gxg-icon>;\n };\n\n private loadData = async (): Promise<void> => {\n const filters: FiltersData = {\n pattern: this.showFilter ? this.filterPatternEl.value : null,\n type: this.showFilter ? this.filterTypeEl.value : null\n };\n // this.updateData = null;\n this.isLoading = true;\n this.updateData = await this.loadCallback(filters);\n this.isLoading = false;\n if (!this.loadDataCalledFirstTime) {\n /* this allows checking the pending commits checkboxes on first load*/\n this.loadDataCalledFirstTime = true;\n }\n };\n\n private update = async (): Promise<void> => {\n if (this.updateCallback) {\n const pendingForUpdateMarked =\n await this.chGridPendingForUpdateEl.getMarkedRows();\n this.updateCallback(pendingForUpdateMarked).then(\n (updateResultData: UpdateResultData[]) => {\n this.updateResultData = updateResultData;\n this.gxgTabButtonResultsEl.tabButtonClick();\n }\n );\n }\n };\n\n private objectsScope = (): void => {\n if (this.objectsScopeCallback) {\n this.objectsScopeCallback().then(objectData => {\n if (objectData) {\n this.objectScopeText = objectData;\n }\n });\n }\n };\n\n private revisionScope = (): void => {\n if (this.revisionScopeCallback) {\n this.revisionScopeCallback().then(revisionData => {\n this.revisionScopeText = revisionData;\n });\n }\n };\n\n private pendingForUpdatesRowMarkingChangedHandler = async (\n e: CustomEvent<TabularGridMarkingChangedEvent>\n ): Promise<void> => {\n // remove \"rowMarkingChanged\" until checkboxes have been added/removed on togglePendingCommitsCheckboxes, to prevent loops.\n this.chGridPendingForUpdateEl.removeEventListener(\n \"rowMarkingChanged\",\n this.pendingForUpdatesRowMarkingChangedHandler\n );\n if (this.chGridPendingForUpdateEl) {\n const addedRowsIds = e.detail.addedRowsId;\n const removedRowsId = e.detail.removedRowsId;\n const pendingItemCheckedResult = await this.pendingItemsCheckedCallback({\n itemsChecked: addedRowsIds,\n itemsUnchecked: removedRowsId\n });\n if (pendingItemCheckedResult === undefined) {\n // undo check/uncheck\n await this.revertPendingCommitsCheckboxes(addedRowsIds, removedRowsId);\n } else {\n await this.togglePendingCommitsCheckboxes(pendingItemCheckedResult);\n }\n this.chGridPendingForUpdateEl.addEventListener(\n \"rowMarkingChanged\",\n this.pendingForUpdatesRowMarkingChangedHandler\n );\n }\n this.chGridPendingForUpdateEl.addEventListener(\n \"rowMarkingChanged\",\n this.pendingForUpdatesRowMarkingChangedHandler\n );\n };\n\n private togglePendingCommitsCheckboxes = async (\n itemsToToggle: ItemsCheckedResult\n ) => {\n if (this.chGridPendingForUpdateEl) {\n const itemsToCheck: string[] = itemsToToggle.itemsToCheck;\n const itemsToUncheck: string[] = itemsToToggle.itemsToUncheck;\n // check\n for (const rowId of itemsToCheck) {\n await this.chGridPendingForUpdateEl.markRow(rowId, true);\n }\n // uncheck\n for (const rowId of itemsToUncheck) {\n await this.chGridPendingForUpdateEl.markRow(rowId, false);\n }\n }\n };\n\n private revertPendingCommitsCheckboxes = async (\n addedRowsIds: string[],\n removedRowsId: string[]\n ) => {\n if (this.chGridPendingForUpdateEl) {\n for (const rowId of addedRowsIds) {\n await this.chGridPendingForUpdateEl.markRow(rowId, false);\n }\n for (const rowId of removedRowsId) {\n await this.chGridPendingForUpdateEl.markRow(rowId, true);\n }\n }\n };\n\n // 10.RENDER() FUNCTION //\n\n render(): void {\n return (\n <Host class=\"gx-ide-component\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <div class=\"gx-ide-main-wrapper\">\n <gx-ide-container\n displayBorderTop\n noContentPadding\n slimmerFooter={config.gxIdeContainer.slimmerFooter}\n containerTitle={\n this.displayTitle ? this._componentLocale.componentName : null\n }\n >\n {this.renderOptions()}\n {this.renderFilter()}\n {this.renderData()}\n\n <gxg-button\n id=\"button-update\"\n type=\"primary-text-only\"\n onClick={this.update}\n part=\"gxg-button gxg-button--update\"\n disabled={this.isLoading}\n slot=\"footer-end\"\n >\n {this._componentLocale.footer.btnUpdate}\n </gxg-button>\n </gx-ide-container>\n </div>\n </Host>\n );\n }\n}\n\nexport type LoadCallback = (filters: FiltersData) => Promise<UpdateData>;\n\nexport type UpdateCallback = (\n selection: string[]\n) => Promise<UpdateResultData[]>;\n\nexport type PendingItemsCheckedCallback = (\n pendingItemsCheckedState: ItemsCheckedState\n) => Promise<ItemsCheckedResult | undefined>;\n\nexport type UpdateSelectCallback = (\n grid: UpdateSourceType,\n selectionIds: string[]\n) => Promise<void>;\n\nexport type UpdateSourceType = \"pending\" | \"ignored\" | \"results\";\n\nexport type GridContextMenuCallback = (\n selection: string[],\n grid: \"update\" | \"ignored\" | \"results\"\n) => Promise<void>;\n\nexport type ObjectsContextMenuCallback = (\n source: UpdateSourceType,\n contextMenuInfo: ContextMenuInfo\n) => Promise<void>;\n\nexport type ConfirmCallback = (data: any) => Promise<boolean>;\n\nexport interface UpdateFromData {\n serverUrl: string;\n kbName: string;\n versionName: string;\n lastFullUpdate: Date;\n}\nexport interface FiltersData {\n pattern: string;\n type: string;\n}\nexport interface UpdateData {\n pendingForUpdate: ModifiedObject[];\n ignoredObjects: ModifiedObject[];\n}\nexport interface ModifiedObject {\n id: string;\n typeIcon: string;\n state?: ObjectState;\n name: string;\n type: string;\n description?: string;\n modifiedOn?: Date;\n status?: string;\n action?: string;\n}\nexport interface UpdateResultData {\n id: string;\n result: ResultState;\n typeIcon: string;\n state: ObjectState;\n name: string;\n type: string;\n description: string;\n notes: string;\n messages: MessageData[];\n}\n\nexport interface MessageData {\n type: \"info\" | \"success\" | \"warning\" | \"error\";\n text: string;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["mapAuthenticationTypeToComboBoxModel","authenticationTypes","map","authenticationType","value","id","caption","name","mapServerUrlsToComboBoxModel","serverUrls","serverUrl","connectGxServerCss","CSS_BUNDLES","HTMLGxIdeConnectGxServer","_HTMLGxIdeConnectGxServer_componentLocale","set","this","_HTMLGxIdeConnectGxServer_usernameRef","_HTMLGxIdeConnectGxServer_passwordRef","_HTMLGxIdeConnectGxServer_serverUrlRef","_HTMLGxIdeConnectGxServer_cancelClickHandler","cancelCallback","_HTMLGxIdeConnectGxServer_connectClickHandler","async","connectCallback","gxServerConnectionData","then","formSubmitResult","validatableControls","validateControls","_HTMLGxIdeConnectGxServer_evaluateTooltipRender","controlReference","get","hasError","message","h","class","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","_HTMLGxIdeConnectGxServer_init","authenticationTypesChanged","serverUrlsChanged","defaultConnectionData","serverUrlsComboBoxModel","authenticationTypesComboBoxModel","userName","userPassword","_HTMLGxIdeConnectGxServer_initializeValidatableControls","__classPrivateFieldGet","forEach","validatableControl","reference","undefined","_HTMLGxIdeConnectGxServer_serverUrlInputEventHandler","event","detail","_HTMLGxIdeConnectGxServer_authenticationInputEventHandler","authenticationTypeId","authenticationTypeIndex","findIndex","authType","authenticationTypeName","_HTMLGxIdeConnectGxServer_usernameInputEventHandler","_HTMLGxIdeConnectGxServer_passwordInputEventHandler","Map","newAuthenticationTypes","length","newServerUrls","componentWillLoad","__classPrivateFieldSet","Locale","getComponentStrings","el","call","componentDidLoad","render","Host","model","htmlFor","main","serverURLLabel","accessibleName","placeholder","onChange","suggest","enableCustomServer","suggestOptions","alreadyProcessed","autoExpand","hideMatchesAndShowNonMatches","highlightMatchedItems","matchCase","regularExpression","renderActiveItemIconOnExpand","strict","ref","authenticationTypeLabel","onInput","usernameLabel","type","passwordLabel","onClick","footer","cancelButtonCaption","connectButtonCaption"],"sources":["src/components/team-dev/connect-gx-server/helpers.ts","src/components/team-dev/connect-gx-server/connect-gx-server.scss?tag=gx-ide-connect-gx-server&encapsulation=shadow","src/components/team-dev/connect-gx-server/connect-gx-server.tsx"],"sourcesContent":["import { AuthenticationType } from \"./connect-gx-server\";\nimport { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\n\nexport const mapAuthenticationTypeToComboBoxModel = (\n authenticationTypes: AuthenticationType[]\n): ComboBoxModel => {\n return authenticationTypes.map(authenticationType => {\n return {\n value: authenticationType.id,\n caption: authenticationType.name\n };\n });\n};\n\nexport const mapServerUrlsToComboBoxModel = (\n serverUrls: string[]\n): ComboBoxModel => {\n return serverUrls.map(serverUrl => {\n return {\n value: serverUrl,\n caption: serverUrl\n };\n });\n};\n",":host {\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: 1fr max-content;\n}\n\n.main {\n display: grid;\n grid-template-areas:\n \"server-url server-url\"\n \"authentication-type .\"\n \"user-name user-password\";\n grid-auto-rows: max-content;\n grid-template-columns: 1fr 1fr;\n}\n\n.section {\n display: contents;\n}\n\n.authentication-type {\n grid-area: authentication-type;\n}\n.server-url {\n grid-area: server-url;\n}\n.user-name {\n grid-area: user-name;\n}\n.user-password {\n grid-area: user-password;\n}\n","// Stencil\nimport { Component, Host, h, Prop, Element, State, Watch } from \"@stencil/core\";\n\n// Other Libraries\nimport { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { MercuryBundles } from \"@genexus/mercury\";\n\n// Custom Imports\nimport { config } from \"../../../common/config\";\nimport {\n mapAuthenticationTypeToComboBoxModel,\n mapServerUrlsToComboBoxModel\n} from \"./helpers\";\nimport { Locale } from \"../../../common/locale\";\nimport { FormSubmitResult } from \"../../../common/types\";\nimport {\n ControlValidation,\n validateControls\n} from \"../../../common/form-validation\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tab\",\n \"components/tooltip\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\n@Component({\n tag: \"gx-ide-connect-gx-server\",\n styleUrl: \"connect-gx-server.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/connect-gx-server\"]\n})\nexport class HTMLGxIdeConnectGxServer {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n\n @Element() el: HTMLGxIdeConnectGxServerElement;\n #usernameRef!: HTMLChEditElement;\n #passwordRef!: HTMLChEditElement;\n #serverUrlRef!: HTMLChComboBoxRenderElement;\n\n @State() authenticationTypesComboBoxModel: ComboBoxModel;\n @State() gxServerConnectionData: GXServerConnectionData = {\n authenticationType: {\n id: null,\n name: null\n },\n serverUrl: null,\n userName: null,\n userPassword: null\n };\n @State() serverUrlsComboBoxModel: ComboBoxModel;\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * List of authentication types.\n */\n @Prop() readonly authenticationTypes!: AuthenticationType[];\n @Watch(\"authenticationTypes\")\n authenticationTypesChanged(newAuthenticationTypes: AuthenticationType[]) {\n if (newAuthenticationTypes?.length) {\n this.authenticationTypesComboBoxModel =\n mapAuthenticationTypeToComboBoxModel(newAuthenticationTypes);\n }\n }\n\n /**\n * Callback that must be invoked when the 'Cancel' button is pressed.\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * Callback that must be invoked when the 'Connect' button is pressed.\n */\n @Prop() readonly connectCallback!: (\n data: GXServerConnectionData\n ) => Promise<FormSubmitResult>;\n\n /**\n * Initial user values ​​for the case in which the user returns to the login modal after successful authentication.\n */\n @Prop() readonly defaultConnectionData?: GXServerConnectionData;\n\n /**\n * true if the user should be allowed to manually enter a server URL.\n */\n @Prop() readonly enableCustomServer: boolean = false;\n\n /**\n * Array of cataloged server URLs to be displayed in the combo.\n */\n @Prop() readonly serverUrls: string[];\n @Watch(\"serverUrls\")\n serverUrlsChanged(newServerUrls: string[]) {\n if (newServerUrls?.length) {\n this.serverUrlsComboBoxModel =\n mapServerUrlsToComboBoxModel(newServerUrls);\n }\n }\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n this.#init();\n }\n\n async componentDidLoad() {\n this.#initializeValidatableControls();\n }\n\n #cancelClickHandler = () => {\n this.cancelCallback();\n };\n\n #connectClickHandler = async () => {\n this.connectCallback(this.gxServerConnectionData).then(\n (formSubmitResult: FormSubmitResult) => {\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\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 #init = () => {\n this.authenticationTypesChanged(this.authenticationTypes);\n this.serverUrlsChanged(this.serverUrls);\n // set initial values:\n // server url\n this.gxServerConnectionData.serverUrl =\n this.defaultConnectionData?.serverUrl ||\n this.serverUrlsComboBoxModel[0]?.value;\n // authentication type\n this.gxServerConnectionData.authenticationType = {\n id:\n (this.defaultConnectionData?.authenticationType.id as string) ||\n this.authenticationTypesComboBoxModel[0]?.value,\n name:\n (this.defaultConnectionData?.authenticationType.name as string) ||\n this.authenticationTypesComboBoxModel[0]?.caption\n };\n\n // user name\n this.gxServerConnectionData.userName = this.defaultConnectionData?.userName;\n this.gxServerConnectionData.userPassword =\n this.defaultConnectionData?.userPassword;\n };\n\n #initializeValidatableControls = () => {\n // populate #controlsValidation with the controls that could have errors.\n const validatableControls: HTMLElement[] = [\n this.#usernameRef,\n this.#passwordRef,\n this.#serverUrlRef\n ];\n validatableControls.forEach(validatableControl => {\n if (validatableControl.id) {\n this.validatableControls.set(validatableControl.id, {\n reference: validatableControl,\n hasError: false,\n message: undefined\n });\n }\n });\n };\n\n // handlers that update this.gxServerConnectionData:\n #serverUrlInputEventHandler = (event: CustomEvent<string> | InputEvent) => {\n this.gxServerConnectionData.serverUrl = event.detail as string;\n };\n #authenticationInputEventHandler = (\n event: CustomEvent<string> | InputEvent\n ) => {\n const authenticationTypeId = event.detail as string;\n const authenticationTypeIndex = this.authenticationTypes.findIndex(\n authType => {\n return authType.id === authenticationTypeId;\n }\n );\n const authenticationTypeName =\n this.authenticationTypes[authenticationTypeIndex].name;\n\n this.gxServerConnectionData.authenticationType = {\n id: authenticationTypeId,\n name: authenticationTypeName\n };\n };\n #usernameInputEventHandler = (event: CustomEvent<string> | InputEvent) => {\n this.gxServerConnectionData.userName = event.detail as string;\n };\n #passwordInputEventHandler = (event: CustomEvent<string> | InputEvent) => {\n this.gxServerConnectionData.userPassword = event.detail as string;\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <section class=\"section\">\n <div class=\"main field-group spacing-body\">\n <div\n // server urls\n class=\"field field-block server-url\"\n >\n <label class=\"label\" htmlFor=\"server-url\">\n {this.#componentLocale.main.serverURLLabel}\n </label>\n <ch-combo-box-render\n id=\"server-url\"\n class=\"combo-box\"\n accessibleName=\"Server Url\"\n model={this.serverUrlsComboBoxModel}\n placeholder=\"Select a server URL\"\n value={this.gxServerConnectionData?.serverUrl}\n onChange={this.#serverUrlInputEventHandler}\n suggest={this.enableCustomServer}\n suggestOptions={{\n alreadyProcessed: false,\n autoExpand: false,\n hideMatchesAndShowNonMatches: false,\n highlightMatchedItems: false,\n matchCase: false,\n regularExpression: false,\n renderActiveItemIconOnExpand: true,\n strict: false\n }}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#serverUrlRef = el as HTMLChComboBoxRenderElement)\n }\n ></ch-combo-box-render>\n {this.#evaluateTooltipRender(this.#serverUrlRef)}\n </div>\n\n <div\n // authentication types\n class=\"field field-block authentication-type\"\n >\n <label class=\"label\" htmlFor=\"authentication-type\">\n {this.#componentLocale.main.authenticationTypeLabel}\n </label>\n <ch-combo-box-render\n id=\"authentication-type\"\n class=\"combo-box\"\n accessibleName=\"Authentication Types\"\n model={this.authenticationTypesComboBoxModel}\n placeholder=\"Select an authentication type\"\n value={this.gxServerConnectionData?.authenticationType.id}\n onInput={this.#authenticationInputEventHandler}\n ></ch-combo-box-render>\n </div>\n\n <div\n // username\n class=\"field field-block user-name\"\n >\n <label class=\"label\" htmlFor=\"username\">\n {this.#componentLocale.main.usernameLabel}\n </label>\n <ch-edit\n type=\"text\"\n id=\"username\"\n class=\"input\"\n value={this.gxServerConnectionData?.userName}\n onInput={this.#usernameInputEventHandler}\n ref={(el: HTMLChEditElement) =>\n (this.#usernameRef = el as HTMLChEditElement)\n }\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#usernameRef)}\n </div>\n\n <div\n // user password\n class=\"field field-block user-password\"\n >\n <label class=\"label\" htmlFor=\"password\">\n {this.#componentLocale.main.passwordLabel}\n </label>\n <ch-edit\n type=\"password\"\n id=\"password\"\n class=\"input\"\n value={this.gxServerConnectionData?.userPassword}\n onInput={this.#passwordInputEventHandler}\n ref={(el: HTMLChEditElement) =>\n (this.#passwordRef = el as HTMLChEditElement)\n }\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#passwordRef)}\n </div>\n </div>\n\n <footer class=\"control-footer-with-border spacing-body\">\n <div class=\"buttons-spacer\">\n <button\n // cancel button\n class=\"button-secondary\"\n onClick={this.#cancelClickHandler}\n >\n {this.#componentLocale.footer.cancelButtonCaption}\n </button>\n\n <button\n // connect button\n class=\"button-primary\"\n onClick={this.#connectClickHandler}\n >\n {this.#componentLocale.footer.connectButtonCaption}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type GXServerConnectionData = {\n authenticationType: AuthenticationType;\n serverUrl: string;\n userName: string;\n userPassword: string;\n};\n\nexport type AuthenticationType = {\n id: string;\n name: string;\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["mapTypeCategoryDataToActionListModel","categories","map","category","id","type","additionalInformation","center","imgSrc","icon","undefined","caption","name","part","mapTypeDataToActionListModel","types","selectedCategoryId","selectedTypeId","imageSrc","selected","sortActionListDefault","subModel","newObjectCss","CSS_BUNDLES","GxIdeNewObject","_GxIdeNewObject_componentLocale","set","this","_GxIdeNewObject_shortcutsSrc","getAssetPath","_GxIdeNewObject_categoriesActionListEl","_GxIdeNewObject_chShortcutsEl","_GxIdeNewObject_descriptionEl","_GxIdeNewObject_descriptionModifiedByUser","_GxIdeNewObject_moduleFolderEl","_GxIdeNewObject_nameEl","_GxIdeNewObject_nameModifiedByUser","_GxIdeNewObject_cancelCallbackHandler","async","cancelCallback","_GxIdeNewObject_categoryOnSelectionChangedHandler","selectionEvent","selection","detail","length","selectedCategory","typeCategories","find","item","selectedType","selectedTypeMap","get","_GxIdeNewObject_createCallbackHandler","nameValidation","validateNameCallback","__classPrivateFieldGet","value","_GxIdeNewObject_validateNameHandler","call","data","typeId","description","moduleId","result","createCallback","_GxIdeNewObject_descriptionValueHandler","suggestDescriptionCallback","_GxIdeNewObject_getNameSuggestion","suggestNameCallback","suggestedName","replace","_GxIdeNewObject_getDescriptionSuggestion","suggestedDescription","_GxIdeNewObject_updateSuggestions","_GxIdeNewObject_init","defaultTypeFound","_GxIdeNewObject_setDefaultType","defaultTypeId","_GxIdeNewObject_onBlurNameHandler","_GxIdeNewObject_onInputDescriptionHandler","e","__classPrivateFieldSet","_GxIdeNewObject_onInputNameHandler","_GxIdeNewObject_onNameValueChangedHandler","_GxIdeNewObject_renderModuleFolder","hasModule","hasFolder","labelDescription","moduleFolder","moduleOnly","folderOnly","h","class","htmlFor","labelPosition","parent","defaultValue","defaultParent","selectEntityCallback","selectModuleCallback","ref","el","found","outerLoop","i","j","loopTypeId","_GxIdeNewObject_setSelectedCategoryOnActionList","updateItemProperties","_GxIdeNewObject_typeChangedHandler","nameValidationErrorMessage","Map","typeCategoriesChanged","newValue","typeCategoriesActionListModel","connectedCallback","componentWillLoad","Locale","getComponentStrings","_GxIdeNewObject_instances","_GxIdeNewObject_initializeSelectedTypeMap","componentDidLoad","suspendShortcuts","suspend","render","Host","model","src","categorySelectionTitle","sortItemsCallback","onSelectedItemsChange","typeSelectionTitleSuffix","typeSelectionTitle","objectName","autoFocus","input","placeholder","onChange","onInput","onBlur","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","objectDescription","onClick","footer","btnCancel","disabled","btnCreate","forEach"],"sources":["src/components/new-object/helpers.tsx","src/common/chameleon-helpers.ts","src/components/new-object/new-object.scss?tag=gx-ide-new-object&encapsulation=shadow","src/components/new-object/new-object.tsx"],"sourcesContent":["import { ActionListModel } from \"@genexus/chameleon-controls-library\";\nimport { TypeCategoryData } from \"../..\";\nimport { TypeData } from \"./new-object\";\n\nexport type ChCheckboxArray = HTMLChCheckboxElement[] | null;\n\nexport const mapTypeCategoryDataToActionListModel = (\n categories: TypeCategoryData[]\n): ActionListModel => {\n return categories.map(category => {\n return {\n id: category.id,\n type: \"actionable\",\n additionalInformation: {\n \"stretch-start\": {\n center: [{ imgSrc: category.icon || undefined }]\n }\n },\n caption: category.name,\n part: `category-${category.id}`\n };\n });\n};\n\nexport const mapTypeDataToActionListModel = (\n types: TypeData[],\n selectedCategoryId: string,\n selectedTypeId?: string\n): ActionListModel => {\n return types.map(type => {\n return {\n id: `${type.id}`,\n type: \"actionable\",\n imageSrc: \"objects/design\",\n selected: selectedTypeId === type.id,\n additionalInformation: {\n \"stretch-start\": {\n center: [{ imgSrc: type.icon }]\n }\n },\n caption: type.name,\n part: `type-${selectedCategoryId}-${type.id}`\n };\n });\n};\n","import { ActionListModel } from \"@genexus/chameleon-controls-library/dist/types/components/action-list/types\";\n\n/**\n * Order the items in the same order as they come.\n */\nexport const sortActionListDefault = (subModel: ActionListModel) => {\n return subModel;\n};\n",":host {\n display: grid;\n block-size: 100%;\n}\n\n.main {\n display: grid;\n grid-template-rows: 1fr max-content max-content;\n}\n.categories-types-layout {\n grid-template-columns: 1fr 1fr;\n}\n.api-description-layout {\n padding-block: calc(\n var(--content-block-spacing) * 2\n ); // WA until we define a class for internal spacing.\n display: grid;\n grid-template:\n \"api-description-title api-description-title\"\n \"api-name-label api-name-control\"\n \"api-description-label api-description-control\"\n \"api-module-label api-module-control\";\n grid-template-columns: max-content 1fr;\n}\n.api-description-title {\n grid-area: api-description-title;\n}\n.api-name-label {\n grid-area: api-name-label;\n}\n.api-name-control {\n grid-area: api-name-control;\n}\n.api-description-label {\n grid-area: api-description-label;\n}\n.api-description-control {\n grid-area: api-description-control;\n}\n.api-module-label {\n grid-area: api-module-label;\n}\n.api-module-control {\n grid-area: api-module-control;\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Event,\n EventEmitter,\n Element,\n State,\n Watch,\n getAssetPath,\n Method\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { config } from \"../../common/config\";\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport { EntityData } from \"../../common/types\";\nimport {\n ActionListItemModelExtended,\n ActionListModel\n} from \"@genexus/chameleon-controls-library\";\nimport {\n mapTypeCategoryDataToActionListModel,\n mapTypeDataToActionListModel\n} from \"./helpers\";\n\nimport { sortActionListDefault } from \"../../common/chameleon-helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/edit\",\n \"components/icon\",\n \"components/tooltip\",\n \"components/list-box\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\"\n];\n\n@Component({\n tag: \"gx-ide-new-object\",\n styleUrl: \"new-object.scss\",\n shadow: { delegatesFocus: true },\n assetsDirs: [\"gx-ide-assets/new-object\"]\n})\nexport class GxIdeNewObject {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n #shortcutsSrc = getAssetPath(`./gx-ide-assets/new-object/shortcuts.json`);\n\n @Element() el: HTMLGxIdeNewObjectElement;\n\n /* References needed to collect data on \"Create\" button submit */\n #categoriesActionListEl: HTMLChActionListRenderElement;\n #chShortcutsEl: HTMLChShortcutsElement;\n #descriptionEl!: HTMLChEditElement;\n #descriptionModifiedByUser = false;\n #moduleFolderEl!: HTMLGxIdeEntitySelectorElement;\n #nameEl!: HTMLChEditElement;\n #nameModifiedByUser = false;\n\n /**\n * Description of the new object\n */\n @State() description: string = undefined;\n\n /**\n * Name of the new object\n */\n @State() name: string = undefined;\n @State() nameValidationErrorMessage: string;\n @State() selectedCategory: TypeCategoryData | null;\n @State() selectedType: TypeData | null;\n // representations of TypeCategoryData[] as ComboBoxModel.\n @State() typeCategoriesActionListModel: ActionListModel = [];\n @State() typesActionListModel: ActionListModel = [];\n\n @State() selectedTypeMap: Map<string, string> = new Map();\n\n /**\n * Allows you to define the type selected by default when instantiating the dialog.\n * Represented by the type identifier.\n */\n @Prop() readonly defaultTypeId: string;\n\n /**\n * Default value for the Module/Folder field.\n */\n @Prop() readonly defaultParent: EntityData;\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * Callback invoked when user wants to cancel object creation\n */\n @Prop() readonly cancelCallback: CancelCallback;\n\n /**\n * Callback invoked when user wants to confirm object creation\n */\n @Prop() readonly createCallback: CreateCallback;\n\n /**\n * Applies a shadow all around\n */\n @Prop() readonly shadow = false;\n\n /**\n * Array containing category list and its corresponding types\n */\n @Prop({ mutable: true }) typeCategories!: TypeCategoryData[];\n @Watch(\"typeCategories\")\n typeCategoriesChanged(newValue: TypeCategoryData[]) {\n if (newValue?.length) {\n this.typeCategoriesActionListModel = mapTypeCategoryDataToActionListModel(\n this.typeCategories\n );\n }\n }\n\n /**\n * Current value for Module/Folder\n */\n @Prop() readonly parent: EntityData;\n\n /**\n * Callback invoked when the action is executed on the Module/Folder filter\n * (button '...'). It returns the information of the selected object (id and\n * name) or 'undefined' if it was canceled.\n */\n @Prop() readonly selectModuleCallback: SelectModuleCallback;\n\n /**\n * Callback invoked when you must validate a name. Returns an error message or\n * 'undefined' if the name is not valid.\n */\n @Prop() readonly validateNameCallback: ValidateNameCallback;\n\n /**\n * Callback to suggest a name when creating an object from another object.\n * Returns the suggested name or undefined if not applicable.\n */\n @Prop() readonly suggestNameCallback?: SuggestNameCallback;\n\n /**\n * Callback to suggest a description when creating an object from another object.\n * Returns the suggested description or undefined if not applicable.\n */\n @Prop() readonly suggestDescriptionCallback?: SuggestDescriptionCallback;\n\n /**\n * This event emits the 'cancel' event\n */\n @Event() cancel: EventEmitter<boolean>;\n\n /**\n * This event emm=its the data needed to create a new object\n */\n @Event() create: EventEmitter<NewObjectData>;\n\n /**\n * This event is triggered after a validation of the object name is made.\n * Returns 'undefined' if it's valid, otherwise an error message.\n */\n @Event() validateName: EventEmitter<string | undefined>;\n\n connectedCallback() {\n // this.#validateInitialName();\n }\n\n async componentWillLoad() {\n await this.#init();\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.typeCategoriesChanged(this.typeCategories);\n this.#initializeSelectedTypeMap();\n }\n\n componentDidLoad() {\n this.#setSelectedCategoryOnActionList();\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.#chShortcutsEl.suspend = true;\n } else {\n this.#chShortcutsEl.suspend = false;\n }\n }\n\n // - - - - - - - - - - -\n\n #cancelCallbackHandler = async (): Promise<void> => {\n await this.cancelCallback();\n };\n\n #categoryOnSelectionChangedHandler = (\n selectionEvent: CustomEvent<ActionListItemModelExtended[]>\n ): void => {\n const selection = selectionEvent.detail;\n if (selection.length > 0) {\n const selectedCategory = this.typeCategories.find(\n category => category.id === selection[0].item.id\n );\n if (selectedCategory) {\n this.selectedCategory = selectedCategory;\n if (selectedCategory.types.length > 0) {\n this.selectedType = selectedCategory.types.find(\n type => type.id === this.selectedTypeMap.get(selectedCategory.id)\n );\n }\n }\n }\n };\n\n #createCallbackHandler = async (): Promise<void> => {\n // validate name first\n const nameValidation: string | undefined = await this.validateNameCallback(\n this.#nameEl.value\n );\n if (!!nameValidation) {\n // name is invalid\n this.#validateNameHandler(nameValidation);\n return;\n }\n\n const data: NewObjectData = {\n typeId: this.selectedType?.id,\n name: this.#nameEl.value,\n description: !this.#descriptionModifiedByUser\n ? undefined\n : this.#descriptionEl.value,\n moduleId: this.#moduleFolderEl?.value?.id\n };\n const result = await this.createCallback(data);\n this.#validateNameHandler(result);\n };\n\n #descriptionValueHandler = () => {\n if (this.#nameModifiedByUser || this.#descriptionModifiedByUser) {\n return this.#descriptionEl.value;\n } else {\n // First try to get suggested description if callback exists\n if (this.suggestDescriptionCallback) {\n return this.description ?? this.selectedType.name;\n }\n return this.selectedType.name;\n }\n };\n\n /**\n * Gets the suggested name based on the context\n * @param selectedType The currently selected type\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #getNameSuggestion = async (selectedType: TypeData) => {\n if (this.suggestNameCallback) {\n const suggestedName = await this.suggestNameCallback();\n if (suggestedName) {\n return suggestedName.replace(/\\s/g, \"\");\n }\n }\n return selectedType.name.replace(/\\s/g, \"\");\n };\n\n /**\n * Gets the suggested description based on the context\n * @param selectedType The currently selected type\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #getDescriptionSuggestion = async (selectedType: TypeData) => {\n if (this.suggestDescriptionCallback) {\n const suggestedDescription = await this.suggestDescriptionCallback();\n if (suggestedDescription) {\n return suggestedDescription;\n }\n }\n return selectedType.name;\n };\n\n /**\n * Updates both name and description suggestions\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #updateSuggestions = async () => {\n if (!this.selectedType) {\n return;\n }\n\n if (!this.#nameModifiedByUser) {\n this.name = await this.#getNameSuggestion(this.selectedType);\n }\n\n if (!this.#descriptionModifiedByUser) {\n this.description = await this.#getDescriptionSuggestion(\n this.selectedType\n );\n }\n };\n\n /**\n * This method defines the initial selected category and type, and it then\n * initializes the name and description values.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #init = async () => {\n const defaultTypeFound = this.#setDefaultType(this.defaultTypeId);\n if (!defaultTypeFound) {\n this.selectedCategory = this.typeCategories[0];\n this.selectedType = this.selectedCategory.types[0];\n }\n\n await this.#updateSuggestions();\n };\n\n /**\n * Initializes the selectedTypeMap with the defaultTypeId if it exists, otherwise\n * it initializes the selectedTypeMap with the first type of each category.\n */\n // eslint-disable-next-line @stencil-community/own-methods-must-be-private\n #initializeSelectedTypeMap() {\n this.typeCategories.forEach(category => {\n if (this.defaultTypeId && category.id === this.selectedCategory.id) {\n this.selectedTypeMap.set(category.id, this.selectedType.id);\n } else {\n this.selectedTypeMap.set(category.id, category.types[0].id);\n }\n });\n }\n\n #onBlurNameHandler = async () => {\n if (this.#nameEl.value) {\n const result: string | undefined = await this.validateNameCallback(\n this.#nameEl.value\n );\n this.#validateNameHandler(result);\n }\n };\n\n #onInputDescriptionHandler = (e: CustomEvent<string>) => {\n this.description = e.detail;\n this.#descriptionModifiedByUser = true;\n };\n\n #onInputNameHandler = async (e: CustomEvent<any> | InputEvent) => {\n const name = e.detail;\n if (!this.#descriptionModifiedByUser) {\n // Description should be equal to name, unless the description was already\n // modified by the user.\n this.#descriptionEl.value = name;\n }\n this.#nameModifiedByUser = true;\n };\n\n #onNameValueChangedHandler = async (e: CustomEvent<string>) => {\n const name = e.detail;\n if (name) {\n const result: string | undefined = await this.validateNameCallback(name);\n this.#validateNameHandler(result);\n }\n };\n\n #renderModuleFolder = () => {\n if (this.selectedType.hasModule || this.selectedType.hasFolder) {\n let labelDescription = this.#componentLocale.moduleFolder;\n if (!this.selectedType.hasFolder) {\n labelDescription = this.#componentLocale.moduleOnly;\n } else if (!this.selectedType.hasModule) {\n labelDescription = this.#componentLocale.folderOnly;\n }\n return [\n <label\n // Module/folder\n class=\"label api-module-label\"\n htmlFor=\"module\"\n >\n {labelDescription}\n </label>,\n <gx-ide-entity-selector\n id=\"module\"\n class=\"api-module-control\"\n part=\"module\"\n labelPosition=\"none\"\n value={this.parent}\n defaultValue={this.defaultParent}\n selectEntityCallback={this.selectModuleCallback}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#moduleFolderEl = el as HTMLGxIdeEntitySelectorElement)\n }\n ></gx-ide-entity-selector>\n ];\n }\n return null;\n };\n\n #setDefaultType = (typeId: string | undefined): boolean => {\n if (!typeId) {\n return false;\n }\n let found = false;\n outerLoop: for (let i = 0; i < this.typeCategories.length; i++) {\n for (let j = 0; j < this.typeCategories[i].types.length; j++) {\n const loopTypeId = this.typeCategories[i].types[j].id;\n if (loopTypeId === typeId) {\n this.selectedCategory = this.typeCategories[i];\n this.selectedType = this.typeCategories[i].types[j];\n found = true;\n break outerLoop;\n }\n }\n }\n return found;\n };\n\n #setSelectedCategoryOnActionList = () => {\n if (this.selectedCategory) {\n // update model by setting the selected category\n this.#categoriesActionListEl.updateItemProperties(\n this.selectedCategory.id,\n {\n selected: true,\n type: \"actionable\"\n }\n );\n }\n };\n\n #typeChangedHandler = async (\n selectionEvent: CustomEvent<ActionListItemModelExtended[]>\n ) => {\n const selection = selectionEvent.detail;\n if (selection.length > 0) {\n this.selectedType = this.selectedCategory.types.find(\n type => type.id === selection[0].item.id\n );\n this.selectedTypeMap.set(this.selectedCategory.id, this.selectedType.id);\n\n await this.#updateSuggestions();\n }\n };\n\n /**\n * If the parameter is undefined, it means the name is valid. Otherwise, if it\n * receives a string, it indicates that the name is not valid. The string is the\n * error message to display.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #validateNameHandler = (result: string | undefined): void => {\n this.nameValidationErrorMessage = result;\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n\n <section class=\"main\">\n <section class=\"field-group categories-types-layout spacing-body-inline spacing-body-block-start\">\n <div class=\"field field-block\">\n <label class=\"label\">\n {this.#componentLocale.categorySelectionTitle}\n </label>\n <ch-action-list-render\n // #select a category\n // TODO: The \"scrollable\" class is a WA since the action-list currently does not support scrollbar customization\n class=\"list-box\"\n selection=\"single\"\n model={this.typeCategoriesActionListModel}\n sortItemsCallback={sortActionListDefault}\n onSelectedItemsChange={this.#categoryOnSelectionChangedHandler}\n ref={(el: HTMLChActionListRenderElement) =>\n (this.#categoriesActionListEl =\n el as HTMLChActionListRenderElement)\n }\n ></ch-action-list-render>\n </div>\n\n <div class=\"field field-block\">\n <label class=\"label\">\n {this.selectedCategory.name\n ? `${this.selectedCategory.name} ${\n this.#componentLocale.typeSelectionTitleSuffix\n }`\n : this.#componentLocale.typeSelectionTitle}\n </label>\n <ch-action-list-render\n // #data management types\n // TODO: The \"scrollable\" class is a WA since the action-list currently does not support scrollbar customization\n class=\"list-box\"\n selection=\"single\"\n sortItemsCallback={sortActionListDefault}\n model={mapTypeDataToActionListModel(\n this.selectedCategory.types,\n this.selectedCategory.id,\n this.selectedType.id\n )}\n onSelectedItemsChange={this.#typeChangedHandler}\n ></ch-action-list-render>\n </div>\n </section>\n\n <section class=\"api-description-layout field-group spacing-body-inline\">\n <h2\n // API Description\n class=\"text-align-center api-description-title subtitle-regular-xs\t\"\n >\n {this.selectedType?.description}\n </h2>\n\n <label\n // Name\n class=\"label api-name-label\"\n htmlFor=\"name\"\n >\n {this.#componentLocale.objectName}\n </label>\n <div>\n <ch-edit\n autoFocus\n class={{\n \"input\": true,\n \"api-name-control\": true,\n \"input-error\": !!this.nameValidationErrorMessage\n }}\n placeholder=\"Name\"\n value={this.name}\n ref={(el: HTMLChEditElement) =>\n (this.#nameEl = el as HTMLChEditElement)\n }\n onChange={this.#onNameValueChangedHandler}\n onInput={this.#onInputNameHandler as any}\n onBlur={this.#onBlurNameHandler}\n part=\"name\"\n ></ch-edit>\n {this.nameValidationErrorMessage && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={this.#nameEl as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.nameValidationErrorMessage}\n </ch-tooltip>\n )}\n </div>\n\n <label\n // Description\n class=\"label api-description-label\"\n htmlFor=\"description\"\n >\n {this.#componentLocale.objectDescription}\n </label>\n <ch-edit\n autoFocus\n class=\"input api-description-control\"\n placeholder=\"Description\"\n value={this.#descriptionValueHandler()}\n // TODO: toolTip={config.tooltip}\n ref={(el: HTMLChEditElement) =>\n (this.#descriptionEl = el as HTMLChEditElement)\n }\n onInput={this.#onInputDescriptionHandler as any}\n part=\"description\"\n ></ch-edit>\n\n {this.#renderModuleFolder()}\n </section>\n <footer class=\"footer control-footer-with-border spacing-body-inline spacing-body-block-end \">\n <div class=\"buttons-spacer\">\n <button\n // cancel\n class=\"button-secondary\"\n onClick={this.#cancelCallbackHandler}\n part=\"button button-cancel\"\n >\n {this.#componentLocale.footer.btnCancel}\n </button>\n\n <button\n // create\n class=\"button-primary\"\n onClick={this.#createCallbackHandler}\n disabled={!!this.nameValidationErrorMessage}\n part=\"button button-create\"\n >\n {this.#componentLocale.footer.btnCreate}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport interface NewObjectData {\n typeId: string;\n name: string;\n description: string | undefined;\n moduleId: string;\n}\n\nexport type ValidateNameCallback = (\n name: string\n) => Promise<string | undefined>;\n\nexport type SelectModuleCallback = () => Promise<EntityData | undefined>;\n\nexport type CreateCallback = (\n data: NewObjectData\n) => Promise<string | undefined>;\n\nexport type CancelCallback = () => Promise<void>;\n\nexport type TypeCategoryData = {\n id: string;\n name: string;\n icon: string;\n types: TypeData[];\n};\n\nexport type TypeData = {\n id: string;\n name: string;\n icon: string;\n hasModule: boolean;\n hasFolder: boolean;\n description: string;\n};\n\nexport type SuggestNameCallback = () => Promise<string | undefined>;\nexport type SuggestDescriptionCallback = () => Promise<string | undefined>;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["ASSETS_FOLDER","COMPONENT_PREFIX","DEFAULT_LANGUAGE","LANGS_FOLDER","LANG_PREFIX","LANG_EXTENSION","Locale","getLang","lang","document","getElementsByTagName","getAttribute","valueOf","getStrings","component","folder","path","Promise","resolve","reject","fetch","then","langFile","ok","json","getComponentStrings","element","tagName","toLowerCase","replace","format","text","parms","ret","forEach","parm","indexOf","commonAssetsPath"],"sources":["src/common/locale.ts"],"sourcesContent":["import { Build } from \"@stencil/core\";\n\nconst ASSETS_FOLDER = \"gx-ide-assets/\";\nconst COMPONENT_PREFIX = \"gx-ide-\";\nconst DEFAULT_LANGUAGE = \"en\";\nconst LANGS_FOLDER = \"langs/\";\nconst LANG_PREFIX = \".lang.\";\nconst LANG_EXTENSION = \".json\";\n\nexport class Locale {\n public static commonAssetsPath = \"\";\n\n private static getLang(): string {\n const lang =\n document\n .getElementsByTagName(\"html\")[0]\n .getAttribute(\"lang\")\n ?.valueOf() ?? DEFAULT_LANGUAGE;\n\n // Normalize en-US\n return lang === \"en-US\" ? \"en\" : lang;\n }\n\n private static getStrings(\n component: string,\n lang: string,\n folder: string\n ): Promise<any> {\n if (folder === \"\") {\n folder = `${component}/`;\n }\n const path =\n `${ASSETS_FOLDER}${folder}${LANGS_FOLDER}${component}${LANG_PREFIX}${lang}${LANG_EXTENSION}` as const;\n\n return new Promise((resolve, reject): void => {\n fetch(Build.isTesting ? \"/build/\" + path : path).then(langFile => {\n if (langFile.ok) {\n resolve(langFile.json());\n } else {\n reject();\n }\n }, reject);\n });\n }\n\n public static async getComponentStrings(\n element: HTMLElement,\n folder = \"\",\n component = \"\"\n ): Promise<any> {\n if (component === \"\") {\n component = element.tagName.toLowerCase().replace(COMPONENT_PREFIX, \"\");\n }\n const lang = Locale.getLang();\n return await Locale.getStrings(component, lang, folder);\n }\n\n public static format(text: string, parms: string[]): string {\n let ret: string = text;\n parms.forEach(parm => {\n ret = ret.replace(`{${parms.indexOf(parm)}}`, parm);\n });\n return ret;\n }\n}\n"],"mappings":"AAEA,MAAMA,IAAgB;;AACtB,MAAMC,IAAmB;;AACzB,MAAMC,IAAmB;;AACzB,MAAMC,IAAe;;AACrB,MAAMC,IAAc;;AACpB,MAAMC,IAAiB;;MAEVC;EAGH,cAAOC;IACb,MAAMC,IACJC,SACGC,qBAAqB,QAAQ,GAC7BC,aAAa,SACZC,aAAaV;;QAGnB,OAAOM,MAAS,UAAU,OAAOA;;EAG3B,iBAAOK,CACbC,GACAN,GACAO;IAEA,IAAIA,MAAW,IAAI;MACjBA,IAAS,GAAGD;;IAEd,MAAME,IACJ,GAAGhB,IAAgBe,IAASZ,IAAeW,IAAYV,IAAcI,IAAOH;IAE9E,OAAO,IAAIY,SAAQ,CAACC,GAASC;MAC3BC,MAA2CJ,GAAMK,MAAKC;QACpD,IAAIA,EAASC,IAAI;UACfL,EAAQI,EAASE;eACZ;UACLL;;UAEDA;AAAO;;EAIP,gCAAaM,CAClBC,GACAX,IAAS,IACTD,IAAY;IAEZ,IAAIA,MAAc,IAAI;MACpBA,IAAYY,EAAQC,QAAQC,cAAcC,QAAQ5B,GAAkB;;IAEtE,MAAMO,IAAOF,EAAOC;IACpB,aAAaD,EAAOO,WAAWC,GAAWN,GAAMO;;EAG3C,aAAOe,CAAOC,GAAcC;IACjC,IAAIC,IAAcF;IAClBC,EAAME,SAAQC;MACZF,IAAMA,EAAIJ,QAAQ,IAAIG,EAAMI,QAAQD,OAAUA;AAAK;IAErD,OAAOF;;;;AApDK3B,EAAA+B,mBAAmB"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["mapTeamsToComboBoxItemModel","teams","map","team","value","id","caption","name","selectUserTeamCss","COPYRIGHTS_ILLUSTRATION","getAssetPath","ICON_NEXT","CSS_BUNDLES","GxIdeSelectUserTeam","_GxIdeSelectUserTeam_componentLocale","set","this","_GxIdeSelectUserTeam_userTeamsModel","_GxIdeSelectUserTeam_chSelectTeamEl","_GxIdeSelectUserTeam_displayTeamsTransitionTime","_GxIdeSelectUserTeam_continueHandler","async","continueCallback","__classPrivateFieldGet","_GxIdeSelectUserTeam_cancelHandler","cancelCallback","teamsChanged","newTeams","slideIsVisible","setTimeout","length","__classPrivateFieldSet","teamsModelReady","componentWillLoad","Locale","getComponentStrings","el","style","setProperty","toString","componentDidLoad","render","h","Host","model","class","src","alt","slide__main","title","infoMessage","htmlFor","accessibleName","ref","onClick","continueButtonCaption","cancelButtonCaption","show","loaderTitle","loader","description"],"sources":["src/components/select-user-team/helpers.tsx","src/components/select-user-team/select-user-team.scss?tag=gx-ide-select-user-team&encapsulation=shadow","src/components/select-user-team/select-user-team.tsx"],"sourcesContent":["import { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\nimport { TeamData } from \"./select-user-team\";\n\nexport const mapTeamsToComboBoxItemModel = (\n teams: TeamData[]\n): ComboBoxItemModel[] => {\n return teams?.map(team => {\n return {\n value: team.id,\n caption: team.name\n };\n });\n};\n",":host {\n display: grid;\n container-type: inline-size;\n container-name: host-container;\n block-size: 100%;\n inline-size: 100%;\n align-items: center;\n justify-content: center;\n padding: var(--mer-spacing--xl);\n}\n\n.slide {\n display: grid;\n grid-template-columns: 1fr 1fr;\n block-size: 100%;\n max-block-size: 700px;\n max-inline-size: 1100px;\n background-color: var(--mer-surface__elevation--01);\n border-radius: var(--mer-spacing--md);\n overflow: hidden;\n\n &__illustration {\n overflow: hidden;\n object-fit: cover;\n object-position: left;\n block-size: 100%;\n inline-size: 100%;\n }\n\n &__main {\n display: grid;\n block-size: 100%;\n inline-size: 100%;\n padding: var(--mer-spacing--3xl);\n transform: translateY(var(--mer-spacing--2xs));\n transition: var(--display-teams-transtion-time) all;\n opacity: 0;\n\n position: relative;\n\n &--visible {\n transform: translateY(0);\n opacity: 1;\n }\n }\n\n &__main-container {\n display: grid;\n place-self: center;\n gap: var(--mer-spacing--lg);\n max-inline-size: 480px;\n }\n\n &__main-header {\n display: grid;\n gap: var(--mer-spacing--lg);\n }\n\n &__main-title {\n display: flex;\n flex-direction: column;\n font-size: var(--mer-font__size--xl);\n font-weight: var(--mer-font__weight--semi-bold);\n letter-spacing: 0.02em;\n color: var(--mer-text__on-surface);\n }\n\n &__main-description {\n display: grid;\n gap: var(--mer-spacing--2xl);\n font-size: var(--mer-font__size--sm);\n font-weight: var(--mer-font__weight--light);\n line-height: var(--mer-line-height--spaced);\n color: var(--mer-text__complementary);\n }\n}\n\n.terms-conditions {\n text-decoration: underline;\n}\n\n.teams-list {\n inline-size: 100%;\n max-inline-size: 400px;\n}\n\n.buttons-container {\n display: flex;\n gap: var(--mer-spacing--md);\n}\n\n.continue-btn,\n.cancel-btn {\n flex: 1;\n}\n\n@container host-container (max-width: 768px) {\n .slide {\n grid-template-columns: 1fr 2fr;\n }\n}\n\n@container host-container (max-width: 640px) {\n .slide {\n grid-template-columns: 1fr 5fr;\n }\n}\n","// Stencil\nimport {\n Component,\n Host,\n h,\n Prop,\n State,\n Watch,\n Element,\n getAssetPath\n} from \"@stencil/core\";\n// Other Libraries\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\n// Custom Imports\nimport { Locale } from \"../../common/locale\";\nimport { mapTeamsToComboBoxItemModel } from \"./helpers\";\n\nconst COPYRIGHTS_ILLUSTRATION = getAssetPath(\n `./gx-ide-assets/welcome-page/images/copyrights-illustration.png`\n);\nconst ICON_NEXT = getAssetPath(\n `./gx-ide-assets/welcome-page/images/icon-next.svg`\n);\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"components/button\",\n \"components/combo-box\"\n];\n\n@Component({\n tag: \"gx-ide-select-user-team\",\n styleUrl: \"select-user-team.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/select-user-team\"]\n})\nexport class GxIdeSelectUserTeam {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n // Select User Team References :\n #userTeamsModel: ComboBoxItemModel[] = [];\n #chSelectTeamEl: HTMLChComboBoxRenderElement;\n #displayTeamsTransitionTime: number = 100;\n\n @Element() el: HTMLGxIdeSelectUserTeamElement;\n\n /**\n * Defines if the main slide is visible or not. Used for smooth transitions between slides.\n */\n @State() slideIsVisible: boolean = false;\n\n /**\n * Defines if the team model is redy to be rendered.\n */\n @State() teamsModelReady: boolean = false;\n\n /**\n * Callback executed when the user clicks the 'Cancel' button\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * Callback executed when the user clicks the 'Continue' button\n */\n @Prop() readonly continueCallback!: (teamId: string) => Promise<void>;\n\n /**\n * Array that contains the user's teams\n */\n @Prop() readonly teams!: TeamData[];\n @Watch(\"teams\")\n teamsChanged(newTeams: TeamData[]) {\n this.slideIsVisible = false;\n // switch step\n setTimeout(() => {\n if (newTeams.length) {\n this.#userTeamsModel = mapTeamsToComboBoxItemModel(newTeams);\n this.teamsModelReady = true;\n } else {\n this.teamsModelReady = false;\n }\n }, this.#displayTeamsTransitionTime);\n // show slide\n setTimeout(() => {\n this.slideIsVisible = true;\n }, this.#displayTeamsTransitionTime * 2);\n }\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.teamsChanged(this.teams);\n\n this.el.style.setProperty(\n \"--display-teams-transtion-time\",\n this.#displayTeamsTransitionTime.toString() + \"ms\"\n );\n }\n\n componentDidLoad() {\n this.slideIsVisible = true;\n }\n\n #continueHandler = async () => {\n await this.continueCallback(this.#chSelectTeamEl.value);\n };\n\n #cancelHandler = async () => {\n await this.cancelCallback();\n };\n\n render() {\n return (\n <Host>\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"slide\">\n <img\n src={COPYRIGHTS_ILLUSTRATION}\n class=\"slide__illustration\"\n alt=\"\" // decorative\n />\n\n <div\n class={{\n \"slide__main\": true,\n \"slide__main--visible\": this.slideIsVisible\n }}\n >\n <div class=\"slide__main-container\">\n {this.teamsModelReady ? (\n [\n <header class=\"slide__main-header\">\n <img\n src={ICON_NEXT}\n alt=\"\" // decorative\n />\n <h2\n // Split the title into two spans for better styling\n class=\"slide__main-title\"\n >\n <span>{this.#componentLocale.title}</span>\n </h2>\n </header>,\n <div class=\"slide__select-team-description\">\n <p class=\"body-semi-bold-l\">\n {this.#componentLocale.infoMessage}\n </p>\n </div>,\n <div class=\"field-group\">\n <div class=\"field field-block\">\n <label htmlFor=\"teams\">\n {this.#componentLocale.teams}\n </label>\n <ch-combo-box-render\n id=\"teams\"\n accessibleName=\"Teams\"\n class=\"combo-box teams-list\"\n model={this.#userTeamsModel}\n value={\n this.#userTeamsModel && this.#userTeamsModel[0]?.value\n }\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#chSelectTeamEl =\n el as HTMLChComboBoxRenderElement)\n }\n ></ch-combo-box-render>\n </div>\n </div>,\n <div class=\"buttons-container\">\n <button\n class=\"button-primary continue-btn\"\n onClick={this.#continueHandler}\n >\n {this.#componentLocale.continueButtonCaption}\n </button>\n <button\n class=\"button-secondary cancel-btn\"\n onClick={this.#cancelHandler}\n >\n {this.#componentLocale.cancelButtonCaption}\n </button>\n </div>\n ]\n ) : (\n <gx-ide-loader\n show\n loaderTitle={this.#componentLocale.loader.title}\n description={this.#componentLocale.loader.description}\n ></gx-ide-loader>\n )}\n </div>\n </div>\n </section>\n </Host>\n );\n }\n}\n\nexport type TeamData = {\n id: string;\n name: string;\n};\n"],"mappings":";;;;AAGO,MAAMA,8BACXC,KAEOA,GAAOC,KAAIC,MACT;EACLC,OAAOD,EAAKE;EACZC,SAASH,EAAKI;;;ACTpB,MAAMC,IAAoB;;;;;;;;;;;;;;;;;ACkB1B,MAAMC,IAA0BC,EAC9B;;AAEF,MAAMC,IAAYD,EAChB;;AAEF,MAAME,IAA8B,EAClC,qBACA,oBACA,qBACA;;MASWC,IAAmB;;;;;;;QAK9BC,EAAAC,IAAAC,WAAA;;QAEAC,EAAAF,IAAAC,MAAuC;IACvCE,EAAAH,IAAAC,WAAA;IACAG,EAAAJ,IAAAC,MAAsC;IA4DtCI,EAAAL,IAAAC,OAAmBK;YACXL,KAAKM,iBAAiBC,EAAAP,MAAIE,GAAA,KAAiBd;AAAM;IAGzDoB,EAAAT,IAAAC,OAAiBK;YACTL,KAAKS;AAAgB;0BA1DM;2BAKC;;;;;EAiBpC,YAAAC,CAAaC;IACXX,KAAKY,iBAAiB;;QAEtBC,YAAW;MACT,IAAIF,EAASG,QAAQ;QACnBC,EAAAf,MAAIC,GAAmBjB,4BAA4B2B,IAAS;QAC5DX,KAAKgB,kBAAkB;aAClB;QACLhB,KAAKgB,kBAAkB;;QAExBT,EAAAP,MAAIG,GAAA;;QAEPU,YAAW;MACTb,KAAKY,iBAAiB;AAAI,QACzBL,EAAAP,MAAIG,GAAA,OAA+B;;EAGxC,uBAAMc;IACJF,EAAAf,MAAIF,SAA0BoB,EAAOC,oBAAoBnB,KAAKoB,KAAG;IACjEpB,KAAKU,aAAaV,KAAKf;IAEvBe,KAAKoB,GAAGC,MAAMC,YACZ,kCACAf,EAAAP,MAAIG,GAAA,KAA6BoB,aAAa;;EAIlD,gBAAAC;IACExB,KAAKY,iBAAiB;;EAWxB,MAAAa;IACE,OACEC,EAACC,GAAI,MACHD,EAAA;MAAUE,OAAOhC;QACjB8B,EAAA;MAASG,OAAM;OACbH,EAAA;MACEI,KAAKrC;MACLoC,OAAM;MACNE,KAAI;QAGNL,EAAA;MACEG,OAAO;QACLG,aAAe;QACf,wBAAwBhC,KAAKY;;OAG/Bc,EAAA;MAAKG,OAAM;OACR7B,KAAKgB,kBAAe,EAEjBU,EAAA;MAAQG,OAAM;OACZH,EAAA;MACEI,KAAKnC;MACLoC,KAAI;QAENL,EAAA;;MAEEG,OAAM;OAENH,EAAA,cAAOnB,EAAAP,MAAIF,GAAA,KAAkBmC,UAGjCP,EAAA;MAAKG,OAAM;OACTH,EAAA;MAAGG,OAAM;OACNtB,EAAAP,MAAIF,GAAA,KAAkBoC,eAG3BR,EAAA;MAAKG,OAAM;OACTH,EAAA;MAAKG,OAAM;OACTH,EAAA;MAAOS,SAAQ;OACZ5B,EAAAP,MAAIF,GAAA,KAAkBb,QAEzByC,EAAA;MACErC,IAAG;MACH+C,gBAAe;MACfP,OAAM;MACND,OAAOrB,EAAAP,MAAIC,GAAA;MACXb,OACEmB,EAAAP,MAAIC,GAAA,QAAoBM,EAAAP,MAAIC,GAAA,KAAiB,IAAIb;MAEnDiD,KAAMjB,KACHL,EAAAf,MAAIE,GACHkB,GAAiC;UAK3CM,EAAA;MAAKG,OAAM;OACTH,EAAA;MACEG,OAAM;MACNS,SAAS/B,EAAAP,MAAII,GAAA;OAEZG,EAAAP,MAAIF,GAAA,KAAkByC,wBAEzBb,EAAA;MACEG,OAAM;MACNS,SAAS/B,EAAAP,MAAIQ,GAAA;OAEZD,EAAAP,MAAIF,GAAA,KAAkB0C,0BAK7Bd,EAAA;MACEe,MAAI;MACJC,aAAanC,EAAAP,MAAIF,GAAA,KAAkB6C,OAAOV;MAC1CW,aAAarC,EAAAP,MAAIF,GAAA,KAAkB6C,OAAOC"}