@genexus/genexus-ide-ui 1.1.60 → 1.1.62

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 (346) hide show
  1. package/dist/cjs/{common-f2540d3e.js → common-51d68918.js} +1 -31
  2. package/dist/cjs/common-51d68918.js.map +1 -0
  3. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  4. package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js +1 -1
  5. package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js.map +1 -1
  6. package/dist/cjs/gx-ide-bpm-assign-roles.cjs.entry.js +1 -1
  7. package/dist/cjs/gx-ide-bpm-assign-roles.cjs.entry.js.map +1 -1
  8. package/dist/cjs/gx-ide-bpm-export-xpdl.cjs.entry.js +1 -1
  9. package/dist/cjs/gx-ide-bpm-export-xpdl.cjs.entry.js.map +1 -1
  10. package/dist/cjs/gx-ide-bpm-import-files.cjs.entry.js +1 -1
  11. package/dist/cjs/gx-ide-bpm-import-files.cjs.entry.js.map +1 -1
  12. package/dist/cjs/gx-ide-bpm-import-gxpm.cjs.entry.js +1 -1
  13. package/dist/cjs/gx-ide-bpm-import-gxpm.cjs.entry.js.map +1 -1
  14. package/dist/cjs/gx-ide-bpm-objects-selector.cjs.entry.js +1 -1
  15. package/dist/cjs/gx-ide-bpm-objects-selector.cjs.entry.js.map +1 -1
  16. package/dist/cjs/gx-ide-bpm-timer-duration.cjs.entry.js +1 -1
  17. package/dist/cjs/gx-ide-bpm-timer-duration.cjs.entry.js.map +1 -1
  18. package/dist/cjs/gx-ide-card.cjs.entry.js +1 -1
  19. package/dist/cjs/gx-ide-card.cjs.entry.js.map +1 -1
  20. package/dist/cjs/gx-ide-deployment-tool.cjs.entry.js +1 -1
  21. package/dist/cjs/gx-ide-deployment-tool.cjs.entry.js.map +1 -1
  22. package/dist/cjs/gx-ide-edit-module-server.cjs.entry.js +111 -49
  23. package/dist/cjs/gx-ide-edit-module-server.cjs.entry.js.map +1 -1
  24. package/dist/cjs/gx-ide-empty-state.cjs.entry.js +1 -1
  25. package/dist/cjs/gx-ide-empty-state.cjs.entry.js.map +1 -1
  26. package/dist/cjs/gx-ide-file-uploader.cjs.entry.js +1 -1
  27. package/dist/cjs/gx-ide-file-uploader.cjs.entry.js.map +1 -1
  28. package/dist/cjs/gx-ide-gam-installation-settings.cjs.entry.js +1 -1
  29. package/dist/cjs/gx-ide-gam-installation-settings.cjs.entry.js.map +1 -1
  30. package/dist/cjs/gx-ide-list-selector_2.cjs.entry.js +1 -1
  31. package/dist/cjs/gx-ide-list-selector_2.cjs.entry.js.map +1 -1
  32. package/dist/cjs/gx-ide-manage-module-references.cjs.entry.js +358 -266
  33. package/dist/cjs/gx-ide-manage-module-references.cjs.entry.js.map +1 -1
  34. package/dist/cjs/gx-ide-new-environment.cjs.entry.js +1 -1
  35. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +1 -1
  36. package/dist/cjs/gx-ide-progress-bar.cjs.entry.js +141 -0
  37. package/dist/cjs/gx-ide-progress-bar.cjs.entry.js.map +1 -0
  38. package/dist/cjs/gx-ide-references.cjs.entry.js +1 -1
  39. package/dist/cjs/gx-ide-references.cjs.entry.js.map +1 -1
  40. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js +2 -1
  41. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js.map +1 -1
  42. package/dist/cjs/gx-ide-splash.cjs.entry.js +1 -1
  43. package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js +1 -1
  44. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +34 -33
  45. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js.map +1 -1
  46. package/dist/cjs/gx-ide-team-dev-preview.cjs.entry.js +527 -0
  47. package/dist/cjs/gx-ide-team-dev-preview.cjs.entry.js.map +1 -0
  48. package/dist/cjs/gx-ide-team-dev-select-recent-comment.cjs.entry.js +1 -1
  49. package/dist/cjs/gx-ide-team-dev-select-recent-comment.cjs.entry.js.map +1 -1
  50. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +1 -1
  51. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js.map +1 -1
  52. package/dist/cjs/gx-ide-test.cjs.entry.js +1 -1
  53. package/dist/cjs/gx-ide-test.cjs.entry.js.map +1 -1
  54. package/dist/cjs/gx-ide-wf-settings.cjs.entry.js +1 -1
  55. package/dist/cjs/gx-ide-wf-settings.cjs.entry.js.map +1 -1
  56. package/dist/cjs/gx-ide-ww-images.cjs.entry.js +2 -2
  57. package/dist/cjs/gx-ide-ww-images.cjs.entry.js.map +1 -1
  58. package/dist/cjs/loader.cjs.js +1 -1
  59. package/dist/cjs/{tabular-grid-render-ce935a84.js → tabular-grid-render-c0e0738c.js} +3 -3
  60. package/dist/cjs/tabular-grid-render-c0e0738c.js.map +1 -0
  61. package/dist/collection/collection-manifest.json +2 -0
  62. package/dist/collection/common/common.js +0 -21
  63. package/dist/collection/common/common.js.map +1 -1
  64. package/dist/collection/components/_helpers/card/card.css +12 -0
  65. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.css +13 -1
  66. package/dist/collection/components/_helpers/list-selector/list-selector.css +12 -0
  67. package/dist/collection/components/_helpers/progress-bar/gx-ide-assets/progress-bar/langs/progress-bar.lang.en.json +5 -0
  68. package/dist/collection/components/_helpers/progress-bar/gx-ide-assets/progress-bar/langs/progress-bar.lang.ja.json +5 -0
  69. package/dist/collection/components/_helpers/progress-bar/gx-ide-assets/progress-bar/langs/progress-bar.lang.zh.json +5 -0
  70. package/dist/collection/components/_helpers/progress-bar/progress-bar.css +210 -0
  71. package/dist/collection/components/_helpers/progress-bar/progress-bar.js +320 -0
  72. package/dist/collection/components/_helpers/progress-bar/progress-bar.js.map +1 -0
  73. package/dist/collection/components/_test/test.css +12 -0
  74. package/dist/collection/components/bpm/application-declaration/bpm-app-declaration.css +12 -0
  75. package/dist/collection/components/bpm/assign-roles/bpm-assign-roles.css +12 -0
  76. package/dist/collection/components/bpm/export-xpdl/bpm-export-xpdl.css +12 -0
  77. package/dist/collection/components/bpm/import-files/bpm-import-files.css +12 -0
  78. package/dist/collection/components/bpm/import-gxpm/bpm-import-gxpm.css +12 -0
  79. package/dist/collection/components/bpm/objects-selector/bpm-objects-selector.css +12 -0
  80. package/dist/collection/components/bpm/timer-duration/bpm-timer-duration.css +12 -0
  81. package/dist/collection/components/deployment-tool/deployment-tool.css +12 -0
  82. package/dist/collection/components/file-uploader/file-uploader.css +12 -0
  83. package/dist/collection/components/gam-installation-settings/gam-installation-settings.css +12 -0
  84. package/dist/collection/components/modules/edit-module-server/edit-module-server.css +30 -627
  85. package/dist/collection/components/modules/edit-module-server/edit-module-server.js +179 -110
  86. package/dist/collection/components/modules/edit-module-server/edit-module-server.js.map +1 -1
  87. package/dist/collection/components/modules/edit-module-server/gx-ide-assets/edit-module-server/shortcuts.json +15 -0
  88. package/dist/collection/components/modules/edit-module-server/helpers.js +12 -0
  89. package/dist/collection/components/modules/edit-module-server/helpers.js.map +1 -0
  90. package/dist/collection/components/modules/manage-module-references/gx-ide-assets/manage-module-references/langs/manage-module-references.lang.en.json +6 -2
  91. package/dist/collection/components/modules/manage-module-references/gx-ide-assets/manage-module-references/langs/manage-module-references.lang.ja.json +6 -2
  92. package/dist/collection/components/modules/manage-module-references/gx-ide-assets/manage-module-references/langs/manage-module-references.lang.zh.json +6 -2
  93. package/dist/collection/components/modules/manage-module-references/helpers.js +32 -0
  94. package/dist/collection/components/modules/manage-module-references/helpers.js.map +1 -0
  95. package/dist/collection/components/modules/manage-module-references/manage-module-references.css +116 -777
  96. package/dist/collection/components/modules/manage-module-references/manage-module-references.js +378 -373
  97. package/dist/collection/components/modules/manage-module-references/manage-module-references.js.map +1 -1
  98. package/dist/collection/components/references/references.css +12 -0
  99. package/dist/collection/components/select-kb-items/helpers.js +2 -1
  100. package/dist/collection/components/select-kb-items/helpers.js.map +1 -1
  101. package/dist/collection/components/select-kb-items/select-kb-items.js.map +1 -1
  102. package/dist/collection/components/team-dev/preview/gx-ide-assets/team-dev-preview/langs/team-dev-preview.lang.en.json +44 -0
  103. package/dist/collection/components/team-dev/preview/gx-ide-assets/team-dev-preview/langs/team-dev-preview.lang.ja.json +44 -0
  104. package/dist/collection/components/team-dev/preview/gx-ide-assets/team-dev-preview/langs/team-dev-preview.lang.zh.json +44 -0
  105. package/dist/collection/components/team-dev/preview/team-dev-preview.css +709 -0
  106. package/dist/collection/components/team-dev/preview/team-dev-preview.js +782 -0
  107. package/dist/collection/components/team-dev/preview/team-dev-preview.js.map +1 -0
  108. package/dist/collection/components/team-dev/select-recent-comment/select-recent-comment.css +12 -0
  109. package/dist/collection/components/team-dev/update/update.js +9 -9
  110. package/dist/collection/components/team-dev/update/update.js.map +1 -1
  111. package/dist/collection/components/team-dev/version-control/commit/commit.css +1 -1
  112. package/dist/collection/components/team-dev/version-control/commit/commit.js +41 -40
  113. package/dist/collection/components/team-dev/version-control/commit/commit.js.map +1 -1
  114. package/dist/collection/components/team-dev/version-control/commit/gx-ide-assets/team-dev-commit/langs/team-dev-commit.lang.en.json +2 -2
  115. package/dist/collection/components/team-dev/version-control/commit/gx-ide-assets/team-dev-commit/langs/team-dev-commit.lang.ja.json +2 -2
  116. package/dist/collection/components/team-dev/version-control/commit/gx-ide-assets/team-dev-commit/langs/team-dev-commit.lang.zh.json +2 -2
  117. package/dist/collection/components/team-dev/version-control/common/constants.js +1 -1
  118. package/dist/collection/components/team-dev/version-control/common/constants.js.map +1 -1
  119. package/dist/collection/components/team-dev/version-control/common/tabular-grid-render.js +1 -1
  120. package/dist/collection/components/team-dev/version-control/common/tabular-grid-render.js.map +1 -1
  121. package/dist/collection/components/team-dev/version-control/common/types.js.map +1 -1
  122. package/dist/collection/components/wf-settings/wf-settings.css +12 -0
  123. package/dist/collection/components/ww-images/ww-images.css +12 -0
  124. package/dist/collection/testing/locale.e2e.js +2 -0
  125. package/dist/collection/testing/locale.e2e.js.map +1 -1
  126. package/dist/components/bpm-objects-selector.js +1 -1
  127. package/dist/components/bpm-objects-selector.js.map +1 -1
  128. package/dist/components/common.js +1 -30
  129. package/dist/components/common.js.map +1 -1
  130. package/dist/components/gx-ide-bpm-app-declaration.js +1 -1
  131. package/dist/components/gx-ide-bpm-app-declaration.js.map +1 -1
  132. package/dist/components/gx-ide-bpm-assign-roles.js +1 -1
  133. package/dist/components/gx-ide-bpm-assign-roles.js.map +1 -1
  134. package/dist/components/gx-ide-bpm-export-xpdl.js +1 -1
  135. package/dist/components/gx-ide-bpm-export-xpdl.js.map +1 -1
  136. package/dist/components/gx-ide-bpm-import-files.js +1 -1
  137. package/dist/components/gx-ide-bpm-import-files.js.map +1 -1
  138. package/dist/components/gx-ide-bpm-import-gxpm.js +1 -1
  139. package/dist/components/gx-ide-bpm-import-gxpm.js.map +1 -1
  140. package/dist/components/gx-ide-bpm-timer-duration.js +1 -1
  141. package/dist/components/gx-ide-bpm-timer-duration.js.map +1 -1
  142. package/dist/components/gx-ide-card.js +1 -1
  143. package/dist/components/gx-ide-card.js.map +1 -1
  144. package/dist/components/gx-ide-deployment-tool.js +1 -1
  145. package/dist/components/gx-ide-deployment-tool.js.map +1 -1
  146. package/dist/components/gx-ide-edit-module-server.js +118 -68
  147. package/dist/components/gx-ide-edit-module-server.js.map +1 -1
  148. package/dist/components/gx-ide-empty-state2.js +1 -1
  149. package/dist/components/gx-ide-empty-state2.js.map +1 -1
  150. package/dist/components/gx-ide-file-uploader.js +1 -1
  151. package/dist/components/gx-ide-file-uploader.js.map +1 -1
  152. package/dist/components/gx-ide-gam-installation-settings.js +1 -1
  153. package/dist/components/gx-ide-gam-installation-settings.js.map +1 -1
  154. package/dist/components/gx-ide-manage-module-references.js +384 -291
  155. package/dist/components/gx-ide-manage-module-references.js.map +1 -1
  156. package/dist/components/gx-ide-progress-bar.d.ts +11 -0
  157. package/dist/components/gx-ide-progress-bar.js +8 -0
  158. package/dist/components/gx-ide-progress-bar.js.map +1 -0
  159. package/dist/components/gx-ide-references.js +1 -1
  160. package/dist/components/gx-ide-references.js.map +1 -1
  161. package/dist/components/gx-ide-team-dev-commit.js +37 -36
  162. package/dist/components/gx-ide-team-dev-commit.js.map +1 -1
  163. package/dist/components/gx-ide-team-dev-preview.d.ts +11 -0
  164. package/dist/components/gx-ide-team-dev-preview.js +573 -0
  165. package/dist/components/gx-ide-team-dev-preview.js.map +1 -0
  166. package/dist/components/gx-ide-team-dev-select-recent-comment.js +1 -1
  167. package/dist/components/gx-ide-team-dev-select-recent-comment.js.map +1 -1
  168. package/dist/components/gx-ide-team-dev-update.js.map +1 -1
  169. package/dist/components/gx-ide-test.js +1 -1
  170. package/dist/components/gx-ide-test.js.map +1 -1
  171. package/dist/components/gx-ide-wf-settings.js +1 -1
  172. package/dist/components/gx-ide-wf-settings.js.map +1 -1
  173. package/dist/components/gx-ide-ww-images.js +2 -2
  174. package/dist/components/gx-ide-ww-images.js.map +1 -1
  175. package/dist/components/list-selector.js +1 -1
  176. package/dist/components/list-selector.js.map +1 -1
  177. package/dist/components/progress-bar.js +166 -0
  178. package/dist/components/progress-bar.js.map +1 -0
  179. package/dist/components/select-kb-items.js +2 -1
  180. package/dist/components/select-kb-items.js.map +1 -1
  181. package/dist/components/tabular-grid-render.js +2 -2
  182. package/dist/components/tabular-grid-render.js.map +1 -1
  183. package/dist/esm/{common-b811a822.js → common-dc966e64.js} +2 -31
  184. package/dist/esm/common-dc966e64.js.map +1 -0
  185. package/dist/esm/genexus-ide-ui.js +1 -1
  186. package/dist/esm/gx-ide-bpm-app-declaration.entry.js +1 -1
  187. package/dist/esm/gx-ide-bpm-app-declaration.entry.js.map +1 -1
  188. package/dist/esm/gx-ide-bpm-assign-roles.entry.js +1 -1
  189. package/dist/esm/gx-ide-bpm-assign-roles.entry.js.map +1 -1
  190. package/dist/esm/gx-ide-bpm-export-xpdl.entry.js +1 -1
  191. package/dist/esm/gx-ide-bpm-export-xpdl.entry.js.map +1 -1
  192. package/dist/esm/gx-ide-bpm-import-files.entry.js +1 -1
  193. package/dist/esm/gx-ide-bpm-import-files.entry.js.map +1 -1
  194. package/dist/esm/gx-ide-bpm-import-gxpm.entry.js +1 -1
  195. package/dist/esm/gx-ide-bpm-import-gxpm.entry.js.map +1 -1
  196. package/dist/esm/gx-ide-bpm-objects-selector.entry.js +1 -1
  197. package/dist/esm/gx-ide-bpm-objects-selector.entry.js.map +1 -1
  198. package/dist/esm/gx-ide-bpm-timer-duration.entry.js +1 -1
  199. package/dist/esm/gx-ide-bpm-timer-duration.entry.js.map +1 -1
  200. package/dist/esm/gx-ide-card.entry.js +1 -1
  201. package/dist/esm/gx-ide-card.entry.js.map +1 -1
  202. package/dist/esm/gx-ide-deployment-tool.entry.js +1 -1
  203. package/dist/esm/gx-ide-deployment-tool.entry.js.map +1 -1
  204. package/dist/esm/gx-ide-edit-module-server.entry.js +112 -50
  205. package/dist/esm/gx-ide-edit-module-server.entry.js.map +1 -1
  206. package/dist/esm/gx-ide-empty-state.entry.js +1 -1
  207. package/dist/esm/gx-ide-empty-state.entry.js.map +1 -1
  208. package/dist/esm/gx-ide-file-uploader.entry.js +1 -1
  209. package/dist/esm/gx-ide-file-uploader.entry.js.map +1 -1
  210. package/dist/esm/gx-ide-gam-installation-settings.entry.js +1 -1
  211. package/dist/esm/gx-ide-gam-installation-settings.entry.js.map +1 -1
  212. package/dist/esm/gx-ide-list-selector_2.entry.js +1 -1
  213. package/dist/esm/gx-ide-list-selector_2.entry.js.map +1 -1
  214. package/dist/esm/gx-ide-manage-module-references.entry.js +359 -267
  215. package/dist/esm/gx-ide-manage-module-references.entry.js.map +1 -1
  216. package/dist/esm/gx-ide-new-environment.entry.js +1 -1
  217. package/dist/esm/gx-ide-new-kb.entry.js +1 -1
  218. package/dist/esm/gx-ide-progress-bar.entry.js +137 -0
  219. package/dist/esm/gx-ide-progress-bar.entry.js.map +1 -0
  220. package/dist/esm/gx-ide-references.entry.js +1 -1
  221. package/dist/esm/gx-ide-references.entry.js.map +1 -1
  222. package/dist/esm/gx-ide-select-kb-items.entry.js +2 -1
  223. package/dist/esm/gx-ide-select-kb-items.entry.js.map +1 -1
  224. package/dist/esm/gx-ide-splash.entry.js +1 -1
  225. package/dist/esm/gx-ide-team-dev-bring-changes.entry.js +1 -1
  226. package/dist/esm/gx-ide-team-dev-commit.entry.js +34 -33
  227. package/dist/esm/gx-ide-team-dev-commit.entry.js.map +1 -1
  228. package/dist/esm/gx-ide-team-dev-preview.entry.js +523 -0
  229. package/dist/esm/gx-ide-team-dev-preview.entry.js.map +1 -0
  230. package/dist/esm/gx-ide-team-dev-select-recent-comment.entry.js +1 -1
  231. package/dist/esm/gx-ide-team-dev-select-recent-comment.entry.js.map +1 -1
  232. package/dist/esm/gx-ide-team-dev-update.entry.js +1 -1
  233. package/dist/esm/gx-ide-team-dev-update.entry.js.map +1 -1
  234. package/dist/esm/gx-ide-test.entry.js +1 -1
  235. package/dist/esm/gx-ide-test.entry.js.map +1 -1
  236. package/dist/esm/gx-ide-wf-settings.entry.js +1 -1
  237. package/dist/esm/gx-ide-wf-settings.entry.js.map +1 -1
  238. package/dist/esm/gx-ide-ww-images.entry.js +2 -2
  239. package/dist/esm/gx-ide-ww-images.entry.js.map +1 -1
  240. package/dist/esm/loader.js +1 -1
  241. package/dist/esm/{tabular-grid-render-137bd3dd.js → tabular-grid-render-c868fa55.js} +3 -3
  242. package/dist/esm/tabular-grid-render-c868fa55.js.map +1 -0
  243. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  244. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  245. package/dist/genexus-ide-ui/gx-ide-assets/edit-module-server/shortcuts.json +15 -0
  246. package/dist/genexus-ide-ui/gx-ide-assets/manage-module-references/langs/manage-module-references.lang.en.json +6 -2
  247. package/dist/genexus-ide-ui/gx-ide-assets/manage-module-references/langs/manage-module-references.lang.ja.json +6 -2
  248. package/dist/genexus-ide-ui/gx-ide-assets/manage-module-references/langs/manage-module-references.lang.zh.json +6 -2
  249. package/dist/genexus-ide-ui/gx-ide-assets/progress-bar/langs/progress-bar.lang.en.json +5 -0
  250. package/dist/genexus-ide-ui/gx-ide-assets/progress-bar/langs/progress-bar.lang.ja.json +5 -0
  251. package/dist/genexus-ide-ui/gx-ide-assets/progress-bar/langs/progress-bar.lang.zh.json +5 -0
  252. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-commit/langs/team-dev-commit.lang.en.json +2 -2
  253. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-commit/langs/team-dev-commit.lang.ja.json +2 -2
  254. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-commit/langs/team-dev-commit.lang.zh.json +2 -2
  255. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-preview/langs/team-dev-preview.lang.en.json +44 -0
  256. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-preview/langs/team-dev-preview.lang.ja.json +44 -0
  257. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-preview/langs/team-dev-preview.lang.zh.json +44 -0
  258. package/dist/genexus-ide-ui/{p-74c46daf.entry.js → p-074d2bcf.entry.js} +32 -32
  259. package/dist/genexus-ide-ui/{p-1671c731.entry.js → p-214ddb11.entry.js} +2 -2
  260. package/dist/genexus-ide-ui/{p-a4b820e5.js → p-22bdcf23.js} +3 -3
  261. package/dist/genexus-ide-ui/p-22bdcf23.js.map +1 -0
  262. package/dist/genexus-ide-ui/p-29ac6b13.entry.js +582 -0
  263. package/dist/genexus-ide-ui/p-29ac6b13.entry.js.map +1 -0
  264. package/dist/genexus-ide-ui/{p-156fa688.entry.js → p-2ec8193b.entry.js} +5 -5
  265. package/dist/genexus-ide-ui/{p-94cb4746.entry.js → p-33aeb361.entry.js} +36 -36
  266. package/dist/genexus-ide-ui/p-3a22af5d.entry.js +249 -0
  267. package/dist/genexus-ide-ui/p-3a22af5d.entry.js.map +1 -0
  268. package/dist/genexus-ide-ui/{p-e8e7f960.entry.js → p-3d71b287.entry.js} +2 -2
  269. package/dist/genexus-ide-ui/p-3d71b287.entry.js.map +1 -0
  270. package/dist/genexus-ide-ui/p-45d9dcbc.entry.js +166 -0
  271. package/dist/genexus-ide-ui/p-45d9dcbc.entry.js.map +1 -0
  272. package/dist/genexus-ide-ui/{p-5308144e.entry.js → p-4d272c15.entry.js} +2 -2
  273. package/dist/genexus-ide-ui/{p-b1bf5be8.entry.js → p-5f7de718.entry.js} +5 -5
  274. package/dist/genexus-ide-ui/{p-b1bf5be8.entry.js.map → p-5f7de718.entry.js.map} +1 -1
  275. package/dist/genexus-ide-ui/{p-f5734cc7.entry.js → p-630581df.entry.js} +2 -2
  276. package/dist/genexus-ide-ui/{p-6d3a4648.entry.js → p-64c0a07c.entry.js} +7 -7
  277. package/dist/genexus-ide-ui/{p-0910af1b.entry.js → p-6da03710.entry.js} +54 -54
  278. package/dist/genexus-ide-ui/{p-d41d52f6.entry.js → p-70038e09.entry.js} +2 -2
  279. package/dist/genexus-ide-ui/{p-fff8902d.entry.js → p-73c3f9ec.entry.js} +207 -205
  280. package/dist/genexus-ide-ui/p-73c3f9ec.entry.js.map +1 -0
  281. package/dist/genexus-ide-ui/{p-5b8ef529.entry.js → p-75925cee.entry.js} +39 -39
  282. package/dist/genexus-ide-ui/{p-d243ee33.entry.js → p-8b01c337.entry.js} +2 -2
  283. package/dist/genexus-ide-ui/{p-f9bde776.entry.js → p-8f2f8995.entry.js} +3 -3
  284. package/dist/genexus-ide-ui/{p-d71cf7d9.entry.js → p-94a1f3d1.entry.js} +20 -20
  285. package/dist/genexus-ide-ui/{p-ae33da9a.entry.js → p-9606ebed.entry.js} +19 -19
  286. package/dist/genexus-ide-ui/p-97bbd54c.js +132 -0
  287. package/dist/genexus-ide-ui/p-97bbd54c.js.map +1 -0
  288. package/dist/genexus-ide-ui/{p-7d779463.entry.js → p-9a6b9a7f.entry.js} +2 -2
  289. package/dist/genexus-ide-ui/{p-2d70b76d.entry.js → p-c777da28.entry.js} +30 -30
  290. package/dist/genexus-ide-ui/{p-4c9cddc5.entry.js → p-dc2a6f77.entry.js} +16 -16
  291. package/dist/genexus-ide-ui/{p-9adbe860.entry.js → p-df2c52cb.entry.js} +2 -2
  292. package/dist/genexus-ide-ui/{p-95f8ff9f.entry.js → p-eeae4b37.entry.js} +2 -2
  293. package/dist/genexus-ide-ui/p-ef6a6401.entry.js +588 -0
  294. package/dist/genexus-ide-ui/p-ef6a6401.entry.js.map +1 -0
  295. package/dist/genexus-ide-ui/{p-408eac22.entry.js → p-f5bdfa14.entry.js} +24 -24
  296. package/dist/genexus-ide-ui/{p-5378f926.entry.js → p-f83c415c.entry.js} +3 -2
  297. package/dist/genexus-ide-ui/p-f83c415c.entry.js.map +1 -0
  298. package/dist/genexus-ide-ui/{p-ecba7aa4.entry.js → p-f9403b49.entry.js} +29 -29
  299. package/dist/types/common/common.d.ts +0 -2
  300. package/dist/types/components/_helpers/progress-bar/progress-bar.d.ts +61 -0
  301. package/dist/types/components/modules/edit-module-server/edit-module-server.d.ts +15 -30
  302. package/dist/types/components/modules/edit-module-server/helpers.d.ts +3 -0
  303. package/dist/types/components/modules/manage-module-references/helpers.d.ts +5 -0
  304. package/dist/types/components/modules/manage-module-references/manage-module-references.d.ts +43 -88
  305. package/dist/types/components/select-kb-items/select-kb-items.d.ts +2 -1
  306. package/dist/types/components/team-dev/preview/team-dev-preview.d.ts +107 -0
  307. package/dist/types/components/team-dev/update/update.d.ts +4 -35
  308. package/dist/types/components/team-dev/version-control/commit/commit.d.ts +10 -11
  309. package/dist/types/components/team-dev/version-control/common/types.d.ts +35 -4
  310. package/dist/types/components.d.ts +234 -68
  311. package/package.json +1 -1
  312. package/dist/cjs/common-f2540d3e.js.map +0 -1
  313. package/dist/cjs/tabular-grid-render-ce935a84.js.map +0 -1
  314. package/dist/esm/common-b811a822.js.map +0 -1
  315. package/dist/esm/tabular-grid-render-137bd3dd.js.map +0 -1
  316. package/dist/genexus-ide-ui/p-300fcfa1.entry.js +0 -141
  317. package/dist/genexus-ide-ui/p-300fcfa1.entry.js.map +0 -1
  318. package/dist/genexus-ide-ui/p-5378f926.entry.js.map +0 -1
  319. package/dist/genexus-ide-ui/p-714b37c0.js +0 -159
  320. package/dist/genexus-ide-ui/p-714b37c0.js.map +0 -1
  321. package/dist/genexus-ide-ui/p-a4b820e5.js.map +0 -1
  322. package/dist/genexus-ide-ui/p-b0d1b217.entry.js +0 -498
  323. package/dist/genexus-ide-ui/p-b0d1b217.entry.js.map +0 -1
  324. package/dist/genexus-ide-ui/p-e8e7f960.entry.js.map +0 -1
  325. package/dist/genexus-ide-ui/p-fff8902d.entry.js.map +0 -1
  326. /package/dist/genexus-ide-ui/{p-74c46daf.entry.js.map → p-074d2bcf.entry.js.map} +0 -0
  327. /package/dist/genexus-ide-ui/{p-1671c731.entry.js.map → p-214ddb11.entry.js.map} +0 -0
  328. /package/dist/genexus-ide-ui/{p-156fa688.entry.js.map → p-2ec8193b.entry.js.map} +0 -0
  329. /package/dist/genexus-ide-ui/{p-94cb4746.entry.js.map → p-33aeb361.entry.js.map} +0 -0
  330. /package/dist/genexus-ide-ui/{p-5308144e.entry.js.map → p-4d272c15.entry.js.map} +0 -0
  331. /package/dist/genexus-ide-ui/{p-f5734cc7.entry.js.map → p-630581df.entry.js.map} +0 -0
  332. /package/dist/genexus-ide-ui/{p-6d3a4648.entry.js.map → p-64c0a07c.entry.js.map} +0 -0
  333. /package/dist/genexus-ide-ui/{p-0910af1b.entry.js.map → p-6da03710.entry.js.map} +0 -0
  334. /package/dist/genexus-ide-ui/{p-d41d52f6.entry.js.map → p-70038e09.entry.js.map} +0 -0
  335. /package/dist/genexus-ide-ui/{p-5b8ef529.entry.js.map → p-75925cee.entry.js.map} +0 -0
  336. /package/dist/genexus-ide-ui/{p-d243ee33.entry.js.map → p-8b01c337.entry.js.map} +0 -0
  337. /package/dist/genexus-ide-ui/{p-f9bde776.entry.js.map → p-8f2f8995.entry.js.map} +0 -0
  338. /package/dist/genexus-ide-ui/{p-d71cf7d9.entry.js.map → p-94a1f3d1.entry.js.map} +0 -0
  339. /package/dist/genexus-ide-ui/{p-ae33da9a.entry.js.map → p-9606ebed.entry.js.map} +0 -0
  340. /package/dist/genexus-ide-ui/{p-7d779463.entry.js.map → p-9a6b9a7f.entry.js.map} +0 -0
  341. /package/dist/genexus-ide-ui/{p-2d70b76d.entry.js.map → p-c777da28.entry.js.map} +0 -0
  342. /package/dist/genexus-ide-ui/{p-4c9cddc5.entry.js.map → p-dc2a6f77.entry.js.map} +0 -0
  343. /package/dist/genexus-ide-ui/{p-9adbe860.entry.js.map → p-df2c52cb.entry.js.map} +0 -0
  344. /package/dist/genexus-ide-ui/{p-95f8ff9f.entry.js.map → p-eeae4b37.entry.js.map} +0 -0
  345. /package/dist/genexus-ide-ui/{p-408eac22.entry.js.map → p-f5bdfa14.entry.js.map} +0 -0
  346. /package/dist/genexus-ide-ui/{p-ecba7aa4.entry.js.map → p-f9403b49.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"file":"gx-ide-manage-module-references.js","mappings":"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","names":[],"sources":["src/components/modules/manage-module-references/manage-module-references.scss?tag=gx-ide-manage-module-references&encapsulation=shadow","src/components/modules/manage-module-references/manage-module-references.tsx"],"sourcesContent":["@import \"../../../global/gx-ide-common.scss\";\n@import \"../../../global/gx-ide-mixins.scss\";\n\n/*--- General ---*/\np,\nul {\n font-size: var(--font-size-lg);\n margin: 0;\n}\np {\n line-height: 1.6em;\n}\n/*--- Header ---*/\n.header {\n align-items: center;\n grid-template-columns: 1fr auto;\n grid-template-rows: 1fr;\n}\n.main {\n display: grid;\n //grid-template-columns: 1fr 2fr 1fr;\n grid-template-columns: 1fr 1fr;\n grid-template-rows: 1fr;\n height: 100%;\n overflow: auto;\n}\nch-grid-columnset {\n display: none;\n}\nch-grid-row[selected] {\n gxg-icon[data-action=\"install\"] {\n //WA to improve visibility\n filter: brightness(2);\n }\n}\n.grid-cell-module {\n &__info {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: var(--mer-spacing--3xs);\n }\n &__name {\n font-weight: var(--mer-font__weight--bold);\n }\n &__name,\n &__description {\n line-height: 1.55em;\n }\n}\n\n/*--- Servers Container ---*/\n.grid-container {\n height: 100%;\n overflow: auto;\n gx-ide-empty-state {\n height: 100%;\n }\n}\n.servers-container {\n display: none;\n height: 100%;\n &__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--gxg-list-box-main__padding) var(--gxg-list-box-main__padding)\n 0 var(--gxg-list-box-main__padding);\n\n gxg-button {\n width: 100%;\n }\n }\n}\n\n/*--- Modules (Header) ---*/\n.modules {\n &__header {\n padding: var(--gxg-list-box-main__padding);\n display: flex;\n flex-direction: column;\n gap: var(--mer-spacing--xs);\n }\n &__combo-container {\n display: flex;\n flex-direction: column;\n gap: var(--mer-spacing--xs);\n }\n &__server-commands {\n display: flex;\n gap: var(--mer-spacing--xs);\n }\n &__combo {\n gxg-combo-box {\n flex: 1;\n }\n display: flex;\n flex-direction: row;\n gap: var(--mer-spacing--xs);\n }\n &__container {\n border-inline-end: var(--mer-border__width--sm) solid\n var(--gx-ide-container-border-color);\n display: grid;\n grid-template-rows: auto 1fr;\n height: 100%;\n overflow: auto;\n }\n &__main {\n display: grid;\n grid-template-rows: auto 1fr;\n height: 100%;\n overflow: auto;\n\n &-header {\n display: flex;\n padding: var(--mer-spacing--xs);\n flex-direction: column;\n gap: var(--mer-spacing--xs);\n }\n }\n}\n\n/*--- Module Info ---*/\n.module-info {\n display: grid;\n grid-template-rows: auto 1fr;\n height: 100%;\n overflow: auto;\n\n &__title {\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--xs);\n }\n\n &__name {\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--sm);\n --ds-icon-size-box--regular: 24px;\n --ds-icon-size--regular: 24px;\n font-weight: var(--mer-font__weight--bold);\n }\n\n &__header {\n padding: var(--gx-ide-container__padding);\n display: flex;\n flex-direction: column;\n gap: var(--mer-spacing--xs);\n border-block-end: var(--mer-border__width--sm) solid\n var(--gx-ide-container-border-color);\n }\n\n &__action-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: var(--mer-spacing--xs);\n &:before {\n content: \"\";\n width: var(--mer-spacing--xs);\n height: var(--mer-spacing--xs);\n border-radius: 50%;\n display: block;\n background-color: var(--mer-icon__primary--disabled);\n }\n &--installed:before {\n background-color: var(--mer-icon__primary);\n }\n &--uninstallable:before {\n background-color: var(--mer-icon__warning);\n }\n }\n\n &__warning-message {\n margin-block-start: var(--mer-spacing--2xs);\n background-color: var(--mer-color__tinted-yellow--5);\n color: var(--mer-text__on-elevation);\n border: var(--mer-border__width--sm) solid var(--mer-border-color__warning);\n border-radius: var(--mer-border__radius--sm);\n padding: var(--mer-spacing--xs) var(--mer-spacing--md);\n }\n\n &__divider {\n width: calc(100% - var(--gx-ide-container__padding) * 4);\n padding: 0 var(--gx-ide-container__padding);\n margin: 0 auto;\n border: 0;\n border-block-end: var(--mer-border__width--sm) solid\n var(--gx-ide-container-border-color);\n }\n &__properties {\n display: flex;\n flex-direction: column;\n padding: var(--gx-ide-container__padding);\n gap: var(--mer-spacing--xs);\n overflow: auto;\n }\n}\n\n.md-property {\n display: grid;\n gap: var(--mer-spacing--xs);\n\n &--inline {\n grid-template-columns: auto 1fr;\n }\n &--block {\n }\n &__key {\n font-weight: var(--font-weight-bold);\n max-width: 150px;\n }\n &__value {\n font-size: var(--mer-font__size--2xs);\n }\n &__key,\n &__value {\n > * {\n display: inline-block;\n }\n }\n &__list {\n display: flex;\n flex-direction: column;\n gap: var(--mer-spacing--xs);\n > ul {\n margin: 0;\n padding: 0;\n list-style-type: none;\n display: flex;\n flex-direction: column;\n gap: var(--mer-spacing--2xs);\n margin-inline-start: var(--mer-spacing--xs);\n\n li {\n position: relative;\n padding-inline-start: 12px;\n line-height: var(--ds-base-font-line-height--comfortable);\n &::before {\n content: \"\";\n position: absolute;\n left: 0;\n top: 7px;\n display: inline-block;\n width: var(--mer-spacing--2xs);\n height: var(--mer-spacing--2xs);\n background-color: var(--mer-text__on-surface);\n }\n }\n }\n }\n}\n\n.md-property,\n.md-property__list {\n border-block-end: var(--mer-border__width--sm) solid\n var(--gx-ide-container-border-color);\n padding-block-end: var(--mer-spacing--xs);\n\n &:last-child {\n border-block-end: 0;\n padding-block-end: 0;\n }\n}\n\ngxg-ide-loader {\n border-radius: var(--mer-border__radius--md);\n}\n\n.button-wrapper {\n display: grid;\n align-items: center;\n justify-content: center;\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Event,\n Element,\n EventEmitter,\n Method,\n State,\n Watch\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport { Color } from \"@genexus/gemini\";\nimport { topStateBarType } from \"@genexus/gemini\";\nimport { TabularGridSelectionChangedEvent } from \"@genexus/chameleon-controls-library\";\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n/* CUSTOM IMPORTS */\nimport {\n ModuleServerData,\n ModuleData,\n ModuleActionType,\n ModuleFilterType,\n ModulePropertyData,\n ModuleVersionData\n} from \"../types\";\nimport { renderModuleDataProperties } from \"../../../common/common\";\nimport { Locale } from \"../../../common/locale\";\nimport { ContextMenuInfo } from \"../../../common/types\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n // \"utils/form\",\n // \"utils/layout\",\n // \"utils/typography\",\n // \"components/button\",\n // \"components/checkbox\",\n // \"components/edit\",\n \"components/tabular-grid\"\n];\n\n@Component({\n tag: \"gx-ide-manage-module-references\",\n styleUrl: \"manage-module-references.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/manage-module-references\"]\n})\nexport class GxManageModuleReferences {\n // 1.OWN PROPERTIES | WATCH'S //\n\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n private renderedFirstTime = false;\n /* selectedServerIdOnModulesAllUpdate is updated every time modulesAll is modified, in order to determine if the server is the same or not.*/\n private selectedServerIdOnModulesAllUpdate: string;\n\n #filterIcon = getIconPath({\n category: \"system\",\n name: \"filters\",\n colorType: \"on-elevation\"\n });\n #moduleIcon = getIconPath({\n category: \"objects\",\n name: \"module\"\n });\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeManageModuleReferencesElement;\n private loaderEl!: HTMLGxgIdeLoaderElement;\n private serversDetail!: HTMLDivElement;\n\n // 3.STATE() VARIABLES //\n\n @State() modulesAll: ModuleData[] = [];\n @Watch(\"modulesAll\")\n modulesAllWatcher(modulesAll: ModuleData[]) {\n this.updateModulesSelectedVersion(modulesAll);\n }\n @State() filteredModules: ModuleData[] = [];\n @State() selectedModule: ModuleData;\n @State() selectedServerId: string;\n @State() selectedModuleAction: ActionInfo = {\n message: \"\",\n progress: 0,\n state: \"in-progress\"\n };\n @State() modulesSelectedVersion: Map<string, string> = new Map();\n @State() actionCompleted = true;\n @State() closeProgressBar = true;\n @State() progressValue: number = 0;\n @State() progressState: topStateBarType = \"in-progress\";\n @State() loadingServer = false;\n @State() reRenderCounter: number = 0;\n @Watch(\"loadingServer\")\n loadingServerHandler(loading: boolean) {\n if (loading) {\n this.loaderEl.show = true;\n } else {\n this.loaderEl.show = false;\n }\n }\n\n // 4.PUBLIC PROPERTY API //\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * List of module servers currently cataloged\n */\n @Prop() readonly servers: ModuleServerData[] = [];\n\n /**\n * Callback invoked when a server is selected. Returns the set of modules available on that server.\n */\n @Prop() readonly serverSelectedCallback: ServerSelectedCallback;\n\n /**\n * Callback invoked when the user wants to execute the action corresponding to a selected module. When the action begins to be executed, the component must be able to show the progress of the action. For this, the onProgress parameter is available, which is in turn a callback used by the host to notify the progress by text message and percentage.\n */\n @Prop() readonly executeActionCallback: ExecuteActionCallback;\n\n /**\n * Callback invoked when Add button is clicked\n */\n @Prop() readonly addServerCallback: AddServerCallback;\n\n /**\n * Callback invoked when an element is right clicked on servers list\n */\n @Prop() readonly serverContextMenuCallback: ServerContextMenuCallback;\n\n /**\n * Allows you to hide the button (...) that executes serverContextMenuCallback, if we do not implement the commands in a first version\n */\n @Prop() readonly showServerCommands: boolean = false;\n\n // 5.EVENTS (EMIT) //\n\n /**\n * This event is emitted once just after the component is fully loaded and the first render() occurs\n */\n @Event() componentDidRenderFirstTime: EventEmitter<boolean>;\n\n // 6.COMPONENT LIFECYCLE EVENTS //\n\n componentDidRender() {\n if (!this.renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this._componentLocale.componentName\n );\n this.renderedFirstTime = true;\n }\n }\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n async componentDidLoad() {\n await this.serverSelectedCallbackHandler(this.servers[0].id, false);\n }\n\n // 7.LISTENERS //\n\n @Watch(\"modulesAll\")\n onPropValueChange(newModulesData: ModuleData[]) {\n this.filteredModules = [...newModulesData];\n }\n\n // 8.PUBLIC METHODS API //\n\n /**\n * validate\n */\n @Method()\n async validate(): Promise<boolean> {\n return true;\n }\n\n // 9.LOCAL METHODS //\n\n private updateModulesSelectedVersion = (modulesAll: ModuleData[]) => {\n if (this.selectedServerId !== this.selectedServerIdOnModulesAllUpdate) {\n // the server has changed. clear the updateModulesSelectedVersion\n this.modulesSelectedVersion.clear();\n modulesAll.forEach(module => {\n // this.modulesSelectedVersion.set(module.id, module.versions[0].id);\n this.modulesSelectedVersion.set(\n module.id,\n module.versions[module.versions.length - 1].id\n );\n });\n } else {\n // the server has't changed. only add the module to the map, if it is a new module.\n modulesAll.forEach(module => {\n const newModule =\n this.modulesSelectedVersion.get(module.id) === undefined;\n if (newModule) {\n this.modulesSelectedVersion.set(module.id, module.versions[0].id);\n }\n });\n }\n this.selectedServerIdOnModulesAllUpdate = this.selectedServerId;\n };\n\n private getActionFromCurrentModuleVersion = (): ModuleActionType => {\n const action = this.getModuleData(\n this.selectedModule,\n \"action\"\n ) as ModuleActionType;\n return action || \"install\";\n };\n\n /**\n * Callback invoked to get the progress when module is performing an action\n */\n private onProgress = (\n message: string,\n progress: number,\n state: topStateBarType\n ): void => {\n const data = { message, progress, state };\n this.selectedModuleAction = { ...data };\n this.progressValue = this.selectedModuleAction.progress;\n this.progressState = this.selectedModuleAction.state;\n };\n\n // 10.LOCAL METHODS //\n\n /**\n * Used for changing the selected module\n */\n private handleModuleChange = (\n event: CustomEvent<TabularGridSelectionChangedEvent>\n ) => {\n const selectedModuleId = event.detail.rowsId[0];\n const foundModule = this.modulesAll.find(\n item => item.id === selectedModuleId\n );\n if (foundModule) {\n this.selectedModule = foundModule;\n }\n };\n\n /**\n * Change the server selected value in response to callbackServerSelected callback\n */\n private serverSelectedCallbackHandler = async (id: any, reload: boolean) => {\n if (this.serverSelectedCallback) {\n this.loadingServer = true;\n const resolvedObjects = await this.serverSelectedCallback(id, reload);\n this.selectedServerId = id;\n this.modulesAll = [...resolvedObjects];\n this.filterModulesByType(\"browse\");\n this.selectedModule = this.filteredModules[0];\n this.loadingServer = false;\n }\n };\n\n private handleFilterChange = (value: string) => {\n value = value.trim().toLowerCase();\n if (value) {\n this.filteredModules = this.modulesAll.filter(module => {\n const selectedVersionName = this.getModuleData(\n module,\n \"name\"\n ) as string;\n return selectedVersionName?.toLowerCase().includes(value);\n });\n } else {\n this.filteredModules = this.modulesAll;\n }\n };\n\n private handleFilterChangeHandler = (e: CustomEvent<string>) => {\n const value = e.detail;\n return this.handleFilterChange(value);\n };\n\n /**\n * Perform an action relative to a module using callbackExecuteAction callback and receive the state of that action with onProgress callback\n */\n private executeActionCallbackHandler = async (module: ModuleData) => {\n if (this.executeActionCallback) {\n const moduleSelectedVersionId = this.modulesSelectedVersion.get(\n module.id\n );\n const actionCompleted = await this.executeActionCallback(\n this.selectedServerId,\n module.id,\n moduleSelectedVersionId,\n this.getActionFromCurrentModuleVersion(),\n this.onProgress\n );\n if (actionCompleted) {\n this.serverSelectedCallbackHandler(this.selectedServerId, false);\n }\n this.actionCompleted = actionCompleted;\n }\n };\n\n private filterModulesByType = (type: ModuleFilterType) => {\n // browse\n if (type === \"browse\") {\n this.filteredModules = this.modulesAll;\n }\n // installed\n else if (type === \"installed\") {\n this.filteredModules = this.modulesAll.filter((module: ModuleData) => {\n // if the module has a currentVersion (not undefined) it means it is installed\n return module.currentVersion;\n });\n } else if (type === \"updates\") {\n this.filteredModules = this.modulesAll.filter((module: ModuleData) => {\n return module.versions.find(version => version.action === \"update\");\n });\n }\n };\n\n private showModuleMenu = async (e: MouseEvent) => {\n if (this.serverContextMenuCallback) {\n const buttonBoundingClientRect = (\n e.target as HTMLElement\n ).getBoundingClientRect();\n await this.serverContextMenuCallback({\n selection: [this.selectedServerId],\n clientX: buttonBoundingClientRect.x,\n clientY: buttonBoundingClientRect.y\n });\n }\n };\n\n private getModuleData = (\n module: ModuleData,\n dataType: keyof ModuleVersionData\n ): string | ModulePropertyData[] | undefined => {\n const selectedVersionId = this.modulesSelectedVersion.get(module.id);\n let selectedVersion;\n let selectedVersionData;\n if (selectedVersionId) {\n selectedVersion = module.versions.find(\n version => version.id === selectedVersionId\n );\n }\n if (selectedVersion) {\n selectedVersionData = selectedVersion[dataType];\n }\n return selectedVersionData;\n };\n\n private moduleActionHandler = (module: ModuleData) => () => {\n this.actionCompleted = false;\n this.closeProgressBar = false;\n this.executeActionCallbackHandler(module);\n };\n\n private renderModulesGrid = (): Element => {\n return (\n <ch-tabular-grid\n rowSelectionMode=\"single\"\n part=\"ch-grid-pending-commits\"\n class=\"tabular-grid servers-detail no-border\"\n onSelectionChanged={this.handleModuleChange}\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n settingable={false}\n size=\"min-content\"\n ></ch-tabular-grid-column>\n\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n settingable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n settingable={false}\n size=\"min-content\"\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n\n {this.filteredModules.map((module: ModuleData) => (\n <ch-tabular-grid-row\n class=\"tabular-grid-row\"\n rowid={module.id}\n key={module.id}\n selected={\n this.selectedModule && this.selectedModule.id === module.id\n }\n >\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <gxg-icon\n type=\"objects/module\"\n data-action={this.moduleVersionIconColor(module)}\n color={this.moduleVersionIconColor(module)}\n size=\"small\"\n ></gxg-icon>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell grid-cell-module__info\">\n <span class=\"grid-cell-module__name\">\n {this.getModuleData(module, \"name\")}\n </span>\n <span class=\"grid-cell-module__description\">\n {this.getModuleData(module, \"description\")}\n </span>\n </ch-tabular-grid-cell>\n\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.selectedModule && this.selectedModule.id === module.id ? (\n <div class=\"button-wrapper\">\n <gxg-button\n disabled={\n !this.actionCompleted ||\n this.getModuleData(module, \"action\") === \"incompatible\" ||\n this.getModuleData(module, \"action\") === \"not-installable\"\n }\n fit\n part=\"module-action\"\n onClick={this.moduleActionHandler(module)}\n >\n {this.getActionFromCurrentModuleVersion()}\n </gxg-button>\n </div>\n ) : null}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid>\n );\n };\n\n private renderEmptyStateModules = () => {\n return (\n <gx-ide-empty-state\n stateIconSrc={this.#filterIcon}\n stateTitle={this._componentLocale.modules.noModulesFilter}\n ></gx-ide-empty-state>\n );\n };\n\n private moduleVersionIconColor = (module: ModuleData): Color => {\n const moduleAction = this.getModuleData(module, \"action\");\n const moduleCurrentVersion = module.currentVersion;\n if (moduleAction === \"not-installable\" || moduleAction === \"incompatible\") {\n return \"warning\";\n } else if (!moduleCurrentVersion) {\n return \"mercury-primary-disabled\";\n } else {\n return \"mercury-primary\";\n }\n };\n\n /* module details/information renders*/\n private renderVersionName = () => {\n return (\n <gxg-title part=\"module-info__name\" type=\"title-05\">\n <div class=\"module-info__name\">\n {/* <gxg-icon\n type=\"objects/module\"\n color={this.moduleVersionIconColor(this.selectedModule)}\n ></gxg-icon> */}\n {this.getModuleData(this.selectedModule, \"name\")}\n </div>\n </gxg-title>\n );\n };\n\n private renderVersionWarningMessage = () => {\n const warningMessage = this.getModuleData(\n this.selectedModule,\n \"warningMessage\"\n );\n if (warningMessage) {\n return <p class=\"module-info__alert-message\">{warningMessage}</p>;\n }\n };\n\n private renderInstalledVersion = () => {\n const currentVersion = this.selectedModule.currentVersion;\n let caption;\n let cssClass = \"module-info__action-container\";\n if (currentVersion) {\n caption = `${this._componentLocale.modulesInformation.moduleProperties.installed}: ${currentVersion}`;\n cssClass += ` module-info__action-container--installed`;\n } else {\n caption =\n this._componentLocale.modulesInformation.moduleProperties.notInstalled;\n }\n return (\n <div class={cssClass}>\n <gxg-text part=\"module-info__action\">{caption}</gxg-text>\n </div>\n );\n };\n\n private moduleVersionsValueChangedHandler = (e: CustomEvent<any>) => {\n const versionId = e.detail;\n this.updateSelectedModuleVersion(versionId);\n };\n private moduleVersionsItemChangedHandler = (e: CustomEvent<any>) => {\n const versionId = e.detail.value;\n this.updateSelectedModuleVersion(versionId);\n };\n private updateSelectedModuleVersion = (versionId: string) => {\n if (versionId) {\n this.modulesSelectedVersion.set(this.selectedModule.id, versionId);\n this.reRenderCounter++;\n }\n };\n\n private renderModuleVersions = () => {\n return (\n <div part=\"available-versions\">\n <gxg-combo-box\n id=\"versions-combo-box\"\n disable-filter\n value={this.getModuleData(this.selectedModule, \"id\")}\n part=\"module-versions\"\n display-validation-styles\n display-validation-message\n label={\n this._componentLocale.modulesInformation.moduleProperties\n .availableVersions\n }\n labelPosition=\"start\"\n centerLabel\n onValueChanged={this.moduleVersionsValueChangedHandler}\n disabled={this.loadingServer}\n >\n {this.selectedModule.versions.map(item => (\n <gxg-combo-box-item\n value={item.id}\n onItemSelected={this.moduleVersionsItemChangedHandler}\n >\n {item.id}\n </gxg-combo-box-item>\n ))}\n </gxg-combo-box>\n </div>\n );\n };\n\n private selectedButtonChangedHandler = (e: CustomEvent<string>) => {\n const type = e.detail.replace(\"btn-\", \"\") as ModuleFilterType;\n this.filterModulesByType(type);\n };\n\n private serverItemSelectedHandler = (\n e: CustomEvent<{\n el: HTMLGxgComboBoxItemElement;\n index: number;\n value: any;\n icon?: string;\n }>\n ) => {\n const serverId = e.detail.value;\n this.serverSelectedCallbackHandler(serverId, false);\n };\n\n private serverValueChangedHandler = (e: CustomEvent<any>) => {\n const serverId = e.detail;\n this.serverSelectedCallbackHandler(serverId, false);\n };\n\n private progressBarCloseHandler = () => {\n setTimeout(() => {\n this.actionCompleted = true;\n this.closeProgressBar = true;\n // reset\n this.progressValue = 0;\n this.progressState = \"in-progress\";\n }, 400);\n // delay to force the footer line disappear after the top-state-bar has been closed.\n };\n\n private reloadServer = () => {\n this.serverSelectedCallbackHandler(this.selectedServerId, true);\n };\n\n // 11.RENDER() FUNCTION //\n\n render(): void {\n return (\n <Host\n class={{\n \"gx-ide-component\": true\n }}\n >\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <div class=\"gx-ide-main-wrapper\">\n <gx-ide-container\n noContentPadding\n noAboveFooterPadding\n noBorderAboveFooter={this.closeProgressBar}\n part=\"servers\"\n containerTitle={\n this.displayTitle ? this._componentLocale.componentName : null\n }\n >\n {/* Servers*/}\n <main class=\"main\">\n <div class=\"modules__container\">\n <header class=\"modules__header\">\n <div class=\"modules__combo-container\">\n <gxg-label>\n {this._componentLocale.modules.selectServer}\n </gxg-label>\n <div class=\"modules__combo\">\n <gxg-combo-box\n disableFilter\n onValueChanged={this.serverValueChangedHandler}\n >\n {this.servers.map(item => (\n <gxg-combo-box-item\n value={item.id}\n onItemSelected={this.serverItemSelectedHandler}\n >\n {item.name}\n </gxg-combo-box-item>\n ))}\n </gxg-combo-box>\n {this.showServerCommands ? (\n <span class=\"modules__server-commands\">\n <gxg-button\n type=\"secondary-icon-only\"\n icon=\"gemini-tools/show-more-horizontal\"\n onClick={this.showModuleMenu}\n ></gxg-button>\n </span>\n ) : null}\n <gxg-button\n type=\"secondary-icon-only\"\n icon=\"gemini-tools/reset\"\n onClick={this.reloadServer}\n ></gxg-button>\n </div>\n </div>\n </header>\n\n <div class=\"modules__main\">\n <div class=\"modules__main-header\">\n <gxg-form-text\n label={this._componentLocale.modules.searchModules}\n labelPosition=\"above\"\n centerLabel={false}\n onValueChanged={this.handleFilterChangeHandler}\n disabled={this.loadingServer}\n ></gxg-form-text>\n <gxg-buttons-container\n reduced\n fullWidth\n class=\"modules__browser\"\n onSelectedButtonChanged={\n this.selectedButtonChangedHandler\n }\n >\n <gxg-button\n id=\"btn-browse\"\n selected\n disabled={this.loadingServer}\n >\n {this._componentLocale.modules.buttonsContainer.browse}\n </gxg-button>\n <gxg-button\n id=\"btn-installed\"\n disabled={this.loadingServer}\n >\n {\n this._componentLocale.modules.buttonsContainer\n .installed\n }\n </gxg-button>\n <gxg-button\n id=\"btn-updates\"\n disabled={this.loadingServer}\n >\n {this._componentLocale.modules.buttonsContainer.updates}\n </gxg-button>\n </gxg-buttons-container>\n </div>\n {/* modules grid*/}\n <div\n class=\"grid-container\"\n ref={el => (this.serversDetail = el as HTMLDivElement)}\n >\n {this.filteredModules.length > 0\n ? this.renderModulesGrid()\n : this.renderEmptyStateModules()}\n </div>\n </div>\n </div>\n\n {/* Module version information*/}\n {this.selectedModule ? (\n <div class=\"module-info\">\n <header class=\"module-info__header\">\n {this.renderVersionName()}\n {this.renderInstalledVersion()}\n {this.renderModuleVersions()}\n {/* {this.renderNotInstallable()} */}\n {this.renderVersionWarningMessage()}\n </header>\n <div class=\"module-info__properties gxg-scrollbar\">\n {renderModuleDataProperties(\n this.getModuleData(\n this.selectedModule,\n \"properties\"\n ) as ModulePropertyData[]\n )}\n </div>\n </div>\n ) : (\n <gx-ide-empty-state\n class=\"recent-objects__empty-state\"\n stateIconSrc={this.#moduleIcon}\n stateTitle={\n this._componentLocale.modulesInformation.emptyState.title\n }\n stateDescription={\n this._componentLocale.modulesInformation.emptyState\n .description\n }\n ></gx-ide-empty-state>\n )}\n </main>\n {/* Top State Bar*/}\n <gxg-top-state-bar\n slot=\"footer-above\"\n part=\"progress-bar\"\n stateType={this.progressState}\n noBorder\n caption={\n this.selectedModuleAction.message ||\n this._componentLocale.progressBar.defaultCaption\n }\n progress={this.progressValue}\n active={!this.actionCompleted || !this.closeProgressBar}\n closeType=\"not-progress\"\n closedCallback={this.progressBarCloseHandler}\n ></gxg-top-state-bar>\n </gx-ide-container>\n </div>\n <gxg-ide-loader\n loaderTitle={this._componentLocale.servers.loading}\n ref={el => (this.loaderEl = el as HTMLGxgIdeLoaderElement)}\n container={this.serversDetail}\n borderRadius=\"0 0 0 8px\"\n ></gxg-ide-loader>\n </Host>\n );\n }\n}\n\nexport type ExecuteActionCallback = (\n serverId: string,\n moduleId: string,\n moduleVersionId: string,\n action: ModuleActionType,\n onProgress: (\n message: string,\n progress: number,\n state: topStateBarType\n ) => void\n) => Promise<boolean>;\n\nexport type ServerSelectedCallback = (\n id: string,\n reload: boolean\n) => Promise<ModuleData[]>;\n\nexport type AddServerCallback = () => Promise<void>;\n\nexport type ServerContextMenuCallback = (\n contextMenuInfo: ContextMenuInfo\n) => Promise<void>;\nexport interface ActionInfo {\n message: string;\n progress: number;\n state: topStateBarType;\n}\n"],"version":3}
