@genexus/genexus-ide-ui 2.1.2 → 2.1.4

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 (583) hide show
  1. package/dist/cjs/gx-ide-about.cjs.entry.js +1 -1
  2. package/dist/cjs/gx-ide-about.cjs.entry.js.map +1 -1
  3. package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js +1 -1
  4. package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js.map +1 -1
  5. package/dist/cjs/gx-ide-bpm-assign-roles.cjs.entry.js +1 -1
  6. package/dist/cjs/gx-ide-bpm-assign-roles.cjs.entry.js.map +1 -1
  7. package/dist/cjs/gx-ide-bpm-export-xpdl.cjs.entry.js +1 -1
  8. package/dist/cjs/gx-ide-bpm-export-xpdl.cjs.entry.js.map +1 -1
  9. package/dist/cjs/gx-ide-bpm-import-files.cjs.entry.js +1 -1
  10. package/dist/cjs/gx-ide-bpm-import-files.cjs.entry.js.map +1 -1
  11. package/dist/cjs/gx-ide-bpm-import-gxpm.cjs.entry.js +1 -1
  12. package/dist/cjs/gx-ide-bpm-import-gxpm.cjs.entry.js.map +1 -1
  13. package/dist/cjs/gx-ide-bpm-objects-selector.cjs.entry.js +1 -1
  14. package/dist/cjs/gx-ide-bpm-objects-selector.cjs.entry.js.map +1 -1
  15. package/dist/cjs/gx-ide-bpm-sync-gam-roles.cjs.entry.js +1 -1
  16. package/dist/cjs/gx-ide-bpm-sync-gam-roles.cjs.entry.js.map +1 -1
  17. package/dist/cjs/gx-ide-bpm-task-documents.cjs.entry.js +1 -1
  18. package/dist/cjs/gx-ide-bpm-task-documents.cjs.entry.js.map +1 -1
  19. package/dist/cjs/gx-ide-bpm-timer-duration.cjs.entry.js +1 -1
  20. package/dist/cjs/gx-ide-bpm-timer-duration.cjs.entry.js.map +1 -1
  21. package/dist/cjs/gx-ide-comments-viewer.cjs.entry.js +1 -1
  22. package/dist/cjs/gx-ide-comments-viewer.cjs.entry.js.map +1 -1
  23. package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js +1 -1
  24. package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js.map +1 -1
  25. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +1 -1
  26. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js.map +1 -1
  27. package/dist/cjs/gx-ide-curl-inspector.cjs.entry.js +1 -1
  28. package/dist/cjs/gx-ide-curl-inspector.cjs.entry.js.map +1 -1
  29. package/dist/cjs/gx-ide-data-selector.cjs.entry.js +1 -1
  30. package/dist/cjs/gx-ide-data-selector.cjs.entry.js.map +1 -1
  31. package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js +1 -1
  32. package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js.map +1 -1
  33. package/dist/cjs/gx-ide-deployment-tool.cjs.entry.js +1 -1
  34. package/dist/cjs/gx-ide-deployment-tool.cjs.entry.js.map +1 -1
  35. package/dist/cjs/gx-ide-design-import.cjs.entry.js +1 -1
  36. package/dist/cjs/gx-ide-design-import.cjs.entry.js.map +1 -1
  37. package/dist/cjs/gx-ide-details-acknowledgements.cjs.entry.js +1 -1
  38. package/dist/cjs/gx-ide-details-acknowledgements.cjs.entry.js.map +1 -1
  39. package/dist/cjs/gx-ide-edit-module-server.cjs.entry.js +1 -1
  40. package/dist/cjs/gx-ide-edit-module-server.cjs.entry.js.map +1 -1
  41. package/dist/cjs/gx-ide-empty-state.cjs.entry.js +1 -1
  42. package/dist/cjs/gx-ide-empty-state.cjs.entry.js.map +1 -1
  43. package/dist/cjs/gx-ide-file-uploader.cjs.entry.js +1 -1
  44. package/dist/cjs/gx-ide-file-uploader.cjs.entry.js.map +1 -1
  45. package/dist/cjs/gx-ide-gam-installation-settings.cjs.entry.js +1 -1
  46. package/dist/cjs/gx-ide-gam-installation-settings.cjs.entry.js.map +1 -1
  47. package/dist/cjs/gx-ide-json-import.cjs.entry.js +1 -1
  48. package/dist/cjs/gx-ide-json-import.cjs.entry.js.map +1 -1
  49. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +1 -1
  50. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js.map +1 -1
  51. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +1 -1
  52. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js.map +1 -1
  53. package/dist/cjs/gx-ide-launchpad-apis_3.cjs.entry.js +1 -1
  54. package/dist/cjs/gx-ide-launchpad-apis_3.cjs.entry.js.map +1 -1
  55. package/dist/cjs/gx-ide-list-selector_2.cjs.entry.js +1 -1
  56. package/dist/cjs/gx-ide-list-selector_2.cjs.entry.js.map +1 -1
  57. package/dist/cjs/gx-ide-loader.cjs.entry.js +1 -1
  58. package/dist/cjs/gx-ide-loader.cjs.entry.js.map +1 -1
  59. package/dist/cjs/gx-ide-name-picker.cjs.entry.js +1 -1
  60. package/dist/cjs/gx-ide-name-picker.cjs.entry.js.map +1 -1
  61. package/dist/cjs/gx-ide-navigation-report.cjs.entry.js +1 -1
  62. package/dist/cjs/gx-ide-navigation-report.cjs.entry.js.map +1 -1
  63. package/dist/cjs/gx-ide-new-environment.cjs.entry.js +1 -1
  64. package/dist/cjs/gx-ide-new-environment.cjs.entry.js.map +1 -1
  65. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +1 -1
  66. package/dist/cjs/gx-ide-new-kb.cjs.entry.js.map +1 -1
  67. package/dist/cjs/gx-ide-new-object.cjs.entry.js +1 -1
  68. package/dist/cjs/gx-ide-new-object.cjs.entry.js.map +1 -1
  69. package/dist/cjs/gx-ide-new-version.cjs.entry.js +1 -1
  70. package/dist/cjs/gx-ide-new-version.cjs.entry.js.map +1 -1
  71. package/dist/cjs/gx-ide-object-selector.cjs.entry.js +1 -1
  72. package/dist/cjs/gx-ide-object-selector.cjs.entry.js.map +1 -1
  73. package/dist/cjs/gx-ide-open-api-import.cjs.entry.js +1 -1
  74. package/dist/cjs/gx-ide-open-api-import.cjs.entry.js.map +1 -1
  75. package/dist/cjs/gx-ide-references.cjs.entry.js +1 -1
  76. package/dist/cjs/gx-ide-references.cjs.entry.js.map +1 -1
  77. package/dist/cjs/gx-ide-restore-version.cjs.entry.js +5 -4
  78. package/dist/cjs/gx-ide-restore-version.cjs.entry.js.map +1 -1
  79. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js +1 -1
  80. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js.map +1 -1
  81. package/dist/cjs/gx-ide-select-user-team.cjs.entry.js +1 -1
  82. package/dist/cjs/gx-ide-select-user-team.cjs.entry.js.map +1 -1
  83. package/dist/cjs/gx-ide-server-selector.cjs.entry.js +1 -1
  84. package/dist/cjs/gx-ide-server-selector.cjs.entry.js.map +1 -1
  85. package/dist/cjs/gx-ide-share-kb.cjs.entry.js +1 -1
  86. package/dist/cjs/gx-ide-share-kb.cjs.entry.js.map +1 -1
  87. package/dist/cjs/gx-ide-splash.cjs.entry.js +1 -1
  88. package/dist/cjs/gx-ide-splash.cjs.entry.js.map +1 -1
  89. package/dist/cjs/gx-ide-start-page.cjs.entry.js +1 -1
  90. package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
  91. package/dist/cjs/gx-ide-starting-template.cjs.entry.js +1 -1
  92. package/dist/cjs/gx-ide-starting-template.cjs.entry.js.map +1 -1
  93. package/dist/cjs/gx-ide-team-dev-bring-all-changes-selector.cjs.entry.js +1 -1
  94. package/dist/cjs/gx-ide-team-dev-bring-all-changes-selector.cjs.entry.js.map +1 -1
  95. package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js +1 -1
  96. package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js.map +1 -1
  97. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +1 -1
  98. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js.map +1 -1
  99. package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js +1 -1
  100. package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js.map +1 -1
  101. package/dist/cjs/gx-ide-team-dev-preview.cjs.entry.js +3 -3
  102. package/dist/cjs/gx-ide-team-dev-preview.cjs.entry.js.map +1 -1
  103. package/dist/cjs/gx-ide-team-dev-select-recent-comment.cjs.entry.js +1 -1
  104. package/dist/cjs/gx-ide-team-dev-select-recent-comment.cjs.entry.js.map +1 -1
  105. package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js +1 -1
  106. package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js.map +1 -1
  107. package/dist/cjs/gx-ide-team-dev-update-to-revision.cjs.entry.js +1 -1
  108. package/dist/cjs/gx-ide-team-dev-update-to-revision.cjs.entry.js.map +1 -1
  109. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +1 -1
  110. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js.map +1 -1
  111. package/dist/cjs/gx-ide-test.cjs.entry.js +1 -1
  112. package/dist/cjs/gx-ide-test.cjs.entry.js.map +1 -1
  113. package/dist/cjs/gx-ide-wf-settings.cjs.entry.js +1 -1
  114. package/dist/cjs/gx-ide-wf-settings.cjs.entry.js.map +1 -1
  115. package/dist/cjs/gx-ide-ww-files.cjs.entry.js +1 -1
  116. package/dist/cjs/gx-ide-ww-files.cjs.entry.js.map +1 -1
  117. package/dist/cjs/gx-ide-ww-images.cjs.entry.js +1 -1
  118. package/dist/cjs/gx-ide-ww-images.cjs.entry.js.map +1 -1
  119. package/dist/collection/components/_helpers/comments-viewer/comments-viewer.css +1 -1
  120. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.css +1 -0
  121. package/dist/collection/components/_helpers/ide-loader/ide-loader.css +4 -0
  122. package/dist/collection/components/_helpers/list-selector/list-selector.css +1 -0
  123. package/dist/collection/components/_starting-template/starting-template.css +4 -0
  124. package/dist/collection/components/_test/test.css +1 -0
  125. package/dist/collection/components/about/about.css +4 -0
  126. package/dist/collection/components/bpm/application-declaration/bpm-app-declaration.css +5 -0
  127. package/dist/collection/components/bpm/assign-roles/bpm-assign-roles.css +1 -0
  128. package/dist/collection/components/bpm/export-xpdl/bpm-export-xpdl.css +1 -0
  129. package/dist/collection/components/bpm/import-files/bpm-import-files.css +1 -0
  130. package/dist/collection/components/bpm/import-gxpm/bpm-import-gxpm.css +1 -0
  131. package/dist/collection/components/bpm/objects-selector/bpm-objects-selector.css +1 -0
  132. package/dist/collection/components/bpm/sync-gam-roles/bpm-sync-gam-roles.css +4 -0
  133. package/dist/collection/components/bpm/task-documents/task-documents.css +4 -0
  134. package/dist/collection/components/bpm/timer-duration/bpm-timer-duration.css +1 -0
  135. package/dist/collection/components/curl-inspector/curl-inspector.css +4 -0
  136. package/dist/collection/components/data-selector/data-selector.css +4 -0
  137. package/dist/collection/components/data-type-selector/data-type-selector.css +4 -0
  138. package/dist/collection/components/deployment-tool/deployment-tool.css +1 -0
  139. package/dist/collection/components/design-import/design-import.css +5 -0
  140. package/dist/collection/components/details-acknowledgements/details-acknowledgements.css +4 -0
  141. package/dist/collection/components/file-uploader/file-uploader.css +5 -0
  142. package/dist/collection/components/gam-installation-settings/gam-installation-settings.css +5 -0
  143. package/dist/collection/components/json-import/json-import.css +4 -0
  144. package/dist/collection/components/kb-manager-export/kb-manager-export.css +4 -0
  145. package/dist/collection/components/kb-manager-import/kb-manager-import.css +4 -0
  146. package/dist/collection/components/launchpad/native-apps/launchpad-native-apps.css +4 -0
  147. package/dist/collection/components/modules/edit-module-server/edit-module-server.css +4 -0
  148. package/dist/collection/components/name-picker/name-picker.css +4 -0
  149. package/dist/collection/components/navigation-report/navigation-report.css +4 -0
  150. package/dist/collection/components/new-environment/new-environment.css +4 -0
  151. package/dist/collection/components/new-kb/new-kb.css +4 -0
  152. package/dist/collection/components/new-object/new-object.css +4 -0
  153. package/dist/collection/components/new-version/new-version.css +4 -0
  154. package/dist/collection/components/object-selector/object-selector.css +4 -0
  155. package/dist/collection/components/open-api-import/open-api-import.css +4 -0
  156. package/dist/collection/components/references/references.css +1 -0
  157. package/dist/collection/components/restore-version/restore-version.css +7 -14
  158. package/dist/collection/components/restore-version/restore-version.js +4 -3
  159. package/dist/collection/components/restore-version/restore-version.js.map +1 -1
  160. package/dist/collection/components/select-kb-items/select-kb-items.css +4 -0
  161. package/dist/collection/components/select-user-team/select-user-team.css +4 -0
  162. package/dist/collection/components/splash/splash.css +4 -0
  163. package/dist/collection/components/start-page/start-page.css +4 -0
  164. package/dist/collection/components/team-dev/bring-all-changes-selector/bring-all-changes-selector.css +4 -0
  165. package/dist/collection/components/team-dev/bring-changes/bring-changes.css +4 -0
  166. package/dist/collection/components/team-dev/connect-gx-server/connect-gx-server.css +4 -0
  167. package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.css +4 -0
  168. package/dist/collection/components/team-dev/history/history.css +4 -0
  169. package/dist/collection/components/team-dev/preview/team-dev-preview.css +1 -0
  170. package/dist/collection/components/team-dev/preview/team-dev-preview.js +2 -2
  171. package/dist/collection/components/team-dev/preview/team-dev-preview.js.map +1 -1
  172. package/dist/collection/components/team-dev/select-recent-comment/select-recent-comment.css +5 -0
  173. package/dist/collection/components/team-dev/server-selector/server-selector.css +4 -0
  174. package/dist/collection/components/team-dev/share-kb/share-kb.css +4 -0
  175. package/dist/collection/components/team-dev/update/update.css +4 -0
  176. package/dist/collection/components/team-dev/update-partial-selection/update-partial-selection.css +4 -0
  177. package/dist/collection/components/team-dev/update-to-revision/update-to-revision.css +4 -0
  178. package/dist/collection/components/team-dev/version-control/commit/commit.css +4 -0
  179. package/dist/collection/components/wf-settings/wf-settings.css +1 -0
  180. package/dist/collection/components/ww-files/ww-files.css +4 -0
  181. package/dist/collection/components/ww-images/ww-images.css +4 -0
  182. package/dist/components/bpm-objects-selector.js +1 -1
  183. package/dist/components/bpm-objects-selector.js.map +1 -1
  184. package/dist/components/gx-ide-about.js +1 -1
  185. package/dist/components/gx-ide-about.js.map +1 -1
  186. package/dist/components/gx-ide-bpm-app-declaration.js +1 -1
  187. package/dist/components/gx-ide-bpm-app-declaration.js.map +1 -1
  188. package/dist/components/gx-ide-bpm-assign-roles.js +1 -1
  189. package/dist/components/gx-ide-bpm-assign-roles.js.map +1 -1
  190. package/dist/components/gx-ide-bpm-export-xpdl.js +1 -1
  191. package/dist/components/gx-ide-bpm-export-xpdl.js.map +1 -1
  192. package/dist/components/gx-ide-bpm-import-files.js +1 -1
  193. package/dist/components/gx-ide-bpm-import-files.js.map +1 -1
  194. package/dist/components/gx-ide-bpm-import-gxpm.js +1 -1
  195. package/dist/components/gx-ide-bpm-import-gxpm.js.map +1 -1
  196. package/dist/components/gx-ide-bpm-sync-gam-roles.js +1 -1
  197. package/dist/components/gx-ide-bpm-sync-gam-roles.js.map +1 -1
  198. package/dist/components/gx-ide-bpm-task-documents.js +1 -1
  199. package/dist/components/gx-ide-bpm-task-documents.js.map +1 -1
  200. package/dist/components/gx-ide-bpm-timer-duration.js +1 -1
  201. package/dist/components/gx-ide-bpm-timer-duration.js.map +1 -1
  202. package/dist/components/gx-ide-comments-viewer.js +1 -1
  203. package/dist/components/gx-ide-comments-viewer.js.map +1 -1
  204. package/dist/components/gx-ide-connect-gx-server.js +1 -1
  205. package/dist/components/gx-ide-connect-gx-server.js.map +1 -1
  206. package/dist/components/gx-ide-create-kb-from-server.js +1 -1
  207. package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
  208. package/dist/components/gx-ide-curl-inspector.js +1 -1
  209. package/dist/components/gx-ide-curl-inspector.js.map +1 -1
  210. package/dist/components/gx-ide-data-selector.js +1 -1
  211. package/dist/components/gx-ide-data-selector.js.map +1 -1
  212. package/dist/components/gx-ide-data-type-selector.js +1 -1
  213. package/dist/components/gx-ide-data-type-selector.js.map +1 -1
  214. package/dist/components/gx-ide-deployment-tool.js +1 -1
  215. package/dist/components/gx-ide-deployment-tool.js.map +1 -1
  216. package/dist/components/gx-ide-design-import.js +1 -1
  217. package/dist/components/gx-ide-design-import.js.map +1 -1
  218. package/dist/components/gx-ide-details-acknowledgements.js +1 -1
  219. package/dist/components/gx-ide-details-acknowledgements.js.map +1 -1
  220. package/dist/components/gx-ide-edit-module-server.js +1 -1
  221. package/dist/components/gx-ide-edit-module-server.js.map +1 -1
  222. package/dist/components/gx-ide-empty-state2.js +1 -1
  223. package/dist/components/gx-ide-empty-state2.js.map +1 -1
  224. package/dist/components/gx-ide-file-uploader.js +1 -1
  225. package/dist/components/gx-ide-file-uploader.js.map +1 -1
  226. package/dist/components/gx-ide-gam-installation-settings.js +1 -1
  227. package/dist/components/gx-ide-gam-installation-settings.js.map +1 -1
  228. package/dist/components/gx-ide-json-import.js +1 -1
  229. package/dist/components/gx-ide-json-import.js.map +1 -1
  230. package/dist/components/gx-ide-kb-manager-export.js +1 -1
  231. package/dist/components/gx-ide-kb-manager-export.js.map +1 -1
  232. package/dist/components/gx-ide-kb-manager-import.js +1 -1
  233. package/dist/components/gx-ide-kb-manager-import.js.map +1 -1
  234. package/dist/components/gx-ide-name-picker.js +1 -1
  235. package/dist/components/gx-ide-name-picker.js.map +1 -1
  236. package/dist/components/gx-ide-navigation-report.js +1 -1
  237. package/dist/components/gx-ide-navigation-report.js.map +1 -1
  238. package/dist/components/gx-ide-new-environment.js +1 -1
  239. package/dist/components/gx-ide-new-environment.js.map +1 -1
  240. package/dist/components/gx-ide-new-kb.js +1 -1
  241. package/dist/components/gx-ide-new-kb.js.map +1 -1
  242. package/dist/components/gx-ide-new-object.js +1 -1
  243. package/dist/components/gx-ide-new-object.js.map +1 -1
  244. package/dist/components/gx-ide-new-version.js +1 -1
  245. package/dist/components/gx-ide-new-version.js.map +1 -1
  246. package/dist/components/gx-ide-object-selector.js +1 -1
  247. package/dist/components/gx-ide-object-selector.js.map +1 -1
  248. package/dist/components/gx-ide-open-api-import.js +1 -1
  249. package/dist/components/gx-ide-open-api-import.js.map +1 -1
  250. package/dist/components/gx-ide-references.js +1 -1
  251. package/dist/components/gx-ide-references.js.map +1 -1
  252. package/dist/components/gx-ide-restore-version.js +5 -4
  253. package/dist/components/gx-ide-restore-version.js.map +1 -1
  254. package/dist/components/gx-ide-select-user-team.js +1 -1
  255. package/dist/components/gx-ide-select-user-team.js.map +1 -1
  256. package/dist/components/gx-ide-server-selector.js +1 -1
  257. package/dist/components/gx-ide-server-selector.js.map +1 -1
  258. package/dist/components/gx-ide-share-kb.js +1 -1
  259. package/dist/components/gx-ide-share-kb.js.map +1 -1
  260. package/dist/components/gx-ide-splash.js +1 -1
  261. package/dist/components/gx-ide-splash.js.map +1 -1
  262. package/dist/components/gx-ide-start-page.js +1 -1
  263. package/dist/components/gx-ide-start-page.js.map +1 -1
  264. package/dist/components/gx-ide-starting-template.js +1 -1
  265. package/dist/components/gx-ide-starting-template.js.map +1 -1
  266. package/dist/components/gx-ide-team-dev-bring-all-changes-selector.js +1 -1
  267. package/dist/components/gx-ide-team-dev-bring-all-changes-selector.js.map +1 -1
  268. package/dist/components/gx-ide-team-dev-bring-changes.js +1 -1
  269. package/dist/components/gx-ide-team-dev-bring-changes.js.map +1 -1
  270. package/dist/components/gx-ide-team-dev-commit.js +1 -1
  271. package/dist/components/gx-ide-team-dev-commit.js.map +1 -1
  272. package/dist/components/gx-ide-team-dev-history.js +1 -1
  273. package/dist/components/gx-ide-team-dev-history.js.map +1 -1
  274. package/dist/components/gx-ide-team-dev-preview.js +3 -3
  275. package/dist/components/gx-ide-team-dev-preview.js.map +1 -1
  276. package/dist/components/gx-ide-team-dev-select-recent-comment.js +1 -1
  277. package/dist/components/gx-ide-team-dev-select-recent-comment.js.map +1 -1
  278. package/dist/components/gx-ide-team-dev-update-partial-selection.js +1 -1
  279. package/dist/components/gx-ide-team-dev-update-partial-selection.js.map +1 -1
  280. package/dist/components/gx-ide-team-dev-update-to-revision.js +1 -1
  281. package/dist/components/gx-ide-team-dev-update-to-revision.js.map +1 -1
  282. package/dist/components/gx-ide-team-dev-update.js +1 -1
  283. package/dist/components/gx-ide-team-dev-update.js.map +1 -1
  284. package/dist/components/gx-ide-test.js +1 -1
  285. package/dist/components/gx-ide-test.js.map +1 -1
  286. package/dist/components/gx-ide-wf-settings.js +1 -1
  287. package/dist/components/gx-ide-wf-settings.js.map +1 -1
  288. package/dist/components/gx-ide-ww-files.js +1 -1
  289. package/dist/components/gx-ide-ww-files.js.map +1 -1
  290. package/dist/components/gx-ide-ww-images.js +1 -1
  291. package/dist/components/gx-ide-ww-images.js.map +1 -1
  292. package/dist/components/ide-loader.js +1 -1
  293. package/dist/components/ide-loader.js.map +1 -1
  294. package/dist/components/launchpad-native-apps.js +1 -1
  295. package/dist/components/launchpad-native-apps.js.map +1 -1
  296. package/dist/components/list-selector.js +1 -1
  297. package/dist/components/list-selector.js.map +1 -1
  298. package/dist/components/select-kb-items.js +1 -1
  299. package/dist/components/select-kb-items.js.map +1 -1
  300. package/dist/esm/gx-ide-about.entry.js +1 -1
  301. package/dist/esm/gx-ide-about.entry.js.map +1 -1
  302. package/dist/esm/gx-ide-bpm-app-declaration.entry.js +1 -1
  303. package/dist/esm/gx-ide-bpm-app-declaration.entry.js.map +1 -1
  304. package/dist/esm/gx-ide-bpm-assign-roles.entry.js +1 -1
  305. package/dist/esm/gx-ide-bpm-assign-roles.entry.js.map +1 -1
  306. package/dist/esm/gx-ide-bpm-export-xpdl.entry.js +1 -1
  307. package/dist/esm/gx-ide-bpm-export-xpdl.entry.js.map +1 -1
  308. package/dist/esm/gx-ide-bpm-import-files.entry.js +1 -1
  309. package/dist/esm/gx-ide-bpm-import-files.entry.js.map +1 -1
  310. package/dist/esm/gx-ide-bpm-import-gxpm.entry.js +1 -1
  311. package/dist/esm/gx-ide-bpm-import-gxpm.entry.js.map +1 -1
  312. package/dist/esm/gx-ide-bpm-objects-selector.entry.js +1 -1
  313. package/dist/esm/gx-ide-bpm-objects-selector.entry.js.map +1 -1
  314. package/dist/esm/gx-ide-bpm-sync-gam-roles.entry.js +1 -1
  315. package/dist/esm/gx-ide-bpm-sync-gam-roles.entry.js.map +1 -1
  316. package/dist/esm/gx-ide-bpm-task-documents.entry.js +1 -1
  317. package/dist/esm/gx-ide-bpm-task-documents.entry.js.map +1 -1
  318. package/dist/esm/gx-ide-bpm-timer-duration.entry.js +1 -1
  319. package/dist/esm/gx-ide-bpm-timer-duration.entry.js.map +1 -1
  320. package/dist/esm/gx-ide-comments-viewer.entry.js +1 -1
  321. package/dist/esm/gx-ide-comments-viewer.entry.js.map +1 -1
  322. package/dist/esm/gx-ide-connect-gx-server.entry.js +1 -1
  323. package/dist/esm/gx-ide-connect-gx-server.entry.js.map +1 -1
  324. package/dist/esm/gx-ide-create-kb-from-server.entry.js +1 -1
  325. package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
  326. package/dist/esm/gx-ide-curl-inspector.entry.js +1 -1
  327. package/dist/esm/gx-ide-curl-inspector.entry.js.map +1 -1
  328. package/dist/esm/gx-ide-data-selector.entry.js +1 -1
  329. package/dist/esm/gx-ide-data-selector.entry.js.map +1 -1
  330. package/dist/esm/gx-ide-data-type-selector.entry.js +1 -1
  331. package/dist/esm/gx-ide-data-type-selector.entry.js.map +1 -1
  332. package/dist/esm/gx-ide-deployment-tool.entry.js +1 -1
  333. package/dist/esm/gx-ide-deployment-tool.entry.js.map +1 -1
  334. package/dist/esm/gx-ide-design-import.entry.js +1 -1
  335. package/dist/esm/gx-ide-design-import.entry.js.map +1 -1
  336. package/dist/esm/gx-ide-details-acknowledgements.entry.js +1 -1
  337. package/dist/esm/gx-ide-details-acknowledgements.entry.js.map +1 -1
  338. package/dist/esm/gx-ide-edit-module-server.entry.js +1 -1
  339. package/dist/esm/gx-ide-edit-module-server.entry.js.map +1 -1
  340. package/dist/esm/gx-ide-empty-state.entry.js +1 -1
  341. package/dist/esm/gx-ide-empty-state.entry.js.map +1 -1
  342. package/dist/esm/gx-ide-file-uploader.entry.js +1 -1
  343. package/dist/esm/gx-ide-file-uploader.entry.js.map +1 -1
  344. package/dist/esm/gx-ide-gam-installation-settings.entry.js +1 -1
  345. package/dist/esm/gx-ide-gam-installation-settings.entry.js.map +1 -1
  346. package/dist/esm/gx-ide-json-import.entry.js +1 -1
  347. package/dist/esm/gx-ide-json-import.entry.js.map +1 -1
  348. package/dist/esm/gx-ide-kb-manager-export.entry.js +1 -1
  349. package/dist/esm/gx-ide-kb-manager-export.entry.js.map +1 -1
  350. package/dist/esm/gx-ide-kb-manager-import.entry.js +1 -1
  351. package/dist/esm/gx-ide-kb-manager-import.entry.js.map +1 -1
  352. package/dist/esm/gx-ide-launchpad-apis_3.entry.js +1 -1
  353. package/dist/esm/gx-ide-launchpad-apis_3.entry.js.map +1 -1
  354. package/dist/esm/gx-ide-list-selector_2.entry.js +1 -1
  355. package/dist/esm/gx-ide-list-selector_2.entry.js.map +1 -1
  356. package/dist/esm/gx-ide-loader.entry.js +1 -1
  357. package/dist/esm/gx-ide-loader.entry.js.map +1 -1
  358. package/dist/esm/gx-ide-name-picker.entry.js +1 -1
  359. package/dist/esm/gx-ide-name-picker.entry.js.map +1 -1
  360. package/dist/esm/gx-ide-navigation-report.entry.js +1 -1
  361. package/dist/esm/gx-ide-navigation-report.entry.js.map +1 -1
  362. package/dist/esm/gx-ide-new-environment.entry.js +1 -1
  363. package/dist/esm/gx-ide-new-environment.entry.js.map +1 -1
  364. package/dist/esm/gx-ide-new-kb.entry.js +1 -1
  365. package/dist/esm/gx-ide-new-kb.entry.js.map +1 -1
  366. package/dist/esm/gx-ide-new-object.entry.js +1 -1
  367. package/dist/esm/gx-ide-new-object.entry.js.map +1 -1
  368. package/dist/esm/gx-ide-new-version.entry.js +1 -1
  369. package/dist/esm/gx-ide-new-version.entry.js.map +1 -1
  370. package/dist/esm/gx-ide-object-selector.entry.js +1 -1
  371. package/dist/esm/gx-ide-object-selector.entry.js.map +1 -1
  372. package/dist/esm/gx-ide-open-api-import.entry.js +1 -1
  373. package/dist/esm/gx-ide-open-api-import.entry.js.map +1 -1
  374. package/dist/esm/gx-ide-references.entry.js +1 -1
  375. package/dist/esm/gx-ide-references.entry.js.map +1 -1
  376. package/dist/esm/gx-ide-restore-version.entry.js +5 -4
  377. package/dist/esm/gx-ide-restore-version.entry.js.map +1 -1
  378. package/dist/esm/gx-ide-select-kb-items.entry.js +1 -1
  379. package/dist/esm/gx-ide-select-kb-items.entry.js.map +1 -1
  380. package/dist/esm/gx-ide-select-user-team.entry.js +1 -1
  381. package/dist/esm/gx-ide-select-user-team.entry.js.map +1 -1
  382. package/dist/esm/gx-ide-server-selector.entry.js +1 -1
  383. package/dist/esm/gx-ide-server-selector.entry.js.map +1 -1
  384. package/dist/esm/gx-ide-share-kb.entry.js +1 -1
  385. package/dist/esm/gx-ide-share-kb.entry.js.map +1 -1
  386. package/dist/esm/gx-ide-splash.entry.js +1 -1
  387. package/dist/esm/gx-ide-splash.entry.js.map +1 -1
  388. package/dist/esm/gx-ide-start-page.entry.js +1 -1
  389. package/dist/esm/gx-ide-start-page.entry.js.map +1 -1
  390. package/dist/esm/gx-ide-starting-template.entry.js +1 -1
  391. package/dist/esm/gx-ide-starting-template.entry.js.map +1 -1
  392. package/dist/esm/gx-ide-team-dev-bring-all-changes-selector.entry.js +1 -1
  393. package/dist/esm/gx-ide-team-dev-bring-all-changes-selector.entry.js.map +1 -1
  394. package/dist/esm/gx-ide-team-dev-bring-changes.entry.js +1 -1
  395. package/dist/esm/gx-ide-team-dev-bring-changes.entry.js.map +1 -1
  396. package/dist/esm/gx-ide-team-dev-commit.entry.js +1 -1
  397. package/dist/esm/gx-ide-team-dev-commit.entry.js.map +1 -1
  398. package/dist/esm/gx-ide-team-dev-history.entry.js +1 -1
  399. package/dist/esm/gx-ide-team-dev-history.entry.js.map +1 -1
  400. package/dist/esm/gx-ide-team-dev-preview.entry.js +3 -3
  401. package/dist/esm/gx-ide-team-dev-preview.entry.js.map +1 -1
  402. package/dist/esm/gx-ide-team-dev-select-recent-comment.entry.js +1 -1
  403. package/dist/esm/gx-ide-team-dev-select-recent-comment.entry.js.map +1 -1
  404. package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js +1 -1
  405. package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js.map +1 -1
  406. package/dist/esm/gx-ide-team-dev-update-to-revision.entry.js +1 -1
  407. package/dist/esm/gx-ide-team-dev-update-to-revision.entry.js.map +1 -1
  408. package/dist/esm/gx-ide-team-dev-update.entry.js +1 -1
  409. package/dist/esm/gx-ide-team-dev-update.entry.js.map +1 -1
  410. package/dist/esm/gx-ide-test.entry.js +1 -1
  411. package/dist/esm/gx-ide-test.entry.js.map +1 -1
  412. package/dist/esm/gx-ide-wf-settings.entry.js +1 -1
  413. package/dist/esm/gx-ide-wf-settings.entry.js.map +1 -1
  414. package/dist/esm/gx-ide-ww-files.entry.js +1 -1
  415. package/dist/esm/gx-ide-ww-files.entry.js.map +1 -1
  416. package/dist/esm/gx-ide-ww-images.entry.js +1 -1
  417. package/dist/esm/gx-ide-ww-images.entry.js.map +1 -1
  418. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  419. package/dist/genexus-ide-ui/{p-5929f575.entry.js → p-00705e1c.entry.js} +2 -2
  420. package/dist/genexus-ide-ui/p-00705e1c.entry.js.map +1 -0
  421. package/dist/genexus-ide-ui/{p-18c3c961.entry.js → p-056955be.entry.js} +17 -17
  422. package/dist/genexus-ide-ui/p-056955be.entry.js.map +1 -0
  423. package/dist/genexus-ide-ui/{p-3ff33154.entry.js → p-0620e8f2.entry.js} +33 -33
  424. package/dist/genexus-ide-ui/p-0620e8f2.entry.js.map +1 -0
  425. package/dist/genexus-ide-ui/{p-4af50a00.entry.js → p-06c31f23.entry.js} +2 -2
  426. package/dist/genexus-ide-ui/p-06c31f23.entry.js.map +1 -0
  427. package/dist/genexus-ide-ui/{p-76fdea52.entry.js → p-0be24413.entry.js} +2 -2
  428. package/dist/genexus-ide-ui/p-0be24413.entry.js.map +1 -0
  429. package/dist/genexus-ide-ui/{p-8019e064.entry.js → p-0e4daeb7.entry.js} +11 -11
  430. package/dist/genexus-ide-ui/p-0e4daeb7.entry.js.map +1 -0
  431. package/dist/genexus-ide-ui/{p-840c09d2.entry.js → p-123ef674.entry.js} +2 -2
  432. package/dist/genexus-ide-ui/{p-70cd77bc.entry.js → p-217bd2d7.entry.js} +2 -2
  433. package/dist/genexus-ide-ui/p-217bd2d7.entry.js.map +1 -0
  434. package/dist/genexus-ide-ui/{p-d6e7a813.entry.js → p-24247ec3.entry.js} +11 -11
  435. package/dist/genexus-ide-ui/p-24247ec3.entry.js.map +1 -0
  436. package/dist/genexus-ide-ui/{p-af2f9983.entry.js → p-2b3f161f.entry.js} +21 -21
  437. package/dist/genexus-ide-ui/p-2b3f161f.entry.js.map +1 -0
  438. package/dist/genexus-ide-ui/{p-750eb88a.entry.js → p-34577955.entry.js} +9 -9
  439. package/dist/genexus-ide-ui/p-34577955.entry.js.map +1 -0
  440. package/dist/genexus-ide-ui/{p-bdaae26a.entry.js → p-35c2a2f9.entry.js} +2 -2
  441. package/dist/genexus-ide-ui/p-35c2a2f9.entry.js.map +1 -0
  442. package/dist/genexus-ide-ui/{p-ee77b260.entry.js → p-37812762.entry.js} +8 -8
  443. package/dist/genexus-ide-ui/p-37812762.entry.js.map +1 -0
  444. package/dist/genexus-ide-ui/{p-0a7cbbd0.entry.js → p-3bbdad29.entry.js} +2 -2
  445. package/dist/genexus-ide-ui/p-3bbdad29.entry.js.map +1 -0
  446. package/dist/genexus-ide-ui/{p-f05a137a.entry.js → p-42860e7e.entry.js} +71 -71
  447. package/dist/genexus-ide-ui/p-42860e7e.entry.js.map +1 -0
  448. package/dist/genexus-ide-ui/{p-168d3c83.entry.js → p-4431f46f.entry.js} +2 -2
  449. package/dist/genexus-ide-ui/{p-24cf1cd2.entry.js → p-4bafe061.entry.js} +39 -39
  450. package/dist/genexus-ide-ui/p-4bafe061.entry.js.map +1 -0
  451. package/dist/genexus-ide-ui/{p-e4116b36.entry.js → p-4d7433e0.entry.js} +2 -2
  452. package/dist/genexus-ide-ui/p-4d7433e0.entry.js.map +1 -0
  453. package/dist/genexus-ide-ui/{p-dcfae3da.entry.js → p-4f58397f.entry.js} +53 -53
  454. package/dist/genexus-ide-ui/p-4f58397f.entry.js.map +1 -0
  455. package/dist/genexus-ide-ui/{p-2567883a.entry.js → p-508c4bee.entry.js} +2 -2
  456. package/dist/genexus-ide-ui/{p-8cee1076.entry.js → p-55cb0614.entry.js} +14 -14
  457. package/dist/genexus-ide-ui/p-55cb0614.entry.js.map +1 -0
  458. package/dist/genexus-ide-ui/{p-6b430ac1.entry.js → p-5727fce7.entry.js} +2 -2
  459. package/dist/genexus-ide-ui/p-5727fce7.entry.js.map +1 -0
  460. package/dist/genexus-ide-ui/{p-520c3763.entry.js → p-572fdc25.entry.js} +2 -2
  461. package/dist/genexus-ide-ui/p-572fdc25.entry.js.map +1 -0
  462. package/dist/genexus-ide-ui/{p-a50c520c.entry.js → p-5864a82d.entry.js} +18 -18
  463. package/dist/genexus-ide-ui/p-5864a82d.entry.js.map +1 -0
  464. package/dist/genexus-ide-ui/{p-2a59b523.entry.js → p-60db2f02.entry.js} +2 -2
  465. package/dist/genexus-ide-ui/p-60db2f02.entry.js.map +1 -0
  466. package/dist/genexus-ide-ui/{p-178805d6.entry.js → p-632d3a74.entry.js} +2 -2
  467. package/dist/genexus-ide-ui/p-632d3a74.entry.js.map +1 -0
  468. package/dist/genexus-ide-ui/{p-36462e51.entry.js → p-63abf7e8.entry.js} +41 -41
  469. package/dist/genexus-ide-ui/p-63abf7e8.entry.js.map +1 -0
  470. package/dist/genexus-ide-ui/{p-bb5a5c23.entry.js → p-69e7d46b.entry.js} +12 -12
  471. package/dist/genexus-ide-ui/p-69e7d46b.entry.js.map +1 -0
  472. package/dist/genexus-ide-ui/{p-1d3da80d.entry.js → p-7b76b0e4.entry.js} +2 -2
  473. package/dist/genexus-ide-ui/p-7b76b0e4.entry.js.map +1 -0
  474. package/dist/genexus-ide-ui/{p-875b8615.entry.js → p-83a7e6fb.entry.js} +6 -6
  475. package/dist/genexus-ide-ui/p-83a7e6fb.entry.js.map +1 -0
  476. package/dist/genexus-ide-ui/{p-dbac8ae2.entry.js → p-886dc9c1.entry.js} +2 -2
  477. package/dist/genexus-ide-ui/{p-79d4490e.entry.js → p-90a50197.entry.js} +58 -58
  478. package/dist/genexus-ide-ui/p-90a50197.entry.js.map +1 -0
  479. package/dist/genexus-ide-ui/{p-49c1d667.entry.js → p-90b2307f.entry.js} +7 -7
  480. package/dist/genexus-ide-ui/p-90b2307f.entry.js.map +1 -0
  481. package/dist/genexus-ide-ui/{p-38d3adf1.entry.js → p-944a589f.entry.js} +21 -21
  482. package/dist/genexus-ide-ui/p-944a589f.entry.js.map +1 -0
  483. package/dist/genexus-ide-ui/{p-ca47bb29.entry.js → p-98820155.entry.js} +2 -2
  484. package/dist/genexus-ide-ui/{p-ca47bb29.entry.js.map → p-98820155.entry.js.map} +1 -1
  485. package/dist/genexus-ide-ui/{p-27786355.entry.js → p-98dbb43d.entry.js} +25 -25
  486. package/dist/genexus-ide-ui/p-98dbb43d.entry.js.map +1 -0
  487. package/dist/genexus-ide-ui/{p-b167052a.entry.js → p-9a10fa97.entry.js} +2 -2
  488. package/dist/genexus-ide-ui/{p-d0e61bdc.entry.js → p-9ca0c042.entry.js} +2 -2
  489. package/dist/genexus-ide-ui/p-9ca0c042.entry.js.map +1 -0
  490. package/dist/genexus-ide-ui/{p-c31f9478.entry.js → p-aad714a5.entry.js} +31 -31
  491. package/dist/genexus-ide-ui/p-aad714a5.entry.js.map +1 -0
  492. package/dist/genexus-ide-ui/{p-f61bde09.entry.js → p-af267991.entry.js} +49 -49
  493. package/dist/genexus-ide-ui/p-af267991.entry.js.map +1 -0
  494. package/dist/genexus-ide-ui/{p-22c0058b.entry.js → p-b5f2603f.entry.js} +11 -11
  495. package/dist/genexus-ide-ui/p-b5f2603f.entry.js.map +1 -0
  496. package/dist/genexus-ide-ui/{p-0dfa813a.entry.js → p-b6d59827.entry.js} +16 -16
  497. package/dist/genexus-ide-ui/p-b6d59827.entry.js.map +1 -0
  498. package/dist/genexus-ide-ui/{p-a8465dff.entry.js → p-c05dc058.entry.js} +5 -5
  499. package/dist/genexus-ide-ui/p-c05dc058.entry.js.map +1 -0
  500. package/dist/genexus-ide-ui/{p-885e5d1c.entry.js → p-c2f2d79f.entry.js} +2 -2
  501. package/dist/genexus-ide-ui/p-c2f2d79f.entry.js.map +1 -0
  502. package/dist/genexus-ide-ui/{p-14c82d16.entry.js → p-c3a355c6.entry.js} +48 -48
  503. package/dist/genexus-ide-ui/p-c3a355c6.entry.js.map +1 -0
  504. package/dist/genexus-ide-ui/{p-1356ec09.entry.js → p-cd9e9e2b.entry.js} +2 -2
  505. package/dist/genexus-ide-ui/p-cd9e9e2b.entry.js.map +1 -0
  506. package/dist/genexus-ide-ui/{p-fa8cb0d8.entry.js → p-cdd2e79d.entry.js} +2 -2
  507. package/dist/genexus-ide-ui/{p-60bbf1b4.entry.js → p-d68412ac.entry.js} +8 -8
  508. package/dist/genexus-ide-ui/{p-b2966a6b.entry.js → p-d7964c12.entry.js} +2 -2
  509. package/dist/genexus-ide-ui/{p-8735d37c.entry.js → p-dbf9a97d.entry.js} +2 -2
  510. package/dist/genexus-ide-ui/{p-14823abe.entry.js → p-e0fb6257.entry.js} +9 -9
  511. package/dist/genexus-ide-ui/p-e0fb6257.entry.js.map +1 -0
  512. package/dist/genexus-ide-ui/{p-734d5fa1.entry.js → p-e32f5b19.entry.js} +2 -2
  513. package/dist/genexus-ide-ui/{p-af3cc463.entry.js → p-e3ff125f.entry.js} +2 -2
  514. package/dist/genexus-ide-ui/{p-899ec74e.entry.js → p-e883cd82.entry.js} +35 -35
  515. package/dist/genexus-ide-ui/p-e883cd82.entry.js.map +1 -0
  516. package/dist/genexus-ide-ui/{p-e4c250eb.entry.js → p-ebb56b65.entry.js} +23 -23
  517. package/dist/genexus-ide-ui/p-ebb56b65.entry.js.map +1 -0
  518. package/dist/genexus-ide-ui/{p-b44a875d.entry.js → p-f1b452fb.entry.js} +2 -2
  519. package/dist/genexus-ide-ui/p-f1b452fb.entry.js.map +1 -0
  520. package/dist/genexus-ide-ui/{p-ebfc64a5.entry.js → p-fb5dd0a2.entry.js} +10 -10
  521. package/dist/genexus-ide-ui/p-fb5dd0a2.entry.js.map +1 -0
  522. package/dist/genexus-ide-ui/{p-392bdfaa.entry.js → p-fb64e0b1.entry.js} +20 -20
  523. package/dist/genexus-ide-ui/p-fb64e0b1.entry.js.map +1 -0
  524. package/dist/genexus-ide-ui/{p-747fbbd8.entry.js → p-fdaeb19a.entry.js} +2 -2
  525. package/package.json +1 -1
  526. package/dist/genexus-ide-ui/p-0a7cbbd0.entry.js.map +0 -1
  527. package/dist/genexus-ide-ui/p-0dfa813a.entry.js.map +0 -1
  528. package/dist/genexus-ide-ui/p-1356ec09.entry.js.map +0 -1
  529. package/dist/genexus-ide-ui/p-14823abe.entry.js.map +0 -1
  530. package/dist/genexus-ide-ui/p-14c82d16.entry.js.map +0 -1
  531. package/dist/genexus-ide-ui/p-178805d6.entry.js.map +0 -1
  532. package/dist/genexus-ide-ui/p-18c3c961.entry.js.map +0 -1
  533. package/dist/genexus-ide-ui/p-1d3da80d.entry.js.map +0 -1
  534. package/dist/genexus-ide-ui/p-22c0058b.entry.js.map +0 -1
  535. package/dist/genexus-ide-ui/p-24cf1cd2.entry.js.map +0 -1
  536. package/dist/genexus-ide-ui/p-27786355.entry.js.map +0 -1
  537. package/dist/genexus-ide-ui/p-2a59b523.entry.js.map +0 -1
  538. package/dist/genexus-ide-ui/p-36462e51.entry.js.map +0 -1
  539. package/dist/genexus-ide-ui/p-38d3adf1.entry.js.map +0 -1
  540. package/dist/genexus-ide-ui/p-392bdfaa.entry.js.map +0 -1
  541. package/dist/genexus-ide-ui/p-3ff33154.entry.js.map +0 -1
  542. package/dist/genexus-ide-ui/p-49c1d667.entry.js.map +0 -1
  543. package/dist/genexus-ide-ui/p-4af50a00.entry.js.map +0 -1
  544. package/dist/genexus-ide-ui/p-520c3763.entry.js.map +0 -1
  545. package/dist/genexus-ide-ui/p-5929f575.entry.js.map +0 -1
  546. package/dist/genexus-ide-ui/p-6b430ac1.entry.js.map +0 -1
  547. package/dist/genexus-ide-ui/p-70cd77bc.entry.js.map +0 -1
  548. package/dist/genexus-ide-ui/p-750eb88a.entry.js.map +0 -1
  549. package/dist/genexus-ide-ui/p-76fdea52.entry.js.map +0 -1
  550. package/dist/genexus-ide-ui/p-79d4490e.entry.js.map +0 -1
  551. package/dist/genexus-ide-ui/p-8019e064.entry.js.map +0 -1
  552. package/dist/genexus-ide-ui/p-875b8615.entry.js.map +0 -1
  553. package/dist/genexus-ide-ui/p-885e5d1c.entry.js.map +0 -1
  554. package/dist/genexus-ide-ui/p-899ec74e.entry.js.map +0 -1
  555. package/dist/genexus-ide-ui/p-8cee1076.entry.js.map +0 -1
  556. package/dist/genexus-ide-ui/p-a50c520c.entry.js.map +0 -1
  557. package/dist/genexus-ide-ui/p-a8465dff.entry.js.map +0 -1
  558. package/dist/genexus-ide-ui/p-af2f9983.entry.js.map +0 -1
  559. package/dist/genexus-ide-ui/p-b44a875d.entry.js.map +0 -1
  560. package/dist/genexus-ide-ui/p-bb5a5c23.entry.js.map +0 -1
  561. package/dist/genexus-ide-ui/p-bdaae26a.entry.js.map +0 -1
  562. package/dist/genexus-ide-ui/p-c31f9478.entry.js.map +0 -1
  563. package/dist/genexus-ide-ui/p-d0e61bdc.entry.js.map +0 -1
  564. package/dist/genexus-ide-ui/p-d6e7a813.entry.js.map +0 -1
  565. package/dist/genexus-ide-ui/p-dcfae3da.entry.js.map +0 -1
  566. package/dist/genexus-ide-ui/p-e4116b36.entry.js.map +0 -1
  567. package/dist/genexus-ide-ui/p-e4c250eb.entry.js.map +0 -1
  568. package/dist/genexus-ide-ui/p-ebfc64a5.entry.js.map +0 -1
  569. package/dist/genexus-ide-ui/p-ee77b260.entry.js.map +0 -1
  570. package/dist/genexus-ide-ui/p-f05a137a.entry.js.map +0 -1
  571. package/dist/genexus-ide-ui/p-f61bde09.entry.js.map +0 -1
  572. /package/dist/genexus-ide-ui/{p-840c09d2.entry.js.map → p-123ef674.entry.js.map} +0 -0
  573. /package/dist/genexus-ide-ui/{p-168d3c83.entry.js.map → p-4431f46f.entry.js.map} +0 -0
  574. /package/dist/genexus-ide-ui/{p-2567883a.entry.js.map → p-508c4bee.entry.js.map} +0 -0
  575. /package/dist/genexus-ide-ui/{p-dbac8ae2.entry.js.map → p-886dc9c1.entry.js.map} +0 -0
  576. /package/dist/genexus-ide-ui/{p-b167052a.entry.js.map → p-9a10fa97.entry.js.map} +0 -0
  577. /package/dist/genexus-ide-ui/{p-fa8cb0d8.entry.js.map → p-cdd2e79d.entry.js.map} +0 -0
  578. /package/dist/genexus-ide-ui/{p-60bbf1b4.entry.js.map → p-d68412ac.entry.js.map} +0 -0
  579. /package/dist/genexus-ide-ui/{p-b2966a6b.entry.js.map → p-d7964c12.entry.js.map} +0 -0
  580. /package/dist/genexus-ide-ui/{p-8735d37c.entry.js.map → p-dbf9a97d.entry.js.map} +0 -0
  581. /package/dist/genexus-ide-ui/{p-734d5fa1.entry.js.map → p-e32f5b19.entry.js.map} +0 -0
  582. /package/dist/genexus-ide-ui/{p-af3cc463.entry.js.map → p-e3ff125f.entry.js.map} +0 -0
  583. /package/dist/genexus-ide-ui/{p-747fbbd8.entry.js.map → p-fdaeb19a.entry.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["mapObjectTypeToComboBoxItemModel","objectTypeModel","map","objectType","value","id","caption","name","startImgSrc","icon","historyCss","CSS_BUNDLES","GxIdeTeamDevHistory","_GxIdeTeamDevHistory__componentLocale","set","this","_GxIdeTeamDevHistory_types","_GxIdeTeamDevHistory_fromEl","_GxIdeTeamDevHistory_revisionEl","_GxIdeTeamDevHistory_searchEl","_GxIdeTeamDevHistory_toEl","_GxIdeTeamDevHistory_typesEl","_GxIdeTeamDevHistory_userEl","_GxIdeTeamDevHistory_sidebarEl","_GxIdeTeamDevHistory_revisionsGridEl","_GxIdeTeamDevHistory_selectKBItemsEL","_GxIdeTeamDevHistory_selectedVersionChanged","async","selectedVersion","selectedVersionChangeCallback","__classPrivateFieldGet","_GxIdeTeamDevHistory_getObjectsFromVersion","call","versionId","isRefresh","loading","filters","search","from","Date","to","revision","user","type","objects","loadCallback","_GxIdeTeamDevHistory_getSelectedRevision","_a","error","historyDetail","selectedRevisionId","revisionId","loadDetailCallback","title","_GxIdeTeamDevHistory_formatHistoryDetailDate","_GxIdeTeamDevHistory_registerGridContextMenuListener","addEventListener","ev","preventDefault","stopPropagation","_GxIdeTeamDevHistory_gridContextMenuCallbackHandler","gridContextMenuCallback","selection","clientX","clientY","_GxIdeTeamDevHistory_toggleFiltersHandler","filtersHidden","_GxIdeTeamDevHistory_renderCommitsGrid","tabularGridEmpty","length","h","class","onSelectionChanged","detail","rowsId","ref","el","__classPrivateFieldSet","selectRow","mainGrid","columns","settingable","size","comment","commitDate","obj","rowid","key","formatDate","stateTitle","emptyRevisionsText","isAnimated","_GxIdeTeamDevHistory_renderAffectedObjectsGrid","iterable","_b","affectedObjectsGrid","config","tabularGrid","colSize","maxContent","types","description","auto","action","renderObjectTypeWithIcon","renderObjectStateWithIcon","state","stateIconSrc","ICONS","filter","emptyHistoryDetailText","_GxIdeTeamDevHistory_renderLoader","loaderTitle","loader","show","parts","split","datePart","formattedDate","_GxIdeTeamDevHistory_reloadHandler","reloadItems","componentWillLoad","Locale","getComponentStrings","componentDidLoad","e","sidebarExpanded","reload","render","Host","model","expanded","expandButtonCollapseAccessibleName","sidebar","collapseAriaLabel","expandButtonExpandAccessibleName","expandAriaLabel","showExpandButton","hasActiveVersion","checkboxType","loadItemsCallback","loadVersionsCallback","expandOnClick","selectionChanged","itemContextMenuCallback","info","htmlFor","part","searchFilter","filterAriaLabel","onClick","src","reloadAriaLabel","refresh","inert","hidden","accessibleName","multiline","autoGrow","readonly"],"sources":["src/components/team-dev/history/helpers.ts","src/components/team-dev/history/history.scss?tag=gx-ide-team-dev-history&encapsulation=shadow","src/components/team-dev/history/history.tsx"],"sourcesContent":["import { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { ObjectType, GxOption } from \"../../../common/types\";\nimport { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\nimport { ItemNode } from \"../../select-kb-items/select-kb-items\";\n\nexport const mapObjectTypeToComboBoxItemModel = (\n objectTypeModel: ObjectType[]\n): ComboBoxItemModel[] =>\n objectTypeModel.map(objectType => ({\n value: objectType.id,\n caption: objectType.name,\n startImgSrc: objectType.icon\n }));\n\nexport const mapCategoryToComboBoxItemModel = (\n categoryModel: GxOption[]\n): ComboBoxModel =>\n categoryModel.map(category => ({\n value: category.id,\n caption: category.label\n }));\n\nconst hasActiveNode = (node: any): boolean => {\n if (node.active) {\n return true;\n }\n if (Array.isArray(node.nodes)) {\n return node.nodes.some(hasActiveNode);\n }\n return false;\n};\n\nexport const hasActiveVersionInList = (versionsList: ItemNode[]): boolean => {\n return versionsList.some(hasActiveNode);\n};\n","@import \"../../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n@import \"../common/styles.scss\";\n\n// TODO: this should be a class on Mercury.\n// Not sure if applying \".field-group\" is the right thing to do.\n$commonRowGap: var(--spacing-gap-l);\n\n:host {\n display: grid;\n grid-template-columns: max-content 1fr;\n block-size: 100%;\n overflow: auto;\n}\n\n.sidebar {\n background-color: transparent !important; // TODO: Apply elevation classes on Mercury.\n border-inline-end: var(--section-common-border);\n}\n\n.sidebar::part(expand-button) {\n border-radius: var(--control-border-radius);\n}\n\ngx-ide-select-kb-items {\n --search-input-max-inline-size: 300px;\n opacity: 0;\n transition: opacity var(--timing-fast);\n}\ngx-ide-select-kb-items.sidebar-expanded {\n opacity: 1;\n}\n\nch-tabular-grid.tabular-grid--empty::part(main) {\n // WA to avoid scrollbar flickering when displaying the empty-state message\n overflow: hidden;\n}\n\nch-tabular-grid-rowset-empty {\n position: relative; // makes this the bounder element for the loader\n}\n\n.main {\n display: grid;\n grid-template-rows: max-content 1fr;\n grid-row-gap: $commonRowGap;\n overflow: auto;\n}\n.main__header {\n display: grid;\n}\n.main__content {\n position: relative;\n overflow: auto;\n display: grid;\n grid-template-rows: 1fr max-content 2fr;\n grid-row-gap: $commonRowGap;\n}\n\n.tabular-grid {\n overflow: auto;\n}\n\n/*SECOND GRID*/\n.search-filter {\n display: grid;\n grid-template-columns: 1fr max-content max-content;\n gap: var(--spacing-gap-l);\n}\n\n.action-buttons {\n justify-self: flex-end;\n}\n\n.filters-grid {\n display: grid;\n grid-template-columns: repeat(6, 1fr);\n grid-template-areas:\n \"from from to to type type\"\n \"user user user revision revision revision\";\n padding-block-start: $commonRowGap;\n}\n\n.filters-container {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows var(--timing-fast);\n}\n\n.filters-container-visible {\n grid-template-rows: 1fr;\n}\n\n.filters-container > div {\n overflow: hidden;\n}\n\n.field-from {\n grid-area: from;\n}\n\n.field-to {\n grid-area: to;\n}\n.field-type {\n grid-area: type;\n}\n.field-user {\n grid-area: user;\n}\n.field-revision {\n grid-area: revision;\n}\n\n// commits grid \"comment\" column\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".commits-grid\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-min-inline-size: 200px,\n $tabular-grid-affected-columns-nth-list: (\n 2\n )\n);\n\n// affected objects grid \"description\" column\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".affected-objects-grid\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-min-inline-size: 200px,\n $tabular-grid-affected-columns-nth-list: (\n 5\n )\n);\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Element,\n h,\n Host,\n Method,\n Prop,\n State\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { config } from \"../../../common/config\";\nimport { formatDate } from \"../../../common/helpers\";\nimport { Locale } from \"../../../common/locale\";\nimport { ContextMenuInfo } from \"../../../components\";\nimport { ItemNode } from \"../../select-kb-items/select-kb-items\";\nimport {\n renderObjectStateWithIcon,\n renderObjectTypeWithIcon\n} from \"../common/utilities\";\nimport ICONS from \"../version-control/common/constants\";\nimport { ObjectState } from \"../version-control/common/types\";\nimport { mapObjectTypeToComboBoxItemModel } from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\",\n \"chameleon/scrollbar\",\n \"components/tabular-grid\",\n \"components/accordion\",\n \"components/sidebar\"\n];\n\n@Component({\n tag: \"gx-ide-team-dev-history\",\n styleUrl: \"history.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-history\"]\n})\nexport class GxIdeTeamDevHistory {\n #_componentLocale: any;\n\n #types: ComboBoxItemModel[] = [];\n\n @Element() el: HTMLGxIdeTeamDevHistoryElement;\n\n #fromEl?: HTMLChEditElement;\n #revisionEl?: HTMLChEditElement;\n #searchEl: HTMLChEditElement;\n #toEl?: HTMLChEditElement;\n #typesEl?: HTMLChComboBoxRenderElement;\n #userEl?: HTMLChEditElement;\n #sidebarEl: HTMLChSidebarElement;\n #revisionsGridEl: HTMLChTabularGridElement;\n #selectKBItemsEL: HTMLGxIdeSelectKbItemsElement;\n\n @State() historyDetail: RevisionDetailData;\n\n /**\n * The files rendered in the table\n */\n @State() objects: RevisionData[] = [];\n\n /**\n * Used to hide the select-kb-items when collapsed\n */\n @State() sidebarExpanded: boolean = true;\n\n /**\n * Used to show or hide the filters section\n */\n @State() filtersHidden = true;\n\n /**\n * To show a loader when the component is loading\n */\n @State() loading: boolean = true;\n\n /**\n * The Id of the selected revision in the revisions grid\n */\n @State() selectedRevisionId: string;\n\n /**\n * Used to customize the select-kb-items \"header\" part grid layout\n */\n @State() hasActiveVersion: boolean = false; // TODO:\n\n /**\n * Possible values of type filter\n */\n @Prop() readonly types: ObjectType[];\n\n /**\n * Callback emitted when the user right click on an item\n */\n @Prop() readonly itemContextMenuCallback: (\n info: ContextMenuInfo\n ) => Promise<void>;\n\n /**\n * Callback invoked when user right-clicks on the grid\n */\n @Prop() readonly gridContextMenuCallback: (\n info: ContextMenuInfo\n ) => Promise<void>;\n\n /**\n * Callback to load the items list model\n */\n @Prop() readonly loadVersionsCallback!: () => Promise<ItemNode[]>;\n\n /**\n * Callback invoked when is necessary to reload the history info. Receive the filters as parameters and only returns the info corresponding to the master grid.\n\n */\n @Prop() readonly loadCallback: LoadCallback;\n\n /**\n * Callback invoked to obtain detailed info from a revision. As parameter receive internal revision id\n */\n @Prop() readonly loadDetailCallback: LoadDetailCallback;\n\n /**\n * Callback invoked when the selected version changes. As parameter receive the selected version id\n */\n @Prop() readonly selectedVersionChangeCallback: SelectedVersionChangeCallback;\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.#types = mapObjectTypeToComboBoxItemModel(this.types);\n }\n\n async componentDidLoad() {\n this.#sidebarEl.addEventListener(\n \"expandedChange\",\n (e: CustomEvent<boolean>) => {\n this.sidebarExpanded = e.detail;\n }\n );\n }\n\n @Method()\n async reload(): Promise<void> {\n await this.#reloadHandler();\n }\n\n #selectedVersionChanged = async (selectedVersion: string[]) => {\n if (this.selectedVersionChangeCallback) {\n await this.selectedVersionChangeCallback(selectedVersion);\n }\n await this.#getObjectsFromVersion(selectedVersion[0], true);\n };\n\n #getObjectsFromVersion = async (\n versionId: string,\n isRefresh: boolean\n ): Promise<void> => {\n this.loading = true;\n\n const filters: FiltersData = {\n search: this.#searchEl.value ? this.#searchEl.value : \"\",\n from: this.#fromEl.value ? new Date(this.#fromEl.value) : null,\n to: this.#toEl.value ? new Date(this.#toEl.value) : null,\n revision: this.#revisionEl.value ? this.#revisionEl.value : \"\",\n user: this.#userEl.value ? this.#userEl.value : \"\",\n type: this.#typesEl.value === \"all\" ? \"\" : this.#typesEl.value\n };\n try {\n this.objects = await this.loadCallback(filters, versionId, isRefresh);\n await this.#getSelectedRevision(this.objects[0]?.id);\n } catch (error) {\n this.objects = [];\n this.historyDetail = null;\n this.selectedRevisionId = null;\n } finally {\n this.loading = false;\n }\n };\n\n #getSelectedRevision = async (revisionId: string) => {\n if (revisionId) {\n this.historyDetail = await this.loadDetailCallback(revisionId);\n this.historyDetail.title = this.#formatHistoryDetailDate(\n this.historyDetail.title\n );\n this.selectedRevisionId = revisionId;\n } else {\n this.historyDetail = null;\n }\n };\n\n #registerGridContextMenuListener = (): void => {\n if (this.#revisionsGridEl) {\n this.#revisionsGridEl.addEventListener(\n \"contextmenu\",\n (ev: MouseEvent): void => {\n ev.preventDefault();\n ev.stopPropagation();\n this.#gridContextMenuCallbackHandler(ev);\n }\n );\n }\n };\n\n #gridContextMenuCallbackHandler = async (ev: MouseEvent): Promise<void> => {\n this.gridContextMenuCallback({\n selection: [this.selectedRevisionId],\n clientX: ev.clientX,\n clientY: ev.clientY\n });\n };\n\n #toggleFiltersHandler = () => {\n this.filtersHidden = !this.filtersHidden;\n };\n\n #renderCommitsGrid = (): Element => {\n const tabularGridEmpty = this.objects?.length === 0 || !this.objects;\n return (\n <ch-tabular-grid\n class={{\n \"commits-grid\": true,\n \"tabular-grid\": true,\n \"tabular-grid--empty\": tabularGridEmpty\n }}\n onSelectionChanged={(ev: any) => {\n this.objects.length > 0 &&\n this.#getSelectedRevision(ev.detail.rowsId[0]);\n }}\n ref={(el: HTMLChTabularGridElement) => {\n if (el && this.#revisionsGridEl !== el) {\n this.#revisionsGridEl = el as HTMLChTabularGridElement;\n\n this.#registerGridContextMenuListener();\n\n if (this.objects.length > 0) {\n this.#revisionsGridEl.selectRow(this.objects[0]?.id, true);\n }\n }\n }}\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n column-name={this.#_componentLocale.mainGrid.columns.id}\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size=\"max-content\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#_componentLocale.mainGrid.columns.comment}\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size=\"1fr\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#_componentLocale.mainGrid.columns.user}\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size=\"max-content\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#_componentLocale.mainGrid.columns.commitDate}\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size=\"max-content\"\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n {this.objects.length > 0 ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.objects.map((obj: RevisionData) => (\n <ch-tabular-grid-row\n rowid={obj.id}\n key={obj.id}\n class=\"tabular-grid-row\"\n >\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.id}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.comment}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.user}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {`${formatDate(obj.commitDate, \"date-time\")}`}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n stateTitle={this.#_componentLocale.emptyRevisionsText}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n\n <ch-tabular-grid-row class=\"tabular-grid-row\"></ch-tabular-grid-row>\n </ch-tabular-grid>\n );\n };\n\n #renderAffectedObjectsGrid = (): Element => {\n const iterable = this.historyDetail ? this.historyDetail.objects : [];\n const tabularGridEmpty =\n this.historyDetail?.objects?.length === 0 || !this.historyDetail;\n return (\n <ch-tabular-grid\n class={{\n \"affected-objects-grid\": true,\n \"tabular-grid\": true,\n \"tabular-grid--empty\": tabularGridEmpty\n }}\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n column-name={\n this.#_componentLocale.affectedObjectsGrid.columns.name\n }\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={\n this.#_componentLocale.affectedObjectsGrid.columns.types\n }\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={\n this.#_componentLocale.affectedObjectsGrid.columns.description\n }\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size={config.tabularGrid.colSize.auto}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={\n this.#_componentLocale.affectedObjectsGrid.columns.action\n }\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n {this.historyDetail && this.historyDetail.objects.length > 0 ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {iterable.map((obj: ObjectData) => (\n <ch-tabular-grid-row class=\"tabular-grid-row\">\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 {renderObjectTypeWithIcon(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 {renderObjectStateWithIcon(obj.state)}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n stateIconSrc={ICONS.filter}\n stateTitle={this.#_componentLocale.emptyHistoryDetailText}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n\n <ch-tabular-grid-row class=\"tabular-grid-row\"></ch-tabular-grid-row>\n </ch-tabular-grid>\n );\n };\n\n #renderLoader = (): Element => {\n return (\n this.loading && (\n <div class=\"main__content scrollable\">\n <gx-ide-loader\n loaderTitle={this.#_componentLocale.loader.title}\n show\n description={this.#_componentLocale.loader.description}\n ></gx-ide-loader>\n </div>\n )\n );\n };\n\n #formatHistoryDetailDate = (title: string): string => {\n const parts = title.split(\" - \");\n const datePart = new Date(parts[1]);\n const formattedDate = formatDate(datePart, \"date-time\");\n return `${parts[0]} - ${formattedDate} - ${parts[2]}`;\n };\n\n #reloadHandler = async (): Promise<void> => {\n this.loading = true;\n await this.#selectKBItemsEL.reloadItems();\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <ch-sidebar\n ref={(el: HTMLChSidebarElement) =>\n (this.#sidebarEl = el as HTMLChSidebarElement)\n }\n class=\"sidebar\"\n expanded={this.sidebarExpanded}\n expandButtonCollapseAccessibleName={\n this.#_componentLocale.sidebar.collapseAriaLabel\n }\n expandButtonExpandAccessibleName={\n this.#_componentLocale.sidebar.expandAriaLabel\n }\n showExpandButton\n >\n <gx-ide-select-kb-items\n class={{\n \"sidebar-expanded\": this.sidebarExpanded,\n \"has-active-version\": this.hasActiveVersion\n }}\n checkboxType=\"none\"\n loadItemsCallback={() => this.loadVersionsCallback()}\n expandOnClick={false}\n selectionChanged={this.#selectedVersionChanged}\n itemContextMenuCallback={(info: ContextMenuInfo) =>\n this.itemContextMenuCallback(info)\n }\n ref={(el: HTMLGxIdeSelectKbItemsElement) =>\n (this.#selectKBItemsEL = el as HTMLGxIdeSelectKbItemsElement)\n }\n ></gx-ide-select-kb-items>\n </ch-sidebar>\n\n <main class=\"main spacing-body-block-start spacing-body-inline\">\n <div class=\"main__header\">\n <div class=\"search-filter\">\n <div class=\"field field-inline\">\n <label class=\"label\" htmlFor=\"search\">\n {this.#_componentLocale.filters.search}\n </label>\n <ch-edit\n value=\"\"\n class=\"input\"\n startImgSrc={ICONS.search}\n part=\"search\"\n id=\"search\"\n ref={(el: HTMLChEditElement) =>\n (this.#searchEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n\n <button\n id=\"filter-toggle-button\"\n class=\"button-secondary button-icon-only\"\n aria-label={this.#_componentLocale.searchFilter.filterAriaLabel}\n aria-expanded={this.filtersHidden ? \"false\" : \"true\"}\n aria-controls=\"filters-container\"\n onClick={() => this.#toggleFiltersHandler()}\n >\n <ch-image class=\"icon-m\" src={ICONS.filter}></ch-image>\n </button>\n\n <button\n class=\"button-secondary button-icon-only\"\n aria-label={this.#_componentLocale.searchFilter.reloadAriaLabel}\n onClick={() => this.#reloadHandler()}\n part={this.#_componentLocale.searchFilter.reloadAriaLabel}\n >\n <ch-image class=\"icon-m\" src={ICONS.refresh}></ch-image>\n </button>\n </div>\n\n <div\n id=\"filters-container\"\n aria-labelledby=\"filter-toggle-button\"\n class={{\n \"filters-container-visible\": !this.filtersHidden,\n \"filters-container\": true\n }}\n inert={this.filtersHidden}\n hidden={this.filtersHidden}\n >\n <div>\n <div class=\"filters-grid field-group\">\n <div class=\"field field-block field-from\">\n <label class=\"label\" htmlFor=\"from\">\n {this.#_componentLocale.filters.from}\n </label>\n <ch-edit\n value=\"\"\n class=\"input\"\n type=\"date\"\n part=\"from\"\n id=\"from\"\n ref={(el: HTMLChEditElement) =>\n (this.#fromEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n\n <div class=\"field field-block field-to\">\n <label class=\"label\" htmlFor=\"to\">\n {this.#_componentLocale.filters.to}\n </label>\n <ch-edit\n value=\"\"\n class=\"input\"\n type=\"date\"\n id=\"to\"\n ref={(el: HTMLChEditElement) =>\n (this.#toEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n\n <div class=\"field field-block field-type\">\n <label class=\"label\" htmlFor=\"type\">\n {this.#_componentLocale.filters.type}\n </label>\n\n <ch-combo-box-render\n accessibleName=\"types\"\n class=\"combo-box\"\n part=\"type\"\n model={this.#types}\n value={this.#types[0]?.value}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#typesEl = el as HTMLChComboBoxRenderElement)\n }\n ></ch-combo-box-render>\n </div>\n\n <div class=\"field field-block field-user\">\n <label class=\"label\" htmlFor=\"user\">\n {this.#_componentLocale.filters.user}\n </label>\n\n <ch-edit\n value=\"\"\n part=\"user\"\n class=\"input\"\n id=\"user\"\n ref={(el: HTMLChEditElement) =>\n (this.#userEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n\n <div class=\"field field-block field-revision\">\n <label class=\"label\" htmlFor=\"revision\">\n {this.#_componentLocale.filters.revision}\n </label>\n\n <ch-edit\n value=\"\"\n part=\"revision\"\n class=\"input\"\n id=\"revision\"\n ref={(el: HTMLChEditElement) =>\n (this.#revisionEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n {this.#renderLoader()}\n\n {!this.loading && (\n <div class=\"main__content scrollable\">\n {this.#renderCommitsGrid()}\n\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"comment-area\">\n {this.historyDetail ? this.historyDetail.title : null}\n </label>\n <ch-edit\n class=\"input comment-text-area\"\n value={this.historyDetail ? this.historyDetail.comment : null}\n multiline\n autoGrow\n readonly={true}\n part=\"comment-area\"\n id=\"comment-area\"\n ></ch-edit>\n </div>\n\n {this.#renderAffectedObjectsGrid()}\n </div>\n )}\n </main>\n </Host>\n );\n }\n}\n\n// Types\nexport type ObjectType = {\n id: string;\n name: string;\n icon?: string;\n};\n\nexport type FiltersData = {\n search: string;\n from?: Date;\n to?: Date;\n user?: string;\n revision?: string;\n type?: string;\n};\nexport type RevisionData = {\n id: string;\n comment: string;\n user: string;\n commitDate: Date;\n};\n\nexport type RevisionDetailData = {\n title: string;\n comment: string;\n objects: ObjectData[];\n};\nexport type ObjectData = {\n typeIcon: string;\n state: ObjectState;\n name: string;\n type: ObjectType;\n description: string;\n action: string;\n};\n\nexport type LoadCallback = (\n filters: FiltersData,\n versionId: string,\n isRefresh: boolean\n) => Promise<RevisionData[]>;\n\nexport type LoadDetailCallback = (\n revision: string\n) => Promise<RevisionDetailData>;\n\nexport type SelectedVersionChangeCallback = (\n selectedVersion: string[]\n) => Promise<void>;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["bringAllChangesSelectorCss","CSS_BUNDLES","MERGE_ACTION_OPTIONS","fromCommitDate","value","fromCommitNumber","GxIdeBringAllChangesSelector","_GxIdeBringAllChangesSelector_componentLocale","set","this","_GxIdeBringAllChangesSelector_revisionNumberRef","_GxIdeBringAllChangesSelector_revisionDateRef","_GxIdeBringAllChangesSelector_shortcutsSrc","getAssetPath","_GxIdeBringAllChangesSelector_evaluateTooltipRender","controlReference","_b","_a","validatableControls","get","id","hasError","_c","message","h","class","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","_GxIdeBringAllChangesSelector_initializeValidatableControls","forEach","validatableControl","has","reference","undefined","_GxIdeBringAllChangesSelector_cancelClickHandler","async","cancelCallback","_GxIdeBringAllChangesSelector_confirmClickHandler","formSubmitResult","selectedMergeActionData","operationType","selectedOption","fromDate","sinceCommitDate","fromRevision","sinceCommitNumber","confirmCallback","validateControls","_GxIdeBringAllChangesSelector_handleLastDates","lastDates","currentDate","Date","sinceDate","setDate","getDate","_GxIdeBringAllChangesSelector_handleCommitDateValueChanged","event","detail","year","month","day","split","map","Number","clearControlError","_GxIdeBringAllChangesSelector_handleCommitNumberValueChanged","_GxIdeBringAllChangesSelector_handleRadioGroupValueChange","_GxIdeBringAllChangesSelector_confirmButtonDisabled","isNaN","getTime","_GxIdeBringAllChangesSelector_renderCommitDateInput","htmlFor","__classPrivateFieldGet","labels","commitDate","input","type","toISOString","onInput","ref","el","__classPrivateFieldSet","call","_GxIdeBringAllChangesSelector_renderCommitNumberInput","commitNumber","placeholder","placeholders","mode","_GxIdeBringAllChangesSelector_renderLastDatesButtons","onClick","captions","lastSevenDays","lastThirtyDays","lastNinetyDays","Map","componentWillLoad","Locale","getComponentStrings","radioGroupModel","caption","componentDidRender","render","Host","model","src","selectRange","direction","onChange","buttons","cancel","disabled","confirm"],"sources":["src/components/team-dev/bring-all-changes-selector/bring-all-changes-selector.scss?tag=gx-ide-team-dev-bring-all-changes-selector&encapsulation=shadow","src/components/team-dev/bring-all-changes-selector/bring-all-changes-selector.tsx"],"sourcesContent":[":host {\n display: grid;\n block-size: 100%;\n grid-template-rows: 1fr max-content;\n}\n\n.commit-date-container,\n.commit-number-container {\n display: grid;\n gap: var(--spacing-gap-xl);\n}\n\n.commit-date-container {\n grid-template-rows: max-content max-content max-content max-content;\n}\n\n.commit-number-container {\n grid-template-rows: max-content max-content max-content;\n}\n\n.heading {\n margin-block: 0;\n}\n\n.tooltip {\n position: absolute;\n}\n","import {\n Component,\n Element,\n getAssetPath,\n h,\n Host,\n Prop,\n State\n} from \"@stencil/core\";\n\nimport {\n ChRadioGroupRenderCustomEvent,\n RadioGroupModel\n} from \"@genexus/chameleon-controls-library\";\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { Locale } from \"../../../common/locale\";\nimport { FormSubmitResult } from \"../../../components\";\nimport {\n clearControlError,\n ControlValidation,\n validateControls\n} from \"../../../common/form-validation\";\nimport { config } from \"../../../common/config\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form\",\n \"utils/spacing\",\n \"utils/layout\",\n \"components/checkbox\",\n \"components/button\",\n \"components/edit\",\n \"components/radio-group\",\n \"components/tooltip\",\n \"utils/layout\"\n];\n\nconst MERGE_ACTION_OPTIONS = {\n fromCommitDate: {\n value: \"fromCommitDate\"\n },\n fromCommitNumber: {\n value: \"fromCommitNumber\"\n }\n};\n\n@Component({\n tag: \"gx-ide-team-dev-bring-all-changes-selector\",\n styleUrl: \"bring-all-changes-selector.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-bring-all-changes-selector\"]\n})\nexport class GxIdeBringAllChangesSelector {\n #componentLocale: any;\n #revisionNumberRef: HTMLChEditElement;\n #revisionDateRef: HTMLChEditElement;\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/team-dev-bring-all-changes-selector/shortcuts.json`\n );\n\n @Element() el: HTMLGxIdeTeamDevBringAllChangesSelectorElement;\n /**\n * Date from which the commits will be merged\n */\n @State() sinceCommitDate: Date | undefined = undefined;\n\n /**\n * Number from which the commits will be merged\n */\n @State() sinceCommitNumber: number | undefined = undefined;\n\n /**\n * The selected option from the radio group.\n */\n @State() selectedOption: MergeActionTaken = MERGE_ACTION_OPTIONS\n .fromCommitDate.value as MergeActionTaken;\n\n /**\n * Model for the radio group.\n */\n @State() radioGroupModel: RadioGroupModel = [];\n\n /**\n * Map of validatable controls in the form.\n */\n @State() validatableControls = new Map<string, ControlValidation>();\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 'Confirm' button is pressed.\n */\n @Prop() readonly confirmCallback!: (\n selectedMergeActionData: SelectedMergeActionData\n ) => Promise<FormSubmitResult>;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.radioGroupModel = [\n {\n value: MERGE_ACTION_OPTIONS.fromCommitDate.value,\n caption: this.#componentLocale.captions.commitDate\n },\n {\n value: MERGE_ACTION_OPTIONS.fromCommitNumber.value,\n caption: this.#componentLocale.captions.commitNumber\n }\n ];\n }\n\n componentDidRender() {\n if (this.selectedOption === \"fromCommitDate\" && this.#revisionDateRef) {\n this.#initializeValidatableControls([this.#revisionDateRef]);\n }\n\n if (this.selectedOption === \"fromCommitNumber\" && this.#revisionNumberRef) {\n this.#initializeValidatableControls([this.#revisionNumberRef]);\n }\n }\n\n // TODO: evaluate if this should be a global helper function.\n // It is used on other dialogs as well.\n #evaluateTooltipRender = (\n controlReference: HTMLElement\n ): HTMLChTooltipElement =>\n this.validatableControls?.get(controlReference?.id)?.hasError &&\n this.validatableControls.get(controlReference.id)?.message && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={controlReference as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.validatableControls.get(controlReference.id).message}\n </ch-tooltip>\n );\n\n #initializeValidatableControls = (validatableControls: HTMLElement[]) => {\n validatableControls.forEach(validatableControl => {\n if (\n validatableControl.id &&\n !this.validatableControls.has(validatableControl.id)\n ) {\n this.validatableControls.set(validatableControl.id, {\n reference: validatableControl,\n hasError: false,\n message: undefined\n });\n }\n });\n };\n\n #cancelClickHandler = async () => {\n await this.cancelCallback();\n };\n\n #confirmClickHandler = async () => {\n let formSubmitResult: FormSubmitResult;\n const selectedMergeActionData: SelectedMergeActionData = {\n operationType: this.selectedOption,\n fromDate:\n this.selectedOption === \"fromCommitDate\"\n ? this.sinceCommitDate\n : undefined,\n fromRevision:\n this.selectedOption === \"fromCommitNumber\"\n ? this.sinceCommitNumber\n : undefined\n };\n formSubmitResult = await this.confirmCallback(selectedMergeActionData);\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\n };\n\n #handleLastDates = (lastDates: LastDates) => {\n const currentDate = new Date();\n let sinceDate = new Date();\n switch (lastDates) {\n case \"lastSevenDays\":\n sinceDate.setDate(currentDate.getDate() - 7);\n break;\n case \"lastThirtyDays\":\n sinceDate.setDate(currentDate.getDate() - 30);\n break;\n case \"lastNinetyDays\":\n sinceDate.setDate(currentDate.getDate() - 90);\n break;\n }\n this.sinceCommitDate = sinceDate;\n };\n\n #handleCommitDateValueChanged = (event: CustomEvent<string> | InputEvent) => {\n const value = event.detail as string;\n if (value && value !== \"\") {\n const [year, month, day] = value.split(\"-\").map(Number);\n this.sinceCommitDate = new Date(year, month - 1, day);\n } else {\n this.sinceCommitDate = undefined;\n }\n clearControlError(this.validatableControls, \"commit-date\");\n };\n\n #handleCommitNumberValueChanged = (\n event: CustomEvent<string> | InputEvent\n ) => {\n this.sinceCommitNumber = Number(event.detail);\n clearControlError(this.validatableControls, \"commit-number\");\n };\n\n #handleRadioGroupValueChange = (\n event: ChRadioGroupRenderCustomEvent<string>\n ) => {\n this.selectedOption = event.detail as MergeActionTaken;\n if (this.selectedOption === \"fromCommitDate\") {\n this.sinceCommitNumber = undefined;\n clearControlError(this.validatableControls, \"commit-number\");\n } else if (this.selectedOption === \"fromCommitNumber\") {\n this.sinceCommitDate = undefined;\n clearControlError(this.validatableControls, \"commit-date\");\n }\n };\n\n #confirmButtonDisabled = (): boolean => {\n if (this.selectedOption === \"fromCommitDate\") {\n // Validate that sinceCommitDate is a valid date\n return !(\n this.sinceCommitDate instanceof Date &&\n !isNaN(this.sinceCommitDate.getTime())\n );\n } else if (this.selectedOption === \"fromCommitNumber\") {\n // Validate that sinceCommitNumber is a valid number\n return !(this.sinceCommitNumber > 0);\n }\n return true;\n };\n\n #renderCommitDateInput = () => {\n if (this.selectedOption !== \"fromCommitDate\") {\n return null;\n }\n return (\n <div class=\"layout layout--cols-2-1\">\n <div class=\"layout__panel\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"commit-date\">\n {this.#componentLocale.labels.commitDate}\n </label>\n <ch-edit\n class={{\n \"input\": true,\n \"input-error\":\n this.validatableControls.get(\"commit-date\")?.hasError\n }}\n id=\"commit-date\"\n type=\"date\"\n value={\n this.sinceCommitDate &&\n this.sinceCommitDate.toISOString().split(\"T\")[0]\n }\n onInput={this.#handleCommitDateValueChanged}\n ref={(el: HTMLChEditElement) =>\n (this.#revisionDateRef = el as HTMLChEditElement)\n }\n />\n {this.#evaluateTooltipRender(this.#revisionDateRef)}\n </div>\n </div>\n </div>\n );\n };\n\n #renderCommitNumberInput = () => {\n if (this.selectedOption !== \"fromCommitNumber\") {\n return null;\n }\n return (\n <div class=\"layout layout--cols-2-1\">\n <div class=\"layout__panel\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"commit-number\">\n {this.#componentLocale.labels.commitNumber}\n </label>\n <ch-edit\n class={{\n \"input\": true,\n \"input-error\":\n this.validatableControls.get(\"commit-number\")?.hasError\n }}\n id=\"commit-number\"\n type=\"number\"\n placeholder={this.#componentLocale.placeholders.commitNumber}\n onInput={this.#handleCommitNumberValueChanged}\n mode=\"numeric\"\n ref={(el: HTMLChEditElement) =>\n (this.#revisionNumberRef = el as HTMLChEditElement)\n }\n />\n {this.#evaluateTooltipRender(this.#revisionNumberRef)}\n </div>\n </div>\n </div>\n );\n };\n\n #renderLastDatesButtons = () => {\n if (this.selectedOption !== \"fromCommitDate\") {\n return null;\n }\n\n return (\n <div class=\"layout layout--cols-3\">\n <div class=\"layout__panel\">\n <button\n id=\"last-seven-days-button\"\n class=\"button-secondary\"\n onClick={() => this.#handleLastDates(\"lastSevenDays\")}\n >\n {this.#componentLocale.captions.lastSevenDays}\n </button>\n </div>\n <div class=\"layout__panel\">\n <button\n id=\"last-thirty-days-button\"\n class=\"button-secondary\"\n onClick={() => this.#handleLastDates(\"lastThirtyDays\")}\n >\n {this.#componentLocale.captions.lastThirtyDays}\n </button>\n </div>\n <div class=\"layout__panel\">\n <button\n id=\"last-ninety-days-button\"\n class=\"button-secondary\"\n onClick={() => this.#handleLastDates(\"lastNinetyDays\")}\n >\n {this.#componentLocale.captions.lastNinetyDays}\n </button>\n </div>\n </div>\n );\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts src={this.#shortcutsSrc}></ch-shortcuts>\n <div\n class={{\n \"spacing-body\": true,\n \"commit-date-container\": this.selectedOption === \"fromCommitDate\",\n \"commit-number-container\":\n this.selectedOption === \"fromCommitNumber\"\n }}\n >\n <p class=\"body-regular-m heading\">\n {this.#componentLocale.labels.selectRange}\n </p>\n <ch-radio-group-render\n class=\"radio-group\"\n direction=\"horizontal\"\n model={this.radioGroupModel}\n onChange={this.#handleRadioGroupValueChange}\n value={MERGE_ACTION_OPTIONS.fromCommitDate.value}\n />\n\n {this.#renderLastDatesButtons()}\n {this.#renderCommitDateInput()}\n {this.#renderCommitNumberInput()}\n </div>\n\n <footer class=\"dialog-footer-with-border spacing-body\">\n <div class=\"buttons-spacer\">\n <button\n class=\"button-secondary\"\n id=\"cancel-button\"\n onClick={this.#cancelClickHandler}\n >\n {this.#componentLocale.buttons.cancel}\n </button>\n\n <button\n id=\"confirm-button\"\n class=\"button-primary\"\n onClick={this.#confirmClickHandler}\n disabled={this.#confirmButtonDisabled()}\n >\n {this.#componentLocale.buttons.confirm}\n </button>\n </div>\n </footer>\n </Host>\n );\n }\n}\n\nexport type SelectedMergeActionData = {\n operationType: MergeActionTaken;\n fromDate?: Date;\n fromRevision?: number;\n};\n\nexport type MergeActionTaken = \"fromCommitDate\" | \"fromCommitNumber\";\n\nexport type LastDates = \"lastSevenDays\" | \"lastThirtyDays\" | \"lastNinetyDays\";\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["aboutCss","CSS_BUNDLES","GxIdeAbout","_GxIdeAbout_componentLocale","set","this","_GxIdeAbout_nextLogo","getAssetPath","_GxIdeAbout_copyVersionsHandler","copying","setTimeout","navigator","clipboard","writeText","appVersion","__classPrivateFieldGet","copyVersionsAdditionalText","versions","map","version","join","componentWillLoad","__classPrivateFieldSet","Locale","getComponentStrings","el","render","renderPrivacyAndTerms","privacyPolicyCallback","termsAndConditionsCallback","renderPrivacyOrTerms","h","Host","class","model","src","alt","logoAlt","nextVersion","length","type","onClick","disabled","copied","copy","detailsCallback","detailsAndAcknowledgmentes","hidden","privacyPolicy","termsAndConditions","copyright"],"sources":["src/components/about/about.scss?tag=gx-ide-about&encapsulation=shadow","src/components/about/about.tsx"],"sourcesContent":["$versionsListPadding: 14px;\n\n:host {\n --spacing-body-block-start: 24px;\n --spacing-body-block-end: 24px;\n --spacing-body-inline-start: 16px;\n --spacing-body-inline-end: 16px;\n\n display: grid;\n inline-size: 100%;\n block-size: 100%;\n gap: var(--spacing-gap-xl);\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n background-color: var(\n --elevation-background-color,\n var(--color-accent-surface-elevation-2)\n );\n color: var(--color-text-neutral-default);\n text-align: center;\n}\n.section {\n // section was addad for semantics, in order to allow a footer tag.\n display: contents;\n}\n\n.header {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-gap-m);\n}\n\n.main {\n overflow: auto;\n display: grid;\n grid-template-rows: 1fr max-content;\n gap: var(--spacing-gap-xxl);\n}\n\n.logo {\n &__container {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-gap-l);\n align-items: center;\n margin: unset;\n }\n &__img {\n $logoSize: 28px;\n inline-size: $logoSize;\n block-size: $logoSize;\n }\n}\n.logotype {\n color: var(--color-text-neutral-default);\n}\n\n.versions__container {\n overflow: hidden;\n border: 1px solid var(--color-border-surface-on-elevation-1);\n border-radius: 4px;\n display: grid;\n grid-template-rows: 1fr max-content;\n inline-size: 100%;\n\n button {\n justify-self: center;\n min-inline-size: 72px;\n }\n}\n.versions__container-footer {\n padding: $versionsListPadding;\n}\n\n.versions__list {\n overflow: auto;\n list-style: none;\n margin: 0;\n padding: $versionsListPadding;\n display: flex;\n flex-direction: column;\n gap: var(--spacing-gap-m);\n}\n\n.link-underlined {\n // TODO: Add link helper class in Mercury\n text-decoration: underline;\n color: var(--color-text-neutral-default);\n &:hover {\n color: var(--color-text-neutral-hover);\n }\n &:active {\n color: var(--color-text-neutral-pressed);\n }\n}\n\n.links-container {\n display: flex;\n gap: var(--spacing-gap-m);\n}\n\n.footer {\n // TODO: Add color helper classes in Mercury\n display: flex;\n align-items: center;\n flex-direction: column;\n gap: var(--spacing-gap-m);\n color: var(--color-text-neutral-disabled);\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n State,\n Element,\n getAssetPath\n} from \"@stencil/core\";\n\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { Locale } from \"../../common/locale\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"utils/elevation\",\n \"components/button\",\n \"chameleon/scrollbar\"\n];\n\n@Component({\n tag: \"gx-ide-about\",\n styleUrl: \"about.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/about\"]\n})\nexport class GxIdeAbout {\n #componentLocale: any;\n #nextLogo = getAssetPath(`./gx-ide-assets/about/images/next-logo.svg`);\n\n @Element() el: HTMLGxIdeAboutElement;\n\n /**\n * The application version to display in the dialog.\n */\n @Prop() readonly appVersion: string;\n\n /**\n * GeneXus Next version, and also related dependencies versions\n */\n @Prop() readonly versions: string[] = [];\n\n /**\n * Callback invoked when the user clicks on \"Details & Acknowledgements\"\n */\n @Prop() readonly detailsCallback: DetailsCallback;\n\n /**\n * Callback invoked when the user clicks on \"Privacy policy\"\n */\n @Prop() readonly privacyPolicyCallback: PrivacyPolicyCallback;\n\n /**\n * Callback invoked when the user clicks on \"Terms and conditions\"\n */\n @Prop() readonly termsAndConditionsCallback: TermsAndConditionsCallback;\n\n /**\n * True when the user copies the versions\n */\n @State() copying: boolean = false;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n #copyVersionsHandler = () => {\n this.copying = true;\n setTimeout(() => {\n this.copying = false;\n }, 1000);\n\n // be cautions with spaces and indentaiton on the following .writeText\n navigator.clipboard.writeText(\n `${this.appVersion}\\n\n${this.#componentLocale.copyVersionsAdditionalText}${this.versions\n .map(version => `- ${version}`)\n .join(\"\\n\")}`\n );\n };\n\n render() {\n const renderPrivacyAndTerms =\n this.privacyPolicyCallback && this.termsAndConditionsCallback;\n const renderPrivacyOrTerms =\n this.privacyPolicyCallback || this.termsAndConditionsCallback;\n\n return (\n <Host class=\"scrollable\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n <header class=\"header\">\n <figure class=\"logo__container\">\n <img\n class=\"logo__img\"\n src={this.#nextLogo}\n alt={this.#componentLocale.logoAlt}\n />\n <figcaption class=\"body-semi-bold-m logotype\">\n GeneXus Next\n </figcaption>\n </figure>\n {this.appVersion && (\n <p class=\"body-reuglar-m\">\n {this.#componentLocale.nextVersion}{\" \"}\n <span>{this.appVersion}</span>\n </p>\n )}\n </header>\n <div class=\"main\">\n {this.versions.length ? (\n <div class=\"versions__container elevation-1\">\n <ul class=\"versions__list scrollable\">\n {this.versions.map(version => {\n return <li class=\"body-regular-s\">{version}</li>;\n })}\n </ul>\n <div class=\"versions__container-footer\">\n <button\n class=\"button-secondary\"\n type=\"button\"\n onClick={this.#copyVersionsHandler}\n disabled={this.copying}\n >\n {this.copying\n ? this.#componentLocale.copied\n : this.#componentLocale.copy}\n {}\n </button>\n </div>\n </div>\n ) : null}\n\n {this.detailsCallback && (\n <button\n class=\"button-tertiary\"\n type=\"button\"\n onClick={this.detailsCallback}\n >\n {this.#componentLocale.detailsAndAcknowledgmentes}\n </button>\n )}\n </div>\n\n <footer class=\"body-regular-s footer\">\n {renderPrivacyOrTerms && (\n <div class=\"links-container\" hidden={!renderPrivacyAndTerms}>\n {this.privacyPolicyCallback && (\n <button\n class=\"link-underlined caption-regular-m\"\n type=\"button\"\n onClick={this.privacyPolicyCallback}\n >\n {this.#componentLocale.privacyPolicy}\n </button>\n )}\n\n {renderPrivacyAndTerms && \"|\"}\n\n {this.termsAndConditionsCallback && (\n <button\n class=\"link-underlined caption-regular-m\"\n type=\"button\"\n onClick={this.termsAndConditionsCallback}\n >\n {this.#componentLocale.termsAndConditions}\n </button>\n )}\n </div>\n )}\n {this.#componentLocale.copyright}\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type DetailsCallback = () => Promise<void>;\nexport type PrivacyPolicyCallback = () => Promise<void>;\nexport type TermsAndConditionsCallback = () => Promise<void>;\n"],"mappings":";;;;AAAA,MAAMA,IAAW;;;;;;;;;;;;;;;;;ACajB,MAAMC,IAA8B,EAClC,qBACA,oBACA,mBACA,qBACA;;MASWC,IAAU;;;IACrBC,EAAAC,IAAAC,WAAA;IACAC,EAAAF,IAAAC,MAAYE,EAAa;IAsCzBC,EAAAJ,IAAAC,OAAuB;MACrBA,KAAKI,UAAU;MACfC,YAAW;QACTL,KAAKI,UAAU;AAAK,UACnB;;YAGHE,UAAUC,UAAUC,UAClB,GAAGR,KAAKS,iBACZC,EAAAV,MAAIF,GAAA,KAAkBa,6BAA6BX,KAAKY,SACjDC,KAAIC,KAAW,KAAKA,MACpBC,KAAK;AACT;;oBAtCmC;;;;mBAoBV;;EAE5B,uBAAMC;IACJC,EAAAjB,MAAIF,SAA0BoB,EAAOC,oBAAoBnB,KAAKoB,KAAG;;EAkBnE,MAAAC;IACE,MAAMC,IACJtB,KAAKuB,yBAAyBvB,KAAKwB;IACrC,MAAMC,IACJzB,KAAKuB,yBAAyBvB,KAAKwB;IAErC,OACEE,EAACC,GAAI;MAACC,OAAM;OACVF,EAAA;MAAUG,OAAOjC;QACjB8B,EAAA;MAASE,OAAM;OACbF,EAAA;MAAQE,OAAM;OACZF,EAAA;MAAQE,OAAM;OACZF,EAAA;MACEE,OAAM;MACNE,KAAKpB,EAAAV,MAAIC,GAAA;MACT8B,KAAKrB,EAAAV,MAAIF,GAAA,KAAkBkC;QAE7BN,EAAA;MAAYE,OAAM;OAA2B,kBAI9C5B,KAAKS,cACJiB,EAAA;MAAGE,OAAM;OACNlB,EAAAV,MAAIF,GAAA,KAAkBmC,aAAa,KACpCP,EAAA,cAAO1B,KAAKS,eAIlBiB,EAAA;MAAKE,OAAM;OACR5B,KAAKY,SAASsB,SACbR,EAAA;MAAKE,OAAM;OACTF,EAAA;MAAIE,OAAM;OACP5B,KAAKY,SAASC,KAAIC,KACVY,EAAA;MAAIE,OAAM;OAAkBd,OAGvCY,EAAA;MAAKE,OAAM;OACTF,EAAA;MACEE,OAAM;MACNO,MAAK;MACLC,SAAS1B,EAAAV,MAAIG,GAAA;MACbkC,UAAUrC,KAAKI;OAEdJ,KAAKI,UACFM,EAAAV,MAAIF,GAAA,KAAkBwC,SACtB5B,EAAAV,MAAIF,GAAA,KAAkByC,UAK9B,MAEHvC,KAAKwC,mBACJd,EAAA;MACEE,OAAM;MACNO,MAAK;MACLC,SAASpC,KAAKwC;OAEb9B,EAAAV,MAAIF,GAAA,KAAkB2C,8BAK7Bf,EAAA;MAAQE,OAAM;OACXH,KACCC,EAAA;MAAKE,OAAM;MAAkBc,SAASpB;OACnCtB,KAAKuB,yBACJG,EAAA;MACEE,OAAM;MACNO,MAAK;MACLC,SAASpC,KAAKuB;OAEbb,EAAAV,MAAIF,GAAA,KAAkB6C,gBAI1BrB,KAAyB,KAEzBtB,KAAKwB,8BACJE,EAAA;MACEE,OAAM;MACNO,MAAK;MACLC,SAASpC,KAAKwB;OAEbd,EAAAV,MAAIF,GAAA,KAAkB8C,sBAK9BlC,EAAAV,MAAIF,GAAA,KAAkB+C"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["curlInspectorCss","CSS_BUNDLES","GxIdeCurlInspector","_GxIdeCurlInspector_componentLocale","set","this","_GxIdeCurlInspector_chShortcutsEl","_GxIdeCurlInspector_descriptionEl","_GxIdeCurlInspector_moduleEntitySelector","_GxIdeCurlInspector_nameEl","_GxIdeCurlInspector_editorEl","_GxIdeCurlInspector_curlContentChangeHandler","_GxIdeCurlInspector_keydownHandler","_GxIdeCurlInspector_initializeValidatableControls","validatableControls","__classPrivateFieldGet","forEach","validatableControl","id","reference","hasError","message","undefined","_GxIdeCurlInspector_evaluateTooltipRender","controlReference","_b","_a","get","_c","h","class","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","_GxIdeCurlInspector_validateForm","name","value","trim","parentId","_d","curl","_e","curlContent","isNameValid","validateNameCallback","Boolean","isParentValid","isCurlValid","isFormValid","_GxIdeCurlInspector_handleEditorChange","text","call","_GxIdeCurlInspector_handleSlotChange","e","elements","target","assignedElements","length","__classPrivateFieldSet","addEventListener","event","detail","content","ctrlKey","metaKey","key","setTimeout","_GxIdeCurlInspector_createHandler","data","description","confirmCallback","then","formSubmitResult","validateControls","Map","componentWillLoad","Locale","getComponentStrings","el","componentDidLoad","disconnectedCallback","removeEventListener","suspendShortcuts","suspend","render","Host","model","src","ref","htmlFor","header","nameFieldLabel","onInput","descriptionFieldLabel","moduleFolderLabel","defaultParent","labelPosition","defaultValue","selectEntityCallback","selectModuleCallback","onSlotchange","onClick","cancelCallback","part","footer","btnCancel","disabled","btnCreate"],"sources":["src/components/curl-inspector/curl-inspector.scss?tag=gx-ide-curl-inspector&encapsulation=shadow","src/components/curl-inspector/curl-inspector.tsx"],"sourcesContent":[":host {\n display: grid;\n grid-template-rows: max-content 1fr max-content;\n block-size: 100%;\n overflow: auto;\n}\n\n.section {\n display: contents;\n}\n\n.header {\n}\n\n.main {\n display: grid;\n overflow: auto;\n}\n.field-group-name-description-module {\n align-items: center;\n grid-template-areas:\n \"name-label name-input\"\n \"description-label description-input\"\n \"module-label module-entity-selector\";\n grid-template-columns: max-content 1fr;\n}\n\n.name-label {\n grid-area: name-label;\n}\n.name-input {\n grid-area: name-input;\n}\n.description-label {\n grid-area: description-label;\n}\n.description-input {\n grid-area: description-input;\n}\n.module-label {\n grid-area: module-label;\n}\n.module-entity-selector {\n grid-area: module-entity-selector;\n}\n\n.tooltip {\n /* WA: Tooltip takes layout space by default, height: 0 prevents layout shift */\n height: 0;\n}\n","import {\n Component,\n Host,\n Prop,\n Element,\n State,\n Method,\n h\n} from \"@stencil/core\";\n\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { config } from \"../../common/config\";\nimport { Locale } from \"../../common/locale\";\nimport { FormSubmitResult } from \"../../common/types\";\nimport {\n ControlValidation,\n validateControls\n} from \"../../common/form-validation\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tooltip\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\n@Component({\n tag: \"gx-ide-curl-inspector\",\n styleUrl: \"curl-inspector.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/curl-inspector\"]\n})\nexport class GxIdeCurlInspector {\n #componentLocale: any;\n #chShortcutsEl: HTMLChShortcutsElement;\n #descriptionEl!: HTMLChEditElement;\n #moduleEntitySelector!: HTMLGxIdeEntitySelectorElement;\n #nameEl!: HTMLChEditElement;\n #editorEl: TextProviderElement;\n #curlContentChangeHandler: EventListener;\n #keydownHandler: EventListener;\n\n @Element() el: HTMLGxIdeCurlInspectorElement;\n\n @State() showTooltipError: boolean = false;\n @State() isFormValid: boolean = false;\n @State() curlContent: string = \"\";\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * Callback that must be invoked when the user wants to cancel the operation\n */\n @Prop() readonly cancelCallback: () => Promise<void>;\n\n /**\n * Callback that must be invoked when the user confirms the creation. Receives the data\n * necessary to create the procedure.\n */\n @Prop() readonly confirmCallback!: (\n data: CurlImportData\n ) => Promise<FormSubmitResult>;\n\n /**\n * Default value for Module/Folder field\n */\n @Prop() readonly defaultParent: EntityData;\n\n /**\n * Actual value for Module/Folder field\n */\n @Prop() readonly parent: EntityData;\n\n /**\n * Callback invoked when the action is executed in the Module/Folder filter. It returns the\n * information of the selected object (id and name) or 'undefined' if it was canceled.\n */\n @Prop() readonly selectModuleCallback: SelectModuleCallback;\n\n /**\n * Callback to validate the name. Should return true if the name is valid, false otherwise.\n */\n @Prop() readonly validateNameCallback?: (name: string) => boolean;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidLoad() {\n this.#initializeValidatableControls();\n }\n\n disconnectedCallback() {\n if (this.#editorEl && this.#editorEl.removeEventListener) {\n this.#editorEl.removeEventListener(\"input\", this.#handleEditorChange);\n this.#editorEl.removeEventListener(\n \"curl-content-change\",\n this.#curlContentChangeHandler\n );\n this.#editorEl.removeEventListener(\"keydown\", this.#keydownHandler);\n }\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n this.#chShortcutsEl.suspend = suspendShortcuts;\n }\n\n #initializeValidatableControls = () => {\n const validatableControls: HTMLElement[] = [\n this.#nameEl,\n this.#moduleEntitySelector\n ];\n validatableControls.forEach(validatableControl => {\n if (validatableControl.id) {\n this.validatableControls.set(validatableControl.id, {\n reference: validatableControl,\n hasError: false,\n message: undefined\n });\n }\n });\n };\n\n #evaluateTooltipRender = (\n controlReference: HTMLElement\n ): HTMLChTooltipElement =>\n this.validatableControls?.get(controlReference?.id)?.hasError &&\n this.validatableControls.get(controlReference.id)?.message && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={controlReference as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.validatableControls.get(controlReference.id).message}\n </ch-tooltip>\n );\n\n #validateForm = () => {\n const name = this.#nameEl?.value?.trim() || \"\";\n const parentId = this.#moduleEntitySelector?.value?.id || \"\";\n const curl = this.curlContent?.trim() || \"\";\n\n const isNameValid = this.validateNameCallback\n ? this.validateNameCallback(name)\n : Boolean(name);\n const isParentValid = Boolean(parentId);\n const isCurlValid = Boolean(curl);\n\n this.isFormValid = isNameValid && isParentValid && isCurlValid;\n };\n\n #handleEditorChange = () => {\n if (this.#editorEl) {\n this.curlContent = this.#editorEl.text;\n this.#validateForm();\n }\n };\n\n #handleSlotChange = (e: Event) => {\n const elements = (e.target as HTMLSlotElement).assignedElements();\n if (elements.length) {\n this.#editorEl = elements[0] as TextProviderElement;\n\n this.#editorEl.addEventListener(\"input\", this.#handleEditorChange);\n\n this.#curlContentChangeHandler = ((event: CustomEvent) => {\n this.curlContent = event.detail.content;\n this.#handleEditorChange();\n }) as EventListener;\n\n this.#editorEl.addEventListener(\n \"curl-content-change\",\n this.#curlContentChangeHandler\n );\n\n this.#keydownHandler = (event: KeyboardEvent) => {\n if ((event.ctrlKey || event.metaKey) && event.key === \"v\") {\n setTimeout(() => {\n this.#handleEditorChange();\n }, 0);\n }\n };\n\n this.#editorEl.addEventListener(\"keydown\", this.#keydownHandler);\n\n this.curlContent = this.#editorEl.text;\n this.#validateForm();\n }\n };\n\n #createHandler = () => {\n const data: CurlImportData = {\n name: this.#nameEl.value,\n description: this.#descriptionEl.value,\n parentId: this.#moduleEntitySelector.value?.id,\n curl: this.curlContent\n };\n this.confirmCallback(data).then((formSubmitResult: FormSubmitResult) => {\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\n });\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={\"./gx-ide-assets/curl-inspector/shortcuts.json\"}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n <section class=\"section\">\n <header class=\"header field-group spacing-body dialog-header\">\n <div class=\"field-group field-group-name-description-module\">\n <label class=\"label name-label\" htmlFor=\"input-name\">\n {this.#componentLocale.header.nameFieldLabel}\n </label>\n <ch-edit\n class=\"input name-input\"\n id=\"input-name\"\n ref={(el: HTMLChEditElement) =>\n (this.#nameEl = el as HTMLChEditElement)\n }\n onInput={this.#validateForm}\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#nameEl)}\n\n <label\n class=\"label description-label\"\n htmlFor=\"input-description\"\n >\n {this.#componentLocale.header.descriptionFieldLabel}\n </label>\n <ch-edit\n class=\"input description-input\"\n id=\"input-description\"\n ref={(el: HTMLChEditElement) =>\n (this.#descriptionEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n\n <label class=\"label module-label\" htmlFor=\"input-module\">\n {this.#componentLocale.header.moduleFolderLabel}\n </label>\n <gx-ide-entity-selector\n class=\"module module-entity-selector\"\n id=\"module\"\n value={this.defaultParent}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#moduleEntitySelector =\n el as HTMLGxIdeEntitySelectorElement)\n }\n labelPosition=\"none\"\n defaultValue={this.defaultParent}\n selectEntityCallback={this.selectModuleCallback}\n ></gx-ide-entity-selector>\n {this.#evaluateTooltipRender(this.#moduleEntitySelector)}\n </div>\n </header>\n <div class=\"main field-group scrollable\">\n <slot\n name=\"CurlTextEditor\"\n onSlotchange={this.#handleSlotChange}\n ></slot>\n </div>\n <footer class=\"dialog-footer dialog-footer spacing-body-block-end spacing-body-inline\">\n <div class=\"buttons-spacer\">\n <button\n class=\"button-secondary\"\n id=\"button-cancel\"\n onClick={this.cancelCallback}\n part=\"button-cancel\"\n >\n {this.#componentLocale.footer.btnCancel}\n </button>\n <button\n class=\"button-primary\"\n id=\"button-ok\"\n onClick={this.#createHandler}\n part=\"button-ok\"\n disabled={!this.isFormValid}\n >\n {this.#componentLocale.footer.btnCreate}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type CurlImportData = {\n name: string;\n description: string;\n parentId: string;\n curl: string;\n};\n\nexport type EntityData = {\n id: string;\n name: string;\n iconSrc?: string;\n};\n\nexport type SelectModuleCallback = () => Promise<EntityData | undefined>;\n\ninterface ItextProvider {\n readonly text: string;\n}\n\ntype TextProviderElement = HTMLElement & ItextProvider;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["teamDevPreviewCss","TeamDevEmptyState","CSS_BUNDLES","VERSION_ICON","getIconPath","category","name","colorType","ADD_ICON","EDITED_ICON","SUBTRACT_ICON","REFRESH_ICON","WARNING_ICON","OPEN_WINDOW_ICON","LOADER_ICON","ERROR_ICON","REMOTE_CHANGES_TAB","LOCAL_CHANGES_TAB","GxIdeTeamDevPreview","_GxIdeTeamDevPreview_componentLocale","set","this","_GxIdeTeamDevPreview_isPendingReloadLocalChanges","_GxIdeTeamDevPreview_isPendingReloadRemoteChanges","_GxIdeTeamDevPreview_commitData","_GxIdeTeamDevPreview_updateData","_GxIdeTeamDevPreview_prevVersionName","_GxIdeTeamDevPreview_isTeamDevOptionsEnabled","_GxIdeTeamDevPreview_emptyStateConfig","_GxIdeTeamDevPreview_localChangesTreeEL","_GxIdeTeamDevPreview_remoteChangesTreeEL","_GxIdeTeamDevPreview_setEmptyStateConfig","__classPrivateFieldSet","NoKBOpen","title","__classPrivateFieldGet","emptyState","noConnectedKBTitle","description","noOpenKBDescription","buttonText","buttons","createKBFromServer","buttonHandler","_GxIdeTeamDevPreview_createKBFromServerHandler","showButton","NoConnectedKB","noConnectedKBDescription","shareKBToServer","_GxIdeTeamDevPreview_shareKBToServerHandler","NoConnectedGXServer","noConnectedGXServerTitle","noConnectedGXServerDescription","reconnect","_GxIdeTeamDevPreview_reconnectHandler","NoLinkedVersion","noLinkedVersionTitle","noLinkedVersionDescription","undefined","FrozenVersion","frozenVersionTitle","frozenVersionDescription","None","_GxIdeTeamDevPreview_setTeamDevOptionsStatus","teamDevPreviewData","isKBOpen","isLinkedKB","isLinkedVersion","isFrozenVersion","existsGXServerSession","_GxIdeTeamDevPreview_loadChanges","async","type","loadingLocalChanges","loadLocalChangesCallback","_GxIdeTeamDevPreview_convertDataToTreeView","call","loadingRemoteChanges","loadRemoteChangesCallback","rootItemName","data","isLocal","pendingCommitChangesCount","_b","_a","pendingForCommit","length","captions","localChanges","pendingRemoteChangesCount","_d","_c","pendingForUpdate","remoteChanges","treeViewModel","id","caption","expanded","parts","items","map","item","startImgSrc","icon","typeIcon","endImgSrc","_GxIdeTeamDevPreview_renderIcon","state","action","h","style","display","color","marginLeft","module","leaf","localChangesTreeViewModel","_GxIdeTeamDevPreview_updateTabModel","remoteChangesTreeViewModel","_GxIdeTeamDevPreview_checkedItemsChangeHandler","event","checkedNodesIds","Array","from","detail","values","filter","node","checked","localChangesCheckedNodesIds","updateItemsProperties","remoteChangesCheckedNodesIds","shareKBToServerCallback","createKBFromServerCallback","_GxIdeTeamDevPreview_openFullDialogHandler","openFullDialogCallback","_GxIdeTeamDevPreview_commitChangesHandler","committingChanges","commitCallback","commitMessage","_GxIdeTeamDevPreview_commitMessageInputHandler","_GxIdeTeamDevPreview_updateRemoteChangesHandler","updatingChanges","updateCallback","_GxIdeTeamDevPreview_tabSelectionChangedHandler","selectedTabId","newSelectedId","_GxIdeTeamDevPreview_openTeamDevInfoHandler","openTeamDevInfoCallback","reconnectCallback","value","iconMap","inserted","modified","deleted","conflicted","_GxIdeTeamDevPreview_disableConfirmButton","trim","serverOperationsDisabled","tabId","tabModel","tab","_GxIdeTeamDevPreview_getEmptyStateTitle","getEmptyStateType","_GxIdeTeamDevPreview_getEmptyStateDescription","_GxIdeTeamDevPreview_getEmptyStateButtonText","_GxIdeTeamDevPreview_getEmptyStateButtonHandler","_GxIdeTeamDevPreview_renderEmptyStateButton","_GxIdeTeamDevPreview_renderReloadChangesButton","isLoading","isConfirmationInProcess","reloadCaption","reloadingCaption","reloadLocal","reloadingLocal","reloadRemote","reloadingRemote","class","onClick","disabled","src","_GxIdeTeamDevPreview_renderEmptyState","show","message","noLocalChanges","noRemoteChanges","_GxIdeTeamDevPreview_renderTreeChanges","Fragment","checkbox","model","toggleCheckboxes","onCheckedItemsChange","expandableButton","expandOnClick","ref","el","_GxIdeTeamDevPreview_renderConfirmButton","committing","updating","commit","update","_GxIdeTeamDevPreview_renderLocalChanges","accessibleName","accessibleNames","placeholder","placeholders","onInput","multiline","_GxIdeTeamDevPreview_renderRemoteChanges","onTeamDevPreviewDataChanged","versionName","versionChanged","reloadChanges","componentWillLoad","Locale","getComponentStrings","componentDidLoad","isActiveTab","disableServerOperations","render","Host","widget","isAnimated","stateIconSrc","stateTitle","stateDescription","about","teamDev","selectedId","tabListPosition","onSelectedItemChange","slot","footer","openFullDialog"],"sources":["src/components/team-dev/preview/team-dev-preview.scss?tag=gx-ide-team-dev-preview&encapsulation=shadow","src/components/team-dev/preview/team-dev-preview.tsx"],"sourcesContent":["@import \"../../../global/gx-ide-common.scss\";\n@import \"../../../global/gx-ide-mixins.scss\";\n\n// Variables para gaps y tamaños\n$gap-main: var(--spacing-gap-xl);\n$gap-secondary: var(--spacing-gap-m);\n$max-button-width: 300px;\n$commit-message-height: 65px;\n\n// Mixin para grid con gap\n@mixin grid-gap($gap) {\n display: grid;\n gap: $gap;\n}\n\n:host {\n display: grid;\n block-size: 100%;\n}\n\n.main-container {\n @include grid-gap($gap-main);\n grid-template-rows: max-content 1fr max-content;\n overflow: auto;\n\n .local-changes-container {\n @include grid-gap($gap-secondary);\n grid-template-rows: max-content max-content max-content 1fr;\n padding-inline: 0;\n }\n .remote-changes-container {\n @include grid-gap($gap-secondary);\n grid-template-rows: max-content max-content 1fr;\n padding-inline: 0;\n }\n}\n\n.dialog-footer-with-border.open-window-container {\n --dialog-footer-justify-content: flex-start;\n}\n\n// WA: Loader animation workaround, ideally move to mercury\n.loader-icon {\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n 100% {\n transform: rotate(360deg);\n }\n}\n\n// WA: Avoid scrollbar flickering for empty state\n.empty-state {\n overflow: hidden;\n}\n\n.giu-static-pill-icon-and-text {\n background-color: var(--color-accent-surface-elevation-2);\n}\n\n.tab {\n overflow: auto;\n row-gap: $gap-secondary;\n\n &.border-style-none {\n border-style: none;\n }\n}\n\n.empty-state-button {\n inline-size: 100%;\n max-inline-size: $max-button-width;\n}\n\n.button-tertiary {\n &.team-dev-button {\n text-decoration: underline;\n color: var(--color-text-neutral-default);\n }\n\n &.refresh-button,\n &.open-full-dialog-button {\n justify-self: start;\n }\n}\n\n.commit-message-textarea {\n block-size: $commit-message-height;\n}\n\n.empty-state-container {\n @include grid-gap($gap-secondary);\n grid-template-rows: max-content max-content;\n}\n\n// WA: These styles display the tree as a flat list while preserving tree functionality.\n\n// Style for change-item header\nch-tree-view-render::part(change-item item__header) {\n padding-inline-start: 0;\n}\n\n// Style for root-item header\nch-tree-view-render::part(root-item item__header) {\n padding-inline-start: 0;\n font-weight: var(--font-style-semi-bold);\n font-size: var(--font-size-body-s);\n line-height: var(--line-height-tight);\n}\n\n.version-pill {\n @include ellipsis;\n}\n\n.giu-static-pill-icon-and-text.version {\n grid-auto-columns: unset;\n}\n","import {\n ChEditCustomEvent,\n TabModel,\n TabSelectedItemInfo,\n TreeViewItemModelExtended,\n TreeViewModel\n} from \"@genexus/chameleon-controls-library\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport {\n Component,\n Element,\n Fragment,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch\n} from \"@stencil/core\";\nimport { Locale } from \"../../../common/locale\";\nimport {\n Action,\n CommitCallback,\n CommitData,\n LoadLocalChangesCallback,\n LoadRemoteChangesCallback,\n ModifiedObject,\n ModifiedObjectData,\n ObjectState,\n UpdateCallback,\n UpdateData\n} from \"../version-control/common/types\";\n\nenum TeamDevEmptyState {\n NoKBOpen,\n NoConnectedKB,\n NoConnectedGXServer,\n NoLinkedVersion,\n FrozenVersion,\n None\n}\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\",\n \"components/tree-view\",\n \"components/tab\"\n];\n\nconst VERSION_ICON = getIconPath({\n category: \"system\",\n name: \"version\",\n colorType: \"on-surface\"\n});\n\nconst ADD_ICON = getIconPath({\n category: \"system\",\n name: \"add\",\n colorType: \"success\"\n});\n\nconst EDITED_ICON = getIconPath({\n category: \"system\",\n name: \"edit\",\n colorType: \"warning\"\n});\n\nconst SUBTRACT_ICON = getIconPath({\n category: \"system\",\n name: \"substract\",\n colorType: \"error\"\n});\n\nconst REFRESH_ICON = getIconPath({\n category: \"system\",\n name: \"refresh\",\n colorType: \"primary\"\n});\n\nconst WARNING_ICON = getIconPath({\n category: \"system\",\n name: \"warning\",\n colorType: \"warning\"\n});\n\nconst OPEN_WINDOW_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"open-window\",\n colorType: \"on-surface\"\n});\n\nconst LOADER_ICON = getIconPath({\n category: \"system\",\n name: \"loading\",\n colorType: \"primary\"\n});\n\nconst ERROR_ICON = getIconPath({\n category: \"system\",\n name: \"error\",\n colorType: \"on-surface\"\n});\n\nconst REMOTE_CHANGES_TAB = \"remote-changes-tab\";\nconst LOCAL_CHANGES_TAB = \"local-changes-tab\";\n\n@Component({\n tag: \"gx-ide-team-dev-preview\",\n styleUrl: \"team-dev-preview.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-preview\"]\n})\nexport class GxIdeTeamDevPreview {\n #componentLocale: any;\n #isPendingReloadLocalChanges: boolean = false;\n #isPendingReloadRemoteChanges: boolean = false;\n #commitData: CommitData;\n #updateData: UpdateData;\n #prevVersionName: string;\n #isTeamDevOptionsEnabled: boolean = false;\n #emptyStateConfig: { [key: string]: any } = {};\n #localChangesTreeEL: HTMLChTreeViewRenderElement;\n #remoteChangesTreeEL: HTMLChTreeViewRenderElement;\n\n @Element() el: HTMLGxIdeTeamDevPreviewElement;\n\n @State() loadingRemoteChanges: boolean = false;\n @State() loadingLocalChanges: boolean = true;\n @State() tabModel: TabModel = [];\n\n /**\n * Currently selected tab ID\n */\n @State() selectedTabId: string = LOCAL_CHANGES_TAB;\n\n /**\n * Number of pending commit changes\n */\n @State() pendingCommitChangesCount: number = 0;\n /**\n * Number of pending remote changes\n */\n @State() pendingRemoteChangesCount: number = 0;\n\n /**\n * Represents the tree view model for remote changes\n */\n @State() remoteChangesTreeViewModel: TreeViewModel = [];\n\n /**\n * Represents the tree view model for local changes\n */\n @State() localChangesTreeViewModel: TreeViewModel = [];\n\n /**\n * Represents the selected nodes ids from remote changes tree\n */\n @State() remoteChangesCheckedNodesIds: string[] = [];\n\n /**\n * Represents the selected nodes ids from local changes tree\n */\n @State() localChangesCheckedNodesIds: string[] = [];\n\n /**\n * Commit message entered by the user\n */\n @State() commitMessage: string = \"\";\n\n /**\n * Indicates if the commit process is ongoing\n */\n @State() committingChanges: boolean = false;\n\n /**\n * Indicates if the update process is ongoing\n */\n @State() updatingChanges: boolean = false;\n\n /**\n * Indicates if the server operations (commit/update) should be disabled\n */\n @State() serverOperationsDisabled: boolean = false;\n\n /**\n * Data required to render the Team Dev Preview\n */\n @Prop() readonly teamDevPreviewData: TeamDevPreviewData;\n @Watch(\"teamDevPreviewData\")\n async onTeamDevPreviewDataChanged() {\n const { versionName } = this.teamDevPreviewData;\n let versionChanged = false;\n\n this.#setTeamDevOptionsStatus();\n if (this.#prevVersionName !== versionName) {\n this.#prevVersionName = versionName;\n versionChanged = true;\n }\n\n if (this.#isTeamDevOptionsEnabled && versionChanged) {\n await this.reloadChanges(\"local\");\n await this.reloadChanges(\"remote\");\n }\n }\n\n /**\n * Invoked to return the list of remote changes\n */\n @Prop() readonly loadRemoteChangesCallback!: LoadRemoteChangesCallback;\n\n /**\n * Invoked to return the list of local changes\n */\n @Prop() readonly loadLocalChangesCallback!: LoadLocalChangesCallback;\n\n /**\n * Invoked when user starts the commit process\n */\n @Prop() readonly commitCallback!: CommitCallback;\n\n /**\n * Invoked when user starts the update process\n */\n @Prop() readonly updateCallback!: UpdateCallback;\n\n /**\n * Invoked to open the full Team Dev dialog\n */\n @Prop() readonly openFullDialogCallback!: () => Promise<void>;\n\n /**\n * Invoked to share the knowledge base to the server\n */\n @Prop() readonly shareKBToServerCallback!: () => Promise<void>;\n\n /**\n * Invoked to create a knowledge base from the server\n */\n @Prop() readonly createKBFromServerCallback!: () => Promise<void>;\n\n /**\n * Invoked to open the Team Development information\n */\n @Prop() readonly openTeamDevInfoCallback!: () => Promise<void>;\n\n /**\n * Invoked to reconnect to GeneXus Server\n */\n @Prop() readonly reconnectCallback!: () => Promise<void>;\n\n async componentWillLoad() {\n this.#setTeamDevOptionsStatus();\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.tabModel = [\n {\n id: LOCAL_CHANGES_TAB,\n name: `${this.#componentLocale.captions.localChanges}`\n },\n {\n id: REMOTE_CHANGES_TAB,\n name: `${this.#componentLocale.captions.remoteChanges}`\n }\n ];\n this.#setEmptyStateConfig();\n }\n\n async componentDidLoad() {\n if (this.#isTeamDevOptionsEnabled) {\n await this.#loadChanges(\"local\");\n this.#isPendingReloadRemoteChanges = true;\n }\n this.loadingLocalChanges = false;\n }\n\n /**\n * Used by the host to reload remote or local changes\n */\n @Method()\n async reloadChanges(type: TeamDevPreviewMode) {\n const isLocal = type === \"local\";\n const isActiveTab = isLocal\n ? this.selectedTabId === LOCAL_CHANGES_TAB\n : this.selectedTabId === REMOTE_CHANGES_TAB;\n\n if (!isActiveTab) {\n if (isLocal) {\n this.#isPendingReloadLocalChanges = true;\n } else {\n this.#isPendingReloadRemoteChanges = true;\n }\n return;\n }\n\n isLocal\n ? await this.#loadChanges(\"local\")\n : await this.#loadChanges(\"remote\");\n }\n\n /**\n * Used by the host to instruct the component to disable the commit/update button.\n */\n @Method()\n async disableServerOperations(value: boolean) {\n this.serverOperationsDisabled = value;\n }\n\n #setEmptyStateConfig = () => {\n this.#emptyStateConfig = {\n [TeamDevEmptyState.NoKBOpen]: {\n title: this.#componentLocale.emptyState.noConnectedKBTitle,\n description: this.#componentLocale.emptyState.noOpenKBDescription,\n buttonText: this.#componentLocale.buttons.createKBFromServer,\n buttonHandler: this.#createKBFromServerHandler,\n showButton: true\n },\n [TeamDevEmptyState.NoConnectedKB]: {\n title: this.#componentLocale.emptyState.noConnectedKBTitle,\n description: this.#componentLocale.emptyState.noConnectedKBDescription,\n buttonText: this.#componentLocale.buttons.shareKBToServer,\n buttonHandler: this.#shareKBToServerHandler,\n showButton: true\n },\n [TeamDevEmptyState.NoConnectedGXServer]: {\n title: this.#componentLocale.emptyState.noConnectedGXServerTitle,\n description:\n this.#componentLocale.emptyState.noConnectedGXServerDescription,\n buttonText: this.#componentLocale.buttons.reconnect,\n buttonHandler: this.#reconnectHandler,\n showButton: true\n },\n [TeamDevEmptyState.NoLinkedVersion]: {\n title: this.#componentLocale.emptyState.noLinkedVersionTitle,\n description:\n this.#componentLocale.emptyState.noLinkedVersionDescription,\n buttonText: \"\",\n buttonHandler: undefined,\n showButton: false\n },\n [TeamDevEmptyState.FrozenVersion]: {\n title: this.#componentLocale.emptyState.frozenVersionTitle,\n description: this.#componentLocale.emptyState.frozenVersionDescription,\n buttonText: \"\",\n buttonHandler: undefined,\n showButton: false\n },\n [TeamDevEmptyState.None]: {\n title: \"\",\n description: \"\",\n buttonText: \"\",\n buttonHandler: undefined,\n showButton: false\n }\n };\n };\n\n #setTeamDevOptionsStatus = () => {\n if (\n this.teamDevPreviewData.isKBOpen &&\n this.teamDevPreviewData.isLinkedKB &&\n this.teamDevPreviewData.isLinkedVersion &&\n !this.teamDevPreviewData.isFrozenVersion &&\n this.teamDevPreviewData.existsGXServerSession\n ) {\n this.#isTeamDevOptionsEnabled = true;\n return;\n }\n this.#isTeamDevOptionsEnabled = false;\n };\n\n #loadChanges = async (type: TeamDevPreviewMode) => {\n if (type === \"local\") {\n this.loadingLocalChanges = true;\n this.#commitData = await this.loadLocalChangesCallback();\n this.#convertDataToTreeView(\"local\");\n this.loadingLocalChanges = false;\n this.#isPendingReloadLocalChanges = false;\n } else {\n this.loadingRemoteChanges = true;\n this.#updateData = await this.loadRemoteChangesCallback();\n this.#convertDataToTreeView(\"remote\");\n this.loadingRemoteChanges = false;\n this.#isPendingReloadRemoteChanges = false;\n }\n };\n\n #convertDataToTreeView = (type: TeamDevPreviewMode) => {\n let rootItemName = \"\";\n let data: ModifiedObjectData[] | ModifiedObject[];\n const isLocal = type === \"local\";\n if (isLocal) {\n this.pendingCommitChangesCount =\n this.#commitData?.pendingForCommit?.length || 0;\n rootItemName = `${this.#componentLocale.captions.localChanges} (${this.pendingCommitChangesCount})`;\n data = this.#commitData.pendingForCommit;\n } else {\n this.pendingRemoteChangesCount =\n this.#updateData?.pendingForUpdate?.length || 0;\n rootItemName = `${this.#componentLocale.captions.remoteChanges} (${this.pendingRemoteChangesCount})`;\n data = this.#updateData.pendingForUpdate;\n }\n\n const treeViewModel: TreeViewModel = [\n {\n id: \"root\",\n caption: rootItemName,\n expanded: true,\n parts: \"root-item\",\n items: data?.map(item => ({\n id: item.id,\n startImgSrc: isLocal\n ? (item as ModifiedObjectData).type.icon\n : (item as ModifiedObject).typeIcon,\n endImgSrc: isLocal\n ? this.#renderIcon((item as ModifiedObjectData).state)\n : this.#renderIcon((item as ModifiedObject).action),\n caption: (\n //WA: Used to apply different styles to the item caption and path\n <div\n style={{\n display: \"flex\"\n }}\n >\n <span>{item.name}</span>\n <span\n style={{\n color: \"var(--mer-color__neutral-gray--450)\",\n marginLeft: \"4px\"\n }}\n >\n {item.module}\n </span>\n </div>\n ),\n leaf: true,\n parts: \"change-item\"\n }))\n }\n ];\n\n if (isLocal) {\n this.localChangesTreeViewModel = treeViewModel;\n this.#updateTabModel(LOCAL_CHANGES_TAB);\n } else {\n this.remoteChangesTreeViewModel = treeViewModel;\n this.#updateTabModel(REMOTE_CHANGES_TAB);\n }\n };\n\n #checkedItemsChangeHandler = async (\n event: CustomEvent<Map<string, TreeViewItemModelExtended>>,\n type: TeamDevPreviewMode\n ) => {\n const checkedNodesIds = Array.from(event.detail.values())\n .filter(node => node.item.checked && node.item.id !== \"root\")\n .map(node => node.item.id);\n\n if (type === \"local\") {\n this.localChangesCheckedNodesIds = checkedNodesIds;\n this.#localChangesTreeEL.updateItemsProperties([\"root\"], {\n caption: `${this.#componentLocale.captions.localChanges} (${this.localChangesCheckedNodesIds.length}/${this.pendingCommitChangesCount})`\n });\n } else {\n this.remoteChangesCheckedNodesIds = checkedNodesIds;\n this.#remoteChangesTreeEL.updateItemsProperties([\"root\"], {\n caption: `${this.#componentLocale.captions.remoteChanges} (${this.remoteChangesCheckedNodesIds.length}/${this.pendingRemoteChangesCount})`\n });\n }\n };\n\n #shareKBToServerHandler = async () => {\n await this.shareKBToServerCallback();\n };\n\n #createKBFromServerHandler = async () => {\n await this.createKBFromServerCallback();\n };\n\n #openFullDialogHandler = async () => {\n await this.openFullDialogCallback();\n };\n\n #commitChangesHandler = async () => {\n this.committingChanges = true;\n await this.commitCallback(\n this.localChangesCheckedNodesIds,\n this.commitMessage\n );\n this.commitMessage = \"\";\n this.committingChanges = false;\n };\n\n #commitMessageInputHandler = (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n this.commitMessage = (event.detail as string) || \"\";\n };\n\n #updateRemoteChangesHandler = async () => {\n this.updatingChanges = true;\n await this.updateCallback(this.remoteChangesCheckedNodesIds);\n this.updatingChanges = false;\n this.remoteChangesCheckedNodesIds = [];\n };\n\n #tabSelectionChangedHandler = async (\n event: CustomEvent<TabSelectedItemInfo>\n ): Promise<void> => {\n this.selectedTabId = event.detail.newSelectedId;\n if (\n this.selectedTabId === LOCAL_CHANGES_TAB &&\n this.#isPendingReloadLocalChanges\n ) {\n await this.#loadChanges(\"local\");\n }\n if (\n this.selectedTabId === REMOTE_CHANGES_TAB &&\n this.#isPendingReloadRemoteChanges\n ) {\n await this.#loadChanges(\"remote\");\n }\n };\n\n #openTeamDevInfoHandler = async () => {\n await this.openTeamDevInfoCallback();\n };\n\n #reconnectHandler = async () => {\n await this.reconnectCallback();\n };\n\n #renderIcon = (value: ObjectState | Action) => {\n const iconMap = {\n \"inserted\": ADD_ICON,\n \"modified\": EDITED_ICON,\n \"deleted\": SUBTRACT_ICON,\n \"conflicted\": WARNING_ICON,\n \"modified-with-conflicts\": WARNING_ICON\n };\n return iconMap[value] || null;\n };\n\n #disableConfirmButton = (type: TeamDevPreviewMode): boolean => {\n const isLocal = type === \"local\";\n if (isLocal) {\n return (\n this.loadingLocalChanges ||\n !this.commitMessage.trim().length ||\n this.localChangesCheckedNodesIds.length === 0 ||\n this.committingChanges ||\n this.serverOperationsDisabled\n );\n } else {\n return (\n this.loadingRemoteChanges ||\n this.remoteChangesCheckedNodesIds.length === 0 ||\n this.updatingChanges ||\n this.serverOperationsDisabled\n );\n }\n };\n\n #updateTabModel = (tabId: string) => {\n this.tabModel = this.tabModel.map(tab =>\n tab.id === tabId\n ? {\n ...tab,\n name:\n tabId === LOCAL_CHANGES_TAB\n ? `${this.#componentLocale.captions.localChanges} (${this.pendingCommitChangesCount})`\n : `${this.#componentLocale.captions.remoteChanges} (${this.pendingRemoteChangesCount})`\n }\n : tab\n );\n };\n\n private getEmptyStateType(): TeamDevEmptyState {\n const {\n isFrozenVersion,\n existsGXServerSession,\n isKBOpen,\n isLinkedVersion,\n isLinkedKB\n } = this.teamDevPreviewData;\n if (!isKBOpen) {\n return TeamDevEmptyState.NoKBOpen;\n }\n if (isKBOpen && !isLinkedKB) {\n return TeamDevEmptyState.NoConnectedKB;\n }\n if (isKBOpen && isLinkedKB && !isLinkedVersion && !existsGXServerSession) {\n return TeamDevEmptyState.NoConnectedGXServer;\n }\n if (isKBOpen && isLinkedKB && !isLinkedVersion) {\n return TeamDevEmptyState.NoLinkedVersion;\n }\n if (isKBOpen && isLinkedKB && existsGXServerSession && isFrozenVersion) {\n return TeamDevEmptyState.FrozenVersion;\n }\n if (isKBOpen && isLinkedKB && !existsGXServerSession) {\n return TeamDevEmptyState.NoConnectedGXServer;\n }\n return TeamDevEmptyState.None;\n }\n\n #getEmptyStateTitle = () =>\n this.#emptyStateConfig[this.getEmptyStateType()].title;\n\n #getEmptyStateDescription = () =>\n this.#emptyStateConfig[this.getEmptyStateType()].description;\n\n #getEmptyStateButtonText = () =>\n this.#emptyStateConfig[this.getEmptyStateType()].buttonText;\n\n #getEmptyStateButtonHandler = () =>\n this.#emptyStateConfig[this.getEmptyStateType()].buttonHandler;\n\n #renderEmptyStateButton = () =>\n this.#emptyStateConfig[this.getEmptyStateType()].showButton;\n\n #renderReloadChangesButton = (type: TeamDevPreviewMode) => {\n let isLoading = false;\n let isConfirmationInProcess = false;\n let reloadCaption;\n let reloadingCaption;\n const isLocal = type === \"local\";\n\n if (isLocal) {\n isLoading = this.loadingLocalChanges;\n isConfirmationInProcess = this.committingChanges;\n reloadCaption = this.#componentLocale.buttons.reloadLocal;\n reloadingCaption = this.#componentLocale.buttons.reloadingLocal;\n } else {\n isLoading = this.loadingRemoteChanges;\n isConfirmationInProcess = this.updatingChanges;\n reloadCaption = this.#componentLocale.buttons.reloadRemote;\n reloadingCaption = this.#componentLocale.buttons.reloadingRemote;\n }\n return (\n <button\n class=\"button-tertiary button-icon-and-text body-regular-s refresh-button\"\n type=\"button\"\n onClick={\n isLocal\n ? () => this.#loadChanges(\"local\")\n : () => this.#loadChanges(\"remote\")\n }\n disabled={\n isLoading || isConfirmationInProcess || this.serverOperationsDisabled\n }\n >\n <ch-image\n class={{\n \"icon-m\": true,\n \"loader-icon\": isLoading\n }}\n src={isLoading ? LOADER_ICON : REFRESH_ICON}\n type=\"mask\"\n />\n\n {isLoading ? reloadingCaption : reloadCaption}\n </button>\n );\n };\n\n #renderEmptyState = (type: TeamDevPreviewMode) => {\n let show = false;\n let message = \"\";\n\n if (type === \"local\" && this.pendingCommitChangesCount === 0) {\n show = true;\n message = this.#componentLocale.emptyState.noLocalChanges;\n } else if (type === \"remote\" && this.pendingRemoteChangesCount === 0) {\n show = true;\n message = this.#componentLocale.emptyState.noRemoteChanges;\n }\n\n return show ? (\n <div class=\"empty-state-container\">\n <p class=\"body-regular-s\">{message}</p>\n {this.#renderReloadChangesButton(type)}\n </div>\n ) : null;\n };\n\n #renderTreeChanges = (type: TeamDevPreviewMode) => {\n const isLocal = type === \"local\";\n\n if (isLocal) {\n return (\n <Fragment>\n {this.#renderReloadChangesButton(type)}\n {!this.loadingLocalChanges && !this.committingChanges && (\n <ch-tree-view-render\n checkbox\n checked\n class=\"tree-view\"\n model={this.localChangesTreeViewModel}\n toggleCheckboxes\n onCheckedItemsChange={event =>\n this.#checkedItemsChangeHandler(event, type)\n }\n expandableButton=\"no\"\n expandOnClick={false}\n ref={el =>\n (this.#localChangesTreeEL = el as HTMLChTreeViewRenderElement)\n }\n />\n )}\n </Fragment>\n );\n } else {\n return (\n <Fragment>\n {this.#renderReloadChangesButton(type)}\n {!this.loadingRemoteChanges && !this.updatingChanges && (\n <ch-tree-view-render\n checkbox\n checked\n class=\"tree-view\"\n model={this.remoteChangesTreeViewModel}\n toggleCheckboxes\n onCheckedItemsChange={event =>\n this.#checkedItemsChangeHandler(event, type)\n }\n expandableButton=\"no\"\n expandOnClick={false}\n ref={el =>\n (this.#remoteChangesTreeEL = el as HTMLChTreeViewRenderElement)\n }\n />\n )}\n </Fragment>\n );\n }\n };\n\n #renderConfirmButton = (type: TeamDevPreviewMode) => {\n const isLocal = type === \"local\";\n let isConfirmationInProcess = false;\n let id = \"\";\n if (isLocal) {\n isConfirmationInProcess = this.committingChanges;\n id = \"commit-changes-button\";\n } else {\n isConfirmationInProcess = this.updatingChanges;\n id = \"update-remote-changes-button\";\n }\n return (\n <button\n id={id}\n class={{\n \"button-primary\": true,\n \"button-icon-and-text\": isConfirmationInProcess\n }}\n type=\"button\"\n disabled={this.#disableConfirmButton(type)}\n onClick={\n isLocal\n ? this.#commitChangesHandler\n : this.#updateRemoteChangesHandler\n }\n >\n {isConfirmationInProcess && (\n <ch-image class=\"icon-m loader-icon\" src={LOADER_ICON} type=\"mask\" />\n )}\n {isConfirmationInProcess\n ? isLocal\n ? this.#componentLocale.buttons.committing\n : this.#componentLocale.buttons.updating\n : isLocal\n ? this.#componentLocale.buttons.commit\n : this.#componentLocale.buttons.update}\n </button>\n );\n };\n\n #renderLocalChanges = () => {\n if (this.pendingCommitChangesCount > 0) {\n return (\n <Fragment>\n <ch-edit\n id=\"commit-message-input\"\n class=\"input commit-message-textarea\"\n value={this.commitMessage}\n accessibleName={this.#componentLocale.accessibleNames.commitMessage}\n placeholder={this.#componentLocale.placeholders.commitMessage}\n disabled={this.loadingLocalChanges}\n onInput={this.#commitMessageInputHandler}\n multiline\n />\n {this.#renderConfirmButton(\"local\")}\n {this.#renderTreeChanges(\"local\")}\n </Fragment>\n );\n }\n };\n\n #renderRemoteChanges = () => {\n if (this.pendingRemoteChangesCount > 0) {\n return (\n <Fragment>\n {this.#renderConfirmButton(\"remote\")}\n {this.#renderTreeChanges(\"remote\")}\n </Fragment>\n );\n }\n };\n\n render() {\n const { existsGXServerSession } = this.teamDevPreviewData;\n return (\n <Host\n class={{\n \"widget\": true,\n \"empty-state\": !this.#isTeamDevOptionsEnabled\n }}\n >\n <ch-theme model={CSS_BUNDLES} />\n {!this.#isTeamDevOptionsEnabled || !existsGXServerSession ? (\n <gx-ide-empty-state\n isAnimated={true}\n stateIconSrc={ERROR_ICON}\n stateTitle={this.#getEmptyStateTitle()}\n stateDescription={this.#getEmptyStateDescription()}\n >\n {this.#renderEmptyStateButton() && (\n <button\n class=\"button-primary empty-state-button\"\n onClick={this.#getEmptyStateButtonHandler()}\n >\n {this.#getEmptyStateButtonText()}\n </button>\n )}\n <div>\n <p class=\"body-regular-s\">\n {this.#componentLocale.emptyState.about}\n </p>\n <button\n class=\"button-tertiary button-icon-and-text team-dev-button body-semi-bold-s\"\n type=\"button\"\n onClick={this.#openTeamDevInfoHandler}\n >\n {this.#componentLocale.buttons.teamDev}\n <ch-image class=\"icon-m\" src={OPEN_WINDOW_ICON} type=\"mask\" />\n </button>\n </div>\n </gx-ide-empty-state>\n ) : (\n <div class=\"main-container spacing-body scrollable\">\n <div>\n <p class=\"giu-static-pill-icon-and-text version giu-static-pill-icon-and-text--version elevation-02\">\n <ch-image\n class=\"icon-m\"\n type=\"mask\"\n src={VERSION_ICON}\n ></ch-image>\n <span class=\"version-pill\">\n {this.teamDevPreviewData.versionName}\n </span>\n </p>\n </div>\n <ch-tab-render\n class=\"tab tab-full-width-buttons scrollable border-style-none\"\n model={this.tabModel}\n selectedId={this.selectedTabId}\n tabListPosition=\"block-start\"\n onSelectedItemChange={this.#tabSelectionChangedHandler}\n >\n <div class=\"local-changes-container\" slot={LOCAL_CHANGES_TAB}>\n {this.#renderEmptyState(\"local\")}\n {this.#renderLocalChanges()}\n </div>\n\n <div class=\"remote-changes-container\" slot={REMOTE_CHANGES_TAB}>\n {this.#renderEmptyState(\"remote\")}\n {this.#renderRemoteChanges()}\n </div>\n </ch-tab-render>\n\n <footer class=\"dialog-footer-with-border open-window-container\">\n <div class=\"buttons-spacer\">\n <button\n class=\"button-tertiary button-icon-and-text open-full-dialog-button\"\n onClick={this.#openFullDialogHandler}\n >\n <ch-image class=\"icon-m\" src={OPEN_WINDOW_ICON} type=\"mask\" />\n {this.#componentLocale.footer.openFullDialog}\n </button>\n </div>\n </footer>\n </div>\n )}\n </Host>\n );\n }\n}\n\nexport type TeamDevPreviewData = {\n versionName: string;\n isFrozenVersion: boolean;\n existsGXServerSession: boolean;\n isKBOpen: boolean;\n isLinkedVersion: boolean;\n isLinkedKB: boolean;\n};\n\nexport type TeamDevPreviewMode = \"local\" | \"remote\";\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["namePickerCss","CSS_BUNDLES","GxIdeNamePicker","_GxIdeNamePicker_componentLocale","set","this","_GxIdeNamePicker_inputValueEl","_GxIdeNamePicker_shortcutsSrc","getAssetPath","_GxIdeNamePicker_handleInputValueChange","event","inputValue","detail","clearControlError","validatableControls","_GxIdeNamePicker_cancelClickHandler","async","cancelCallback","_GxIdeNamePicker_confirmClickHandler","formSubmitResult","confirmCallback","validateControls","_GxIdeNamePicker_initializeValidatableControls","__classPrivateFieldGet","forEach","validatableControl","id","reference","hasError","message","undefined","_GxIdeNamePicker_evaluateTooltipRender","controlReference","_b","_a","get","_c","h","class","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","Map","defaultInputValueChanged","newDefaultInputValue","componentWillLoad","__classPrivateFieldSet","Locale","getComponentStrings","el","defaultInputValue","componentDidLoad","call","render","confirmButtonDisabled","length","Host","model","src","htmlFor","labels","name","type","placeholder","placeHolders","value","onInput","ref","onClick","buttons","cancel","disabled","confirm"],"sources":["src/components/name-picker/name-picker.scss?tag=gx-ide-name-picker&encapsulation=shadow","src/components/name-picker/name-picker.tsx"],"sourcesContent":[":host {\n display: grid;\n block-size: 100%;\n grid-template-rows: 1fr max-content;\n}\n\n.field-group {\n grid-auto-rows: max-content;\n}\n\n.main {\n overflow: auto;\n}\n\n.section {\n display: contents;\n}\n\n.tooltip {\n position: absolute;\n}\n","import {\n Component,\n Element,\n getAssetPath,\n h,\n Host,\n Prop,\n State,\n Watch\n} from \"@stencil/core\";\n\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { config } from \"../../common/config\";\nimport {\n clearControlError,\n ControlValidation,\n validateControls\n} from \"../../common/form-validation\";\nimport { Locale } from \"../../common/locale\";\nimport { FormSubmitResult } from \"../../components\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form\",\n \"utils/spacing\",\n \"utils/layout\",\n \"chameleon/scrollbar\",\n \"components/button\",\n \"components/edit\",\n \"components/tooltip\"\n];\n\n@Component({\n tag: \"gx-ide-name-picker\",\n styleUrl: \"name-picker.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/name-picker\"]\n})\nexport class GxIdeNamePicker {\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 #inputValueEl!: HTMLChEditElement;\n #shortcutsSrc = getAssetPath(`./gx-ide-assets/name-picker/shortcuts.json`);\n\n @Element() el: HTMLGxIdeNamePickerElement;\n\n /**\n * The input name\n */\n @State() inputValue: string;\n\n @State() validatableControls = new Map<string, ControlValidation>();\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 'Confirm' button is pressed.\n */\n @Prop() readonly confirmCallback: (\n inputValue: string\n ) => Promise<FormSubmitResult>;\n\n /**\n * This property is used to set the initial values of the input field when the component is loaded.\n */\n @Prop() readonly defaultInputValue: string;\n @Watch(\"defaultInputValue\")\n defaultInputValueChanged(newDefaultInputValue: string) {\n this.inputValue = newDefaultInputValue;\n }\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.defaultInputValueChanged(this.defaultInputValue);\n }\n\n componentDidLoad() {\n this.#initializeValidatableControls();\n }\n\n #handleInputValueChange = (event: CustomEvent<string> | InputEvent) => {\n this.inputValue = event.detail as string;\n clearControlError(this.validatableControls, \"input-name\");\n };\n\n #cancelClickHandler = async () => {\n this.cancelCallback();\n };\n\n #confirmClickHandler = async () => {\n const formSubmitResult = await this.confirmCallback(this.inputValue);\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\n };\n\n #initializeValidatableControls = () => {\n // populate validatableControls with the controls that could have errors.\n const validatableControls: HTMLElement[] = [this.#inputValueEl];\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 // 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 render() {\n const confirmButtonDisabled =\n !this.inputValue || this.inputValue.length === 0;\n\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts src={this.#shortcutsSrc}></ch-shortcuts>\n <section class=\"section\">\n <div class=\"main scrollable field-group spacing-body\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"input-name\">\n {this.#componentLocale.labels.name}\n </label>\n <ch-edit\n type=\"text\"\n id=\"input-name\"\n class=\"input\"\n placeholder={this.#componentLocale.placeHolders.name}\n value={this.inputValue}\n onInput={this.#handleInputValueChange}\n ref={(el: HTMLChEditElement) =>\n (this.#inputValueEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#inputValueEl)}\n </div>\n </div>\n\n <footer class=\"dialog-footer-with-border spacing-body\">\n <div class=\"buttons-spacer\">\n <button\n id=\"cancel-button\"\n class=\"button-secondary\"\n onClick={this.#cancelClickHandler}\n >\n {this.#componentLocale.buttons.cancel}\n </button>\n\n <button\n id=\"confirm-button\"\n class=\"button-primary\"\n onClick={this.#confirmClickHandler}\n disabled={confirmButtonDisabled}\n >\n {this.#componentLocale.buttons.confirm}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["mapObjectTypeToComboBoxItemModel","objectTypeModel","map","objectType","value","id","caption","name","startImgSrc","icon","updateCss","CSS_BUNDLES","CHECKBOX_CHECKED_VALUE","CHECKBOX_UNCHECKED_VALUE","DETAIL_LABEL_CLASSES","ADD_ICON","getIconPath","category","colorType","EDITED_ICON","FILTER_ICON","SEARCH_ICON","SUBSTRACT_ICON","WARNING_ICON","ERROR_ICON","SUCCESS_ICON","INFO_ICON","REFRESH_ICON","GxIdeTeamDevUpdate","_GxIdeTeamDevUpdate_componentLocale","set","this","_GxIdeTeamDevUpdate_actionsComboBoxModel","_GxIdeTeamDevUpdate_rowCheckedChangedByTheUser","_GxIdeTeamDevUpdate_chGridPendingForUpdateEl","_GxIdeTeamDevUpdate_updateCheckedClickedHandler","async","__classPrivateFieldGet","_GxIdeTeamDevUpdate_updateObjectsHandler","call","markedObjectsSet","_GxIdeTeamDevUpdate_reloadClickedHandler","_GxIdeTeamDevUpdate_loadData","selection","updating","forEach","itemToUpdate","objectsStatusMap","updateResult","updateCallback","objectResult","messages","length","objectsMessagesDataMap","delete","result","alreadyUpdatedObjectsIdsSet","Set","add","markRow","_GxIdeTeamDevUpdate_renderActionCellContent","action","iconColor","actions","insert","modify","modifyWithConflicts","h","class","type","src","style","backgroundColor","_GxIdeTeamDevUpdate_updateSingleObject","objectId","newobjectsStatusMap","Map","_GxIdeTeamDevUpdate_renderObjectStatus","status","get","updatePillAsButton","update","classes","onClick","_GxIdeTeamDevUpdate_renderRows","objects","pendingObjectsAfterActionFilter","ignoredObjectsAfterActionFilter","object","typeIcon","alreadyUpdated","has","hideCheckbox","marked","key","rowid","ref","el","setAttribute","size","renderObjectTypeWithIcon","description","formatDate","modifiedOn","message","MESSAGE_ICON","text","_GxIdeTeamDevUpdate_rowMarkingChangedHandler","event","markedRowsIds","detail","rowsId","filter","markedObjectId","_GxIdeTeamDevUpdate_updatePendingCheckedItems","__classPrivateFieldSet","addedRowsIds","addedRowsId","removedRowsId","pendingItemCheckedResult","pendingItemsCheckedCallback","itemsChecked","itemsUnchecked","undefined","_GxIdeTeamDevUpdate_revertPendingCommitsCheckboxes","_GxIdeTeamDevUpdate_togglePendingCommitsCheckboxes","_a","_GxIdeTeamDevUpdate_searchInputHandler","searchValue","_GxIdeTeamDevUpdate_actionChangedHandler","selectedAction","_GxIdeTeamDevUpdate_typeChangedHandler","selectedType","_GxIdeTeamDevUpdate_setInitialObjectsStatus","pendingAndIgnored","pendingForUpdate","pendingObject","ignoredObjects","ignoredObject","forceLoad","filters","search","kbProperties","kbPropertiesChecked","loading","clear","loadCallback","_GxIdeTeamDevUpdate_markPendingObjects","error","pendingId","pendingIdsSet","_GxIdeTeamDevUpdate_applyClientFilter","_GxIdeTeamDevUpdate_onRowContextMenuHandler","ev","preventDefault","stopPropagation","getSelectedRows","selectedRowId","getSelectedCell","rowId","source","filteredSelection","ignoredIdsSet","selectRow","push","contextMenuCallback","clientX","clientY","itemsToToggle","itemsToCheck","itemsToUncheck","_GxIdeTeamDevUpdate_kbPropertiesChangedHandler","_GxIdeTeamDevUpdate_sortTabularGridColumnCallback","e","columnId","objectProperty","dateType","COLUMNS_IDS","lastSynchronized","sortTabularGridColumn","_GxIdeTeamDevUpdate_columnSelectorClickedCallback","allRowsChecked","getMarkedRows","ignoredMarkedRowsIds","uncheckIgnoredObjects","markedObjectsSetChanged","newMarkedObjectsSet","atLeastOneObjectIsChecked","alreadyUpdatedObjectsIdsSetChanged","newUpdatedObjectsIdsSet","pendingIdsSetAndUpdatedIdsSetAreEqual","areSetsEqual","allPendingAreUpdated","objectsStatusMapChanged","newObjectsStatusMap","someObjectIsUpdating","entries","find","state","pendingAndIgnoredChanged","pending","ignored","componentWillLoad","Locale","getComponentStrings","allActions","types","typesComboBoxModel","componentDidLoad","reload","disableUpdate","isUpdateDisabled","render","disableControls","gridIsEmpty","Host","model","commitDetail","title","genexusServer","openServerCallback","updateFrom","serverUrl","knowledgeBase","kbName","version","versionName","lastFullUpdate","disabled","accessibleName","searchAccessibleName","placeholder","searchPlaceholder","onInput","debounce","config","inputDebounce","typeAccesibleName","typePlaceholder","actionAccesibleName","actionPlaceholder","checkedValue","keyboardNavigationMode","rowSelectionMode","onRowMarkingChanged","onRowContextMenu","columnName","columnType","richRowSelector","richRowSelectorMode","settingable","sortable","onColumnSortChanged","onColumnSelectorClicked","tabularGrid","colSize","isAnimated","stateIconSrc","stateTitle","cancelLabel","loader","loaderTitle","show"],"sources":["src/components/team-dev/version-control/common/object-type-to-combo-box.ts","src/components/team-dev/update/update.scss?tag=gx-ide-team-dev-update&encapsulation=shadow","src/components/team-dev/update/update.tsx"],"sourcesContent":["import { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { ObjectType } from \"../../../../components\";\n\nexport const mapObjectTypeToComboBoxItemModel = (\n objectTypeModel: ObjectType[]\n): ComboBoxModel =>\n objectTypeModel.map(objectType => ({\n value: objectType.id,\n caption: objectType.name,\n startImgSrc: objectType.icon\n }));\n","@import \"../common/styles.scss\";\n@import \"../../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n@import \"../../../global/gx-ide-mixins.scss\";\n\n:host {\n --pill-border-radius: 12px;\n --pill-padding-inline: var(--spacing-padding-m);\n --pill-padding-block: var(--spacing-padding-xxs);\n --pill-font-size: var(--font-size-body-s);\n\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content max-content 1fr;\n}\n$header-item-common-inline-padding: var(--spacing-padding-xxl);\n$header-item-common-separator-border: 1px solid\n var(--color-border-surface-on-elevation-1);\n\n%header-item-common {\n padding-inline: $header-item-common-inline-padding;\n border-inline-end: $header-item-common-separator-border;\n}\n%header-item-common-start {\n padding-inline-end: $header-item-common-inline-padding;\n border-inline-end: $header-item-common-separator-border;\n}\n%header-item-common-end {\n padding-inline-start: $header-item-common-inline-padding;\n}\n\n.section {\n display: contents;\n}\n\n.header {\n display: grid;\n grid-template-columns: 1fr max-content;\n}\n\n// header detail\n.header__detail {\n display: grid;\n row-gap: var(--spacing-gap-xl);\n grid-auto-columns: max-content;\n grid-auto-rows: max-content;\n grid-template-areas:\n \"detail-heading-gx . . .\"\n \"detail-genexus-server detail-knowledge-base detail-version detail-last-full-update\";\n}\n.detail__label {\n color: var(--color-text-neutral-disabled);\n}\n\n.detail__heading-genexus-server {\n grid-area: detail-heading-gx;\n}\n.detail__genexus-server {\n grid-area: detail-genexus-server;\n @extend %header-item-common-start;\n\n > a {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: inline-block;\n }\n}\n.detail__link {\n align-items: start;\n color: var(--color-text-primary-default);\n text-decoration: underline;\n &:hover {\n color: var(--color-text-primary-hover);\n }\n &:active {\n color: var(--color-text-primary-pressed);\n }\n}\n.detail__knowledge-base {\n grid-area: detail-knowledge-base;\n @extend %header-item-common;\n}\n.detail__version {\n grid-area: detail-version;\n @extend %header-item-common;\n}\n.detail__last-full-update {\n grid-area: detail-last-full-update;\n @extend %header-item-common-end;\n}\n\n// filter\n.filter-container {\n container-type: inline-size;\n box-sizing: border-box;\n}\n.filter {\n display: grid;\n margin-block-start: var(--spacing-padding-xxl);\n grid-template-areas: \"filter-search filter-types filter-actions filter-kb-properties filter-buttons\";\n grid-template-columns: 200px 200px 200px max-content 1fr;\n}\n@container (max-width: 1100px) {\n .filter-container > .filter {\n grid-template-columns: 200px 200px 200px 1fr;\n grid-template-areas:\n \"filter-search filter-types filter-actions filter-buttons\"\n \"filter-kb-properties . . .\";\n grid-auto-rows: max-content;\n }\n}\n@container (max-width: 900px) {\n .filter-container > .filter {\n grid-template-columns: 1fr 1fr 1fr;\n grid-template-areas:\n \"filter-search filter-types filter-actions\"\n \"filter-kb-properties filter-buttons filter-buttons\";\n grid-auto-rows: max-content;\n }\n}\n.filter__search {\n grid-area: filter-search;\n}\n.filter__types {\n grid-area: filter-types;\n}\n.filter__actions {\n grid-area: filter-actions;\n}\n.filter__kb-properties {\n grid-area: filter-kb-properties;\n}\n.filter__buttons {\n margin-inline-start: auto;\n grid-area: filter-buttons;\n}\n\n// main\n.main {\n position: relative;\n display: grid;\n overflow: auto;\n}\n.loader {\n position: relative;\n inline-size: 100%;\n block-size: 100%;\n inset-block-start: 0;\n}\n.tabular-grid {\n border-radius: 4px;\n overflow: hidden;\n}\n\n.empty-state {\n block-size: 100%;\n}\n.loader {\n --elevation-background-color: var(--color-accent-surface-elevation-1);\n}\n\n.messages-list {\n margin: 0;\n padding: 0;\n list-style: none;\n max-inline-size: 800px;\n padding: var(--spacing-padding-m) 0;\n list-style-type: none;\n display: flex;\n flex-direction: column;\n gap: var(--spacing-gap-xxs);\n}\n.message-description {\n line-height: var(--line-height-spacious); // WA. Line height looks too tight.\n display: flex;\n align-items: center;\n gap: var(--spacing-gap-m);\n}\n.message-icon {\n flex-shrink: 0;\n}\n\n.tabular-grid.empty-result::part(main) {\n // WA to avoid scrollbar flickering when displaying the empty-state message\n overflow: hidden;\n}\n\n// - - - - - - - - - - - - - -\n// WA (WORK AROUNDS)\n// - - - - - - - - - - - - - -\n\n.input-comments-container {\n position: relative;\n}\n// ch-edit for comments WA's\n// Figma design for this component displays the textarea witout border, and with a little more line-height.\n// The following styles are a temporary WA that should be brouhgt to Mercury DS.\n.input-comments {\n --control-border-color: transparent;\n padding-block: 0 !important;\n padding-inline: 0 !important;\n --line-height-tight: 1.4;\n block-size: 100%;\n background-color: var(--color-accent-surface-surface);\n transition:\n var(--timing-super-fast) block-size,\n var(--timing-super-fast) background-color,\n var(--timing-super-fast) padding-block,\n var(--timing-super-fast) padding-inline;\n}\n.input-comments:focus {\n position: absolute;\n block-size: 200px;\n inline-size: 100%;\n z-index: 99;\n background-color: var(--color-accent-surface-elevation-1);\n padding-block: var(--control-padding-block) !important;\n padding-inline: var(--control-padding-inline) !important;\n}\n\nch-tabular-grid-cell.tabular-grid-cell::part(actions-icon) {\n background-size: contain; //force icon fit container\n margin-inline-end: 0;\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--enabled);\n cursor: pointer;\n &:hover {\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--hover);\n }\n &:active {\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--active);\n }\n}\n\n.tabular-grid-row-actions::part(main),\n.property-grid-row-actions::part(main) {\n // gap not required since buttons are tertiary.\n // extra space perceived.\n gap: 0 !important;\n}\n\n.tabular-grid-row-actions {\n // Butons are center by default, but design dictates start alignemnt\n > button {\n justify-content: start;\n }\n}\n\n// These static type of pills do not exist on Mercury yet.\n// They should be defined on Mercury. The actual pills on Mercury\n// are combo-boxes. Not what we need for this case.\n\n.pill {\n --pill-background-color: transparent;\n --pill-color: transparent;\n --pill-border-color: transparent;\n\n background-color: var(--pill-background-color);\n color: var(--pill-color);\n border: 1px solid var(--pill-border-color);\n inline-size: 100%;\n padding: var(--pill-padding-block) var(--pill-padding-inline);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--pill-border-radius);\n position: relative;\n font-weight: var(--font-style-semi-bold);\n\n &--update,\n &--pending {\n --pill-background-color: var();\n --pill-color: var(--color-text-neutral-disabled);\n --pill-border-color: var();\n }\n &--to-merge-marked {\n --pill-background-color: var();\n --pill-color: var(--color-border-primary-default);\n --pill-border-color: var();\n }\n &--ignored {\n --pill-background-color: var(--color-accent-surface-elevation-2);\n --pill-color: var(--color-text-neutral-on-disabled);\n --pill-border-color: var(--color-border-neutral-default);\n }\n &--pending {\n --pill-background-color: var(--color-accent-neutral-contrast);\n --pill-color: var(--color-border-primary-default);\n --pill-border-color: var(--color-accent-primary-pressed);\n }\n &--warning {\n --pill-background-color: var(--color-accent-warning-contrast);\n --pill-color: var(--color-border-warning-default);\n --pill-border-color: var(--color-border-warning-default);\n }\n &--error {\n --pill-background-color: var(--color-accent-error-contrast);\n --pill-color: var(--color-border-error-default);\n --pill-border-color: var(--color-border-error-light);\n }\n &--updated {\n --pill-background-color: var(--color-accent-success-contrast);\n --pill-color: var(--color-border-success-default);\n --pill-border-color: var(--color-accent-success-default);\n }\n &--transitioning {\n // used to hide the text, before updating the caption (smooth transtion)\n --pill-color: transparent;\n }\n}\n.updating-spinner-caption {\n display: flex;\n align-items: center;\n gap: var(--spacing-gap-m);\n $size: 16px;\n --status-circle-color: transparent;\n --status-circle-size: $size;\n --status-circle-inset-inline-start: 16px;\n --pill-color: var(--color-border-primary-default);\n &::before {\n display: inline-block;\n content: \"\";\n\n @include spinner(\n $size,\n var(--color-accent-primary-default),\n var(--color-accent-primary-pressed)\n );\n }\n}\n.tabular-grid .button-secondary {\n --control-padding-block: var(--pill-padding-block);\n --control-padding-inline: var(--pill-padding-inline);\n font-size: inherit;\n font-weight: inherit;\n /* font-size: var(--pill-font-size); */\n}\n\n.tabular-grid .tabular-grid-cell--for-pill {\n padding-block: 0;\n align-items: center;\n justify-content: center;\n}\n\n.tabular-grid.disabled-custom-selector .tabular-grid-cell::part(selector-label),\n.tabular-grid.disabled-custom-selector .tabular-grid-column::part(bar-selector),\n.tabular-grid.disabled-custom-selector .tabular-grid-cell::part(actions-icon) {\n pointer-events: none;\n opacity: 0.5;\n}\n.tabular-grid-column--settings-custom-selector,\n.tabular-grid-cell--settings-custom-selector {\n padding-block: 0;\n padding-inline: 0;\n}\n.tabular-grid-cell::part(actions-icon) {\n padding-block: var(--spacing-padding-m);\n}\nch-tabular-grid-cell.tabular-grid-cell::part(actions-icon) {\n block-size: 100%;\n display: block;\n background-size: 16px;\n padding-inline: var(--spacing-padding-xl);\n}\n\n.tabular-grid-cell.no-checkbox-custom-selector::part(selector-label) {\n visibility: hidden;\n pointer-events: none;\n}\n\n.tabular-grid-row-actions::part(window) {\n background-color: var(--color-accent-surface-elevation-2) !important;\n}\n\n.tabular-grid-row .tabular-grid-cell:nth-child(3) {\n min-inline-size: 200px;\n}\n\n// - - - - - - - - - - - - - -\n// END OF WA\n// - - - - - - - - - - - - - -\n","import {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Method,\n JSX,\n Watch\n} from \"@stencil/core\";\n\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\nimport { Locale } from \"../../../common/locale\";\nimport {\n ChCheckboxCustomEvent,\n ChEditCustomEvent,\n ComboBoxModel,\n TabularGridColumnSelectorClickedEvent,\n TabularGridColumnSortChangedEvent,\n TabularGridMarkingChangedEvent,\n TabularGridRowContextMenuEvent\n} from \"@genexus/chameleon-controls-library\";\n\nimport uncheckIgnoredObjects from \"../version-control/common/uncheck-ignored\";\nimport { renderObjectTypeWithIcon } from \"../common/utilities\";\nimport { formatDate } from \"../../../common/helpers\";\nimport {\n ContextMenuInfo,\n ItemsCheckedResult,\n ItemsCheckedState,\n ObjectType\n} from \"../../../common/types\";\nimport { config } from \"../../../common/config\";\nimport { mapObjectTypeToComboBoxItemModel } from \"../version-control/common/object-type-to-combo-box\";\nimport { COLUMNS_IDS } from \"../version-control/common/tabular-grid-render\";\nimport sortTabularGridColumn, {\n type SortTabularGridColumnDataType\n} from \"../../../common/chameleon/tabular-grid-column-sort\";\nimport areSetsEqual from \"../version-control/common/are-sets-equal\";\nimport {\n Action,\n ActionForFilter,\n LoadRemoteChangesCallback,\n ModifiedObject,\n UpdateCallback,\n UpdateData,\n UpdateFiltersData,\n UpdateStatus,\n UpdateStatusInternal\n} from \"../version-control/common/types\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tabular-grid\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst CHECKBOX_CHECKED_VALUE = \"true\";\nconst CHECKBOX_UNCHECKED_VALUE = \"false\";\n\nconst DETAIL_LABEL_CLASSES = \"detail__label body-semi-bold-s\";\n\n// icons\nconst ADD_ICON = getIconPath({\n category: \"system\",\n name: \"add\",\n colorType: \"on-surface\"\n});\nconst EDITED_ICON = getIconPath({\n category: \"system\",\n name: \"edit\",\n colorType: \"on-surface\"\n});\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-surface\"\n});\nconst SEARCH_ICON = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-surface\"\n});\nconst SUBSTRACT_ICON = getIconPath({\n category: \"system\",\n name: \"substract\",\n colorType: \"on-surface\"\n});\nconst WARNING_ICON = getIconPath({\n category: \"system\",\n name: \"warning\",\n colorType: \"warning\"\n});\nconst ERROR_ICON = getIconPath({\n category: \"system\",\n name: \"error\",\n colorType: \"error\"\n});\nconst SUCCESS_ICON = getIconPath({\n category: \"system\",\n name: \"check \",\n colorType: \"success\"\n});\nconst INFO_ICON = getIconPath({\n category: \"system\",\n name: \"information\",\n colorType: \"on-surface\"\n});\nconst REFRESH_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"reset\",\n colorType: \"interactive\"\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 /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n #actionsComboBoxModel: { caption: string; value: ActionForFilter }[];\n\n /**\n * Used to determine if pendingItemsCheckedCallback callback has to be called or not.\n * It should be ignored if the grid checkboxes state is changed programmatically, by\n * setting markRow to false once the object has been successfully updated, for example.\n */\n #rowCheckedChangedByTheUser: boolean = true;\n\n @Element() el: HTMLGxIdeTeamDevBringChangesElement;\n\n #chGridPendingForUpdateEl!: HTMLChTabularGridElement;\n\n // - - - - - - - - - - - - -\n // States Bring Changes\n // - - - - - - - - - - - - -\n\n /**\n * It hols a boolean indicating if at least one object from the tabular-grid is checked, for merging.\n */\n @State() atLeastOneObjectIsChecked: boolean = false;\n\n /**\n * True while commitObjects hasn't been loaded or is empty. Used to display a loader.\n */\n @State() loading: boolean = true;\n\n /**\n * The current search filter value\n */\n @State() menuContextAction: Action;\n\n /**\n * The current search filter value\n */\n @State() searchValue: string = \"\";\n\n /**\n * The current state filter value\n */\n @State() selectedAction: ActionForFilter = \"all-actions\";\n\n /**\n * A set that stores the marked state of each object cell. This is necessary because filtering the grid * causes marked cells to lose their state.\n */\n @State() markedObjectsSet: Set<string> = new Set<string>([]);\n @Watch(\"markedObjectsSet\")\n markedObjectsSetChanged(newMarkedObjectsSet: Set<string>) {\n this.atLeastOneObjectIsChecked = newMarkedObjectsSet.size > 0;\n }\n\n /**\n * A set that holds the id's of the objects that have been updated already.\n */\n @State() alreadyUpdatedObjectsIdsSet: Set<string> = new Set<string>([]);\n @Watch(\"alreadyUpdatedObjectsIdsSet\")\n alreadyUpdatedObjectsIdsSetChanged(newUpdatedObjectsIdsSet: Set<string>) {\n const pendingIdsSetAndUpdatedIdsSetAreEqual = areSetsEqual(\n newUpdatedObjectsIdsSet,\n this.pendingIdsSet\n );\n\n this.allPendingAreUpdated =\n pendingIdsSetAndUpdatedIdsSetAreEqual && this.pendingIdsSet.size > 0;\n }\n\n /**\n * A set that holds the id's of all the pending objects. Used to quickly determine if the selected rows belong\n * to \"pending\" or not. This information is required for the ContextMenuCallback callback. This set has to be updated\n * on every loadCallback.\n */\n @State() pendingIdsSet: Set<string> = new Set<string>([]);\n\n /**\n * A set that holds the id's of all the ignored objects. Used to quickly determine if the selected rows belong\n * to \"ignored\" or not. This information is required for the ContextMenuCallback callback. This set has to be updated\n * on every loadCallback.\n */\n @State() ignoredIdsSet: Set<string> = new Set<string>([]);\n\n /**\n * A map that holds object messages, after trying to update ('info' | ‘success’ | 'warning' | 'error')\n */\n @State() objectsMessagesDataMap: Map<string, MessageData[]> = new Map();\n\n /**\n * Set to true when objects are being mered. This helps disabling controls until all objects are done.\n */\n @State() updating: boolean = false;\n\n // - - - - - - - - - - - - -\n // State Update\n // - - - - - - - - - - - - -\n\n /**\n * A boolean that indicates if all the pending objects, have been updated\n * already.\n */\n @State() allPendingAreUpdated: boolean = false;\n\n /**\n * The \"KB Properties\" checkbox value\n */\n @State() kbPropertiesChecked: boolean = false;\n\n /**\n * The combobox model for the types filter.\n */\n @State() typesComboBoxModel: ComboBoxModel;\n\n /**\n * The selected type\n */\n @State() selectedType: string;\n\n /**\n * Indicates if the update button should be disabled\n */\n @State() isUpdateDisabled: boolean = false;\n\n /**\n * A map that holds the current update objects states (\"inserted\" | \"modified\" | \"modified-with-conflicts\" | \"deleted\" | \"updating\" | \"update\")\n */\n @State() objectsStatusMap: Map<string, UpdateStatusInternal> = new Map();\n @Watch(\"objectsStatusMap\")\n objectsStatusMapChanged(\n newObjectsStatusMap: Map<string, UpdateStatusInternal>\n ) {\n const someObjectIsUpdating = [...newObjectsStatusMap.entries()].find(\n ([, state]) => state === \"updating\"\n );\n\n if (!someObjectIsUpdating) {\n this.updating = false;\n }\n }\n\n // - - - - - - - - - - - - -\n // Properties Bring Changes\n // - - - - - - - - - - - - -\n\n /**\n * Callback invoked when user activates the context menu on any of the grids.\n */\n @Prop() readonly contextMenuCallback!: ContextMenuCallback;\n\n /**\n * All objects (\"pending for update\" and \"ignored objects\") before \"state\" filter\n */\n @State() pendingAndIgnored: UpdateData = {\n pendingForUpdate: [],\n ignoredObjects: []\n };\n @Watch(\"pendingAndIgnored\")\n pendingAndIgnoredChanged() {\n this.pendingIdsSet.clear(); // before pendingIdsSet.add\n this.ignoredIdsSet.clear(); // before pendingIdsSet.add\n this.objectsMessagesDataMap = new Map();\n this.alreadyUpdatedObjectsIdsSet = new Set();\n this.markedObjectsSet = new Set(); // before #markPendingObjects\n\n this.pendingAndIgnored.pendingForUpdate.forEach(pending => {\n this.pendingIdsSet.add(pending.id);\n });\n\n this.pendingAndIgnored.ignoredObjects.forEach(ignored => {\n this.ignoredIdsSet.add(ignored.id);\n });\n\n this.#markPendingObjects(); // after pendingIdsSet.add and ignoredIdsSet.add\n this.#setInitialObjectsStatus(); // after pendingIdsSet.add and ignoredIdsSet.add\n\n this.#applyClientFilter();\n }\n\n /**\n * Pending objects after \"action\" filter\n */\n @State() pendingObjectsAfterActionFilter: ModifiedObject[] = [];\n\n /**\n * Ignored objects after \"action\" filter\n */\n @State() ignoredObjectsAfterActionFilter: ModifiedObject[] = [];\n\n /**\n * Callback invoked to return the list of data types loaded from file or url.\n */\n @Prop() readonly loadCallback!: LoadRemoteChangesCallback;\n\n /**\n * Callback invoked to return information of a Font type of data.\n */\n @Prop() readonly pendingItemsCheckedCallback!: PendingItemsCheckedCallback;\n\n /**\n * Possible values for type filter\n */\n @Prop() readonly types: ObjectType[];\n\n /**\n * If true, the \"Action\" column will display a button instead of a pill, only when the action is\n */\n @Prop() readonly updatePillAsButton: boolean = false;\n\n // - - - - - - - - - - - - -\n // Properties Update\n // - - - - - - - - - - - - -\n\n /**\n * Callback invoked when the update process is to be started (’Update’ button).\n */\n @Prop() readonly updateCallback!: UpdateCallback;\n\n /**\n * Callback invoked when user clicks in server url of Update From group.\n */\n @Prop() readonly openServerCallback!: () => Promise<void>;\n\n /**\n * Information to show in Update From group.\n */\n @Prop() readonly updateFrom: UpdateFromData;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n // Initiate \"actions\" combo box filter\n this.#actionsComboBoxModel = [\n {\n caption: this.#componentLocale.actions.allActions,\n value: \"all-actions\"\n },\n {\n caption: this.#componentLocale.actions.insert,\n value: \"inserted\"\n },\n {\n caption: this.#componentLocale.actions.modify,\n value: \"modified\"\n },\n {\n caption: this.#componentLocale.actions.modifyWithConflicts,\n value: \"modified-with-conflicts\"\n },\n {\n caption: this.#componentLocale.actions.delete,\n value: \"deleted\"\n }\n ];\n\n // Set type initial value\n this.selectedType = this.types[0]?.id;\n\n this.typesComboBoxModel = mapObjectTypeToComboBoxItemModel(this.types);\n }\n\n async componentDidLoad() {\n await this.#loadData(true);\n\n // initialize \"allPendingAreUpdated\"\n this.alreadyUpdatedObjectsIdsSetChanged(this.alreadyUpdatedObjectsIdsSet);\n }\n\n /**\n * Used by the host to instruct the component to force a data reload in the grids.\n */\n @Method()\n async reload() {\n await this.#loadData(true);\n }\n\n /**\n * Used by the host to instruct the component to disable the update button.\n */\n @Method()\n async disableUpdate(value: boolean) {\n this.isUpdateDisabled = value;\n }\n\n #updateCheckedClickedHandler = async () => {\n this.#updateObjectsHandler([...this.markedObjectsSet]);\n };\n\n #reloadClickedHandler = async () => {\n this.#loadData(true);\n };\n\n #updateObjectsHandler = async (selection: string[]) => {\n this.updating = true;\n\n selection.forEach(itemToUpdate => {\n this.objectsStatusMap.set(itemToUpdate, \"updating\");\n });\n\n const updateResult = await this.updateCallback(selection);\n updateResult.forEach(async objectResult => {\n const messages = objectResult.messages;\n if (messages.length) {\n this.objectsMessagesDataMap.set(objectResult.id, objectResult.messages);\n } else {\n // clear messages\n this.objectsMessagesDataMap.delete(objectResult.id);\n }\n if (objectResult.result === \"updated\") {\n this.alreadyUpdatedObjectsIdsSet = new Set(\n this.alreadyUpdatedObjectsIdsSet\n ).add(objectResult.id);\n\n this.objectsStatusMap.set(objectResult.id, \"updated\");\n await this.#chGridPendingForUpdateEl.markRow(objectResult.id, false);\n } else {\n this.objectsStatusMap.set(objectResult.id, \"pending\");\n }\n });\n this.updating = false;\n };\n\n #renderActionCellContent = (\n action: Action\n ): JSX.Element[] | null | string => {\n let icon: string;\n let caption: string;\n let iconColor: string;\n\n if (action === \"deleted\") {\n icon = SUBSTRACT_ICON;\n caption = this.#componentLocale.actions.delete;\n iconColor = \"--color-icon-error-default\";\n } else if (action === \"inserted\") {\n icon = ADD_ICON;\n caption = this.#componentLocale.actions.insert;\n iconColor = \"--color-icon-success-default\";\n } else if (action === \"modified\") {\n icon = EDITED_ICON;\n caption = this.#componentLocale.actions.modify;\n iconColor = \"--color-icon-warning-default\";\n } else if (action === \"modified-with-conflicts\") {\n icon = WARNING_ICON;\n caption = this.#componentLocale.actions.modifyWithConflicts;\n iconColor = \"--color-icon-warning-default\";\n } else if (!action) {\n // proably is \"ignored\"\n return null;\n }\n\n return (\n <span class=\"custom-icon-text-wrapper\">\n <ch-image\n type=\"mask\"\n class=\"icon-s\"\n src={icon}\n style={{ backgroundColor: `var(${iconColor})` }}\n ></ch-image>\n {`${caption}`}\n </span>\n );\n };\n\n #updateSingleObject: (objectId: string) => () => void =\n objectId => async () => {\n const newobjectsStatusMap = new Map(this.objectsStatusMap);\n newobjectsStatusMap.set(objectId, \"updating\");\n this.objectsStatusMap = newobjectsStatusMap;\n this.#updateObjectsHandler([objectId]);\n };\n\n #renderObjectStatus = (objectId: string): JSX.Element[] => {\n const status = this.objectsStatusMap.get(objectId);\n\n const caption =\n status === \"pending\" && this.updatePillAsButton\n ? this.#componentLocale.status.update\n : this.#componentLocale.status[status];\n if (status === \"updating\") {\n return <span class=\"updating-spinner-caption\">{caption}</span>;\n }\n const classes = `pill pill--${status}`;\n if (this.updatePillAsButton && status === \"pending\") {\n return (\n <button\n class=\"button-secondary pill pill--update\"\n onClick={this.#updateSingleObject(objectId)}\n >\n {caption}\n </button>\n );\n } else {\n return <span class={classes}>{caption}</span>;\n }\n };\n\n #renderRows = (type: UpdateSourceType): JSX.Element[] => {\n let objects: ModifiedObject[];\n if (type === \"pending\") {\n objects = this.pendingObjectsAfterActionFilter;\n } else if (type === \"ignored\") {\n objects = this.ignoredObjectsAfterActionFilter;\n }\n\n return objects.map(object => {\n const objectType: ObjectType = {\n id: object.id,\n icon: object.typeIcon,\n name: object.type\n };\n\n const alreadyUpdated = this.alreadyUpdatedObjectsIdsSet.has(object.id);\n const hideCheckbox = alreadyUpdated || type === \"ignored\";\n\n const marked = this.markedObjectsSet.has(object.id);\n\n const messages = this.objectsMessagesDataMap.get(object.id);\n\n return (\n <ch-tabular-grid-row\n class=\"tabular-grid-row\"\n key={object.id}\n rowid={object.id}\n ref={(el: HTMLElement) =>\n marked && el?.setAttribute(\"marked\", \"true\")\n }\n >\n <ch-tabular-grid-cell\n cell-type=\"rich\"\n row-selector=\"true\"\n class={{\n \"tabular-grid-cell\": true,\n \"no-checkbox-custom-selector\": hideCheckbox\n }}\n size=\"max-content\"\n >\n {object.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {renderObjectTypeWithIcon(objectType)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {object.description}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {formatDate(object.modifiedOn)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#renderActionCellContent(object.action)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell--for-pill\">\n {this.#renderObjectStatus(object.id)}\n </ch-tabular-grid-cell>\n\n {messages?.length && (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty\n class={{\n \"tabular-grid-rowset-empty\": true\n }}\n >\n <ul class=\"messages-list\">\n {messages.map(message => {\n let MESSAGE_ICON;\n if (message.type === \"error\") {\n MESSAGE_ICON = ERROR_ICON;\n } else if (message.type === \"warning\") {\n MESSAGE_ICON = WARNING_ICON;\n } else if (message.type === \"success\") {\n MESSAGE_ICON = SUCCESS_ICON;\n } else {\n // info\n MESSAGE_ICON = INFO_ICON;\n }\n\n return (\n <li class=\"message-description\">\n <ch-image\n class=\"icon-s message-icon\"\n src={MESSAGE_ICON}\n ></ch-image>\n {message.text}\n </li>\n );\n })}\n </ul>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid-row>\n );\n });\n };\n\n #rowMarkingChangedHandler = async (\n event: CustomEvent<TabularGridMarkingChangedEvent>\n ) => {\n const markedRowsIds = event.detail.rowsId;\n this.markedObjectsSet = new Set(\n markedRowsIds.filter(\n markedObjectId => !this.alreadyUpdatedObjectsIdsSet.has(markedObjectId)\n )\n );\n\n if (this.#rowCheckedChangedByTheUser) {\n this.#updatePendingCheckedItems(event);\n }\n };\n\n #updatePendingCheckedItems = async (\n event: CustomEvent<TabularGridMarkingChangedEvent>\n ) => {\n this.#rowCheckedChangedByTheUser = false;\n const addedRowsIds = event.detail.addedRowsId;\n const removedRowsId = event.detail.removedRowsId;\n try {\n const pendingItemCheckedResult = await this.pendingItemsCheckedCallback({\n itemsChecked: addedRowsIds,\n itemsUnchecked: removedRowsId\n });\n\n if (pendingItemCheckedResult === undefined) {\n // undo check/uncheck\n await this.#revertPendingCommitsCheckboxes(addedRowsIds, removedRowsId);\n } else {\n await this.#togglePendingCommitsCheckboxes(pendingItemCheckedResult);\n }\n } catch {\n //catch exception if necessary\n } finally {\n this.#rowCheckedChangedByTheUser = true;\n }\n };\n\n #searchInputHandler = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.searchValue = event.detail as string;\n this.#loadData();\n };\n\n // Local Methods Update\n\n #actionChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n this.selectedAction = event.detail as ActionForFilter;\n this.#loadData();\n };\n\n #typeChangedHandler = async (event: CustomEvent<string> | InputEvent) => {\n this.selectedType = event.detail as string;\n this.#loadData();\n };\n\n #setInitialObjectsStatus = (): void => {\n this.pendingAndIgnored.pendingForUpdate.forEach(pendingObject => {\n const status: UpdateStatusInternal =\n (pendingObject.status as UpdateStatus) ?? \"pending\";\n\n this.objectsStatusMap.set(pendingObject.id, status);\n if (status === \"updated\") {\n this.alreadyUpdatedObjectsIdsSet.add(pendingObject.id);\n }\n });\n this.pendingAndIgnored.ignoredObjects.forEach(ignoredObject => {\n const status: UpdateStatusInternal =\n (ignoredObject.status as UpdateStatus) ?? \"ignored\";\n this.objectsStatusMap.set(ignoredObject.id, status);\n });\n };\n\n #loadData = async (forceLoad: boolean = false): Promise<void> => {\n const filters: UpdateFiltersData = {\n search: this.searchValue,\n type: this.selectedType,\n kbProperties: this.kbPropertiesChecked,\n action: this.selectedAction\n };\n\n try {\n this.loading = true;\n this.objectsMessagesDataMap.clear();\n\n this.pendingAndIgnored = await this.loadCallback(filters, forceLoad);\n this.#setInitialObjectsStatus();\n\n // Is is required to mark/check all objects after loadCallback.\n this.#markPendingObjects();\n } catch (error) {\n // Error handling for update operation\n } finally {\n this.loading = false;\n }\n };\n\n /**\n * Marks all pending objects that have not been committed yet.\n *\n * Iterates through all pending object IDs and adds them to the marked objects set\n * if they are not already in the committed objects set. This effectively identifies\n * and marks all the pending objects that still need to be processed.\n **/\n #markPendingObjects = () => {\n for (const pendingId of this.pendingIdsSet) {\n if (!this.alreadyUpdatedObjectsIdsSet.has(pendingId)) {\n this.markedObjectsSet = new Set([...this.markedObjectsSet, pendingId]);\n }\n }\n };\n\n #applyClientFilter = () => {\n // this.pendingObjectsAfterActionFilter = this.#filteredObjects(\n // this.pendingAndIgnored.pendingForUpdate\n // );\n this.pendingObjectsAfterActionFilter =\n this.pendingAndIgnored.pendingForUpdate;\n // this.ignoredObjectsAfterActionFilter = this.#filteredObjects(\n // this.pendingAndIgnored.ignoredObjects\n // );\n this.ignoredObjectsAfterActionFilter =\n this.pendingAndIgnored.ignoredObjects;\n };\n\n // #filteredObjects = (objects: ModifiedObject[]): ModifiedObject[] => {\n // let filtered = objects;\n\n // // name or description\n // if (this.searchValue.length) {\n // filtered = filtered.filter(object => {\n // const nameFiltered = object.name\n // .toLowerCase()\n // .includes(this.searchValue.toLowerCase());\n\n // const descriptionFiltered = object.description\n // .toLowerCase()\n // .includes(this.searchValue.toLowerCase());\n\n // return nameFiltered || descriptionFiltered;\n // });\n // }\n\n // return filtered;\n // };\n\n #onRowContextMenuHandler =\n () => async (ev: CustomEvent<TabularGridRowContextMenuEvent>) => {\n ev.preventDefault();\n ev.stopPropagation();\n\n const selection = await this.#chGridPendingForUpdateEl.getSelectedRows();\n\n const selectedRowId = (\n await this.#chGridPendingForUpdateEl.getSelectedCell()\n ).rowId;\n\n const source: UpdateSourceType = this.pendingIdsSet.has(selectedRowId)\n ? \"pending\"\n : \"ignored\";\n\n let filteredSelection: string[] = [];\n // remove selected rows from the other source, if any.\n if (selection.length > 1 && source === \"pending\") {\n selection.forEach(async selectedRowId => {\n if (this.ignoredIdsSet.has(selectedRowId)) {\n await this.#chGridPendingForUpdateEl.selectRow(\n selectedRowId,\n false\n );\n } else {\n filteredSelection.push(selectedRowId);\n }\n });\n } else if (selection.length > 1 && source === \"ignored\") {\n selection.forEach(async selectedRowId => {\n if (this.pendingIdsSet.has(selectedRowId)) {\n await this.#chGridPendingForUpdateEl.selectRow(\n selectedRowId,\n false\n );\n } else {\n filteredSelection.push(selectedRowId);\n }\n });\n } else {\n filteredSelection = selection;\n }\n\n await this.contextMenuCallback(source, {\n selection: filteredSelection,\n clientX: ev.detail.clientX,\n clientY: ev.detail.clientY\n });\n };\n\n #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 #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 #kbPropertiesChangedHandler = (\n event: ChCheckboxCustomEvent<any> | InputEvent\n ) => {\n this.kbPropertiesChecked = event.detail === CHECKBOX_CHECKED_VALUE;\n this.#loadData(true);\n };\n\n #sortTabularGridColumnCallback = (\n e: CustomEvent<TabularGridColumnSortChangedEvent>\n ) => {\n const columnId = e.detail.columnId;\n\n let objectProperty;\n let dateType: SortTabularGridColumnDataType = \"string\";\n if (columnId === COLUMNS_IDS.lastSynchronized) {\n dateType = \"dateString\";\n }\n\n this.pendingObjectsAfterActionFilter = [\n ...sortTabularGridColumn(\n e,\n this.pendingObjectsAfterActionFilter,\n dateType,\n objectProperty\n )\n ];\n this.ignoredObjectsAfterActionFilter = [\n ...sortTabularGridColumn(\n e,\n this.ignoredObjectsAfterActionFilter,\n dateType,\n objectProperty\n )\n ];\n };\n\n /**\n * WA: Ignored objects must always remain unchecked.\n * Because `tabular-grid` selects all rows when the checkbox column is toggled,\n * we need to manually unselect the ignored IDs. // TODO: Move this function\n * to common\n */\n #columnSelectorClickedCallback = async (\n e: CustomEvent<TabularGridColumnSelectorClickedEvent>\n ) => {\n const allRowsChecked = e.detail;\n if (allRowsChecked) {\n const markedRowsIds =\n await this.#chGridPendingForUpdateEl.getMarkedRows();\n const ignoredMarkedRowsIds = markedRowsIds.filter(rowId => {\n return this.ignoredIdsSet.has(rowId);\n });\n if (ignoredMarkedRowsIds.length) {\n uncheckIgnoredObjects(\n ignoredMarkedRowsIds,\n this.#chGridPendingForUpdateEl\n );\n }\n }\n };\n\n render() {\n const disableControls =\n this.updating || this.loading || this.isUpdateDisabled;\n const gridIsEmpty =\n this.pendingObjectsAfterActionFilter.length === 0 &&\n this.ignoredObjectsAfterActionFilter.length === 0;\n\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n <header class=\"header spacing-body-inline spacing-body-block-start\">\n <div\n // header details\n class=\"header__detail header__detail-1\"\n >\n <p class=\"detail__heading-genexus-server subtitle-semi-bold-s\">\n {this.#componentLocale.commitDetail.title}\n </p>\n <div\n // genexus server\n class=\"detail__genexus-server field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.genexusServer}\n </span>\n <button\n class=\"detail__link body-regular-s\"\n onClick={this.openServerCallback}\n >\n {this.updateFrom ? this.updateFrom.serverUrl : \"\"}\n </button>\n </div>\n\n <div\n // knowledge base\n class=\"detail__knowledge-base field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.knowledgeBase}\n </span>\n <p class=\"body-regular-s\">\n {this.updateFrom ? this.updateFrom.kbName : \"\"}\n </p>\n </div>\n\n <div\n // version\n class=\"detail__version field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.version}\n </span>\n <p class=\"body-regular-s\">\n {this.updateFrom ? this.updateFrom.versionName : \"\"}\n </p>\n </div>\n\n <div\n // last full update\n class=\"detail__last-full-update field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.lastFullUpdate}\n </span>\n <p class=\"body-regular-s\">\n {formatDate(this.updateFrom.lastFullUpdate)}\n </p>\n </div>\n </div>\n </header>\n\n <div class=\"filter-container spacing-body-inline\">\n <div class=\"filter field-group\">\n <ch-edit\n // search\n class=\"input filter__search\"\n disabled={disableControls}\n startImgSrc={SEARCH_ICON}\n accessibleName={\n this.#componentLocale.filter.searchAccessibleName\n }\n placeholder={this.#componentLocale.filter.searchPlaceholder}\n type=\"search\"\n onInput={this.#searchInputHandler}\n debounce={config.inputDebounce}\n ></ch-edit>\n\n <ch-combo-box-render\n // types\n class=\"combo-box filter__types\"\n disabled={disableControls}\n model={this.typesComboBoxModel}\n value={this.selectedType}\n accessibleName={this.#componentLocale.filter.typeAccesibleName}\n placeholder={this.#componentLocale.filter.typePlaceholder}\n onInput={this.#typeChangedHandler}\n ></ch-combo-box-render>\n\n <ch-combo-box-render\n // actions\n class=\"combo-box filter__actions\"\n disabled={disableControls}\n model={this.#actionsComboBoxModel}\n value={this.selectedAction}\n onInput={this.#actionChangedHandler}\n accessibleName={\n this.#componentLocale.filter.actionAccesibleName\n }\n placeholder={this.#componentLocale.filter.actionPlaceholder}\n ></ch-combo-box-render>\n\n <ch-checkbox\n // kb properties\n class=\"checkbox filter__kb-properties\"\n caption={this.#componentLocale.filter.kbProperties}\n checkedValue={CHECKBOX_CHECKED_VALUE}\n value={CHECKBOX_UNCHECKED_VALUE}\n onInput={this.#kbPropertiesChangedHandler}\n disabled={disableControls}\n />\n\n <div class=\"buttons-spacer filter__buttons\">\n <button\n // reload button\n class=\"button-secondary button-icon-and-text\"\n disabled={disableControls}\n onClick={this.#reloadClickedHandler}\n >\n <ch-image class=\"icon-m\" src={REFRESH_ICON}></ch-image>\n {this.#componentLocale.filter.reload}\n </button>\n <button\n // update button\n class=\"button-primary button-update\"\n disabled={!this.atLeastOneObjectIsChecked || disableControls}\n onClick={this.#updateCheckedClickedHandler}\n >\n {this.#componentLocale.filter.update}\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"main spacing-body\">\n {!this.loading ? (\n <ch-tabular-grid\n class={{\n \"tabular-grid\": true,\n \"objects-tabular-grid\": true,\n \"disabled-custom-selector\": this.updating,\n \"empty-result\": gridIsEmpty\n }}\n keyboardNavigationMode=\"focus\"\n rowSelectionMode=\"multiple\"\n onRowMarkingChanged={this.#rowMarkingChangedHandler}\n onRowContextMenu={this.#onRowContextMenuHandler()}\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chGridPendingForUpdateEl = el)\n }\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.name}\n columnName={this.#componentLocale.objects.name}\n columnType=\"rich\"\n richRowSelector={!this.allPendingAreUpdated}\n richRowSelectorMode=\"mark\"\n settingable={false}\n sortable={true}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n onColumnSelectorClicked={\n this.#columnSelectorClickedCallback\n }\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.type}\n columnName={this.#componentLocale.objects.type}\n settingable={false}\n sortable={true}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.description}\n columnName={this.#componentLocale.objects.description}\n settingable={false}\n sortable={true}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n size={config.tabularGrid.colSize.description}\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.modifiedOn}\n columnName={this.#componentLocale.objects.modifiedOn}\n settingable={false}\n sortable={true}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.action}\n columnName={this.#componentLocale.objects.action}\n settingable={false}\n sortable={false}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n // size of this column should the enough for the largest pill, and no more.\n // this prevents layout shifts when pills state changes.\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.status}\n columnName={this.#componentLocale.objects.status}\n settingable={false}\n sortable={false}\n size=\"100px\"\n />\n </ch-tabular-grid-columnset>\n\n {!gridIsEmpty\n ? [\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-legend class=\"tabular-grid-rowset-legend\">\n {this.#componentLocale.objects.pending}\n </ch-tabular-grid-rowset-legend>\n {this.#renderRows(\"pending\")}\n </ch-tabular-grid-rowset>,\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-legend class=\"tabular-grid-rowset-legend\">\n {this.#componentLocale.objects.ignored}\n </ch-tabular-grid-rowset-legend>\n {this.#renderRows(\"ignored\")}\n </ch-tabular-grid-rowset>\n ]\n : null}\n\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {gridIsEmpty && (\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n class=\"empty-state\"\n isAnimated\n stateIconSrc={FILTER_ICON}\n stateTitle=\"No object matched your filter\"\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n )}\n </ch-tabular-grid-rowset>\n </ch-tabular-grid>\n ) : (\n <gx-ide-loader\n cancelLabel={this.#componentLocale.loader.cancelLabel}\n loaderTitle={this.#componentLocale.loader.title}\n description={this.#componentLocale.loader.description}\n show\n class=\"loader\"\n ></gx-ide-loader>\n )}\n </div>\n </section>\n </Host>\n );\n }\n}\n\n// - - - - - - - - - - - - -\n// Types from Update\n// - - - - - - - - - - - - -\n\nexport type ContextMenuCallback = (\n source: UpdateSourceType,\n contextMenuInfo: ContextMenuInfo\n) => Promise<void>;\n\nexport type PendingItemsCheckedCallback = (\n pendingItemsCheckedState: ItemsCheckedState\n) => Promise<ItemsCheckedResult | undefined>;\n\nexport type UpdateSourceType = \"pending\" | \"ignored\";\n\nexport interface UpdateFromData {\n serverUrl: string;\n kbName: string;\n versionName: string;\n lastFullUpdate: Date;\n}\n\nexport interface MessageData {\n type: \"info\" | \"success\" | \"warning\" | \"error\";\n text: string;\n}\n"],"mappings":"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"}