1
+ {"file":"gx-ide-manage-module-references.js","mappings":"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","names":[],"sources":["src/components/modules/manage-module-references/helpers.tsx","src/components/modules/manage-module-references/manage-module-references.scss?tag=gx-ide-manage-module-references&encapsulation=shadow","src/components/modules/manage-module-references/manage-module-references.tsx"],"sourcesContent":["import { h } from \"@stencil/core\";\nimport { ComboBoxModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\nimport {\n ModulePropertyData,\n ModuleServerData,\n ModuleVersionData\n} from \"../types\";\n\nexport const mapModuleServerDataToComboBoxModel = (\n servers: ModuleServerData[]\n): ComboBoxModel =>\n servers.map(server => ({\n value: server.id,\n caption: server.name\n }));\n\nexport const mapModuleVersionDataToComboBoxModel = (\n moduleVersions: ModuleVersionData[]\n): ComboBoxModel =>\n moduleVersions.map(moduleVersion => ({\n value: moduleVersion.id,\n caption: moduleVersion.name\n }));\n\nexport const renderModuleDataProperties = (\n options: Array<ModulePropertyData>\n): ModulePropertyData[] => {\n if (options.length) {\n const items: ModulePropertyData[] = [];\n\n options.forEach(option => {\n const isArray = Array.isArray(option.value);\n\n if (isArray && option.value.length) {\n const item = (\n <div class=\"md-property__list-container\">\n <p class=\"md-property__key subtitle-semi-bold-xs\">\n {option.name} :\n </p>\n <ul class=\"md-property__list\">\n {(option.value as string[]).map(subItem => {\n return (\n <li class=\"md-property__list-item body-regular-s\">\n {subItem}\n </li>\n );\n })}\n </ul>\n </div>\n );\n items.push(item);\n } else if (!isArray) {\n const item = (\n <div\n class={\n option.inline\n ? \"md-property md-property--inline\"\n : \"md-property md-property--block\"\n }\n >\n <p class=\"md-property__key subtitle-semi-bold-xs\">\n {option.name} :\n </p>\n <p class=\"md-property__value body-regular-s\">{option.value}</p>\n </div>\n );\n items.push(item);\n }\n });\n return items;\n }\n return null;\n};\n","@import \"../../../global/gx-ide-mixins.scss\";\n@include hiChar();\n$insideInlinePadding: var(--mer-spacing--sm);\n\n:host {\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-areas:\n \"modules-container module-info\"\n \"footer footer\";\n grid-template-columns: 1fr 1fr;\n grid-template-rows: 1fr max-content;\n}\n\n.main {\n display: contents;\n}\n\n// - - - - - - - - - - - - - - - - -\n// left section (modules list)\n// - - - - - - - - - - - - - - - - -\n\n.modules__container {\n padding-inline-end: $insideInlinePadding;\n grid-area: modules-container;\n grid-template-rows: max-content 1fr;\n overflow: auto;\n // border-inline-end: var(--section-common-border);\n}\n.combo-box-servers {\n flex-shrink: 0;\n flex-grow: 1;\n}\n\n// main\n$searchModulesGap: var(--mer-spacing--xs);\n.modules__main {\n display: grid;\n grid-template-rows: max-content 1fr;\n overflow: auto;\n}\n.modules__main-header {\n display: grid;\n gap: $searchModulesGap;\n}\n// buttons\n.browse-modules button {\n flex-grow: 1;\n}\n\n// Mercury DS designed ch-segmented-control-render to use inline-grid by default\n// grid\n.module-icon {\n // WA: align icon with title\n margin-block-start: var(--mer-spacing--xs);\n transform: scale(1) translateX(var(--mer-spacing--2xs));\n}\n.module-grid-item-info {\n grid-template-columns: max-content 1fr;\n}\n\n// grid\n.grid-or-loader-container {\n display: grid;\n position: relative;\n overflow: hidden;\n margin-block-start: var(--mer-spacing--sm);\n}\n.tabular-grid {\n overflow: hidden;\n}\n.tabular-grid-column-set {\n display: none;\n}\n.tabular-grid-cell-icon {\n pointer-events: none;\n}\ngx-ide-empty-state {\n // WA to block align center\n position: absolute;\n}\n\n// - - - - - - - - - - - - - - - - -\n// right section (module information)\n// - - - - - - - - - - - - - - - - -\n\n.module-info {\n padding-inline-start: $insideInlinePadding;\n grid-area: module-info;\n position: relative;\n}\n.modules-container,\n.module-info {\n overflow: auto;\n}\n\n.module-info {\n display: grid;\n grid-template-rows: max-content 1fr;\n overflow: auto;\n}\n.module-info__action-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: var(--mer-spacing--xs);\n &:before {\n content: \"\";\n inline-size: var(--mer-spacing--xs);\n block-size: var(--mer-spacing--xs);\n border-radius: 50%;\n display: block;\n background-color: var(--mer-icon__primary--disabled);\n }\n &--installed {\n color: var(--mer-text__success);\n }\n &--installed:before {\n background-color: var(--mer-text__success);\n }\n &--uninstallable:before {\n background-color: var(--mer-icon__warning);\n }\n}\n\n// header\n.module-info__header {\n display: grid;\n gap: var(--mer-spacing--xs);\n}\n.module-info__title {\n display: grid;\n grid-template-columns: max-content 1fr;\n align-items: center;\n gap: var(--mer-spacing--md);\n}\n.module-info__icon {\n transform: scale(1) translateX(var(--mer-spacing--2xs));\n}\n.module-info__alert-message {\n // TODO: this warning message styles should be defined by a Mercury class.\n padding: var(--mer-spacing--xs) var(--mer-spacing--sm);\n border-radius: var(--mer-border__radius--sm);\n background-color: var(--mer-color__tinted-yellow--5);\n color: var(--mer-text__bright);\n border: var(--mer-border__width--sm) solid var(--mer-border-color__warning);\n text-align: center;\n line-height: var(--mer-line-height--spaced);\n}\n\n// properties\n$propertiesCommonBorder: var(--mer-border__width--sm) solid\n var(--elevation-border-color, var(--mer-border-color__on-surface));\n\n.module-info__properties {\n display: grid;\n overflow: auto;\n grid-auto-rows: max-content;\n\n &-inner-wrapper {\n }\n}\n.md-property,\n.md-property__list-container {\n padding-block: var(--mer-spacing--xs);\n display: grid;\n gap: var(--mer-spacing--2xs);\n border-block-end: $propertiesCommonBorder;\n &:last-child {\n border-block-end: 0;\n }\n}\n.md-property__list {\n margin: 0;\n list-style-type: none;\n display: inline-flex;\n padding: 0;\n gap: var(--mer-spacing--2xs);\n flex-wrap: wrap;\n}\n.md-property__list-item {\n background-color: var(--mer-surface__elevation--02);\n padding: var(--mer-spacing--3xs) var(--mer-spacing--xs);\n border-radius: var(--mer-border__radius--sm);\n text-transform: lowercase;\n}\n.md-property--inline {\n grid-template-columns: max-content 1fr;\n align-items: start;\n gap: var(--mer-spacing--xs);\n}\n\n.available-versions {\n .versions {\n flex: 1;\n }\n .button-status {\n min-inline-size: var(--mer-spacing--3xl);\n inline-size: max-content;\n box-sizing: border-box;\n }\n}\n\n// - - - - - - - - - - - - - - - - -\n// footer\n// - - - - - - - - - - - - - - - - -\n\n.footer {\n grid-area: footer;\n}\n\n// - - - - - - - - - - - - - - - - -\n// General\n// - - - - - - - - - - - - - - - - -\n\n// WA: Improve line spacing for module descriptions\np.body-regular-s,\nli.body-regular-s {\n line-height: var(--mer-line-height--regular);\n}\n","// Stencil\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Watch,\n Listen\n} from \"@stencil/core\";\n// Other Libraries\nimport {\n ComboBoxModel,\n TabularGridSelectionChangedEvent,\n SegmentedControlModel\n} from \"@genexus/chameleon-controls-library\";\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n// Custom Imports\nimport { TopStateBarType } from \"../../../components\";\nimport {\n ModuleServerData,\n ModuleData,\n ModuleActionType,\n ModuleFilterType,\n ModuleVersionData\n} from \"../types\";\nimport {\n mapModuleServerDataToComboBoxModel,\n mapModuleVersionDataToComboBoxModel,\n renderModuleDataProperties\n} from \"./helpers\";\nimport { config } from \"../../../common/config\";\nimport { Locale } from \"../../../common/locale\";\nimport { ContextMenuInfo } from \"../../../common/types\";\nimport { hiChar } from \"../../../common/helpers\";\nimport { ComboBoxItemValue } from \"@genexus/gemini\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/typography\",\n \"components/button\",\n \"components/icon\",\n \"components/combo-box\",\n \"components/edit\",\n \"components/tabular-grid\",\n \"components/segmented-control\",\n \"chameleon/scrollbar\",\n \"utils/spacing\"\n];\n\n// icons\nconst SHOW_MORE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"show-more-horizontal\",\n colorType: \"primary\"\n});\nconst RESET_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"reset\",\n colorType: \"primary\"\n});\nconst MODULE_ICON = getIconPath({\n category: \"objects\",\n name: \"module\"\n});\nconst FILTER_ICON = getIconPath({\n category: \"system\",\n name: \"filters\",\n colorType: \"on-elevation\"\n});\nconst MVS = \"__\"; // The separator between module-id, and module-version-id\n\n@Component({\n tag: \"gx-ide-manage-module-references\",\n styleUrl: \"manage-module-references.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/manage-module-references\"]\n})\nexport class GxManageModuleReferences {\n #componentLocale: any;\n\n /**\n * #moduleVersionsMap maps a module version (identified as module-id + version-id), with the ModuleVersionData\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #moduleVersionsMap: ModulesVersionsMap = new Map();\n\n /**\n * maps a module-id, with the module current installed version, and the list of versions as a ComboBoxModel representation.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #modulesMap: ModulesMap = new Map();\n\n // #modulesJustFetched is used to select the current module on componentDidRender\n #modulesJustFetched: boolean = false;\n #searchModulesFilterValue: string;\n #modulesGrid: HTMLChTabularGridElement;\n\n @Element() el: HTMLGxIdeManageModuleReferencesElement;\n #progressBarEl: HTMLGxIdeProgressBarElement;\n\n @State() actionInProgress = false;\n @State() executeActionCallbackInProgress = false;\n @State() filteredModules: ModuleData[] = [];\n @State() loadingServer = false;\n\n @State() modulesAll: ModuleData[] = [];\n @Watch(\"modulesAll\")\n modulesAllChanged(newModules: ModuleData[]) {\n let currentSelectedVersion: string;\n if (this.selectedModuleId) {\n // If this.selectedModuleId has a value, serverSelectedCallback was called\n // but the server is the same. This occurs when a user action (e.g., install\n // or restore) requires modules to update. The selected module and version\n // remain unchanged. We must save the current version before #clearAll().\n currentSelectedVersion = this.#modulesMap.get(\n this.selectedModuleId\n ).currentSelectedVersion;\n }\n\n this.#clearAll();\n newModules.forEach(module => {\n let currentSelectedVersionValue = module.versions[0].id;\n if (currentSelectedVersion && this.selectedModuleId === module.id) {\n currentSelectedVersionValue = currentSelectedVersion;\n currentSelectedVersion === undefined; // found. prevent the if in the following iteration.\n }\n\n // fulfill #modulesMap\n const moduleVersionsComboBoxModel = mapModuleVersionDataToComboBoxModel(\n module.versions\n );\n this.#modulesMap.set(module.id, {\n moduleData: module,\n currentInstalledVersion: module.currentVersion,\n currentSelectedVersion: currentSelectedVersionValue,\n comboBoxVersionsModel: moduleVersionsComboBoxModel\n });\n\n // fulfill #moduleVersionsMap.\n module.versions.forEach(version => {\n const moduleVersionCombinedId = `${module.id}${MVS}${version.id}`;\n this.#moduleVersionsMap.set(moduleVersionCombinedId, {\n id: version.id,\n action: version.action,\n description: version.description,\n properties: version.properties,\n name: version.name,\n warningMessage: version.warningMessage\n });\n });\n });\n\n this.#modulesJustFetched = true;\n this.#filterModules();\n }\n\n @State() progressState: TopStateBarType = \"in-progress\";\n @State() progressValue: number = 0;\n @State() reRenderCounter: number = 0;\n @State() selectedModuleAction: ActionInfo = {\n message: \"\",\n progress: 0,\n state: \"in-progress\"\n };\n @State() selectedModuleId: string;\n @State() selectedModuleType: ModuleFilterType = \"browse\";\n @State() selectedServerId: string;\n @State() selectedServerValue: string;\n // serversComboBoxModel is a model representation of the servers ModuleServerData[]\n @State() serversComboBoxModel: ComboBoxModel = [];\n @State() selectedModuleVersions: ComboBoxModel = [];\n #segmentedControlModel: SegmentedControlModel = [];\n\n /**\n * If true, the progress bar will close automatically once the progress has reached 100%.\n */\n @Prop() readonly autoCloseProgressBar: boolean = false;\n\n /**\n * Callback invoked when the user wants to execute the action corresponding to a selected module. When the action begins to be executed, the component must be able to show the progress of the action. For this, the onProgress parameter is available, which is in turn a callback used by the host to notify the progress by text message and percentage.\n */\n @Prop() readonly executeActionCallback!: ExecuteActionCallback;\n\n /**\n * Callback invoked when an element is right clicked on servers list\n */\n @Prop() readonly serverContextMenuCallback: ServerContextMenuCallback;\n\n /**\n * Callback invoked when a server is selected. Returns the set of modules available on that server.\n */\n @Prop() readonly serverSelectedCallback: ServerSelectedCallback;\n\n /**\n * List of module servers currently cataloged\n */\n @Prop() readonly servers: ModuleServerData[] = [];\n @Watch(\"servers\")\n serversChanged(newServers: ModuleServerData[]) {\n if (newServers.length) {\n this.serversComboBoxModel =\n mapModuleServerDataToComboBoxModel(newServers);\n this.selectedServerValue = this.serversComboBoxModel[0].value;\n }\n }\n\n /**\n * Allows you to hide the button (...) that executes serverContextMenuCallback\n */\n @Prop() readonly showServerCommands: boolean = false;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.serversChanged(this.servers); // map ModuleServerData to ComboBoxModel\n\n this.#segmentedControlModel = [\n {\n id: \"browse\",\n caption: this.#componentLocale.modules.buttonsContainer.browse\n },\n {\n id: \"installed\",\n caption: this.#componentLocale.modules.buttonsContainer.installed\n },\n {\n id: \"updates\",\n caption: this.#componentLocale.modules.buttonsContainer.updates\n }\n ];\n }\n\n async componentDidLoad() {\n await this.#serverSelectedCallbackHandler(this.servers[0].id, false);\n }\n\n componentDidRender() {\n if (this.#modulesJustFetched && this.selectedModuleId) {\n // set selected module as selected on the grid after server reload.\n this.#modulesGrid.selectRow(this.selectedModuleId, true);\n this.#modulesJustFetched = false;\n }\n }\n\n @Listen(\"progressBarClosed\")\n progressBarClosedHandler() {\n // set it to false, to fire a re-render the next time the progress-bar is active.\n this.actionInProgress = false;\n }\n\n #clearAll = () => {\n this.#modulesMap.clear();\n this.#moduleVersionsMap.clear();\n };\n\n #filterModules = () => {\n let filteredModules;\n // 1. Filter by type first\n // browse\n if (this.selectedModuleType === \"browse\") {\n filteredModules = this.modulesAll;\n }\n // installed\n else if (this.selectedModuleType === \"installed\") {\n filteredModules = this.modulesAll.filter((module: ModuleData) => {\n // if the module has a currentVersion (not undefined) it means it is installed\n return module.currentVersion;\n });\n } else if (this.selectedModuleType === \"updates\") {\n filteredModules = this.modulesAll.filter((module: ModuleData) => {\n return module.versions.find(version => version.action === \"update\");\n });\n }\n\n // 2. Then filter by user input\n if (this.#searchModulesFilterValue) {\n filteredModules = filteredModules.filter(module => {\n const moduleSelectedVersion = this.#moduleVersionsMap.get(\n `${module.id}${MVS}${\n this.#modulesMap.get(module.id).currentSelectedVersion\n }`\n );\n const moduleSelectedVersionName =\n moduleSelectedVersion.name.toLowerCase();\n const moduleSelectedVersionDescription =\n moduleSelectedVersion.description.toLowerCase();\n\n return (\n moduleSelectedVersionName?.includes(this.#searchModulesFilterValue) ||\n moduleSelectedVersionDescription?.includes(\n this.#searchModulesFilterValue\n )\n );\n });\n }\n\n this.filteredModules = filteredModules;\n };\n\n #getActionFromCurrentModuleVersion = (): ModuleActionType => {\n const action = this.#moduleVersionsMap.get(\n `${this.selectedModuleId}${MVS}${\n this.#modulesMap.get(this.selectedModuleId).currentSelectedVersion\n }`\n ).action;\n return action || \"install\";\n };\n\n #handleFilterChangeHandler = (event: CustomEvent<string> | InputEvent) => {\n const searchValue = (event.detail as string).trim().toLowerCase();\n this.#searchModulesFilterValue = searchValue;\n this.#filterModules();\n };\n\n #handleModuleChange = (\n event: CustomEvent<TabularGridSelectionChangedEvent>\n ) => {\n this.selectedModuleId = event.detail.rowsId[0];\n\n // update selected versions comboBox model\n const selectedModuleVersionsInfoArray = this.#modulesMap.get(\n this.selectedModuleId\n ).comboBoxVersionsModel;\n\n this.selectedModuleVersions = selectedModuleVersionsInfoArray.map(\n versionInfo => {\n return {\n caption: versionInfo.value,\n value: versionInfo.value\n } as ComboBoxItemValue;\n }\n );\n };\n\n /**\n * Perform an action relative to a module using callbackExecuteAction callback and receive the state of that action with onProgress callback\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #moduleActionHandler = (module: ModuleData) => async () => {\n await this.#progressBarEl.reset(); // sets the progress bar to 0\n this.executeActionCallbackInProgress = true;\n this.actionInProgress = true;\n\n const moduleSelectedVersionId = this.#modulesMap.get(\n this.selectedModuleId\n ).currentSelectedVersion;\n\n const actionSuccessful = await this.executeActionCallback(\n this.selectedServerId,\n module.id,\n moduleSelectedVersionId,\n this.#getActionFromCurrentModuleVersion(),\n this.#onProgress\n );\n this.executeActionCallbackInProgress = false;\n if (actionSuccessful) {\n this.#serverSelectedCallbackHandler(this.selectedServerId, false);\n }\n };\n\n #moduleTypeButtonClicked = (event: CustomEvent<string>): void => {\n this.selectedModuleType = event.detail as ModuleFilterType;\n this.#filterModules();\n };\n\n #moduleVersionsValueChangedHandler = (\n event: CustomEvent<string> | InputEvent\n ) => {\n const versionId = event.detail;\n const currentModuleMapValue = this.#modulesMap.get(this.selectedModuleId);\n currentModuleMapValue.currentSelectedVersion = versionId.toString();\n this.#modulesMap.set(this.selectedModuleId, currentModuleMapValue);\n this.reRenderCounter++;\n };\n\n /**\n * Callback invoked to get the progress when module is performing an action\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #onProgress = (\n message: string,\n progress: number,\n state: TopStateBarType\n ): void => {\n const data = { message, progress, state };\n this.selectedModuleAction = { ...data };\n this.progressValue = this.selectedModuleAction.progress;\n this.progressState = this.selectedModuleAction.state;\n };\n\n #progressBarCloseHandler = () => {};\n\n #reloadServer = () => {\n this.#serverSelectedCallbackHandler(this.selectedServerId, true);\n };\n\n #renderEmptyStateModules = (): HTMLGxIdeEmptyStateElement => {\n return (\n <gx-ide-empty-state\n isAnimated={true}\n stateIconSrc={FILTER_ICON}\n stateTitle={this.#componentLocale.modules.noModulesFilter}\n ></gx-ide-empty-state>\n );\n };\n\n #renderInstalledVersion = () => {\n const currentInstalledVersion = this.#modulesMap.get(\n this.selectedModuleId\n ).currentInstalledVersion;\n let caption;\n let cssClass = \"module-info__action-container\";\n if (currentInstalledVersion) {\n caption = `${\n this.#componentLocale.modulesInformation.moduleProperties.installed\n }: ${currentInstalledVersion}`;\n cssClass += ` module-info__action-container--installed`;\n } else {\n caption =\n this.#componentLocale.modulesInformation.moduleProperties.notInstalled;\n }\n return (\n <div class={cssClass}>\n <p class=\"body-regular-m\">{caption}</p>\n </div>\n );\n };\n\n #renderModuleVersions = () => {\n const currentSelectedModule = this.#modulesMap.get(this.selectedModuleId);\n const selectedVersionValue = currentSelectedModule.currentSelectedVersion;\n const moduleSelectedVersion = this.#moduleVersionsMap.get(\n `${this.selectedModuleId}${MVS}${\n this.#modulesMap.get(this.selectedModuleId).currentSelectedVersion\n }`\n );\n const moduleSelectedVersionAction = moduleSelectedVersion.action;\n\n return (\n <div class=\"field field-block available-versions\">\n <label class=\"label\" htmlFor=\"available-versions\">\n {this.#componentLocale.availableVersions}\n </label>\n <div class=\"buttons-spacer combo-and-button\">\n <ch-combo-box-render\n id=\"available-versions\"\n class=\"combo-box versions\"\n value={selectedVersionValue}\n onInput={this.#moduleVersionsValueChangedHandler}\n disabled={this.loadingServer}\n model={this.selectedModuleVersions}\n ></ch-combo-box-render>\n <button\n class=\"button-primary button-status\"\n disabled={\n this.executeActionCallbackInProgress ||\n moduleSelectedVersionAction === \"incompatible\" ||\n moduleSelectedVersionAction === \"not-installable\"\n }\n onClick={this.#moduleActionHandler(\n currentSelectedModule.moduleData\n )}\n >\n {this.#getActionFromCurrentModuleVersion()}\n </button>\n </div>\n </div>\n );\n };\n\n #renderModulesGrid = (): Element => {\n return (\n <ch-tabular-grid\n // TODO: Evaluate if the tabular-grid is the right tool for this job.\n rowSelectionMode=\"single\"\n part=\"ch-grid-pending-commits\"\n class=\"tabular-grid scrollable\"\n onSelectionChanged={this.#handleModuleChange}\n ref={el => (this.#modulesGrid = el as HTMLChTabularGridElement)}\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n settingable={false}\n size={config.tabularGrid.colSize.common}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n\n {this.filteredModules.length ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.filteredModules.map((module: ModuleData) => {\n const moduleIsInstalled = module.currentVersion;\n\n const moduleSelectedVersion = this.#moduleVersionsMap.get(\n `${module.id}${MVS}${\n this.#modulesMap.get(module.id).currentSelectedVersion\n }`\n );\n\n const moduleSelectedVersionName = moduleSelectedVersion.name;\n const moduleSelectedVersionDescription =\n moduleSelectedVersion.description;\n\n return (\n <ch-tabular-grid-row\n // TODO: Replace tabular grid with other control, since it does not makes sense to use a grid with only one column.\n class=\"tabular-grid-row\"\n rowid={module.id}\n key={module.id}\n >\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <div class=\"module-grid-item-info field-group\">\n <ch-image\n class=\"icon-md module-icon\"\n src={MODULE_ICON}\n disabled={!moduleIsInstalled}\n ></ch-image>\n <div class=\"field field-block\">\n <h6 class=\"subtitle-semi-bold-xs\">\n {hiChar(\n moduleSelectedVersionName,\n this.#searchModulesFilterValue\n )}\n </h6>\n\n <p class=\"body-regular-s\">\n {hiChar(\n moduleSelectedVersionDescription,\n this.#searchModulesFilterValue\n )}\n </p>\n </div>\n </div>\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n );\n })}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n {this.#renderEmptyStateModules()}\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n );\n };\n\n /* module details/information renders*/\n #renderVersionName = (): HTMLElement => {\n const moduleSelectedVersion = this.#moduleVersionsMap.get(\n `${this.selectedModuleId}${MVS}${\n this.#modulesMap.get(this.selectedModuleId).currentSelectedVersion\n }`\n );\n\n const selectedModule = this.#modulesMap.get(this.selectedModuleId);\n const moduleIsInstalled = selectedModule.currentInstalledVersion;\n\n return (\n <div class=\"module-info__title\">\n <ch-image\n class=\"icon-md module-info__icon\"\n src={MODULE_ICON}\n disabled={!moduleIsInstalled}\n ></ch-image>\n <h6 class=\"subtitle-semi-bold-xs\">{moduleSelectedVersion.name}</h6>\n </div>\n );\n };\n\n #renderVersionWarningMessage = () => {\n const moduleVersionWarningMessage = this.#moduleVersionsMap.get(\n `${this.selectedModuleId}${MVS}${\n this.#modulesMap.get(this.selectedModuleId).currentSelectedVersion\n }`\n ).warningMessage;\n\n if (moduleVersionWarningMessage) {\n return (\n <p class=\"module-info__alert-message\">{moduleVersionWarningMessage}</p>\n );\n }\n };\n\n #serverSelectedCallbackHandler = async (id: any, reload: boolean) => {\n if (this.serverSelectedCallback) {\n this.selectedServerId = id;\n this.loadingServer = true;\n const resolvedObjects = await this.serverSelectedCallback(id, reload);\n this.modulesAll = [...resolvedObjects];\n this.loadingServer = false;\n }\n };\n\n #serverValueChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n this.selectedModuleId = undefined; // clear selected module\n this.#searchModulesFilterValue = \"\"; // clear filter\n this.selectedModuleType = \"browse\"; // set \"browse\" as the default selected type\n const serverId = event.detail;\n this.#serverSelectedCallbackHandler(serverId, false);\n };\n\n #showModuleMenu = async (e: MouseEvent) => {\n if (this.serverContextMenuCallback) {\n const buttonBoundingClientRect = (\n e.target as HTMLElement\n ).getBoundingClientRect();\n await this.serverContextMenuCallback({\n selection: [this.selectedServerId],\n clientX: buttonBoundingClientRect.x,\n clientY: buttonBoundingClientRect.y\n });\n }\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"main\">\n <div class=\"modules__container field-group\">\n <header class=\"modules__header field-group\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"servers-list\">\n {this.#componentLocale.modules.selectServer}\n </label>\n <div class=\"modules__header-controls buttons-spacer\">\n <ch-combo-box-render\n // select server\n id=\"servers-list\"\n class=\"combo-box combo-box-servers\"\n model={this.serversComboBoxModel}\n value={this.selectedServerValue}\n disabled={this.loadingServer}\n onInput={this.#serverValueChangedHandler}\n ></ch-combo-box-render>\n\n <div\n // action buttons\n >\n {this.showServerCommands && (\n <button\n // server context menu button\n class=\"button-tertiary button-icon-only\"\n onClick={this.#showModuleMenu}\n aria-label={this.#componentLocale.showServerMenu}\n title={this.#componentLocale.showServerMenu}\n >\n <ch-image\n src={SHOW_MORE_ICON}\n class=\"icon-md\"\n ></ch-image>\n </button>\n )}\n\n <button\n // reload server selected button\n class=\"button-tertiary button-icon-only\"\n onClick={this.#reloadServer}\n aria-label={this.#componentLocale.reloadModules}\n title={this.#componentLocale.reloadModules}\n >\n <ch-image src={RESET_ICON} class=\"icon-md\"></ch-image>\n </button>\n </div>\n </div>\n </div>\n </header>\n\n <div\n // Modules main\n class=\"modules__main\"\n >\n <div class=\"modules__main-header\">\n <div\n // search modules\n class=\"field field-block\"\n >\n <label class=\"label\" htmlFor=\"search-modules\">\n {this.#componentLocale.modules.searchModules}\n </label>\n <ch-edit\n class=\"input\"\n value={this.#searchModulesFilterValue}\n onInput={this.#handleFilterChangeHandler}\n disabled={this.loadingServer}\n ></ch-edit>\n </div>\n\n <div class=\"browse-modules\">\n <ch-segmented-control-render\n class=\"segmented-control-filled\"\n model={this.#segmentedControlModel}\n selectedId={this.selectedModuleType}\n onSelectedItemChange={this.#moduleTypeButtonClicked}\n ></ch-segmented-control-render>\n </div>\n </div>\n\n <div class=\"grid-or-loader-container\">\n {this.loadingServer ? (\n <gx-ide-loader\n loaderTitle={this.#componentLocale.servers.loading}\n show={true}\n ></gx-ide-loader>\n ) : (\n this.#renderModulesGrid()\n )}\n </div>\n </div>\n </div>\n\n <div class=\"module-info field-group\">\n {this.selectedModuleId ? (\n [\n <header class=\"module-info__header\">\n {this.#renderVersionName()}\n {this.#renderInstalledVersion()}\n {this.#renderModuleVersions()}\n {this.#renderVersionWarningMessage()}\n </header>,\n <div class=\"module-info__properties scrollable\">\n <div class=\"module-info__properties-inner-wrapper\">\n {renderModuleDataProperties(\n this.#moduleVersionsMap.get(\n `${this.selectedModuleId}__${\n this.#modulesMap.get(this.selectedModuleId)\n .currentSelectedVersion\n }`\n ).properties\n )}\n </div>\n </div>\n ]\n ) : (\n <gx-ide-empty-state\n class=\"recent-objects__empty-state\"\n stateIconSrc={MODULE_ICON}\n stateTitle={\n this.#componentLocale.modulesInformation.emptyState.title\n }\n stateDescription={\n this.#componentLocale.modulesInformation.emptyState\n .description\n }\n ></gx-ide-empty-state>\n )}\n </div>\n\n <footer class=\"footer\">\n <gx-ide-progress-bar\n class=\"border-block-start\"\n slot=\"footer-above\"\n part=\"progress-bar\"\n stateType={this.progressState}\n caption={\n this.selectedModuleAction.message ||\n this.#componentLocale.progressBar.defaultCaption\n }\n progress={this.progressValue}\n active={this.actionInProgress}\n closeType={this.autoCloseProgressBar ? \"auto-close\" : \"button\"}\n closedCallback={this.#progressBarCloseHandler}\n ref={el =>\n (this.#progressBarEl = el as HTMLGxIdeProgressBarElement)\n }\n ></gx-ide-progress-bar>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type ExecuteActionCallback = (\n serverId: string,\n moduleId: string,\n moduleVersionId: string,\n action: ModuleActionType,\n onProgress: (\n message: string,\n progress: number,\n state: TopStateBarType\n ) => void\n) => Promise<boolean>;\n\nexport type ServerSelectedCallback = (\n id: string,\n reload: boolean\n) => Promise<ModuleData[]>;\n\nexport type ServerContextMenuCallback = (\n contextMenuInfo: ContextMenuInfo\n) => Promise<void>;\nexport interface ActionInfo {\n message: string;\n progress: number;\n state: TopStateBarType;\n}\n\nexport type ModuleVersionsMap = Map<string, { value: string; caption: string }>;\nexport type ModulesMap = Map<string, ModuleMapValue>;\nexport type ModuleMapValue = {\n moduleData: ModuleData;\n currentInstalledVersion: string;\n currentSelectedVersion: string;\n comboBoxVersionsModel: ComboBoxModel;\n};\nexport type ModulesVersionsMap = Map<string, ModuleVersionData>;\n"],"version":3}
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface GxIdeProgressBar extends Components.GxIdeProgressBar, HTMLElement {}
4
+ export const GxIdeProgressBar: {
5
+ prototype: GxIdeProgressBar;
6
+ new (): GxIdeProgressBar;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,8 @@
1
+ import { G as GxIdeProgressBar$1, d as defineCustomElement$1 } from './progress-bar.js';
2
+
3
+ const GxIdeProgressBar = GxIdeProgressBar$1;
4
+ const defineCustomElement = defineCustomElement$1;
5
+
6
+ export { GxIdeProgressBar, defineCustomElement };
7
+
8
+ //# sourceMappingURL=gx-ide-progress-bar.js.map
@@ -0,0 +1 @@
1
+ {"file":"gx-ide-progress-bar.js","mappings":";;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
@@ -50,7 +50,7 @@ const mapSelectorCategoryDataToComboBoxModel = (categoryData) => {
50
50
  });
51
51
  };
52
52
 
53
- const referencesCss = ":root{--ui-animaton-speed:0.2s}.gxg-title-01{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-01--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-02{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-02--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--color-on-primary)}.gxg-title-03{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-03--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-04{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-04--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-05{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-05--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable)}.gxg-text--negative{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text--gray{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--dimmed)}.gxg-quote{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);font-style:italic}.gxg-quote--negative{color:var(--ds-base-font-color--negative)}.gxg-link{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block}.gxg-link:hover{color:var(--ds-base-font-color--link-hover)}.gxg-link:active{color:var(--ds-base-font-color--link-active)}.gxg-link-gray{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed)}.gxg-link-gray:hover{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed);filter:brightness(1.4)}.gxg-alert-error{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--error);display:inline-block}.gxg-alert-warning{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--warning);display:inline-block}.gxg-alert-success{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--success);display:inline-block}.gxg-tab--disabled{color:var(--color-primary-disabled);pointer-events:none}.gxg-tab--disabled[disabled]{color:var(--color-primary-disabled);pointer-events:none}.gxg-label{font-family:var(--ds-base-font-family-primary);font-weight:var(--gxg-label-font-weight);font-size:var(--gxg-label-font-size);color:var(--gxg-label-color);text-align:center;line-height:1.455em;display:flex;align-items:center}.gxg-label:hover{color:var(--color-primary-hover)}.gxg-label:focus{color:var(--color-primary-active)}.gxg-label:active{color:var(--color-primary-active)}.gxg-label[disabled]{color:var(--color-primary-disabled)}.gxg-label--negative{color:var(--color-on-primary)}.gxg-label--negative[disabled]{color:var(--color-on-disabled)}.gxg-scrollbar{}.gxg-scrollbar::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gxg-scrollbar::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gxg-scrollbar::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}:host{display:grid;block-size:100%}.card-regular{background-color:var(--mer-surface__elevation--01);border:var(--mer-border__width--sm) solid var(--mer-border-color__on-elevation--01);border-radius:var(--mer-border__radius--md);padding:var(--mer-spacing--md) var(--mer-spacing--md);display:grid}.card-small{background-color:var(--mer-surface__elevation--02);border-radius:var(--mer-border__radius--sm);padding:var(--mer-spacing--sm) var(--mer-spacing--sm)}.card-small--actionable:hover{background-color:var(--mer-color__neutral-gray--600)}.card-small--actionable:active{background-color:var(--mer-color__neutral-gray--650)}.card-small:focus-visible{outline:var(--focus__outline-width) var(--focus__outline-style) var(--focus__outline-color);outline-offset:var(--focus__outline-offset)}.empty-state{block-size:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:var(--mer-spacing--sm);text-align:center}.empty-state__title,.empty-state__button,.empty-state__link{max-inline-size:300px}.opacity-0{opacity:0}.opacity-1{opacity:1}.display-contents{display:contents}.pill-tag{padding:1px 4px;border-radius:2px;min-inline-size:40px;text-align:center;margin-inline-end:10px;font-size:11px}.gxi-hidden{display:none !important}.gxi-full-height{height:100%}.gxi-overflow-auto{overflow:auto}.gxi-display-flex{display:flex}.align-start{display:flex;align-items:start}.align-center{display:flex;align-items:center}.align-end{display:flex;align-items:end}.overflow-auto{overflow:auto}.justify-start{display:flex;justify-content:start}.justify-center{display:flex;justify-content:center}.justify-end{display:flex;justify-content:end}.grid{display:grid;grid-row-gap:var(--gx-ide-grid-row-gap);grid-column-gap:var(--gx-ide-grid-column-gap);grid-template-rows:auto}ch-grid-cell{display:flex}ch-grid{overflow:auto;height:100%}ch-grid-column{z-index:99;border-bottom:1px solid var(--mer-color__neutral-gray--800)}ch-grid-column:first-child{padding-inline-start:var(--gx-ide-container__padding) !important}ch-grid-column:last-child{padding-inline-end:var(--gx-ide-container__padding) !important}ch-grid-cell{--mer-spacing--xs:var(--gx-ide-container__padding)}.layout{display:grid;gap:var(--mer-spacing--lg);box-sizing:border-box}.layout--two-cols{grid-template-columns:1fr 1fr}.layout--space-above{padding-block-start:var(--mer-spacing--lg)}gxg-tabs{box-shadow:none}:host(.gx-ide-component){height:100% !important;display:flex !important;flex-direction:column !important}:host(:focus-within) gx-ide-top-bar::part(wrapper){background-color:var(--color-secondary-enabled)}.gx-ide-main-wrapper{color:var(--gx-ide-component-text-color);font-weight:var(--mer-font__weight--regular);font-size:var(--mer-font__size--xs);font-family:var(--mer-font-family--primary);height:100%;background-color:var(--gx-ide-component-background-color);display:flex;flex-direction:column;flex-grow:1;box-sizing:border-box}.gx-ide-main{flex-grow:1;overflow-y:auto;}.gx-ide-main::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gx-ide-main::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gx-ide-main::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gx-ide-main::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gx-ide-main::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.gx-ide-overflow{overflow-y:auto;}.gx-ide-overflow::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gx-ide-overflow::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gx-ide-overflow::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gx-ide-overflow::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gx-ide-overflow::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.tree-view-primary{font-size:var(--mer-font__size--2xs)}p{margin:0;font-size:var(--mer-font__size--xxs)}.buttons-container{display:flex;gap:var(--mer-spacing--xs)}.giu-static-pill-icon-and-text,.giu-static-pill{background-color:var(--elevation-background-color, var(--mer-surface__elevation--01));padding-inline:var(--mer-spacing--xs);color:var(--mer-text__on-elevation);font-size:var(--font-size-body-s);line-height:1.4;font-weight:var(--font-weight-regular);border-radius:var(--mer-border__width--lg);min-block-size:25px;display:inline-grid;align-items:center;pointer-events:none}.giu-static-pill-icon-and-text{display:inline-grid;grid-auto-flow:column;grid-auto-columns:max-content;gap:var(--mer-spacing--xs)}:host{display:grid;block-size:100%;grid-template-rows:max-content 1fr}.section{display:contents}.header{}.header__top{grid-template-columns:max-content 1fr max-content}.header__bottom{display:grid;grid-template-rows:1fr;transition:var(--mer-timing--fast) grid-template-rows}.header__bottom--hidden{grid-template-rows:0fr}.header__bottom .outer-wrapper{overflow:hidden}.header__bottom .inner-wrapper{padding-top:var(--content-block-spacing);display:flex;flex-direction:row;align-items:center;justify-content:space-between}.header__bottom .inner-wrapper__left{display:flex;align-items:center;gap:var(--gx-ide-grid-row-gap)}.main{display:grid;grid-template-columns:1fr 1fr}.section__referenced-by,.section__references-to{display:grid;grid-template-rows:max-content 1fr}.control-header__referenced-by,.control-header__references-to{padding-block-start:var(--mer-spacing--md)}.main__referenced-by,.main__references-to{grid-auto-rows:max-content;overflow:auto}.main__referenced-by{border-inline-end:var(--section-common-border)}.text-align-center{text-align:center}";
53
+ const referencesCss = ":root{--ui-animaton-speed:0.2s}.gxg-title-01{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-01--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-02{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-02--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--color-on-primary)}.gxg-title-03{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-03--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-04{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-04--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-05{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-05--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable)}.gxg-text--negative{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text--gray{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--dimmed)}.gxg-quote{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);font-style:italic}.gxg-quote--negative{color:var(--ds-base-font-color--negative)}.gxg-link{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block}.gxg-link:hover{color:var(--ds-base-font-color--link-hover)}.gxg-link:active{color:var(--ds-base-font-color--link-active)}.gxg-link-gray{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed)}.gxg-link-gray:hover{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed);filter:brightness(1.4)}.gxg-alert-error{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--error);display:inline-block}.gxg-alert-warning{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--warning);display:inline-block}.gxg-alert-success{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--success);display:inline-block}.gxg-tab--disabled{color:var(--color-primary-disabled);pointer-events:none}.gxg-tab--disabled[disabled]{color:var(--color-primary-disabled);pointer-events:none}.gxg-label{font-family:var(--ds-base-font-family-primary);font-weight:var(--gxg-label-font-weight);font-size:var(--gxg-label-font-size);color:var(--gxg-label-color);text-align:center;line-height:1.455em;display:flex;align-items:center}.gxg-label:hover{color:var(--color-primary-hover)}.gxg-label:focus{color:var(--color-primary-active)}.gxg-label:active{color:var(--color-primary-active)}.gxg-label[disabled]{color:var(--color-primary-disabled)}.gxg-label--negative{color:var(--color-on-primary)}.gxg-label--negative[disabled]{color:var(--color-on-disabled)}.gxg-scrollbar{}.gxg-scrollbar::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gxg-scrollbar::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gxg-scrollbar::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}:host{display:grid;block-size:100%}.card-regular{background-color:var(--mer-surface__elevation--01);border:var(--mer-border__width--sm) solid var(--mer-border-color__on-elevation--01);border-radius:var(--mer-border__radius--md);padding:var(--mer-spacing--md) var(--mer-spacing--md);display:grid}.card-small{background-color:var(--mer-surface__elevation--02);border-radius:var(--mer-border__radius--sm);padding:var(--mer-spacing--sm) var(--mer-spacing--sm)}.card-small--actionable:hover{background-color:var(--mer-color__neutral-gray--600)}.card-small--actionable:active{background-color:var(--mer-color__neutral-gray--650)}.card-small:focus-visible{outline:var(--focus__outline-width) var(--focus__outline-style) var(--focus__outline-color);outline-offset:var(--focus__outline-offset)}.empty-state{block-size:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:var(--mer-spacing--sm);text-align:center}.empty-state__title,.empty-state__button,.empty-state__link{max-inline-size:300px}.opacity-0{opacity:0}.opacity-1{opacity:1}.display-contents{display:contents}.pill-tag{padding:1px 4px;border-radius:2px;min-inline-size:40px;text-align:center;margin-inline-end:10px;font-size:11px}.gxi-hidden{display:none !important}.gxi-full-height{height:100%}.gxi-overflow-auto{overflow:auto}.gxi-display-flex{display:flex}.align-start{display:flex;align-items:start}.align-center{display:flex;align-items:center}.align-end{display:flex;align-items:end}.overflow-auto{overflow:auto}.justify-start{display:flex;justify-content:start}.justify-center{display:flex;justify-content:center}.justify-end{display:flex;justify-content:end}.grid{display:grid;grid-row-gap:var(--gx-ide-grid-row-gap);grid-column-gap:var(--gx-ide-grid-column-gap);grid-template-rows:auto}ch-grid-cell{display:flex}ch-grid{overflow:auto;height:100%}ch-grid-column{z-index:99;border-bottom:1px solid var(--mer-color__neutral-gray--800)}ch-grid-column:first-child{padding-inline-start:var(--gx-ide-container__padding) !important}ch-grid-column:last-child{padding-inline-end:var(--gx-ide-container__padding) !important}ch-grid-cell{--mer-spacing--xs:var(--gx-ide-container__padding)}.layout{display:grid;gap:var(--mer-spacing--lg);box-sizing:border-box}.layout--two-cols{grid-template-columns:1fr 1fr}.layout--space-above{padding-block-start:var(--mer-spacing--lg)}gxg-tabs{box-shadow:none}:host(.gx-ide-component){height:100% !important;display:flex !important;flex-direction:column !important}:host(:focus-within) gx-ide-top-bar::part(wrapper){background-color:var(--color-secondary-enabled)}.gx-ide-main-wrapper{color:var(--gx-ide-component-text-color);font-weight:var(--mer-font__weight--regular);font-size:var(--mer-font__size--xs);font-family:var(--mer-font-family--primary);height:100%;background-color:var(--gx-ide-component-background-color);display:flex;flex-direction:column;flex-grow:1;box-sizing:border-box}.gx-ide-main{flex-grow:1;overflow-y:auto;}.gx-ide-main::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gx-ide-main::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gx-ide-main::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gx-ide-main::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gx-ide-main::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.gx-ide-overflow{overflow-y:auto;}.gx-ide-overflow::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gx-ide-overflow::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gx-ide-overflow::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gx-ide-overflow::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gx-ide-overflow::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.tree-view-primary{font-size:var(--mer-font__size--2xs)}p{margin:0;font-size:var(--mer-font__size--xxs)}.buttons-container{display:flex;gap:var(--mer-spacing--xs)}.giu-static-pill-icon-and-text,.giu-static-pill{background-color:var(--elevation-background-color, var(--mer-surface__elevation--01));padding-inline:var(--mer-spacing--xs);color:var(--mer-text__on-elevation);font-size:var(--font-size-body-s);line-height:1.4;font-weight:var(--font-weight-regular);border-radius:var(--mer-border__width--lg);min-block-size:25px;display:inline-grid;align-items:center;pointer-events:none}.giu-static-pill-icon-and-text{display:inline-grid;grid-auto-flow:column;grid-auto-columns:max-content;gap:var(--mer-spacing--xs)}.tab-full-width-buttons::part(tab-list block-start),.tab-full-width-buttons::part(tab-list block-end){grid-auto-columns:1fr}.tab-full-width-buttons::part(tab block-start){justify-content:center}:host{display:grid;block-size:100%;grid-template-rows:max-content 1fr}.section{display:contents}.header{}.header__top{grid-template-columns:max-content 1fr max-content}.header__bottom{display:grid;grid-template-rows:1fr;transition:var(--mer-timing--fast) grid-template-rows}.header__bottom--hidden{grid-template-rows:0fr}.header__bottom .outer-wrapper{overflow:hidden}.header__bottom .inner-wrapper{padding-top:var(--content-block-spacing);display:flex;flex-direction:row;align-items:center;justify-content:space-between}.header__bottom .inner-wrapper__left{display:flex;align-items:center;gap:var(--gx-ide-grid-row-gap)}.main{display:grid;grid-template-columns:1fr 1fr}.section__referenced-by,.section__references-to{display:grid;grid-template-rows:max-content 1fr}.control-header__referenced-by,.control-header__references-to{padding-block-start:var(--mer-spacing--md)}.main__referenced-by,.main__references-to{grid-auto-rows:max-content;overflow:auto}.main__referenced-by{border-inline-end:var(--section-common-border)}.text-align-center{text-align:center}";
54
54
 
55
55
  var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) {
56
56
  if (kind === "a" && !f)
@@ -1 +1 @@
1
- {"file":"gx-ide-references.js","mappings":";;;;;;;;AAWA;;;AAIA,MAAM,iBAAiB,GAAG,CAAC,IAAmB;;IAAwB,QAAC;QACrE,OAAO,EAAE,IAAI,CAAC,IAAI;QAClB,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,KAAK,EAAE,CAAC,MAAA,IAAI,CAAC,KAAK,mCAAI,EAAE,EAAE,GAAG,CAAC,iBAAiB,CAAC;QAChD,IAAI,EAAE,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;QACzE,IAAI,EAAE,IAAI,CAAC,WAAW,KAAK,KAAK;QAChC,WAAW,EAAE,IAAI,CAAC,IAAI;KACvB,EAAC;CAAA,CAAC;AAEH;;;AAGO,MAAM,kCAAkC,GAAG,CAChD,aAA0C;IAE1C,MAAM,QAAQ,GAAwB,EAAE,CAAC;IACzC,IAAI,CAAC,aAAa,EAAE;QAClB,OAAO,QAAQ,CAAC;KACjB;IAED,aAAa,CAAC,OAAO,CAAC,IAAI;QACxB,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;KACxC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAcK,MAAM,sCAAsC,GAAG,CACpD,YAAoC;IAEpC,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,QAA8B;QACrD,MAAM,WAAW,GAAsB;YACrC,KAAK,EAAE,QAAQ,CAAC,IAAI;YACpB,OAAO,EAAE,QAAQ,CAAC,IAAI;YACtB,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAgB,MAAM;gBAC/C,KAAK,EAAE,IAAI,CAAC,EAAE;gBACd,OAAO,EAAE,IAAI,CAAC,WAAW;gBACzB,WAAW,EAAE,IAAI,CAAC,IAAI;aACvB,CAAC,CAAC;SACJ,CAAC;QAEF,OAAO,WAAW,CAAC;KACpB,CAAC,CAAC;AACL,CAAC;;ACvED,MAAM,aAAa,GAAG,+rbAA+rb;;;;;;;;;;;;;;;;;;;AC2Brtb,MAAM,WAAW,GAAmB;IAClC,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,sBAAsB;IACtB,iBAAiB;IACjB,qBAAqB;IACrB,sBAAsB;IACtB,eAAe;IACf,cAAc;IACd,YAAY;IACZ,kBAAkB;CACnB,CAAC;AAEF,MAAM,iCAAiC,GAAG,WAAW,CAAC;IACpD,QAAQ,EAAE,cAAc;IACxB,IAAI,EAAE,sBAAsB;IAC5B,SAAS,EAAE,SAAS;CACrB,CAAC,CAAC;AACH,MAAM,8BAA8B,GAAG,WAAW,CAAC;IACjD,QAAQ,EAAE,YAAY;IACtB,IAAI,EAAE,oBAAoB;IAC1B,SAAS,EAAE,SAAS;CACrB,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG;IACtB,gBAAgB,EAAE,IAAI;IACtB,UAAU,EAAE,KAAK;IACjB,4BAA4B,EAAE,KAAK;IACnC,qBAAqB,EAAE,KAAK;IAC5B,SAAS,EAAE,KAAK;IAChB,iBAAiB,EAAE,KAAK;IACxB,MAAM,EAAE,KAAK;IACb,4BAA4B,EAAE,IAAI;CACnC,CAAC;MAQWA,iBAAe;;;;;QAC1B,yCAAgC,IAAI,GAAG,EAAE,EAAC;QAC1C,wCAAgB,YAAY,CAAC,2CAA2C,CAAC,EAAC;QAC1E,oDAAuB;QAGvB,yDAAqD;;;;QAoErD,wDAAgC;YAC9B,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aACjD;SACF,EAAC;;;;QAKF,uDAA+B;YAC7B,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;SAClC,EAAC;;;;QAKF,iDAAyB,OAAO,EAAU,EAAE,EAAE,GAAG,KAAK;YACpD,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBAC/B,IAAI,CAAC,sBAAsB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM;oBAC7C,IAAI,EAAE,EAAE;wBACN,IAAI,CAAC,oBAAoB;4BACvB,kCAAkC,CAAC,MAAM,CAAC,CAAC;qBAC9C;yBAAM;wBACL,IAAI,CAAC,oBAAoB;4BACvB,kCAAkC,CAAC,MAAM,CAAC,CAAC;qBAC9C;iBACF,CAAC,CAAC;aACJ;SACF,EAAC;QAEF,qDAA6B;;;YAE3B,IAAI,CAAC,kBAAkB,CAAC,MAAA,IAAI,CAAC,cAAc,0CAAE,EAAE,CAAC,CAAC;SAClD,EAAC;;;;QAKF,6DAAqC;YACnC,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;YACjE,IAAI,gBAAgB,EAAE;gBACpB,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC;aACxC;SACF,EAAC;QAEF,oDAA4B,CAC1B,KAA+C;YAE/C,IAAI,IAAI,CAAC,uBAAuB,EAAE;gBAChC,MAAM,aAAa,GAAa,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACvE,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;;aAEhD;SACF,EAAC;QAEF,+DAAuC,CACrC,UAAwE;YAExE,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBAC3B,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;;aAEjC;SACF,EAAC;QAEF,6DACE,CAAC,GAAsC,KACvC,OAAO,UAAkB;YACvB,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBAC/B,MAAM,EAAE,GAAG,GAAG,KAAK,eAAe,CAAC;gBACnC,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAC9D,UAAU,EACV,EAAE,CACH,CAAC;gBACF,MAAM,gBAAgB,GAAG,kCAAkC,CACzD,sBAAsB,CACvB,CAAC;gBACF,OAAO,IAAI,OAAO,CAAC,OAAO;oBACxB,OAAO,CAAC,gBAAgB,CAAC,CAAC;iBAC3B,CAAC,CAAC;aACJ;YACD,OAAO,IAAI,OAAO,CAAC,OAAO;gBACxB,OAAO,CAAC,EAAE,CAAC,CAAC;aACb,CAAC,CAAC;SACJ,EAAC;QAEJ,sDAA8B,CAC5B,KAAuD;YAEvD,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAgB,CAAC;YAEhD,MAAM,UAAU,GAAG,uBAAA,IAAI,sCAAe,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC7D,IAAI,UAAU,EAAE;gBACd,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;aAClC;SACF,EAAC;QAEF,oDAA4B,CAC1B,KAAuD;;;YAIvD,MAAM,UAAU,GAAG,KAAK,CAAC,MAAgB,CAAC;YAC1C,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBAC/B,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,IAAI,CAC1C,yBAAyB;;oBAEvB,uBAAA,IAAI,sCAAe,CAAC,KAAK,EAAE,CAAC;oBAC5B,yBAAyB,aAAzB,yBAAyB,uBAAzB,yBAAyB,CAAE,OAAO,CAAC,oBAAoB;wBACrD,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU;4BAC3C,uBAAA,IAAI,sCAAe,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE;gCAC9C,EAAE,EAAE,UAAU,CAAC,EAAE;gCACjB,QAAQ,EAAE,UAAU,CAAC,QAAQ;gCAC7B,IAAI,EAAE,UAAU,CAAC,IAAI;gCACrB,IAAI,EAAE,UAAU,CAAC,IAAI;gCACrB,WAAW,EAAE,UAAU,CAAC,WAAW;6BACpC,CAAC,CAAC;yBACJ,CAAC,CAAC;qBACJ,CAAC,CAAC;oBAEH,IAAI,CAAC,kBAAkB,GAAG,sCAAsC,CAC9D,yBAAyB,CAC1B,CAAC;iBACH,CACF,CAAC;aACH;SACF,EAAC;yBA7LmB,KAAK;;;;;;;;;;;IA0C1B,qBAAqB,CAAC,iBAA6B;QACjD,IAAI,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,EAAE,EAAE;;YAEzB,uBAAA,IAAI,8CAAuB,MAA3B,IAAI,EAAwB,iBAAiB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;;YAEzD,uBAAA,IAAI,8CAAuB,MAA3B,IAAI,EAAwB,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;SACzD;KACF;IAED,gBAAgB;QACd,uBAAA,IAAI,8CAAuB,CAAC,KAAK,EAAE,CAAC;KACrC;IAED,MAAM,iBAAiB;QACrB,uBAAA,IAAI,qCAAqB,MAAM,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,MAAA,CAAC;QACnE,uBAAA,IAAI,qDAA8B,MAAlC,IAAI,CAAgC,CAAC;KACtC;IAqID,MAAM;;QACJ,QACE,EAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,IAClB,gBAAU,KAAK,EAAE,WAAW,GAAa,EAEzC,eAAS,KAAK,EAAC,SAAS,IACtB,cAAQ,KAAK,EAAC,gFAAgF,IAC5F,WAAK,KAAK,EAAC,yBAAyB,IAClC,cACE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,kCAAkC,gBAC5B,uBAAA,IAAI,yCAAkB,CAAC,MAAM,CAAC,SAAS,EACnD,IAAI,EAAC,mBAAmB,EACxB,OAAO,EAAE,uBAAA,IAAI,oDAA6B,IAE1C,gBACE,KAAK,EAAC,SAAS,EACf,GAAG,EAAE,8BAA8B,EACnC,YAAY,EAAE,IAAI,CAAC,EAAE,GACX,CACL,EAET,WAAK,KAAK,EAAC,oBAAoB,IAC7B;;YAEE,KAAK,EAAC,OAAO,EACb,IAAI,EAAC,qBAAqB,EAC1B,OAAO,EAAC,yBAAyB;WAEhC,uBAAA,IAAI,yCAAkB,CAAC,MAAM,CAAC,YAAY,CACrC,EACR,2BACE,cAAc,EAAE,uBAAA,IAAI,yCAAkB,CAAC,MAAM,CAAC,YAAY,EAC1D,KAAK,EAAC,WAAW,EACjB,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAC9B,OAAO,QACP,OAAO,EAAE,uBAAA,IAAI,iDAA0B,EACvC,QAAQ,EAAE,uBAAA,IAAI,mDAA4B,EAC1C,KAAK,EAAE,MAAA,IAAI,CAAC,cAAc,0CAAE,IAAI,EAChC,IAAI,EAAC,yBAAyB,EAC9B,cAAc,EAAE,eAAe,EAC/B,GAAG,EAAE,CAAC,EAA+B,MAClC,uBAAA,IAAI,0CACH,EAAiC,MAAA,CAAC,GAEjB,CACnB,EAEN,cACE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,kCAAkC,gBAC5B,uBAAA,IAAI,yCAAkB,CAAC,MAAM,CAAC,kBAAkB,EAC5D,OAAO,EAAE,uBAAA,IAAI,0DAAmC,EAChD,IAAI,EAAC,6BAA6B,IAElC,gBACE,KAAK,EAAC,SAAS,EACf,GAAG,EAAE,iCAAiC,EACtC,YAAY,EAAE,IAAI,CAAC,EAAE,GACX,CACL,CACL,EAEN,WACE,KAAK,EAAE;gBACL,gBAAgB,EAAE,IAAI;gBACtB,wBAAwB,EAAE,IAAI,CAAC,SAAS;aACzC,IAED,WAAK,KAAK,EAAC,eAAe,IACxB,WAAK,KAAK,EAAC,eAAe,IACxB,WAAK,KAAK,EAAC,qBAAqB,IAC9B,gBACE,KAAK,EAAC,SAAS,EACf,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAC7B,YAAY,EAAE,IAAI,CAAC,EAAE,GACX,EACZ,SACE,KAAK,EAAC,WAAW,EACjB,OAAO,EAAE,uBAAA,IAAI,kDAA2B,EACxC,IAAI,EAAC,uBAAuB,gBAE1B,uBAAA,IAAI,yCAAkB,CAAC,IAAI,CAAC,kBAAkB,IAG/C,GAAG,MAAA,IAAI,CAAC,cAAc,0CAAE,IAAI,MAAM,MAAA,IAAI,CAAC,cAAc,0CAAE,WAAW,EAAE,CACnE,CACA,CAWF,CACF,CACF,CACC,EACT,WAAK,KAAK,EAAC,MAAM,IACf,eAAS,KAAK,EAAC,wBAAwB,IACrC,UAAI,KAAK,EAAC,6IAA6I,IACpJ,uBAAA,IAAI,yCAAkB,CAAC,IAAI,CAAC,cAAc,CACxC,EAEL;;YAEE,KAAK,EAAC,qEAAqE;WAE3E,2BACE,KAAK,EAAE;gBACL,YAAY,EAAE,EAAC,MAAA,IAAI,CAAC,oBAAoB,0CAAE,MAAM,CAAA;gBAChD,WAAW,EAAE,IAAI;aAClB,EACD,IAAI,EAAC,oBAAoB,EACzB,KAAK,EAAE,IAAI,CAAC,oBAAoB,gBAE9B,uBAAA,IAAI,yCAAkB,CAAC,IAAI,CAAC,0BAA0B,EAExD,yBAAyB,EAAE,uBAAA,IAAI,0DAAmC,MAAvC,IAAI,EAC7B,eAAe,CAChB,EACD,qBAAqB,EAAE,uBAAA,IAAI,iDAA0B,EACrD,YAAY,EAAE,IAAI,EAClB,YAAY,EAAE,IAAI,EAClB,mBAAmB,EACjB,uBAAA,IAAI,4DAAqC,EAE3C,SAAS,EAAC,MAAM,GACK,EACtB,EAAC,MAAA,IAAI,CAAC,oBAAoB,0CAAE,MAAM,CAAA,KACjC,0BACE,UAAU,EACR,CAAA,MAAA,IAAI,CAAC,oBAAoB,0CAAE,MAAM,MAAK,CAAC;kBACnC,uBAAA,IAAI,yCAAkB,CAAC,IAAI,CAAC,mBAAmB;kBAC/C,uBAAA,IAAI,yCAAkB,CAAC,IAAI,CAAC,mBAAmB,GAEjC,CACvB,CACG,CACE,EAEV,eAAS,KAAK,EAAC,wBAAwB,IACrC,UAAI,KAAK,EAAC,6IAA6I,IACpJ,uBAAA,IAAI,yCAAkB,CAAC,IAAI,CAAC,eAAe,CACzC,EAEL;;YAEE,KAAK,EAAC,qEAAqE;WAE3E,2BACE,KAAK,EAAE;gBACL,YAAY,EAAE,EAAC,MAAA,IAAI,CAAC,oBAAoB,0CAAE,MAAM,CAAA;gBAChD,WAAW,EAAE,IAAI;aAClB,EACD,IAAI,EAAC,oBAAoB,EACzB,KAAK,EAAE,IAAI,CAAC,oBAAoB,gBAE9B,uBAAA,IAAI,yCAAkB,CAAC,IAAI,CAAC,0BAA0B,EAExD,yBAAyB,EAAE,uBAAA,IAAI,0DAAmC,MAAvC,IAAI,EAC7B,eAAe,CAChB,EACD,qBAAqB,EAAE,uBAAA,IAAI,iDAA0B,EACrD,YAAY,EAAE,IAAI,EAClB,YAAY,EAAE,IAAI,EAClB,mBAAmB,EACjB,uBAAA,IAAI,4DAAqC,EAE3C,SAAS,EAAC,MAAM,GACK,EACtB,EAAC,MAAA,IAAI,CAAC,oBAAoB,0CAAE,MAAM,CAAA,KACjC,0BACE,UAAU,EACR,CAAA,MAAA,IAAI,CAAC,oBAAoB,0CAAE,MAAM,MAAK,CAAC;kBACnC,uBAAA,IAAI,yCAAkB,CAAC,IAAI,CAAC,kBAAkB;kBAC9C,uBAAA,IAAI,yCAAkB,CAAC,IAAI,CAAC,oBAAoB,GAElC,CACvB,CACG,CACE,CACN,CACE,EAEV,oBAAc,GAAG,EAAE,uBAAA,IAAI,qCAAc,GAAiB,CACjD,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["GxIdeReferences"],"sources":["src/components/references/helpers.ts","src/components/references/references.scss?tag=gx-ide-references&encapsulation=shadow","src/components/references/references.tsx"],"sourcesContent":["/* Tree View */\nimport {\n ComboBoxModel,\n TreeViewItemModel\n} from \"@genexus/chameleon-controls-library\";\n\n/* References Types*/\nimport { ObjectData, SelectorCategoryData } from \"./references\";\nimport { ReferenceData } from \"./references\";\nimport { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\n\n/**\n * @description This function converts SelectorCategoryData[] SuggestData\n */\n\nconst convertToTreeItem = (item: ReferenceData): TreeViewItemModel => ({\n caption: item.name,\n id: item.id,\n items: (item.items ?? []).map(convertToTreeItem),\n lazy: item.hasChildren && (item.items == null || item.items.length === 0),\n leaf: item.hasChildren === false,\n startImgSrc: item.icon\n});\n\n/**\n * @description This function converts ReferenceData[] data to TreeItemData[]\n */\nexport const convertReferenceDataToTreeViewData = (\n referenceData: ReferenceData[] | undefined\n): TreeViewItemModel[] => {\n const treeData: TreeViewItemModel[] = [];\n if (!referenceData) {\n return treeData;\n }\n\n referenceData.forEach(item => {\n treeData.push(convertToTreeItem(item));\n });\n return treeData;\n};\n\nexport const mapObjectDataToComboBoxItemModel = (\n options: ObjectData[]\n): ComboBoxModel => {\n return options.map(option => {\n return {\n value: option.id,\n caption: option.name,\n startImgSrc: option.icon ?? \"\"\n };\n });\n};\n\nexport const mapSelectorCategoryDataToComboBoxModel = (\n categoryData: SelectorCategoryData[]\n): ComboBoxModel => {\n return categoryData.map((category: SelectorCategoryData) => {\n const mappedGroup: ComboBoxItemModel = {\n value: category.name,\n caption: category.name,\n expandable: true,\n expanded: true,\n items: category.items.map((item: ObjectData) => ({\n value: item.id,\n caption: item.description,\n startImgSrc: item.icon\n }))\n };\n\n return mappedGroup;\n });\n};\n","@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content 1fr;\n}\n.section {\n display: contents;\n}\n\n.header {\n /*Top*/\n &__top {\n grid-template-columns: max-content 1fr max-content;\n }\n /*Bottom*/\n &__bottom {\n display: grid;\n grid-template-rows: 1fr;\n transition: var(--mer-timing--fast) grid-template-rows;\n &--hidden {\n grid-template-rows: 0fr;\n }\n\n .outer-wrapper {\n overflow: hidden;\n }\n\n .inner-wrapper {\n padding-top: var(--content-block-spacing);\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n\n &__left {\n display: flex;\n align-items: center;\n gap: var(--gx-ide-grid-row-gap);\n }\n }\n }\n}\n\n.main {\n display: grid;\n grid-template-columns: 1fr 1fr;\n}\n.section__referenced-by,\n.section__references-to {\n display: grid;\n grid-template-rows: max-content 1fr;\n}\n.control-header__referenced-by,\n.control-header__references-to {\n padding-block-start: var(--mer-spacing--md);\n}\n.main__referenced-by,\n.main__references-to {\n grid-auto-rows: max-content;\n overflow: auto;\n}\n.main__referenced-by {\n border-inline-end: var(--section-common-border);\n}\n\n.text-align-center {\n text-align: center;\n}\n","/* eslint-disable @stencil-community/own-props-must-be-private */\n/* STENCIL IMPORTS */\nimport {\n Component,\n Element,\n getAssetPath,\n Host,\n h,\n Prop,\n State,\n Watch\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport {\n ChComboBoxRenderCustomEvent,\n ComboBoxModel,\n TreeViewItemModel,\n TreeViewItemModelExtended\n} from \"@genexus/chameleon-controls-library\";\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport {\n convertReferenceDataToTreeViewData,\n mapSelectorCategoryDataToComboBoxModel\n} from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/pills\",\n \"components/combo-box\",\n \"components/icon\",\n \"components/checkbox\",\n \"components/tree-view\",\n \"utils/spacing\",\n \"utils/layout\",\n \"utils/form\",\n \"utils/typography\"\n];\n\nconst GEMINI_TOOLS_SHOW_MORE_HORIZONTAL = getIconPath({\n category: \"gemini-tools\",\n name: \"show-more-horizontal\",\n colorType: \"primary\"\n});\nconst NAVIGATION_ARROW_DOWN_SKY_BLUE = getIconPath({\n category: \"navigation\",\n name: \"arrow-down-skyblue\",\n colorType: \"primary\"\n});\n\nconst SUGGEST_OPTIONS = {\n alreadyProcessed: true,\n autoExpand: false,\n hideMatchesAndShowNonMatches: false,\n highlightMatchedItems: false,\n matchCase: false,\n regularExpression: false,\n strict: false,\n renderActiveItemIconOnExpand: true\n};\n\n@Component({\n tag: \"gx-ide-references\",\n styleUrl: \"references.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/references\"]\n})\nexport class GxIdeReferences {\n #objectDataMap: objectDataMap = new Map();\n #shortcutsSrc = getAssetPath(`./gx-ide-assets/references/shortcuts.json`);\n #_componentLocale: any;\n\n @Element() el: HTMLGxIdeReferencesElement;\n #selectObjectSuggestEl!: HTMLChComboBoxRenderElement;\n\n /**\n * Displays or hides the header-bottom section\n */\n @State() barHidden = false;\n\n /**\n * Objects suggestions that will appear on the suggest\n */\n @State() objectsSuggestions: ComboBoxModel;\n\n @State() referencedByTreeData: TreeViewItemModel[];\n\n @State() referencesToTreeData: TreeViewItemModel[];\n\n /**\n * Callback invoked when a node is expanded in any references panels\n */\n @Prop() readonly loadReferencesCallback?: LoadReferencesCallback;\n\n /**\n * Callback invoked when user wants to open an object\n */\n @Prop() readonly openObjectCallback?: OpenObjectCallback;\n\n /**\n * Callback invoked when user wants to show object selection dialog\n */\n @Prop() readonly openSelectorDialogCallback?: OpenSelectorDialogCallback;\n\n /**\n * Callback invoked when any item from the references panels is selected\n */\n @Prop() readonly selectReferenceCallback?: SelectReferenceCallback;\n\n /**\n * Callback invoked when user writes on object selector input\n */\n @Prop() readonly selectorSourceCallback?: SelectorSourceCallback;\n\n /**\n * Currently selected object\n */\n @Prop({ mutable: true }) selectedObject?: ObjectData;\n\n @Watch(\"selectedObject\")\n selectedObjectChanged(newSelectedObject: ObjectData) {\n if (newSelectedObject?.id) {\n /* update \"is referenced by*/\n this.#loadReferencesHandler(newSelectedObject.id, false);\n /* update \"has references to*/\n this.#loadReferencesHandler(newSelectedObject.id, true);\n }\n }\n\n componentDidLoad() {\n this.#selectObjectSuggestEl.focus();\n }\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.#evaluateInitialReferenceData();\n }\n\n /**\n * Evaluates whether to call loadReferencesCallback based on the presence of a selected object.\n */\n #evaluateInitialReferenceData = () => {\n if (this.selectedObject) {\n this.selectedObjectChanged(this.selectedObject);\n }\n };\n\n /**\n * Hides or shows the bar (the bottom section of the header).\n */\n #hideBarButtonClickedHandler = () => {\n this.barHidden = !this.barHidden;\n };\n\n /**\n * Invokes 'loadReferencesCallback' for 'Is Referenced By' and 'Has References To' panels.\n */\n #loadReferencesHandler = async (id: string, to = false) => {\n if (this.loadReferencesCallback) {\n this.loadReferencesCallback(id, to).then(result => {\n if (to) {\n this.referencesToTreeData =\n convertReferenceDataToTreeViewData(result);\n } else {\n this.referencedByTreeData =\n convertReferenceDataToTreeViewData(result);\n }\n });\n }\n };\n\n #openObjectCallbackHandler = () => {\n // Returns an empty Promise\n this.openObjectCallback(this.selectedObject?.id);\n };\n\n /**\n * Fired when user clicks the ch-suggest button (...)\n */\n #openSelectorDialogCallbackHandler = async () => {\n const objectDataResult = await this.openSelectorDialogCallback();\n if (objectDataResult) {\n this.selectedObject = objectDataResult;\n }\n };\n\n #referenceSelectedHandler = (\n event: CustomEvent<TreeViewItemModelExtended[]>\n ) => {\n if (this.selectReferenceCallback) {\n const selectedItems: string[] = event.detail.map(item => item.item.id);\n this.selectReferenceCallback(selectedItems[0]);\n // returns void\n }\n };\n\n #referencesItemOpenReferenceCallback = (\n itemOpened: CustomEvent<{ id: string; leaf: boolean; metadata: string }>\n ) => {\n const itemId = itemOpened.detail.id;\n if (this.openObjectCallback) {\n this.openObjectCallback(itemId);\n // returns void\n }\n };\n\n #referencesLazyLoadCallbackHandler =\n (ref: \"references-to\" | \"referenced-by\") =>\n async (treeItemId: string): Promise<TreeViewItemModel[]> => {\n if (this.loadReferencesCallback) {\n const to = ref === \"references-to\";\n const referencesLazyChildren = await this.loadReferencesCallback(\n treeItemId,\n to\n );\n const treeLazyChildren = convertReferenceDataToTreeViewData(\n referencesLazyChildren\n );\n return new Promise(resolve => {\n resolve(treeLazyChildren);\n });\n }\n return new Promise(resolve => {\n resolve([]);\n });\n };\n\n #selectObjectChangedHandler = (\n event: ChComboBoxRenderCustomEvent<string> | InputEvent\n ) => {\n const newSelectedValue = event.detail as string;\n\n const objectData = this.#objectDataMap.get(newSelectedValue);\n if (objectData) {\n this.selectedObject = objectData;\n }\n };\n\n #selectObjectInputHandler = (\n event: ChComboBoxRenderCustomEvent<string> | InputEvent\n ) => {\n // WA to know if the event was from searching on the input or an item selection.\n // const partValue = (e.target as HTMLElement).getAttribute(\"part\");\n const typedValue = event.detail as string;\n if (this.selectorSourceCallback) {\n this.selectorSourceCallback(typedValue).then(\n selectorCategoryDataArray => {\n // update map\n this.#objectDataMap.clear();\n selectorCategoryDataArray?.forEach(selectorCategoryData => {\n selectorCategoryData.items.forEach(objectData => {\n this.#objectDataMap.set(objectData.description, {\n id: objectData.id,\n typeName: objectData.typeName,\n icon: objectData.icon,\n name: objectData.name,\n description: objectData.description\n });\n });\n });\n\n this.objectsSuggestions = mapSelectorCategoryDataToComboBoxModel(\n selectorCategoryDataArray\n );\n }\n );\n }\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <section class=\"section\">\n <header class=\"header control-header-with-border spacing-body-inline spacing-body-block-start\">\n <div class=\"header__top field-group\">\n <button\n type=\"button\"\n class=\"button-tertiary button-icon-only\"\n aria-label={this.#_componentLocale.header.toggleBar}\n part=\"toggle-bar-button\"\n onClick={this.#hideBarButtonClickedHandler}\n >\n <ch-image\n class=\"icon-md\"\n src={NAVIGATION_ARROW_DOWN_SKY_BLUE}\n containerRef={this.el}\n ></ch-image>\n </button>\n\n <div class=\"field field-inline\">\n <label\n // select object\n class=\"label\"\n part=\"select-object-label\"\n htmlFor=\"object-selector-suggest\"\n >\n {this.#_componentLocale.header.selectObject}\n </label>\n <ch-combo-box-render\n accessibleName={this.#_componentLocale.header.selectObject}\n class=\"combo-box\"\n model={this.objectsSuggestions}\n suggest\n onInput={this.#selectObjectInputHandler}\n onChange={this.#selectObjectChangedHandler}\n value={this.selectedObject?.name}\n part=\"object-selector-suggest\"\n suggestOptions={SUGGEST_OPTIONS}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#selectObjectSuggestEl =\n el as HTMLChComboBoxRenderElement)\n }\n ></ch-combo-box-render>\n </div>\n\n <button\n type=\"button\"\n class=\"button-tertiary button-icon-only\"\n aria-label={this.#_componentLocale.header.openSelectorButton}\n onClick={this.#openSelectorDialogCallbackHandler}\n part=\"open-selector-dialog-button\"\n >\n <ch-image\n class=\"icon-md\"\n src={GEMINI_TOOLS_SHOW_MORE_HORIZONTAL}\n containerRef={this.el}\n ></ch-image>\n </button>\n </div>\n\n <div\n class={{\n \"header__bottom\": true,\n \"header__bottom--hidden\": this.barHidden\n }}\n >\n <div class=\"outer-wrapper\">\n <div class=\"inner-wrapper\">\n <div class=\"inner-wrapper__left\">\n <ch-image\n class=\"icon-md\"\n src={this.selectedObject.icon}\n containerRef={this.el}\n ></ch-image>\n <a\n class=\"text-link\"\n onClick={this.#openObjectCallbackHandler}\n part=\"open-object-text-link\"\n aria-label={\n this.#_componentLocale.main.selectedObjectLink\n }\n >\n {`${this.selectedObject?.name} : ${this.selectedObject?.description}`}\n </a>\n </div>\n {/* <div class=\"inner-wrapper__right\">\n TODO: Add this feature \"Group References by Type\".\n <ch-checkbox\n class=\"checkbox\"\n id=\"references-by-type\"\n part=\"references-type-checkbox\"\n checkedValue=\"referencesByType\"\n caption=\"Group references by type\"\n ></ch-checkbox>\n </div> */}\n </div>\n </div>\n </div>\n </header>\n <div class=\"main\">\n <section class=\"section__referenced-by\">\n <h2 class=\"control-header control-header-with-border control-header__referenced-by heading-5 text-align-center spacing-body-inline subtitle-regular-xs\">\n {this.#_componentLocale.main.isReferencedBy}\n </h2>\n\n <div\n // is referenced by\n class=\"main__referenced-by spacing-body-block-start spacing-body-block-end\"\n >\n <ch-tree-view-render\n class={{\n \"gxi-hidden\": !this.referencedByTreeData?.length,\n \"tree-view\": true\n }}\n part=\"referenced-by-tree\"\n model={this.referencedByTreeData}\n aria-label={\n this.#_componentLocale.main.referencedByTreeAccessible\n }\n lazyLoadTreeItemsCallback={this.#referencesLazyLoadCallbackHandler(\n \"referenced-by\"\n )}\n onSelectedItemsChange={this.#referenceSelectedHandler}\n dragDisabled={true}\n dropDisabled={true}\n onItemOpenReference={\n this.#referencesItemOpenReferenceCallback\n }\n showLines=\"last\"\n ></ch-tree-view-render>\n {!this.referencedByTreeData?.length && (\n <gx-ide-empty-state\n stateTitle={\n this.referencedByTreeData?.length === 0\n ? this.#_componentLocale.main.isReferencedByEmpty\n : this.#_componentLocale.main.isReferencedByError\n }\n ></gx-ide-empty-state>\n )}\n </div>\n </section>\n\n <section class=\"section__references-to\">\n <h2 class=\"control-header control-header-with-border control-header__references-to heading-5 text-align-center spacing-body-inline subtitle-regular-xs\">\n {this.#_componentLocale.main.hasReferencesTo}\n </h2>\n\n <div\n // has references to\n class=\"main__references-to spacing-body-block-start spacing-body-block-end\"\n >\n <ch-tree-view-render\n class={{\n \"gxi-hidden\": !this.referencesToTreeData?.length,\n \"tree-view\": true\n }}\n part=\"referenced-to-tree\"\n model={this.referencesToTreeData}\n aria-label={\n this.#_componentLocale.main.referencesToTreeAccessible\n }\n lazyLoadTreeItemsCallback={this.#referencesLazyLoadCallbackHandler(\n \"references-to\"\n )}\n onSelectedItemsChange={this.#referenceSelectedHandler}\n dragDisabled={true}\n dropDisabled={true}\n onItemOpenReference={\n this.#referencesItemOpenReferenceCallback\n }\n showLines=\"last\"\n ></ch-tree-view-render>\n {!this.referencesToTreeData?.length && (\n <gx-ide-empty-state\n stateTitle={\n this.referencesToTreeData?.length === 0\n ? this.#_componentLocale.main.hasReferencesEmpty\n : this.#_componentLocale.main.hasReferencesToError\n }\n ></gx-ide-empty-state>\n )}\n </div>\n </section>\n </div>\n </section>\n\n <ch-shortcuts src={this.#shortcutsSrc}></ch-shortcuts>\n </Host>\n );\n }\n}\n\nexport type LoadReferencesCallback = (\n id: string,\n to: boolean\n) => Promise<ReferenceData[]>;\n\nexport type ObjectData = {\n id: string;\n typeName: string;\n icon: string;\n name: string;\n description?: string;\n};\n\nexport type OpenObjectCallback = (id: string) => Promise<void>;\n\nexport type OpenSelectorDialogCallback = () => Promise<ObjectData | undefined>;\n\nexport type ReferenceData = ObjectData & {\n hasChildren: boolean;\n items?: ReferenceData[];\n};\n\nexport type SelectReferenceCallback = (id: string) => Promise<void>;\n\nexport type SelectorCategoryData = {\n name: string;\n items: ObjectData[];\n};\n\nexport type SelectorSourceCallback = (\n prefix: string\n) => Promise<SelectorCategoryData[]>;\n\nexport type objectDataMap = Map<string, ObjectData>;\n"],"version":3}
1
+ {"file":"gx-ide-references.js","mappings":"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","names":["GxIdeReferences"],"sources":["src/components/references/helpers.ts","src/components/references/references.scss?tag=gx-ide-references&encapsulation=shadow","src/components/references/references.tsx"],"sourcesContent":["/* Tree View */\nimport {\n ComboBoxModel,\n TreeViewItemModel\n} from \"@genexus/chameleon-controls-library\";\n\n/* References Types*/\nimport { ObjectData, SelectorCategoryData } from \"./references\";\nimport { ReferenceData } from \"./references\";\nimport { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\n\n/**\n * @description This function converts SelectorCategoryData[] SuggestData\n */\n\nconst convertToTreeItem = (item: ReferenceData): TreeViewItemModel => ({\n caption: item.name,\n id: item.id,\n items: (item.items ?? []).map(convertToTreeItem),\n lazy: item.hasChildren && (item.items == null || item.items.length === 0),\n leaf: item.hasChildren === false,\n startImgSrc: item.icon\n});\n\n/**\n * @description This function converts ReferenceData[] data to TreeItemData[]\n */\nexport const convertReferenceDataToTreeViewData = (\n referenceData: ReferenceData[] | undefined\n): TreeViewItemModel[] => {\n const treeData: TreeViewItemModel[] = [];\n if (!referenceData) {\n return treeData;\n }\n\n referenceData.forEach(item => {\n treeData.push(convertToTreeItem(item));\n });\n return treeData;\n};\n\nexport const mapObjectDataToComboBoxItemModel = (\n options: ObjectData[]\n): ComboBoxModel => {\n return options.map(option => {\n return {\n value: option.id,\n caption: option.name,\n startImgSrc: option.icon ?? \"\"\n };\n });\n};\n\nexport const mapSelectorCategoryDataToComboBoxModel = (\n categoryData: SelectorCategoryData[]\n): ComboBoxModel => {\n return categoryData.map((category: SelectorCategoryData) => {\n const mappedGroup: ComboBoxItemModel = {\n value: category.name,\n caption: category.name,\n expandable: true,\n expanded: true,\n items: category.items.map((item: ObjectData) => ({\n value: item.id,\n caption: item.description,\n startImgSrc: item.icon\n }))\n };\n\n return mappedGroup;\n });\n};\n","@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content 1fr;\n}\n.section {\n display: contents;\n}\n\n.header {\n /*Top*/\n &__top {\n grid-template-columns: max-content 1fr max-content;\n }\n /*Bottom*/\n &__bottom {\n display: grid;\n grid-template-rows: 1fr;\n transition: var(--mer-timing--fast) grid-template-rows;\n &--hidden {\n grid-template-rows: 0fr;\n }\n\n .outer-wrapper {\n overflow: hidden;\n }\n\n .inner-wrapper {\n padding-top: var(--content-block-spacing);\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n\n &__left {\n display: flex;\n align-items: center;\n gap: var(--gx-ide-grid-row-gap);\n }\n }\n }\n}\n\n.main {\n display: grid;\n grid-template-columns: 1fr 1fr;\n}\n.section__referenced-by,\n.section__references-to {\n display: grid;\n grid-template-rows: max-content 1fr;\n}\n.control-header__referenced-by,\n.control-header__references-to {\n padding-block-start: var(--mer-spacing--md);\n}\n.main__referenced-by,\n.main__references-to {\n grid-auto-rows: max-content;\n overflow: auto;\n}\n.main__referenced-by {\n border-inline-end: var(--section-common-border);\n}\n\n.text-align-center {\n text-align: center;\n}\n","/* eslint-disable @stencil-community/own-props-must-be-private */\n/* STENCIL IMPORTS */\nimport {\n Component,\n Element,\n getAssetPath,\n Host,\n h,\n Prop,\n State,\n Watch\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport {\n ChComboBoxRenderCustomEvent,\n ComboBoxModel,\n TreeViewItemModel,\n TreeViewItemModelExtended\n} from \"@genexus/chameleon-controls-library\";\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport {\n convertReferenceDataToTreeViewData,\n mapSelectorCategoryDataToComboBoxModel\n} from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/pills\",\n \"components/combo-box\",\n \"components/icon\",\n \"components/checkbox\",\n \"components/tree-view\",\n \"utils/spacing\",\n \"utils/layout\",\n \"utils/form\",\n \"utils/typography\"\n];\n\nconst GEMINI_TOOLS_SHOW_MORE_HORIZONTAL = getIconPath({\n category: \"gemini-tools\",\n name: \"show-more-horizontal\",\n colorType: \"primary\"\n});\nconst NAVIGATION_ARROW_DOWN_SKY_BLUE = getIconPath({\n category: \"navigation\",\n name: \"arrow-down-skyblue\",\n colorType: \"primary\"\n});\n\nconst SUGGEST_OPTIONS = {\n alreadyProcessed: true,\n autoExpand: false,\n hideMatchesAndShowNonMatches: false,\n highlightMatchedItems: false,\n matchCase: false,\n regularExpression: false,\n strict: false,\n renderActiveItemIconOnExpand: true\n};\n\n@Component({\n tag: \"gx-ide-references\",\n styleUrl: \"references.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/references\"]\n})\nexport class GxIdeReferences {\n #objectDataMap: objectDataMap = new Map();\n #shortcutsSrc = getAssetPath(`./gx-ide-assets/references/shortcuts.json`);\n #_componentLocale: any;\n\n @Element() el: HTMLGxIdeReferencesElement;\n #selectObjectSuggestEl!: HTMLChComboBoxRenderElement;\n\n /**\n * Displays or hides the header-bottom section\n */\n @State() barHidden = false;\n\n /**\n * Objects suggestions that will appear on the suggest\n */\n @State() objectsSuggestions: ComboBoxModel;\n\n @State() referencedByTreeData: TreeViewItemModel[];\n\n @State() referencesToTreeData: TreeViewItemModel[];\n\n /**\n * Callback invoked when a node is expanded in any references panels\n */\n @Prop() readonly loadReferencesCallback?: LoadReferencesCallback;\n\n /**\n * Callback invoked when user wants to open an object\n */\n @Prop() readonly openObjectCallback?: OpenObjectCallback;\n\n /**\n * Callback invoked when user wants to show object selection dialog\n */\n @Prop() readonly openSelectorDialogCallback?: OpenSelectorDialogCallback;\n\n /**\n * Callback invoked when any item from the references panels is selected\n */\n @Prop() readonly selectReferenceCallback?: SelectReferenceCallback;\n\n /**\n * Callback invoked when user writes on object selector input\n */\n @Prop() readonly selectorSourceCallback?: SelectorSourceCallback;\n\n /**\n * Currently selected object\n */\n @Prop({ mutable: true }) selectedObject?: ObjectData;\n\n @Watch(\"selectedObject\")\n selectedObjectChanged(newSelectedObject: ObjectData) {\n if (newSelectedObject?.id) {\n /* update \"is referenced by*/\n this.#loadReferencesHandler(newSelectedObject.id, false);\n /* update \"has references to*/\n this.#loadReferencesHandler(newSelectedObject.id, true);\n }\n }\n\n componentDidLoad() {\n this.#selectObjectSuggestEl.focus();\n }\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.#evaluateInitialReferenceData();\n }\n\n /**\n * Evaluates whether to call loadReferencesCallback based on the presence of a selected object.\n */\n #evaluateInitialReferenceData = () => {\n if (this.selectedObject) {\n this.selectedObjectChanged(this.selectedObject);\n }\n };\n\n /**\n * Hides or shows the bar (the bottom section of the header).\n */\n #hideBarButtonClickedHandler = () => {\n this.barHidden = !this.barHidden;\n };\n\n /**\n * Invokes 'loadReferencesCallback' for 'Is Referenced By' and 'Has References To' panels.\n */\n #loadReferencesHandler = async (id: string, to = false) => {\n if (this.loadReferencesCallback) {\n this.loadReferencesCallback(id, to).then(result => {\n if (to) {\n this.referencesToTreeData =\n convertReferenceDataToTreeViewData(result);\n } else {\n this.referencedByTreeData =\n convertReferenceDataToTreeViewData(result);\n }\n });\n }\n };\n\n #openObjectCallbackHandler = () => {\n // Returns an empty Promise\n this.openObjectCallback(this.selectedObject?.id);\n };\n\n /**\n * Fired when user clicks the ch-suggest button (...)\n */\n #openSelectorDialogCallbackHandler = async () => {\n const objectDataResult = await this.openSelectorDialogCallback();\n if (objectDataResult) {\n this.selectedObject = objectDataResult;\n }\n };\n\n #referenceSelectedHandler = (\n event: CustomEvent<TreeViewItemModelExtended[]>\n ) => {\n if (this.selectReferenceCallback) {\n const selectedItems: string[] = event.detail.map(item => item.item.id);\n this.selectReferenceCallback(selectedItems[0]);\n // returns void\n }\n };\n\n #referencesItemOpenReferenceCallback = (\n itemOpened: CustomEvent<{ id: string; leaf: boolean; metadata: string }>\n ) => {\n const itemId = itemOpened.detail.id;\n if (this.openObjectCallback) {\n this.openObjectCallback(itemId);\n // returns void\n }\n };\n\n #referencesLazyLoadCallbackHandler =\n (ref: \"references-to\" | \"referenced-by\") =>\n async (treeItemId: string): Promise<TreeViewItemModel[]> => {\n if (this.loadReferencesCallback) {\n const to = ref === \"references-to\";\n const referencesLazyChildren = await this.loadReferencesCallback(\n treeItemId,\n to\n );\n const treeLazyChildren = convertReferenceDataToTreeViewData(\n referencesLazyChildren\n );\n return new Promise(resolve => {\n resolve(treeLazyChildren);\n });\n }\n return new Promise(resolve => {\n resolve([]);\n });\n };\n\n #selectObjectChangedHandler = (\n event: ChComboBoxRenderCustomEvent<string> | InputEvent\n ) => {\n const newSelectedValue = event.detail as string;\n\n const objectData = this.#objectDataMap.get(newSelectedValue);\n if (objectData) {\n this.selectedObject = objectData;\n }\n };\n\n #selectObjectInputHandler = (\n event: ChComboBoxRenderCustomEvent<string> | InputEvent\n ) => {\n // WA to know if the event was from searching on the input or an item selection.\n // const partValue = (e.target as HTMLElement).getAttribute(\"part\");\n const typedValue = event.detail as string;\n if (this.selectorSourceCallback) {\n this.selectorSourceCallback(typedValue).then(\n selectorCategoryDataArray => {\n // update map\n this.#objectDataMap.clear();\n selectorCategoryDataArray?.forEach(selectorCategoryData => {\n selectorCategoryData.items.forEach(objectData => {\n this.#objectDataMap.set(objectData.description, {\n id: objectData.id,\n typeName: objectData.typeName,\n icon: objectData.icon,\n name: objectData.name,\n description: objectData.description\n });\n });\n });\n\n this.objectsSuggestions = mapSelectorCategoryDataToComboBoxModel(\n selectorCategoryDataArray\n );\n }\n );\n }\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <section class=\"section\">\n <header class=\"header control-header-with-border spacing-body-inline spacing-body-block-start\">\n <div class=\"header__top field-group\">\n <button\n type=\"button\"\n class=\"button-tertiary button-icon-only\"\n aria-label={this.#_componentLocale.header.toggleBar}\n part=\"toggle-bar-button\"\n onClick={this.#hideBarButtonClickedHandler}\n >\n <ch-image\n class=\"icon-md\"\n src={NAVIGATION_ARROW_DOWN_SKY_BLUE}\n containerRef={this.el}\n ></ch-image>\n </button>\n\n <div class=\"field field-inline\">\n <label\n // select object\n class=\"label\"\n part=\"select-object-label\"\n htmlFor=\"object-selector-suggest\"\n >\n {this.#_componentLocale.header.selectObject}\n </label>\n <ch-combo-box-render\n accessibleName={this.#_componentLocale.header.selectObject}\n class=\"combo-box\"\n model={this.objectsSuggestions}\n suggest\n onInput={this.#selectObjectInputHandler}\n onChange={this.#selectObjectChangedHandler}\n value={this.selectedObject?.name}\n part=\"object-selector-suggest\"\n suggestOptions={SUGGEST_OPTIONS}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#selectObjectSuggestEl =\n el as HTMLChComboBoxRenderElement)\n }\n ></ch-combo-box-render>\n </div>\n\n <button\n type=\"button\"\n class=\"button-tertiary button-icon-only\"\n aria-label={this.#_componentLocale.header.openSelectorButton}\n onClick={this.#openSelectorDialogCallbackHandler}\n part=\"open-selector-dialog-button\"\n >\n <ch-image\n class=\"icon-md\"\n src={GEMINI_TOOLS_SHOW_MORE_HORIZONTAL}\n containerRef={this.el}\n ></ch-image>\n </button>\n </div>\n\n <div\n class={{\n \"header__bottom\": true,\n \"header__bottom--hidden\": this.barHidden\n }}\n >\n <div class=\"outer-wrapper\">\n <div class=\"inner-wrapper\">\n <div class=\"inner-wrapper__left\">\n <ch-image\n class=\"icon-md\"\n src={this.selectedObject.icon}\n containerRef={this.el}\n ></ch-image>\n <a\n class=\"text-link\"\n onClick={this.#openObjectCallbackHandler}\n part=\"open-object-text-link\"\n aria-label={\n this.#_componentLocale.main.selectedObjectLink\n }\n >\n {`${this.selectedObject?.name} : ${this.selectedObject?.description}`}\n </a>\n </div>\n {/* <div class=\"inner-wrapper__right\">\n TODO: Add this feature \"Group References by Type\".\n <ch-checkbox\n class=\"checkbox\"\n id=\"references-by-type\"\n part=\"references-type-checkbox\"\n checkedValue=\"referencesByType\"\n caption=\"Group references by type\"\n ></ch-checkbox>\n </div> */}\n </div>\n </div>\n </div>\n </header>\n <div class=\"main\">\n <section class=\"section__referenced-by\">\n <h2 class=\"control-header control-header-with-border control-header__referenced-by heading-5 text-align-center spacing-body-inline subtitle-regular-xs\">\n {this.#_componentLocale.main.isReferencedBy}\n </h2>\n\n <div\n // is referenced by\n class=\"main__referenced-by spacing-body-block-start spacing-body-block-end\"\n >\n <ch-tree-view-render\n class={{\n \"gxi-hidden\": !this.referencedByTreeData?.length,\n \"tree-view\": true\n }}\n part=\"referenced-by-tree\"\n model={this.referencedByTreeData}\n aria-label={\n this.#_componentLocale.main.referencedByTreeAccessible\n }\n lazyLoadTreeItemsCallback={this.#referencesLazyLoadCallbackHandler(\n \"referenced-by\"\n )}\n onSelectedItemsChange={this.#referenceSelectedHandler}\n dragDisabled={true}\n dropDisabled={true}\n onItemOpenReference={\n this.#referencesItemOpenReferenceCallback\n }\n showLines=\"last\"\n ></ch-tree-view-render>\n {!this.referencedByTreeData?.length && (\n <gx-ide-empty-state\n stateTitle={\n this.referencedByTreeData?.length === 0\n ? this.#_componentLocale.main.isReferencedByEmpty\n : this.#_componentLocale.main.isReferencedByError\n }\n ></gx-ide-empty-state>\n )}\n </div>\n </section>\n\n <section class=\"section__references-to\">\n <h2 class=\"control-header control-header-with-border control-header__references-to heading-5 text-align-center spacing-body-inline subtitle-regular-xs\">\n {this.#_componentLocale.main.hasReferencesTo}\n </h2>\n\n <div\n // has references to\n class=\"main__references-to spacing-body-block-start spacing-body-block-end\"\n >\n <ch-tree-view-render\n class={{\n \"gxi-hidden\": !this.referencesToTreeData?.length,\n \"tree-view\": true\n }}\n part=\"referenced-to-tree\"\n model={this.referencesToTreeData}\n aria-label={\n this.#_componentLocale.main.referencesToTreeAccessible\n }\n lazyLoadTreeItemsCallback={this.#referencesLazyLoadCallbackHandler(\n \"references-to\"\n )}\n onSelectedItemsChange={this.#referenceSelectedHandler}\n dragDisabled={true}\n dropDisabled={true}\n onItemOpenReference={\n this.#referencesItemOpenReferenceCallback\n }\n showLines=\"last\"\n ></ch-tree-view-render>\n {!this.referencesToTreeData?.length && (\n <gx-ide-empty-state\n stateTitle={\n this.referencesToTreeData?.length === 0\n ? this.#_componentLocale.main.hasReferencesEmpty\n : this.#_componentLocale.main.hasReferencesToError\n }\n ></gx-ide-empty-state>\n )}\n </div>\n </section>\n </div>\n </section>\n\n <ch-shortcuts src={this.#shortcutsSrc}></ch-shortcuts>\n </Host>\n );\n }\n}\n\nexport type LoadReferencesCallback = (\n id: string,\n to: boolean\n) => Promise<ReferenceData[]>;\n\nexport type ObjectData = {\n id: string;\n typeName: string;\n icon: string;\n name: string;\n description?: string;\n};\n\nexport type OpenObjectCallback = (id: string) => Promise<void>;\n\nexport type OpenSelectorDialogCallback = () => Promise<ObjectData | undefined>;\n\nexport type ReferenceData = ObjectData & {\n hasChildren: boolean;\n items?: ReferenceData[];\n};\n\nexport type SelectReferenceCallback = (id: string) => Promise<void>;\n\nexport type SelectorCategoryData = {\n name: string;\n items: ObjectData[];\n};\n\nexport type SelectorSourceCallback = (\n prefix: string\n) => Promise<SelectorCategoryData[]>;\n\nexport type objectDataMap = Map<string, ObjectData>;\n"],"version":3}